測試工作中你是否常常有這樣的疑慮:
1.什么是接口,接口到底長啥樣?
2.什么時候進行接口測試?
3.接口文檔是什么樣的?
4.接口測試的正確姿勢是什么樣的?
什么時候展開接口測試?
1.項目處於開發階段,前后端聯調接口是否請求成功
2.有接口文檔,開發已完成聯調,功能測試展開之前
3.專項測試:如測流量大小、查看圖片壓縮大小、測試接口請求響應時間
4.版本上線前,進入整體回歸測試,查看接口是否有異常
5.版本功能文檔后,接口自動化
什么是接口?
接口測試:按照接口文檔的要求,驗證接口程序是否滿足對外部程序提供數據的使用需求。
接口是可以交換數據和信息的,我們常說的接口是指對外部提供數據交換的程序,以此來實現不同系統模塊和不同系統之間的數據交換。
接口測試的分類
1.模塊接口測試(可划分到白盒測試中):如訂單模塊下單時,需要去用戶資金模塊查詢余額等
2.Web接口測試,有可分為以下兩類
2.1.系統對外部系統提供的接口:如第三方登錄
2.2.內部子系統的服務之間的接口(服務器接口):是測試瀏覽器與服務器的接口
我們知道web開發一般分前端和后端,前端開發人員用HTML/CSS/JavaScript等技術。后端開發人用PHP/JAVA/Python/Ruby等各種語言。
用戶輸入的數據是輸入到的前端頁面上,怎樣把這些數據傳遞的后台的呢?通過HTTP協議的GET與POST請求來實現前后端的數據傳遞。
常見的協議:
計算機內部傳輸都是二進制數,那么數據傳輸過程中,獲取多少數據,傳到哪里,同時通過協議來定義的,協議就相當於制定內部傳輸規則
-
tcp/ip 協議
-
http/https、websocket、json、xml
-
webservice(soap/wsdl)、restservice、xmpp、自定義協議
-
hession、dubbo
網絡傳輸:
-
文本:http、https、webservice、json
-
二進制:thrift、protobuf、hession
接口測試的意義
1、保證系統的穩定性:
一個系統的服務端越接近底層,對系統的影響就越大,甚至有可能牽一發而動全身,服務端的一個缺陷可能會引起客戶端的幾個甚至十幾個缺陷,更可怕的是服務端的缺陷有可能引起系統的崩潰,這對整個系統來說,損失將是不可估量的,因此服務端接口的質量將直接影響到系統的正確和穩定。
然而,在實際的開發過程中,開發人員並沒有充足的時間編寫單元測試,並且他們往往對自己編寫的代碼有足夠的信心,不願意將時間“浪費”在編寫單元測試身上。這個時候接口測試就肩負着重要的作用。
2、將bug控制在項目前期:
就筆者所做的微信活動而言,后端系統比較成熟,對於前端開發來說,每個活動都有很大不同。這就導致后端接口開發只需要一天就可完成,而前端開發的工作量至少需要兩、三天。而在這個空當期就可以充分的對接口進行測試,從而盡早的發現系統bug;減少功能測試的工作量,縮短產品的發布周期。
3、檢查服務器的異常處理能力:
我們通常把前端的驗證稱為弱驗證,因為它很容易被繞過,這個時候如果只站在功能的層面時行測試,就很難發現一些安全的問題。不以前功能為入口的接口測試就會發揮出它的作用。
接口測試的用例設計流程
1.明確出發點
2.選擇好測試的對象
3.確認完整的測試對象的功能
可從以下情況考慮:
針對查詢的接口要與數據庫進行數據核對,檢查數據的准確性
工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。
接口測試用例設計思路
主要為三個方面
1、輸入參數
輸入參數的校驗:必填校驗,長度校驗,參數的有效性校驗(如身份證,手機號碼的等),參數的組合校驗(不同的參數組合可能會存在不同的業務場景)
2、接口業務邏輯
設計方法是分支覆蓋---路徑覆蓋----場景覆蓋,主要還是需要結合實際的業務場景,根本不會發生的業務場景就是無效的測試用例。
為避免遺漏可以將業務流程圖先畫出來,依據流程圖分別涉及不同的分支不同的場景,考慮:接口超時,接口異常,接口請求成功或失敗,成功后怎么處理,失敗后怎么繼續執行等等
3、輸出
輸出結果包括正常的輸出,異常的輸出,常用的方法是錯誤推斷法,列舉出程序中可能存在的錯誤或者異常,根據他們選擇測試用例
接口測試文檔
包括URL,調用方式,傳入參數,返回值,狀態碼等
每一個狀態碼要有一條用例
測試步驟:
從開發人員那里獲取接口文檔,接口文檔應該包括完整的功能接口、接口請求方式、接口請求URL、接口請求參數、接口返回參數。
如果當前項目沒有接口文檔,則可以使用fiddler對APP或者web進行抓包確認。
然后就是使用JMeter創建線程組,添加http請求,增加請求參數請求URL等,通過修改參數信息等等操作,查看請求的響應數據。
PS:
1、什么是接口測試?
2、接口的分類
3、接口測試工具
4、接口測試用例設計思路
注:本文有部分內容來源於筆者:擱淺
