開發修改了介面,測試應如何高效維護、更新介面用例
不知道大家有沒有同感,做介面測試麻煩的不是測試本身,而是介面它會變,更麻煩的不是介面變了,而是它變了而你不知道。等到你測完,開發才悠悠跟你說——“那個介面我改了點東西,你再看一眼哈”。
我那是看一眼的工作量嗎? 我得review一遍看影響到哪些介面,再根據影響到的介面,檢視並修改對應的介面用例,呼叫鏈下游的用例,該改的改,改完再跑一次介面測試。
——這意味著已經做完的工作又要來推翻重來一遍,我本來已經幹完活兒悠哉摸魚了,現在得加班了,我那40米大刀已經舉起來你看到了沒?
吐槽歸吐槽,但人真的不是精密的機器沒法保證一直不出錯。即便我們組內“服務好下游,承接好上游,不拖後腿,不坑隊友”已經是共識了,在彼此工作量巨大的前提下,真的很難不會有溝通不及時、不到位的情況。 何況即便即時通知了,變更仍舊會給測試帶來不少的返工工作量。
有沒有一種可能介面被改了測試能及時同步到資料,不用自己去扒拉新的介面文件?
有沒有一種可能介面改了用例也能順便幫我一起改了,再順便告知我有哪些地方需要調整的我再精準調整?
大佬有了idea會自己造輪子,而我,我會找現成的輪子。 比對了幾款國內外的介面測試和管理工具,目前最符合這個需求的是一款叫Apifox的國產介面除錯、測試、文件管理工具。
Apifox解決方案
捋一下當一個介面被改了,它被改動的地方可能有:
-
介面的入參和出參沒有變化,只是介面內部的實現邏輯變化了
-
介面的入參被修改了,這個請求引數可能是必填的也可能是非必填的
-
介面的返回響應被改了
那麼對應的,測試需要捋清楚自己哪些地方需要返工:
1.修改了內部邏輯的介面,用例不需要改動,只需要重新執行一遍測試
2.介面的出參入參變化導致改介面的服務受影響,相關用例也需同步調整
3.各個介面間存在引數傳遞和呼叫關係,也可能受影響,用例需要排查調整
簡單來說就是捋清楚哪些介面收到影響了,再去修改對應的用例。 這些工作原本需要我們手動排查的,其實可以直接利用Apifox去實現。
Apifox對此給出的解決方案是:
1.當開發那改動了介面之後,測試這邊一鍵同步,能直接同步到最新的介面文件
2.設定介面用例與介面繫結,當介面的請求引數和響應引數發生變化,介面用例也會同步更新到最新的介面資料,不需要人工修改介面用例
3.一鍵回放介面用例,對比返回的結果,如果報錯或者返回的資料結構不對應,則告警;
4.介面設計時可以對返回響應進行約束,用例設計時也可以對介面返回進行斷言,當介面響應發生變化,執行自動化介面測試會針對錯誤的地方給出提示。
以上都依託於Apifox的自動化測試功能,用Apifox怎麼做自動化測試,大家可以去官網搜一下相關教程,我重點會放在“介面變更”要怎麼處理這部分。
用Apifox怎麼處理介面變更
用Apifox處理介面變更主要依賴於它的兩大功能:
1.介面變更資料同步與介面用例自動更新
介面用例是在介面的基礎上,修改請求/響應欄位的值儲存生成的。 無論是介面的域名,路徑,方法,請求引數,響應引數被修改,介面用例也能夠一鍵步到最新的資料。 2.自動斷言功能
Apifox的自動斷言功能不需要寫指令碼,對Python或js不熟悉也可以直接通過視覺化介面填寫引數。 在生成的介面用例中,選擇後置操作tab/斷言
;填寫你要斷言的物件,提取響應裡的目標引數,並設定判斷規則,校驗實際返回與期望返回是否與預期一致。 提取引數時通過json path表示式提取的,具體規則可以看下這個使用文件:https://www.apifox.cn/help/reference/json-path/
3.響應引數資料結構自動校驗
在介面tab,響應模組/高階設定 中,會對響應欄位的資料結構和範圍進行約束,針對資料型別/範圍變更,可以檢測到。
介面用例會自動同步修改的資料
找個專案舉例子,在這個專案裡已經儲存了介面和生成了對應的用例。 但後來由於專案需求變更,在介面的請求引數中增加了寵物名稱。 則此時對應的介面用例也會同步並增加此項介面請求引數。
介面用例中已經自動增加了改請求引數
介面程式碼實現邏輯修改
如果介面內部程式碼實現邏輯變更,介面的入參和出參沒有變化,那麼只要迴歸介面用例,覆蓋到被修改的介面即可。
每次跑自動化測試,Apifox都能自動生成測試報告並儲存下來,只要劃定受影響介面,比對兩次自動化測試的結果,就能排查介面修改是否影響到服務的功能
介面引數修改
介面的引數變化可分為介面請求引數變化或者介面響應引數變化。 A.請求引數變化 B.
1)當介面請求引數增加或減少了必填引數,介面用例能同步過來,但是引數為空的,用例一執行就會報錯,此時可根據報錯針對性修改。
2)針對介面響應引數的變化,對於重要的響應引數,比如說下個介面要呼叫到的引數,可在用例的後置指令碼中增加對這個引數的斷言
介面沒有變更的情況下,會提示正常
一旦該引數被刪除,則會提示斷言結果會提示異常
3.針對返回引數資料結構型別的約束,可對返回的資料型別和資料範圍進行約束。一旦返回資料型別發生變化,介面斷言直接提示錯誤。
可直接在在介面tab的返回引數上選擇資料型別,接著點選右側的設定按鈕,可對資料的具體範圍進行約束
接著再設定該引數對應的資料範圍約束
針對string型別的資料進行約束
針對integer型別的資料進行約束
Apifox 下載
下載地址: https://www.apifox.cn/?utm_source=apitest