一提到接口測(cè)試,通常大家會(huì)有這樣的疑問:前端測(cè)試不是已經(jīng)覆蓋到各種業(yè)務(wù)邏輯了嗎?為什么還要做接口測(cè)試,接口測(cè)試和前端測(cè)試是不是重復(fù)了?對(duì)于這個(gè)問題,可以從下面幾個(gè)方面來解釋:
什么是接口測(cè)試?
接口測(cè)試是測(cè)試系統(tǒng)組件間接口的一種測(cè)試。接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。
為什么要做接口測(cè)試?
現(xiàn)在很多系統(tǒng)前后端架構(gòu)是分離的,從安全層面來說,只依賴前端進(jìn)行限制已經(jīng)完全不能滿足系統(tǒng)的安全要求,需要后端同樣進(jìn)行控制,在這種情況下就需要從接口層面進(jìn)行驗(yàn)證。
如今系統(tǒng)越來越復(fù)雜,傳統(tǒng)的靠前端測(cè)試已經(jīng)大大降低了效率,而且現(xiàn)在我們都推崇測(cè)試前移,希望測(cè)試能更早的介入測(cè)試,那接口測(cè)試就是一種及早介入的方式。例如傳統(tǒng)測(cè)試,你是不是得等前后端都完成你才能進(jìn)行測(cè)試,才能進(jìn)行自動(dòng)化代碼編寫。 而如果是接口測(cè)試,只需要前后端定義好接口,那這時(shí)自動(dòng)化就可以介入編寫接口自動(dòng)化測(cè)試代碼,手工測(cè)試只需要后端代碼完成就可以介入測(cè)試后端邏輯而不用等待前端工作完成。
接口測(cè)試實(shí)戰(zhàn)案例分享
一、測(cè)試需求描述
1、 本次測(cè)試的接口為http服務(wù)端接口
2、 這里我們舉例2個(gè)保存數(shù)據(jù)的接口,因?yàn)檫@兩個(gè)接口有關(guān)聯(lián)性,比較有代表性;
保存信用卡賬戶信息接口:
保存信用卡賬單接口:
注:這個(gè)保存邏輯在接口開發(fā)設(shè)計(jì)文檔中可能沒有寫或?qū)懙牟辉敿?xì),這時(shí)要與開發(fā)接口人員或產(chǎn)品人員多多溝通去熟悉接口邏輯
二、使用工具測(cè)試
為什么選擇Jmeter進(jìn)行http接口測(cè)試?
在進(jìn)行網(wǎng)頁(yè)或應(yīng)用程序后臺(tái)接口開發(fā)時(shí),一般要及時(shí)測(cè)試開發(fā)的接口能否正確接收和返回?cái)?shù)據(jù),對(duì)于單次測(cè)試,Postman插件是個(gè)不錯(cuò)的Http請(qǐng)求模擬工具。
但是Postman只能模擬單客戶端的單次請(qǐng)求,而對(duì)于模擬多用戶并發(fā)等性能測(cè)試,就必須借助其他的工具了,這里推薦功能強(qiáng)大的JMeter自動(dòng)化測(cè)試工具,Apache JMeter是Apache組織開發(fā)的基于Java的壓力測(cè)試工具。用于對(duì)軟件做壓力測(cè)試,它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試但后來擴(kuò)展到其他測(cè)試領(lǐng)域。
它可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對(duì)象、數(shù)據(jù)庫(kù), FTP 服務(wù)器, 等等。JMeter 可以用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來自不同壓力類別下測(cè)試它們的強(qiáng)度和分析整體性能。
下面我就簡(jiǎn)單的介紹下使用Jmeter進(jìn)行接口測(cè)試的方法。
如何使用Jmeter進(jìn)行接口測(cè)試?
1、首先郵件添加一個(gè)線程組,這里我們重命名InterfaceTest
2、在線程組上添加一個(gè)Http默認(rèn)請(qǐng)求,并配置服務(wù)器的IP地址和傳輸編碼
在線程組中添加一個(gè)HTTP請(qǐng)求,這里我們重命名“增加 信用卡賬戶信息接口 ”
配置接口請(qǐng)求信息,這配置示例如下:
在保存信用卡賬單接口請(qǐng)求,示例如下:
注:由于Jmeter請(qǐng)求線程組內(nèi)的請(qǐng)求時(shí)從第一個(gè)開始執(zhí)行,所以我們將需要最先執(zhí)行的請(qǐng)求放在前面
6、在線程組上添加監(jiān)聽器,察看結(jié)果樹和聚合報(bào)告
點(diǎn)擊啟動(dòng),運(yùn)行結(jié)束后查看,結(jié)果樹和聚合報(bào)告
8、去數(shù)據(jù)庫(kù)中核對(duì)數(shù)據(jù)
9、大批量數(shù)據(jù)制造
思路:
1、可參數(shù)化的參數(shù),保存信用卡賬戶信息接口( clientNo,cardNo ),保存信用卡賬單接口( clientNo,cardNo, billMonth,paymentDate)
2、兩個(gè)接口的依賴關(guān)系,保存信用卡賬單接口( clientNo,cardNo)要和信用卡賬戶信息接口( clientNo,cardNo )的兩個(gè)相同,也就是說這兩個(gè)要用一個(gè)參數(shù),且還不能重復(fù)。
根據(jù)上面兩個(gè)接口的特點(diǎn),( clientNo,cardNo) 我們選取使用計(jì)數(shù)器,每循環(huán)一次計(jì)數(shù)器加1,那么我們將線程組設(shè)置循環(huán)執(zhí)行1萬次; billMonth,paymentDate,這兩個(gè)日期我們是使用隨機(jī)函數(shù)${__Random(1,9,)},將月份參數(shù)化;
在線程組上創(chuàng)建計(jì)數(shù)器,配置如下:
4、引用計(jì)數(shù)器和隨機(jī)函數(shù)
信用卡賬戶接口傳入?yún)?shù)
args={
“clientNo”:“${add}434343556”,
“alias”: “**信用卡2”,
“cardName”: “長(zhǎng)城*****卡2”,
“cardNo”: “${add}25622356788251”,
}
賬單接口傳入?yún)?shù)
args={
“clientNo”:“${add}434343556”,
“accountName”: “測(cè)試”,
“billDate”: “08”,
“billMonth”: “20150${__Random(1,9,)}”,
“cardNo”: “${add}25622356788251”,
“currentPayment”: “欠款459.80”,
“paymentDate”: “2015-0${__Random(1,9,)}-25 09:00:00”,
}
5、設(shè)置線程組循環(huán)測(cè)試,點(diǎn)擊運(yùn)行
三、性能測(cè)試
簡(jiǎn)單的性能測(cè)試
性能分析:
-
測(cè)試結(jié)論:
-
當(dāng)前測(cè)試環(huán)境下,TPS峰值為317.6次/秒。根據(jù)業(yè)務(wù)預(yù)期的客戶日常訪問量50次每分鐘,按照每客戶訪問一次調(diào)用全部13個(gè)接口計(jì)算,則業(yè)務(wù)預(yù)期為50*13=650次/分=10.83次/秒。測(cè)試結(jié)果表明系統(tǒng)的業(yè)務(wù)處理能力符合業(yè)務(wù)預(yù)期。
-
由響應(yīng)時(shí)間來看,保存XXXX這個(gè)接口的響應(yīng)時(shí)間明顯較慢,在50線程并發(fā)的時(shí)候,90%響應(yīng)時(shí)間為7.7秒,而75線程并發(fā)的時(shí)候則達(dá)到了24秒,建議進(jìn)行優(yōu)化。
-
由點(diǎn)擊率,響應(yīng)時(shí)間,TPS統(tǒng)計(jì)圖可知,整個(gè)穩(wěn)定性測(cè)試期間,系統(tǒng)反應(yīng)很穩(wěn)定。
-
詳細(xì)測(cè)試結(jié)果:
- 負(fù)載測(cè)試
場(chǎng)景運(yùn)行測(cè)試時(shí)間:10分鐘
總體測(cè)試結(jié)果
2. 穩(wěn)定性測(cè)試
場(chǎng)景運(yùn)行時(shí)間:1小時(shí)
測(cè)試環(huán)境數(shù)據(jù)量如下:
總結(jié):
根據(jù)上面的幾個(gè)步驟,得到測(cè)試結(jié)果,分析系統(tǒng)存在的瓶頸,然后采用各種方法提出解決方案或優(yōu)化建議,最后對(duì)本次性能測(cè)試進(jìn)行一個(gè)完整的總結(jié),這樣,一次性能測(cè)試就完成了。
在整個(gè)過程中,費(fèi)時(shí)較長(zhǎng)一般是在測(cè)試數(shù)據(jù)準(zhǔn)備和測(cè)試執(zhí)行、監(jiān)控調(diào)優(yōu)階段。
最后吐槽一句:性能測(cè)試水太深,想潛水的做好準(zhǔn)備,別稀里糊涂扎進(jìn)來,太刺激。。
學(xué)習(xí)安排上
如果你不想再體驗(yàn)一次學(xué)習(xí)時(shí)找不到資料,沒人解答問題,堅(jiān)持幾天便放棄的感受的話,在這里我給大家分享一些自動(dòng)化測(cè)試的學(xué)習(xí)資源,希望能給你前進(jìn)的路上帶來幫助。
文章來源:http://www.zghlxwxcb.cn/news/detail-767944.html
視頻文檔獲取方式:
這份文檔和視頻資料,對(duì)于想從事【軟件測(cè)試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴我走過了最艱難的路程,希望也能幫助到你!以上均可以分享,點(diǎn)下方小卡片進(jìn)群即可自行領(lǐng)取。文章來源地址http://www.zghlxwxcb.cn/news/detail-767944.html
到了這里,關(guān)于10分鐘學(xué)會(huì)Jmeter接口測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!