自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

構(gòu)建高效的接口自動(dòng)化測(cè)試框架思路

開(kāi)發(fā) 測(cè)試
今天勇哥介紹一個(gè)基于Python的接口自動(dòng)化測(cè)試框架,結(jié)合了Python的Unittest框架、Requests庫(kù)以及數(shù)據(jù)驅(qū)動(dòng)思想,幫助您更好地實(shí)現(xiàn)接口測(cè)試。

在選擇接口測(cè)試自動(dòng)化框架時(shí),需要根據(jù)團(tuán)隊(duì)的技術(shù)棧和項(xiàng)目需求來(lái)綜合考慮。對(duì)于測(cè)試團(tuán)隊(duì)來(lái)說(shuō),使用Python相關(guān)的測(cè)試框架更為便捷。無(wú)論選擇哪種框架,重要的是確保 框架功能完備,易于維護(hù)和擴(kuò)展,提高測(cè)試效率和準(zhǔn)確性。今天勇哥介紹一個(gè)基于Python的接口自動(dòng)化測(cè)試框架,結(jié)合了Python的Unittest框架、Requests庫(kù)以及數(shù)據(jù)驅(qū)動(dòng)思想,幫助您更好地實(shí)現(xiàn)接口測(cè)試。

1. 接口自動(dòng)化測(cè)試項(xiàng)目框架簡(jiǎn)介

搭建接口自動(dòng)化測(cè)試框架的技術(shù)棧如下:

  • 語(yǔ)言:Python,簡(jiǎn)潔高效,上手容易,無(wú)壓力;人生苦短,我用 python;
  • 測(cè)試框架:Unittest,封裝自定義斷言方法進(jìn)行驗(yàn)證,如:eq\lt\lte\gt\gte\neq\str_eq等等;
  • 接口調(diào)用:Requests庫(kù),提供不同的HTTP請(qǐng)求方法,支持session和cookies,支持失敗請(qǐng)求重發(fā)等;
  • 數(shù)據(jù)驅(qū)動(dòng):數(shù)據(jù)驅(qū)動(dòng)測(cè)試(DDT),以用例數(shù)據(jù)來(lái)生成測(cè)試用例;
  • 數(shù)據(jù)管理:Openpyxl,用于進(jìn)行Excel數(shù)據(jù)的讀寫,同時(shí)支持CSV、JSON、YAML、TXT等數(shù)據(jù)格式;
  • 依賴管理:封裝各類強(qiáng)大的工具庫(kù),如正則、jsonpath、字典取值的方式獲取請(qǐng)求數(shù)據(jù)、響應(yīng)數(shù)據(jù);
  • 變量管理:封裝全局變量,臨時(shí)變量,環(huán)境變量,動(dòng)態(tài)管理各類變量,動(dòng)條調(diào)用函數(shù),前后置腳本等;
  • 動(dòng)態(tài)腳本:封裝PM對(duì)象,讓動(dòng)條變量除了可以使用{{args}} 或{{func(*args,**kwargs)}}的方法使用變量外,還要能夠類似postman一樣靈活編寫python動(dòng)態(tài)代碼;
  • 數(shù)據(jù)庫(kù)交互:PyMySQL,根據(jù)不同數(shù)據(jù)庫(kù)選擇相應(yīng)的第三方模塊來(lái)完成交互;
  • 數(shù)據(jù)格式轉(zhuǎn)換:Eval,JSON,用于將數(shù)據(jù)在不同格式之間進(jìn)行轉(zhuǎn)換;
  • 日志處理:Logging,統(tǒng)一日志輸出格式,記錄渠道、級(jí)別和執(zhí)行結(jié)果,便于問(wèn)題定位;
  • 持續(xù)集成:Jenkins,通過(guò)配置定時(shí)執(zhí)行測(cè)試用例、查看測(cè)試通過(guò)率,解決重復(fù)發(fā)版帶來(lái)的重復(fù)工作,并使用插件unittestreport生成HTML報(bào)告和發(fā)送郵件;

2. 接口測(cè)試流程

接口測(cè)試步驟可以概括如下:

  • 獲取接口文檔:首先要與開(kāi)發(fā)團(tuán)隊(duì)協(xié)作,獲取接口文檔,了解每個(gè)接口的功能和參數(shù)要求。
  • 設(shè)計(jì)接口測(cè)試用例:根據(jù)接口文檔,設(shè)計(jì)接口測(cè)試用例,覆蓋正常場(chǎng)景、異常場(chǎng)景以及邊界值等情況。
  • 編寫接口測(cè)試代碼:使用Python Unittest框架,結(jié)合Requests庫(kù)發(fā)起接口調(diào)用,并在測(cè)試用例中進(jìn)行斷言驗(yàn)證。
  • 執(zhí)行接口測(cè)試用例:執(zhí)行編寫好的接口測(cè)試用例,對(duì)接口進(jìn)行驗(yàn)證。
  • 發(fā)現(xiàn)問(wèn)題與跟蹤:如果發(fā)現(xiàn)接口問(wèn)題,及時(shí)記錄并提交至缺陷管理平臺(tái),與開(kāi)發(fā)團(tuán)隊(duì)協(xié)作解決問(wèn)題。
  • 性能測(cè)試:對(duì)接口的并發(fā)情況和響應(yīng)時(shí)間進(jìn)行測(cè)試,確保接口性能滿足要求。

3. 接口測(cè)試用例設(shè)計(jì)

接口測(cè)試用例設(shè)計(jì)要從以下幾個(gè)方面入手:

  • 正常場(chǎng)景驗(yàn)證:保證接口按照需求返回正確結(jié)果,根據(jù)接口文檔的參數(shù)要求傳入合適的數(shù)據(jù),驗(yàn)證接口返回結(jié)果是否符合預(yù)期。
  • 參數(shù)組合驗(yàn)證:對(duì)于接口有多個(gè)參數(shù)的情況,驗(yàn)證不同參數(shù)組合下接口的行為是否正確,包括必填和可選參數(shù)的組合。
  • 異常驗(yàn)證:測(cè)試接口對(duì)異常情況的處理,例如輸入異常值、多輸入、少輸入?yún)?shù)等,確保接口能正確處理異常情況并返回合理結(jié)果。
  • 安全性驗(yàn)證:對(duì)于涉及安全的接口,例如登錄接口,驗(yàn)證用戶名和密碼的加密是否安全可靠。
  • 性能測(cè)試:測(cè)試接口的并發(fā)情況和響應(yīng)時(shí)間,確保接口能在高負(fù)載下穩(wěn)定運(yùn)行。

4. 接口測(cè)試執(zhí)行中的數(shù)據(jù)庫(kù)校驗(yàn)

為了確保接口返回的數(shù)據(jù)與數(shù)據(jù)庫(kù)中的數(shù)據(jù)一致或者業(yè)務(wù)流程腳本編寫,有時(shí)候需要使用數(shù)據(jù)庫(kù):

  • 數(shù)據(jù)庫(kù)預(yù)置數(shù)據(jù):在測(cè)試前,可以預(yù)先在數(shù)據(jù)庫(kù)中插入需要的測(cè)試數(shù)據(jù),然后接口測(cè)試用例執(zhí)行時(shí),校驗(yàn)接口返回的數(shù)據(jù)與預(yù)置的數(shù)據(jù)是否一致。
  • 接口調(diào)用比對(duì):接口測(cè)試用例執(zhí)行時(shí),通過(guò)調(diào)用數(shù)據(jù)庫(kù)查詢的方式,獲取接口需要的數(shù)據(jù),然后與接口返回的數(shù)據(jù)進(jìn)行比對(duì),確保一致性。
  • 數(shù)據(jù)清理:在接口測(cè)試用例執(zhí)行完畢后,進(jìn)行數(shù)據(jù)清理,將測(cè)試過(guò)程中產(chǎn)生的垃圾數(shù)據(jù)從數(shù)據(jù)庫(kù)中刪除,以保持?jǐn)?shù)據(jù)庫(kù)的干凈和整潔。
  • 流程數(shù)據(jù)預(yù)埋:執(zhí)行某些接口前,先插入固定數(shù)據(jù),流程開(kāi)始后讀取固定數(shù)據(jù),實(shí)現(xiàn)業(yè)務(wù)流的運(yùn)轉(zhuǎn),最好再刪除數(shù)據(jù)。

5. 接口測(cè)試質(zhì)量評(píng)估標(biāo)準(zhǔn)

接口測(cè)試的質(zhì)量評(píng)估八股文如下:

  • 業(yè)務(wù)功能覆蓋是否完整:確認(rèn)接口測(cè)試用例是否覆蓋了所有的業(yè)務(wù)功能點(diǎn)。
  • 業(yè)務(wù)規(guī)則覆蓋是否完整:檢查接口測(cè)試用例是否涵蓋了所有的業(yè)務(wù)規(guī)則和邊界情況。
  • 參數(shù)驗(yàn)證是否達(dá)到要求:驗(yàn)證接口對(duì)不同參數(shù)的處理是否符合預(yù)期,包括參數(shù)邊界和業(yè)務(wù)規(guī)則。
  • 接口異常場(chǎng)景覆蓋是否完整:測(cè)試接口在異常情況下的處理是否正確,確保系統(tǒng)在異常情況下能正確穩(wěn)定運(yùn)行。
  • 接口覆蓋率是否達(dá)到要求:確認(rèn)接口測(cè)試用例是否覆蓋了所有接口,包括不同的場(chǎng)景和輸入組合。
  • 代碼覆蓋率是否達(dá)到要求:檢查接口測(cè)試代碼的覆蓋率,確保所有關(guān)鍵邏輯都得到驗(yàn)證。
  • 性能指標(biāo)是否滿足要求:對(duì)接口的性能進(jìn)行測(cè)試,確保在高負(fù)載下接口仍能穩(wěn)定運(yùn)行。
  • 安全指標(biāo)是否滿足要求:驗(yàn)證接口的安全性,確保數(shù)據(jù)傳輸和存儲(chǔ)的安全性。

6. 接口測(cè)試中依賴第三方數(shù)據(jù)的處理

如果依賴第三方數(shù)據(jù)的接口有時(shí)候難以直接調(diào)用接口處理時(shí),可如下處理:

  • 使用Mock工具:利用Mock工具(如:JSON Server、Easy Mock)模擬第三方數(shù)據(jù)接口的返回?cái)?shù)據(jù),降低對(duì)第三方數(shù)據(jù)的依賴性,加快開(kāi)發(fā)和測(cè)試速度。
  • 編寫虛擬接口:在接口測(cè)試用例中,編寫虛擬接口,直接返回模擬的第三方數(shù)據(jù),以達(dá)到測(cè)試的目的。
  • 編寫代理接口:如果無(wú)法模擬第三方數(shù)據(jù),可以編寫代理接口,將測(cè)試請(qǐng)求轉(zhuǎn)發(fā)到真實(shí)的第三方數(shù)據(jù)接口,并在接口測(cè)試用例中校驗(yàn)代理返回的數(shù)據(jù)是否正確。
  • 直接往數(shù)據(jù)庫(kù)中插入數(shù)據(jù)或者更改某條數(shù)據(jù)的信息,達(dá)到模擬第三方接口正常的情況。
  • 如果有一些回調(diào)接口,直接利用第三方回調(diào)的參數(shù)格式修改某些變量,自己手動(dòng)觸發(fā)回調(diào)修改數(shù)據(jù),提高穩(wěn)定。

7. 接口測(cè)試項(xiàng)目的數(shù)據(jù)管理

