在前篇文章:
《接口自動化測試實踐指導(dǎo)(中):接口測試場景有哪些》中詳細給小伙伴們講解了一下接口自動化需要做哪些準備工作及接口測試場景有哪些。
本篇文章是最后一篇,主要分享一下接口自動化測試斷言設(shè)置思路。
如果沒有好的斷言,自動化用例效果將大大打折扣,甚至是無用的,前期的很多工作都因此浪費。
這里我繼續(xù)結(jié)合自身經(jīng)驗,幫助大家梳理一下,希望有所幫助和提升。
1、斷言設(shè)置思路
這里總結(jié)了我在項目中常用的 5 種斷言方式,基本可能滿足 90% 以上的斷言場景,具體參見如下腦圖:

下面分別解釋一下圖中的五種思路:
1. 響應(yīng)碼
對于 http 類接口,有時開發(fā)人員只是通過設(shè)置接口響應(yīng)碼來反應(yīng)接口是否成功,這時我們的斷言就需要檢查接口響應(yīng)碼是否符合預(yù)期來判斷用例是否執(zhí)行成功。
2. 驗證關(guān)鍵字段值
一般接口中會設(shè)有專門的字段來反饋接口成功與否的信息。
比如:msg 字段,經(jīng)常好多接口通過該字段反應(yīng)后臺的處理情況,如果成功會返回成功信息,失敗會返回失敗原因。
這樣我們測試時可以直接校驗該字段值來判斷用例是否執(zhí)行成功。
3. 正則匹配
當一個接口返回內(nèi)容比較多時,但有一定規(guī)則可尋,我們可以借助正則表達式來校驗檢查。
4. 數(shù)據(jù)庫匹配核對
要對一個查詢類接口的返回數(shù)據(jù)進行驗證,我們可以采用編寫 SQL,到數(shù)據(jù)庫查詢結(jié)果。
然后將數(shù)據(jù)庫結(jié)果與接口返回結(jié)果進行核對檢查,這樣就能比較準確的驗證接口返回數(shù)據(jù)的正確性。
5. 相關(guān)接口輔助驗證
舉個例子,比如測試一個刪除接口,刪除了一條記錄后,如何驗證接口真的把記錄刪除成功了?
可以再調(diào)用查詢接口,檢查被刪除的記錄是否真的查詢不到了,那就說明刪除真的成功了。
2、斷言設(shè)置實戰(zhàn)演示
基于上面的斷言思路,接下來,我通過實際例子給大家做一下展示,這里通過兩種平臺工具來展示:
一種是開源好用的 Jmeter;
另一種是之前給大家推薦的 Eolink 平臺,Eolink 平臺因為支持自定義腳本,且平臺提供了很多內(nèi)置函數(shù),也可以像 Jmeter 一樣靈活實現(xiàn)上述 5 種斷言思路。
下圖展示一下 Eolink 平臺的自定義腳本功能:


1. 響應(yīng)碼斷言展示
如果一個接口需要通過接口請求的響應(yīng)碼來斷言,判斷是否達到預(yù)期結(jié)果,Jmeter 工具的實現(xiàn)如下:


說明:該用例會返回 400 的錯誤碼,斷言設(shè)置校驗響應(yīng)碼是否為 400,如果等于 400 表示用例執(zhí)行成功,否則失敗。
再展示一下用 Eolink 的實現(xiàn)效果:

2. 驗證關(guān)鍵字段值
如果一個接口需要通過響應(yīng)結(jié)果中出現(xiàn)某個關(guān)鍵詞來判斷是否達到預(yù)期結(jié)果,可以采用驗證關(guān)鍵字段值的斷言方式,用 Jmeter 工具實現(xiàn)如下:

說明:該用例通過檢查接口返回字段 msg 的值 是否為“您沒有登錄,請重新登錄”來判斷用例是否執(zhí)行成功。
再展示一下用 Eolink 的實現(xiàn)效果:

3. 正則匹配
如果一個接口返回的響應(yīng)結(jié)果是不斷變化的,但結(jié)果符合某個預(yù)期的規(guī)則,這時可以采用正則匹配的方式來斷言,用 Jmeter 工具實現(xiàn)如下:

說明:通過正則匹配,除了驗證某個符合預(yù)期規(guī)則的字段值,可以用于匹配檢查接口返回樣式,匹配成功了,說明用例執(zhí)行通過。
再展示一下用 Eolink 的實現(xiàn)效果:

4. 數(shù)據(jù)庫匹配核對
針對一個查詢類接口,如果想詳細驗證返回結(jié)果的各個字段,可以采用數(shù)據(jù)庫匹配核對方式來斷言,用 Jmeter 工具實現(xiàn)如下:


說明:對于一個查詢類用例,通過查詢數(shù)據(jù)庫,然后將接口返回結(jié)果與數(shù)據(jù)庫返回結(jié)果進行對比,對比成功說明用例執(zhí)行通過。
再展示一下用 Eolink 的實現(xiàn)效果:

執(zhí)行結(jié)果:

5. 相關(guān)接口輔助驗證
很多接口的驗證需要依賴其他相關(guān)接口來判斷,實現(xiàn)起來會稍微復(fù)雜些,但斷言效果非常好,先用 Jmeter 工具給大家展示一下:

說明:對于部署接口是否成功的驗證,我這邊通過查看部署日志接口來輔助驗證。
當部署日志接口中獲取到部署成功日志打印后,就說明用例執(zhí)行通過。
再展示一下用 Eolink 的實現(xiàn)效果:
- 有兩種方式,一種步驟中添加相關(guān)接口,提取相應(yīng)內(nèi)容,后續(xù)做判斷。



Eolink 平臺有著非常豐富易用的功能,幫助項目團隊更好的對 API 接口進行管理和測試。
最后,再補充介紹一下該平臺對于 API 接口測試方面的某系高級功能:
1)與 API 文檔關(guān)聯(lián)與自動同步
在測試用例中,綁定 API 文檔之后,當 API 發(fā)生變化時,您可以一鍵將文檔內(nèi)容同步到測試步驟中,減輕維護用例的成本。

2)0 代碼,拖拉拽完成測試流程編排
平臺支持拖拉方式進行復(fù)雜多接口鏈路的場景編排,減輕腳本維護工作量。

3)對數(shù)據(jù)庫進行操作
平臺也支持在自動化用例中添加對數(shù)據(jù)庫的操作,常用于以下場景:
測試前對數(shù)據(jù)庫插入測試數(shù)據(jù)。
清除臟數(shù)據(jù)。
查詢 API 操作是否對數(shù)據(jù)庫生效。


4)定時自動測試
該平臺也支持自動化用例定時執(zhí)行,減少人為的干預(yù),進一步降低執(zhí)行成本。


綜合來看,Eolink 平臺功能十分強大,除了能像 Jmeter 一樣靈活實現(xiàn)各類接口場景的自動化測試,還有豐富的 API 管理、API 監(jiān)控、API 市場功能。
幫助整個研發(fā)團隊高效實現(xiàn) API 全流程的管控,可以說是非常強大易用的一款 API 管理測試平臺。
至此,接口自動化測試實踐指導(dǎo)三篇文章全部完結(jié),希望測試小伙伴們看后能有所收獲,后續(xù)要多多實踐,才能很好提升自動化測試能力。
相關(guān)閱讀: