接口自動化大緻步驟:
1、發送請求
2、解析結果
3、驗證結果
定義三個和業務相關的類
1、一個用來封裝HTTPclient,用來發送請求
2、解析結果xml的類
3、一個用于比較測試結果和期望值的類,用于驗證
4、自動生成報告的類:自動發送報告之類的
(locust的python工具)
服務級:Web server(服務) Database(持久化工具-資料庫)、Cache(短時間持久化工具-緩存)
接口測試:
1、構造資料
(1)通過接口構造
比如擷取一個blog的文章資訊,怎麼構造資料呢?(文章哪裡來??)—傳回blog資訊
通過添加文章的接口,臨時構造資料(blog文章),然後斷言的時候看看是不是自己造的資料——會造成接口耦合(兩個程式子產品有關聯就叫做耦合。)—和造文章的接口耦合(如果建立文章的接口挂了,那傳回blog資訊的接口也就挂了)
公交卡充值依賴支付寶的支付接口服務,調用支付接口會有代價,是以模拟一個支付接口,所有通過mockserver(測試樁)去模拟支付接口的服務----不管輸入是什麼,傳回一直成功或是固定的
如何進行mock??
(2)通過持久化層構造(更好)
意思就是在資料庫直接插入資料
2、調用接口
postman/jmeter–win
CURL-linux
Paw–mac
3、對接口傳回進行斷言
通過不同的輸入-判斷不同的預期----資料驅動(輸入資料)
斷言參考方法:對比資料庫值,code驗證
4、接口測試的用例設計
功能測試用例
業務邏輯設計
業務邏輯方面的測試用例主要是針對服務端接口的處理邏輯進行的用例設計,這種用例設計不是針對某個功能點是否實作,而是對接口的處理邏輯以及一些互相依賴的業務進行驗證,通常依照接口的邏輯流程圖來進行。舉一個例子,購物系統中的兩個動作:登入和下單操作,這兩個業務是互相依賴的,下單操作必須在登入完成後(登入狀态下),否則無法完成下單,這個時候我們就可以設計這樣一條case:沒有登入的狀态下進行下單操作,看服務端如何處理。

可以看到這一塊有兩個判斷,我們需要對不同的判斷分支都設計用例,以保證流程圖中涉及到的分支我們都有測試用例覆寫。圖中涉及到的不同的分支有:
1.abdf;
2.acg;
3.abdeg;
相應的,我們的用例就應該是:
1.userInfo != null && value(userGroup) != 0;
2.userInfo == null;
3.userInfo != null && value(userGroup) == 0;
業務邏輯的用例設計主要是以服務端接口内部的邏輯流程圖為基礎,針對流程圖中的判斷和分支進行用例設計,保證服務端接口的每一種邏輯下都有測試用例覆寫。
異常處理情況
服務端接口和用戶端之間通常是通過HTTP請求來傳遞資料,在發送請求的時候,用戶端會攜帶各種不同的參數,此時服務端會根據不同的參數進行不同的處理,是以異常處理主要是針對請求中的參數情況:比如參數增加和預設、參數的資料類型錯誤,參數攜帶錯誤的值、參數為空等等,這需要我們根據接口文檔中各種不同的參數去構造不同的參數異常,檢查服務端的響應情況。
性能和安全性方面
伺服器的性能往往是個非常重要的關注點,在實際的測試中我們主要關注的是接口的QPS數值,以及CPU和記憶體占用等性能名額,通常借助于其他工具比如LoadRunner進行性能測試。安全性方面,主要考慮一些常見的安全政策比如請求加密、sql注入等等。
二、接口測試執行個體
1、postman測試
2、python測試
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
在指令行運作(以後做自動化測試用):
報告可以生成HTML形式的-加進去
python為例:
unittest庫
Requests庫
Json
Dict字典
assert斷言
用postman做接口測試,選擇get還是post,加入資料發送請求,檢視傳回的結果—然後給接口做斷言(點右上角的code,選擇js語言,寫斷言)
當接口傳回的資料時動态的,比如一個網站文章的最新評論----還是測試環境問題,搭建一個專屬的測試環境,不産生新的資料,一樣的可以測試接口—相當于動态資料靜态化
“怎麼做接口測試”這個問題可以分解為兩個問題:
怎麼設計接口測試用例?
怎麼執行接口測試?
Fiddler、SOAPUI、PostMan等可以做半自動的接口自動化測試;
使用Robot Framework做全自動化的接口自動化測試;
自己用代碼做全自動的接口自動化測試,如Java+testNG;
自動化接口測試+生成報告思路:
在接口的開始測試階段,我用POSTMAN來手工測試接口,單一接口測試通過後,把測試用例Copy到Jmeter中,作為後續的定期執行的基礎,在接口手工全部測完後,用Jmeter+Ant+Jenkins來定期檢查每天的接口,并生成測試報告,再寫一個爬蟲每天監控測試報告,如果出現了異常,發郵件報警。
1、每天的曆史報告肯定也是需要留存的
2、有案例失敗時的郵件通知
Jenkins有郵件報警和report展示的插件~ 樓主不用自己寫。。。
最後應該就是測試報告了,內建于自動化的接口測試,每天的接口測試報告也是挺重要的,Jmeter的測試報告雖然也很清楚,但是并不是我想要的東西,我理想的測試報告應該有一下那麼兩點
測試通過率
每條測試的過程展示
測試通過率是友善檢視報告的人直覺的了解本次測試的結果。
測試過程的展示需要展示如下内容:測試結果、請求位址、輸入參數、輸出結果、斷言結果。并且成功和失敗的辨別需要非常明顯。