在接口測(cè)試項(xiàng)目中,不同類型的數(shù)據(jù)需要靈活地進(jìn)行管理和存儲(chǔ):

  • Excel數(shù)據(jù)管理:對(duì)于較小規(guī)模的數(shù)據(jù)或者靜態(tài)數(shù)據(jù),可以使用Excel來(lái)管理測(cè)試數(shù)據(jù) (1萬(wàn)條數(shù)據(jù)以內(nèi)比較推薦)。Python中的Openpyxl庫(kù)可以很方便地讀取和寫入Excel數(shù)據(jù),同時(shí)支持其他數(shù)據(jù)格式的轉(zhuǎn)換。
  • yaml文件:對(duì)于非常小規(guī)模的數(shù)據(jù)或者配置文件數(shù)據(jù),可以使用yam來(lái)管理測(cè)試數(shù)據(jù) (數(shù)據(jù)量200以內(nèi)可以考慮)。Python中yaml庫(kù)讀取和寫入yarm文件還是很方便的。同時(shí)這個(gè)文件可以注釋。
  • 數(shù)據(jù)庫(kù)交互:對(duì)于大規(guī)模的數(shù)據(jù)或者需要頻繁變更的數(shù)據(jù),可以使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)測(cè)試數(shù)據(jù)。Python中的PyMySQL庫(kù)可以實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互,方便數(shù)據(jù)的讀取和寫入。
  • 數(shù)據(jù)驅(qū)動(dòng)思想:數(shù)據(jù)驅(qū)動(dòng)測(cè)試(DDT)是一種測(cè)試方法,通過(guò)讀取測(cè)試數(shù)據(jù)源來(lái)動(dòng)態(tài)生成和執(zhí)行測(cè)試用例。這種方式可以使得測(cè)試數(shù)據(jù)和測(cè)試用例分離,降低代碼的冗余。
  • 數(shù)據(jù)緩存:在測(cè)試過(guò)程中,為了提高測(cè)試效率,可以將已經(jīng)處理過(guò)的數(shù)據(jù)進(jìn)行緩存,下次測(cè)試時(shí)直接使用緩存數(shù)據(jù),避免重復(fù)請(qǐng)求或計(jì)算。
  • 配置文件:一些接口測(cè)試中的配置信息,例如接口URL、賬號(hào)密碼等,可以單獨(dú)放在配置文件中,便于管理和修改。

8. 解決接口文檔缺失問(wèn)題

遇到接口文檔缺失的情況,解決思路如下:

  • 與開(kāi)發(fā)溝通:與開(kāi)發(fā)人員直接溝通,了解接口的參數(shù)和預(yù)期結(jié)果,根據(jù)開(kāi)發(fā)人員提供的信息編寫測(cè)試用例。
  • 抓包分析:通過(guò)抓包工具(如Fiddler、Wireshark)來(lái)分析接口的請(qǐng)求和響應(yīng),從中提取接口的參數(shù)和數(shù)據(jù),以及接口的行為和返回結(jié)果。
  • 數(shù)據(jù)庫(kù)查詢:對(duì)于接口數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的情況,可以通過(guò)查詢數(shù)據(jù)庫(kù)來(lái)獲取接口的數(shù)據(jù),并根據(jù)數(shù)據(jù)設(shè)計(jì)測(cè)試用例。
  • 源碼接口分析:對(duì)于代碼能力強(qiáng)的童鞋,可以直接拉去開(kāi)發(fā)的項(xiàng)目代碼去分析有哪些接口及參數(shù)去設(shè)計(jì)測(cè)試用例(有這個(gè)能力還寫個(gè)毛接口測(cè)試??)。
  • 日志分析:通過(guò)日志查詢(如elk,tail)等等獲取接口的請(qǐng)求和響應(yīng),從而設(shè)計(jì)測(cè)試用例。

9. 自動(dòng)化測(cè)試框架的好處

