<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何進行有效的接口測試?

          共 2645字,需瀏覽 6分鐘

           ·

          2021-05-13 20:19


          導讀:在所有的開發(fā)測試中,接口測試是必不可少的一項。有效且覆蓋完整的接口測試,不僅能保障新功能的開發(fā)質(zhì)量,還能讓開發(fā)在修改功能邏輯的時候有回歸的能力,同時也是能優(yōu)雅地進行重構(gòu)的前提。編寫接口測試要遵守哪些原則?測試代碼的結(jié)構(gòu)應該是什么樣的?接口測試有哪些實踐技巧?本文分享作者在接口測試上的實踐總結(jié)。


          測試工程師是一個高技術(shù)含量的崗位,但現(xiàn)在不少人誤以為測試工程師就是“點工”,拿到軟件“點點點”,就可以完成測試了,沒啥技術(shù)含量,而一些測試工程師錯誤的工作方法也滋長了這種誤解。

          1

          什么是接口測試



          接口測試是測試系統(tǒng)組件間接口的一種測試。接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點。測試的重點是要檢查數(shù)據(jù)的交換,傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等



          2

          為什么要做接口測試



          a)互聯(lián)網(wǎng)的快速發(fā)展,公司內(nèi)部系統(tǒng)或與外部系統(tǒng)的關(guān)聯(lián)越來越多,一個業(yè)務流程關(guān)聯(lián)多個后端系統(tǒng),它們的關(guān)聯(lián)都是基于接口來實現(xiàn),接口測試可以將復雜的系統(tǒng)關(guān)聯(lián)進行簡化,只要做好每個接口的測試就能夠較好的保證系統(tǒng)質(zhì)量。
          b)單個系統(tǒng)的變更,是否會影響到關(guān)聯(lián)業(yè)務系統(tǒng),比較難用常規(guī)的測試方面來覆蓋相關(guān)的應用系統(tǒng)(例如使用此接口的外部 系統(tǒng)有N個,不可能每個做功能兼容性測試),但可以通過對接口功能的覆蓋來驗證是否影響它人對接口的調(diào)用。
          c)接口功能比較單一,能夠比較好的進行測試覆蓋,也相對容易實現(xiàn)自動化持續(xù)集成,,可以減少人工回歸成本與時間,縮短測試周期。
          d)接口相對于界面功能,會更底層一些,測試覆蓋會更容易(如業(yè)務在調(diào)用接口時做了判斷,當不滿足條件時鏈接就不顯示,此時從界面無法測試相關(guān)功能是否做好判斷,通過接口就比較容易)



          3

          接口測試的范圍



          a)業(yè)務功能(包括正常、異常場景是否實現(xiàn))
          b)業(yè)務規(guī)則(覆蓋度是否全面)
          c)參數(shù)驗證(邊界、業(yè)務規(guī)則是否達到要求)
          d)異常場景(重復提交、并發(fā)提交、事務中斷、多機環(huán)境、大數(shù)據(jù)量測試)
          e)性能測試(響應時間、吞吐量、并發(fā)數(shù)、資源要求)
          f)安全測試(權(quán)限驗證、SQL注入等)



          4

          接口測試的重點



          a)檢查接口返回的數(shù)據(jù)是否與預期結(jié)果一致。
          b)檢查接口的容錯性,假如傳遞數(shù)據(jù)的類型錯誤時是否可以處理。
          c)接口參數(shù)的邊界值。例如,傳遞的參數(shù)足夠大或為負數(shù)時,接口是否可以正常處理。
          d)接口的性能,http請求接口大多與后端執(zhí)行的SQL語句性能、算法等比較相關(guān)。
          e)接口的安全性,外部調(diào)用的接口尤為重要。



          5

          測試原則


          基礎(chǔ)原則:

          ?自動化:接口測試是非交互式的自動化執(zhí)行,不需要人參與。

          ?獨立性:接口測試之間不應該相互依賴。

          ?可重復:接口測試可重復執(zhí)行,不受環(huán)境影響。

          ?接口測試遵守BCDE原則,保障接口交付質(zhì)量。


          • Border:邊界測試。

          • Correct:正確的輸入,正確的預期輸出。

          • Design:按照需求和設(shè)計文檔編寫測試邏輯。

          • Error:錯誤輸入,預期輸出。

          ?數(shù)據(jù)準備:數(shù)據(jù)準備通過系統(tǒng)服務進行,不能通過直接插入db方式。

          ?可測性:對于不可測的代碼需要進行重構(gòu)成合理的結(jié)構(gòu)。

          ?覆蓋性:接口測試需要覆蓋所有UC,同時代碼覆蓋率和分支覆蓋率應達到一定標準,新增代碼必須被覆蓋。

          ?持續(xù)性:如果代碼修改導致已有接口測試執(zhí)行失敗,必須修復代碼問題或者測試代碼邏輯。

          ?時間要求:接口測試應該在項目發(fā)布之前完成,不應放到項目發(fā)布之后補充。


          以上的基本原則應適用于所有層的自動化測試用例,在編寫接口測試時,除了上面這些原則,還有其他原則需要遵守,先看一張圖:


          從系統(tǒng)角度來分析入口調(diào)用,以HSF服務為例:

          ?外圍系統(tǒng)調(diào)用由我們系統(tǒng)提供的服務。

          ?系統(tǒng)執(zhí)行了一堆代碼邏輯,其中包含有分支邏輯。

          ?系統(tǒng)執(zhí)行過程中依賴外部HSF服務,進行了調(diào)用,并得到了返回值。

          ?系統(tǒng)執(zhí)行過程中依賴DB查詢或者落地了數(shù)據(jù),依賴緩存查詢或者落地了數(shù)據(jù)。

          ?系統(tǒng)執(zhí)行過程中對外發(fā)送了消息。

          ?給上游系統(tǒng)返回HSF執(zhí)行結(jié)果。


          有效接口測試的關(guān)鍵原則是要覆蓋所有入口,mock所有依賴,校驗執(zhí)行過程中所留下的痕跡,總結(jié)如下:

          ?入口覆蓋:接口測試用例必須覆蓋HSF服務入口、消息入口、定時任務入口。

          ?依賴mock:在基本原則中,有可重復這個原則,即接口測試不能受環(huán)境依賴,需要mock掉對外依賴。但對于db依賴,不建議完全mock掉,一方面mock成本高,另外可能覆蓋不到sql和表約束邏輯。

          ?校驗完整:有效的接口測試,應該具備完整的校驗,沒有校驗的接口測試是沒有意義的。只要執(zhí)行過程中,留下的痕跡對業(yè)務有影響,都要進行完整校驗,方能保障接口測試的有效性。


          • HSF接口返回值校驗:按照場景和接口約定進行HSF返回參數(shù)校驗。

          • DB校驗:校驗落地數(shù)據(jù)的正確性。

          • 緩存校驗:校驗存入緩存中數(shù)據(jù)的正確性。

          • HSF依賴入?yún)⑿r灒和ㄟ^mock工具獲得依賴HSF調(diào)用的入?yún)ⅲM行入?yún)⑿r灐?/span>

          • 消息校驗:通過mock工具獲得發(fā)送的消息對象,進行消息體校驗。



          6

          接口測試常用工具


          1、JMeter
          JMeter是Apache組織開發(fā)的基于Java的壓力測試工具,能夠?qū)⒄埱筠D(zhuǎn)換為腳本來實現(xiàn),并允許使用正則表達式創(chuàng)建斷言來對請求返回結(jié)果進行判斷,具備接口測試功能和性能的能力。


          2、SOAPUI
          SoapUI是一個完整的自動化測試解決方案。支持SOAP和REST的Web服務,JMS企業(yè)消息層,數(shù)據(jù)庫,豐富的互聯(lián)網(wǎng)應用,等等。而在SoapUI,你從它的直觀和強大的用戶界面這一切。對于自動化程度較高,SoapUI還提供了命令行工具,讓您運行的功能/負載測試和幾乎所有的任務調(diào)度程序,或作為您的構(gòu)建過程中的一個組成部分MockServices集。


          3、PostMan
          Postman是一款功能強大的網(wǎng)頁調(diào)試與發(fā)送網(wǎng)頁HTTP請求的Chrome插件,具備Fiddler\httpwatch之類的工具調(diào)試請求的功能,同時具備接口管理功能,官網(wǎng)提升腳本保存同步功能,支持接口導入導出



          4、Autotestplat

          體驗中心:http://www.autotestplat.com/home/

          源碼:https://github.com/testdevhome/Autotestplat


          -------- THE END --------

          ??

          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美A片免费在线观看 | 一道本在线无码免费视频 | 欧美性交大香蕉 | 亚洲黄色影视 | 国产精品传媒 |