概覽
眾所周知JMeter是一個優(yōu)秀的開源性能測試工具,在社區(qū)中有相當(dāng)?shù)挠绊懥?,社區(qū)中除了拿JMeter做性能測試之外,也采用JMeter來做接口測試(或者說API測試),2018年由軟件質(zhì)量報道做的調(diào)查報告表明,受調(diào)查的測試人員中約有40.67%的人使用JMeter作為接口測試的自動化測試工具(排在商業(yè)化或者開源工具中的第一),剩下的為Postman(28%),以及SoapUI(17.33%)。不過值得關(guān)注的是另外還有44.13%的采用了自研工具,說明可能現(xiàn)有的開源工具不能滿足需求,更多的采用了自己研發(fā)的方式。
JMeter接口測試方案的優(yōu)勢
在XMeter君看來,使用JMeter執(zhí)行接口測試可能有如下的優(yōu)勢:
1)JMeter比較輕量級,并且開源,社區(qū)接受度高,比較容易入門
2)JMeter提供了BeanShell編程能力,可以寫出比較靈活的測試腳本
3)JMeter的社區(qū)比較完善,提供了比較豐富的協(xié)議支持。比如除了支持常見的HTTP協(xié)議之外,還可以直接通過JDBC Sampler連接數(shù)據(jù)庫,把期望的測試結(jié)果存入數(shù)據(jù)庫中,直接對測試結(jié)果進(jìn)行驗證。在編寫測試腳本過程中,可以將不同的協(xié)議調(diào)用使用同一個腳本進(jìn)行組合調(diào)用,寫出比較復(fù)雜的測試用例
4)JMeter提供了比較高級的擴(kuò)展能力,允許自己定義和擴(kuò)展新的協(xié)議支持,比如擴(kuò)展支持阿里提供的Dubbo協(xié)議的JMeter插件等
5)JMeter提供了HTML測試報告和Jenkins集成的能力,比較方便地實現(xiàn)一些基礎(chǔ)的持續(xù)測試
JMeter接口測試方案的劣勢
JMeter作為接口測試方案大概有以下的一些問題:
1)腳本的靈活性。雖然JMeter提供了一定的BeanShell編程能力和自定義協(xié)議的擴(kuò)展能力,可以讓腳本開發(fā)人員有一定的靈活性,受制于JMeter本身的限制,與開發(fā)人員直接使用語言進(jìn)行接口測試相比,靈活性還是相對不足
2)報告的能力。JMeter提供了HTML報告,但是JMeter本身的測試報告主要用于性能測試,反映的更多是性能測試層面的結(jié)果。而且配置過程比較復(fù)雜,在團(tuán)隊成員分享報告等方面比較麻煩
3)持續(xù)集成。利用第三方的Jenkins插件、Ant和Maven等,能與JMeter進(jìn)行一些基本的持續(xù)測試集成,但是對于完全自動化所需的測試環(huán)境的管理等功能支持不足,配置過程略嫌麻煩
4)測試腳本和測試結(jié)果的管理:腳本和結(jié)果基本都是本地管理,無法做到在線管理
優(yōu)化的JMeter接口測試方案
理想的基于JMeter的接口測試方案能夠彌補(bǔ)上述劣勢,包括需要從團(tuán)隊和工具的層面補(bǔ)上短板。
JMeter腳本的靈活性不足的問題可以通過團(tuán)隊成員的合理搭配來解決。JMeter提供了較為完善的擴(kuò)展機(jī)制,通過擴(kuò)展可以支持不同的協(xié)議和函數(shù),這些擴(kuò)展處理的插件和函數(shù)能讓編寫測試腳本變得更加簡單。JMeter的擴(kuò)展需要對Java比較了解,并且掌握J(rèn)Meter的擴(kuò)展機(jī)制。JMeter的擴(kuò)展開發(fā)是一次性的,在完成插件的開發(fā)之后,由腳本編寫人員基于擴(kuò)展的插件和函數(shù)進(jìn)行腳本編寫,從而快速完成接口測試。因此比較好的團(tuán)隊搭配為:
1)一個、或者多個了解JMeter擴(kuò)展的測試開發(fā)人員,主要負(fù)責(zé)相關(guān)擴(kuò)展功能的實現(xiàn),以及報告的定義和持續(xù)集成相關(guān)的一些開發(fā)工作
2)JMeter測試腳本編寫人員,主要負(fù)責(zé)基于JMeter內(nèi)置和自定義擴(kuò)展插件的腳本開發(fā),如果發(fā)現(xiàn)有時候腳本開發(fā)過程中不方便的地方,提交開發(fā)需求由測試開發(fā)人員對JMeter進(jìn)行擴(kuò)展實現(xiàn)
該方案剩下的所需的測試報告、持續(xù)測試集成、測試腳本和結(jié)果的管理需要額外的一些定制工作后才能夠滿足需求。
XMeter API: 一站式JMeter接口測試SaaS服務(wù)
XMeter API提供了基于JMeter的一站式在線接口測試服務(wù),包括了以下的服務(wù):
1)優(yōu)化的在線測試報告:如下圖為在線的測試請求、返回結(jié)果查看,跟蹤和預(yù)覽

圖形化的測試報告,報告可以隨時共享給團(tuán)隊中別的成員。


2)持續(xù)測試的能力,XMeter API是在線運行的SaaS服務(wù),客戶避免管理測試機(jī)器和環(huán)境,只需要把測試腳本上傳之后就可以直接運行。另外也提供了Rest接口,通過一個簡單的HTTP Rest調(diào)用就能實現(xiàn)腳本上傳、測試運行等功能
3)XMeter API提供了在線測試腳本和測試結(jié)果管理的能力,可以把測試腳本進(jìn)行集中管理。測試結(jié)果的集中在線管理可以讓測試人員隨時追蹤、溯源測試結(jié)果
XMeter API在線免費使用
XMeter API測試的在線試用版本已經(jīng)發(fā)布,現(xiàn)在可以免費注冊使用,有興趣的可以點擊該鏈接注冊后進(jìn)行免費使用。
參考文章
在TesterHome有不少不錯的文章描述了如何使用JMeter來執(zhí)行接口測試,下面是XMeter君找的幾篇文章,供大家參考。
1)自動化測試與持續(xù)集成方案--Jmeter 測試接口及性能:介紹了如何使用JMeter實現(xiàn)基本的接口測試,并且利用Ant、Maven和Jenkins實現(xiàn)持續(xù)集成的測試
2)使用 Jmeter 做 Web 接口測試:介紹了接口測試的一些基本概念,以及測試流程,以及在利用JMeter進(jìn)行接口測試的時候可能會用到的一些組件(包括BeanShell,CSV配置等),文章還提到了如何使用JMeter提供的JDBC Sampler進(jìn)行數(shù)據(jù)庫的存取,最后也提到了如何利用Jenkins實現(xiàn)持續(xù)測試
3)對 Jenkins+ANT+Jmeter 接口測試的實踐:本文更多著墨于如何讀取接口測試過程中需要使用到的數(shù)據(jù)文件的處理,以及在持續(xù)集成過程中測試報告的生成
4)接口自動化測試方案一 (數(shù)據(jù)驅(qū)動版本)和jmeter 接口自動化測試方案二 (報告優(yōu)化) 增加 git 路徑是京東的同事寫的文章,介紹了京東在使用JMeter做接口測試的時候如何利用JDBC Sampler來對API測試的結(jié)果驗證進(jìn)行,并且花了比較大的篇幅介紹如何定制測試報告。