搭建一個(gè)自動(dòng)化測(cè)試框架對(duì)于接口測(cè)試項(xiàng)目有很多好處:

  • 提高測(cè)試效率:自動(dòng)化測(cè)試可以快速執(zhí)行大量測(cè)試用例,提高測(cè)試效率和執(zhí)行速度。
  • 減少重復(fù)工作:通過(guò)自動(dòng)化測(cè)試,可以減少人工測(cè)試中的重復(fù)性工作,提高測(cè)試人員的生產(chǎn)力。
  • 提高測(cè)試準(zhǔn)確性:自動(dòng)化測(cè)試可以避免人為因素對(duì)測(cè)試結(jié)果的影響,提高測(cè)試的準(zhǔn)確性。
  • 持續(xù)集成和持續(xù)交付:通過(guò)自動(dòng)化測(cè)試框架,可以實(shí)現(xiàn)持續(xù)集成和持續(xù)交付,加快軟件的開(kāi)發(fā)和交付速度。
  • 靈活性和可擴(kuò)展性:自動(dòng)化測(cè)試框架可以根據(jù)項(xiàng)目的需要進(jìn)行定制和擴(kuò)展,適應(yīng)不同項(xiàng)目的需求。

當(dāng)然,很多童鞋會(huì)覺(jué)得市面那么多開(kāi)源工具及框架,直接拿來(lái)主義使用就好,為啥還要自己整呢?嗯確實(shí)沒(méi)錯(cuò),但是在座的各位還是得考慮一下?lián)Q工作(被迫換工作)時(shí),坐在你對(duì)面的面試官要怎么應(yīng)付吧...

10. 解決接口產(chǎn)生的垃圾數(shù)據(jù)

勇哥解決接口產(chǎn)生的垃圾數(shù)據(jù)常用解決思路如下:

  • 數(shù)據(jù)庫(kù)回滾:在測(cè)試用例執(zhí)行完成后,使用數(shù)據(jù)庫(kù)事務(wù)回滾將數(shù)據(jù)還原到測(cè)試前的狀態(tài),確保數(shù)據(jù)不會(huì)對(duì)接口環(huán)境產(chǎn)生影響。
  • 數(shù)據(jù)清理腳本:編寫數(shù)據(jù)清理腳本,定期執(zhí)行數(shù)據(jù)清理操作,刪除過(guò)期或不再需要的測(cè)試數(shù)據(jù),保持?jǐn)?shù)據(jù)庫(kù)的整潔。
  • 定時(shí)任務(wù):設(shè)置定時(shí)任務(wù),定期執(zhí)行數(shù)據(jù)清理操作,避免測(cè)試數(shù)據(jù)過(guò)多導(dǎo)致數(shù)據(jù)庫(kù)性能下降。
  • 自動(dòng)化數(shù)據(jù)清理:在自動(dòng)化測(cè)試框架中集成數(shù)據(jù)清理功能,確保每次測(cè)試執(zhí)行后都能自動(dòng)清理產(chǎn)生的垃圾數(shù)據(jù)。
  • 接口閉環(huán)調(diào)用:對(duì)于有新增增刪改的接口,執(zhí)行增改接口后,標(biāo)記數(shù)據(jù)id等關(guān)鍵信息,在teardown 部分執(zhí)行批處理調(diào)用刪除接口。

11. 針對(duì)第三方接口常見(jiàn)的測(cè)試思路

第三方接口這玩意不文檔,面試或者工作中遇到的還是比較多。勇哥挖箱底給大家一些思路:

  • 使用Mock數(shù)據(jù):可以使用Mock工具來(lái)模擬第三方接口的返回?cái)?shù)據(jù),以便于測(cè)試獨(dú)立進(jìn)行,不受第三方數(shù)據(jù)影響。
  • 數(shù)據(jù)備份與還原:在接口測(cè)試之前,先對(duì)第三方數(shù)據(jù)進(jìn)行備份,測(cè)試完成后再進(jìn)行數(shù)據(jù)還原,確保測(cè)試對(duì)第三方數(shù)據(jù)沒(méi)有實(shí)質(zhì)性影響。
  • 數(shù)據(jù)協(xié)調(diào):與第三方數(shù)據(jù)提供方進(jìn)行協(xié)調(diào),請(qǐng)求提供穩(wěn)定的測(cè)試數(shù)據(jù),或者在測(cè)試時(shí)提供臨時(shí)的測(cè)試環(huán)境,避免影響到正式環(huán)境數(shù)據(jù)。
  • 容錯(cuò)設(shè)計(jì):在測(cè)試時(shí),要考慮到第三方數(shù)據(jù)不穩(wěn)定的情況,設(shè)計(jì)容錯(cuò)機(jī)制,使得接口在部分?jǐn)?shù)據(jù)缺失或異常時(shí)也能正常運(yùn)行,不影響整體測(cè)試流程。
  • 日志監(jiān)控:監(jiān)控第三方數(shù)據(jù)接口的日志,及時(shí)發(fā)現(xiàn)異常情況,與第三方數(shù)據(jù)提供方溝通解決。

