聲明: 一切內(nèi)容都是針對自己,如果發(fā)現(xiàn)文中有不對的地方,歡迎留言指教或討論,勿噴。
寫在前面
項(xiàng)目是一個(gè)API項(xiàng)目,剛上的時(shí)候,發(fā)現(xiàn)組里只有契約測試,沒有自動化測試來覆蓋基本功能測試,怎么做regression呢,又集合項(xiàng)目之前用JMeter做過性能測試,所以就直接使用JMeter來做功能自動化了,使用了一段時(shí)間后,痛點(diǎn)慢慢顯現(xiàn)。
痛點(diǎn)
- JMeter有GUI,可以用它的客戶端來組織自己的用例,保存后,會自動生成.jmx文件以供命令行運(yùn)行,但.jmx太晦澀,不好修改,在提PR的時(shí)候,也不容易看出來哪里有改動,這個(gè)時(shí)候就會覺得有點(diǎn)笨重。
- 雖然可以使用csv等文件統(tǒng)一組織用例,但需要同時(shí)用JMeter打開jmx文件再用個(gè)文本編輯器打開csv。
- 使用JSR223在校驗(yàn)Assertion的時(shí)候比較局限,debug很不方便,只能打log。
- 生成的report是從性能方面顯示結(jié)果的,但是支持自定義report格式。
5.怎么篩選一個(gè)用例是否可以在某一個(gè)環(huán)境上運(yùn)行,比如,在test上或release上的回歸用例比較多,而在Staging或PROD上,由于測試數(shù)據(jù)的局限,用例比較少。
結(jié)論:
老老實(shí)實(shí)用JMeter做性能測試吧
問題:
需要尋找一個(gè)合適的API接口功能自動化的工具?
Actions:
嘗試以下工具,
-
REST-assured
基于Java的DSL,詳細(xì)閱讀了它的Usage Guid, 看到這張圖的時(shí)候,已經(jīng)知道這就是我想要的功能了:
REST-assured -
karate
開源工具,類似上邊的REST-assured,也是基于java的,也支持BDD的方式,Karate vs REST-assured,這里有兩者的對比,可以自由比對response的內(nèi)容。
Report: 基于feature文件的report,看起來很方便
[圖片上傳失敗...(image-f337c5-1569319909953)]
Hook: 可以用tag的annotation來區(qū)分case,在不同環(huán)境運(yùn)行測試,如dev,test或者是staging之類。
Pipeline運(yùn)行:
mvn test -Dtest=SampleTest#testTags
-
Airborne
基于Ruby語言,對于返回的response可以靈活校驗(yàn)。
校驗(yàn).png
pipeline運(yùn)行: rspec spec
可以通過加x來Ignore暫時(shí)不需要的case。
pyresttest
基于Python,編輯yaml文件,不習(xí)慣。apiscience
高級的API監(jiān)控工具。unirest
是一個(gè)輕量的小工具,很開心找到了一個(gè)支持.NET的,github查了下比較尷尬,放棄。
總結(jié)
對比了幾個(gè)工具,不想繼續(xù)找下去了,綜合看來#2目前最棒,決定試用,稍后有試用貼給大家分享。