12. 如果控制接口在整個(gè)測(cè)試流程中只調(diào)用一次

如果有其他接口需要先獲取接口信息(例如登錄接口),而且希望登錄接口只調(diào)用一次,并在后續(xù)其他接口中使用該登錄憑證:

  • 使用Fixture(Pytest)或Setup(Python unittest):在測(cè)試框架中,可以使用Fixture或Setup功能,在執(zhí)行測(cè)試用例前,先執(zhí)行登錄接口,并將登錄憑證保存到緩存中。后續(xù)其他接口執(zhí)行前,先判斷登錄憑證是否存在,如果存在,則直接使用,不再重復(fù)調(diào)用登錄接口。
  • 登錄接口與其他接口合并:將登錄接口與其他接口合并成一個(gè)測(cè)試用例,保證登錄接口在其他接口調(diào)用之前執(zhí)行,且只執(zhí)行一次。這樣可以確保登錄憑證在后續(xù)其他接口中有效。
  • 使用Session保持登錄狀態(tài):有些接口測(cè)試工具(如Requests-Test)支持Session功能,可以通過(guò)Session保持登錄狀態(tài)。在第一次調(diào)用登錄接口后,Session會(huì)自動(dòng)保存登錄憑證,在后續(xù)其他接口中直接使用Session即可。
  • 封裝登錄接口:將登錄接口封裝成一個(gè)單獨(dú)的函數(shù)或類,該函數(shù)或類內(nèi)部維護(hù)登錄狀態(tài),確保登錄只調(diào)用一次。其他接口調(diào)用前,先調(diào)用登錄函數(shù)或類的方法,獲取登錄憑證。
  • 使用全局變量:在程序中使用全局變量來(lái)保存登錄憑證,在其他接口中讀取該全局變量獲取登錄憑證,避免重復(fù)調(diào)用登錄接口。
責(zé)任編輯:趙寧寧 來(lái)源: 測(cè)試玩家勇哥
相關(guān)推薦

2011-06-03 17:06:09

自動(dòng)化測(cè)試

2021-08-17 09:00:00

架構(gòu)PythonWeb

2024-03-20 13:19:53

2009-08-19 09:00:48

單元測(cè)試框架自動(dòng)化測(cè)試

2022-08-05 22:15:26

Python自動(dòng)化測(cè)試

2020-04-28 09:00:00

測(cè)試測(cè)試自動(dòng)化

2021-06-26 07:40:21

前端自動(dòng)化測(cè)試Jest

2017-12-24 21:00:10

自動(dòng)化測(cè)試測(cè)試框架敏捷

2023-05-18 14:01:00

前端自動(dòng)化測(cè)試

2023-02-11 21:14:58

自動(dòng)化測(cè)試框架

2023-09-14 15:37:11

2019-04-22 09:00:00

Python框架自動(dòng)化測(cè)試

2022-12-26 12:30:28

接口測(cè)試

2020-09-14 07:00:00

測(cè)試自動(dòng)化框架

2023-10-12 07:40:54

Minium自動(dòng)化框架

2012-09-04 10:20:31

IBMdw

2019-04-18 09:00:00

Java自動(dòng)化測(cè)試框架

2012-02-27 17:34:12

Facebook自動(dòng)化

2024-08-12 08:36:28

2024-04-03 15:27:31

Python接口自動(dòng)化開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)