引言:
最近做的項(xiàng)目需要測試很多接口医吊,上網(wǎng)查一查焕议,發(fā)現(xiàn)完整講述接口測試的資料太少挠日,所以最近自己做完這個項(xiàng)目疮绷,把測試的東西整理一下和大家分享一下,希望對大家有所幫助
一嚣潜、測試需求描述
1冬骚、本次測試的接口為http服務(wù)端接口
2、接口的主要分成兩類懂算,一類提供給查詢功能接口只冻,一類提供保存數(shù)據(jù)功能接口,這里我們舉例2個保存數(shù)據(jù)的接口犯犁,因?yàn)檫@兩個接口有關(guān)聯(lián)性属愤,比較有代表性;
保存信用卡賬戶信息接口: 傳入?yún)?shù):
args={
"clientNo":"434343556", "alias": "** 信 用 卡 2", "cardName": "長城*****卡2", "cardNo": "25622356788251",
}
傳出參數(shù):
保存成功:{"returnCode":"0","returnMsg":"保存成功"}
保存失斔嵋邸:{"returnCode":"1","returnMsg":"保存失敗"} 保存邏輯:數(shù)據(jù)傳入進(jìn)來住诸,驗(yàn)證通過,保存到信用卡賬戶表中
保存信用卡賬單接口: 傳入?yún)?shù):
args={
"clientNo":"434343556", "accountName": "測試",
"billDate": "08", "billMonth": "201509",
"cardNo": "25622356788251",
"currentPayment": " 欠 款 459.80", "paymentDate": "2015-09-25 09:00:00",
}
傳出參數(shù):
保存成功:{"returnCode":"0","returnMsg":"保存成功"}
保存失敾猎琛:{"returnCode":"1","returnMsg":"保存失敗"}
保存邏輯:保存時先去信用卡信息表查看clientNo對應(yīng)的表是否存在贱呐,如存在則數(shù)據(jù)校驗(yàn)通過,將數(shù)據(jù)保存進(jìn)入信用卡賬單表
注:這個保存邏輯在接口開發(fā)設(shè)計(jì)文檔中可能沒有寫或?qū)懙牟辉敿?xì)入桂,這時要與開發(fā)接口人員或產(chǎn)品人員多多溝通去熟悉接口邏輯
二奄薇、測試分析
1、邏輯分析
1)抗愁、從保存邏輯上來看馁蒂,這兩個接口明顯是有依賴關(guān)系的,所以我們先測試信用卡賬戶信息接口蜘腌,再測試保存信用卡賬單接口
2)沫屡、接口傳入的數(shù)據(jù),最終是保存到數(shù)據(jù)庫中撮珠,所以當(dāng)接口返回保存成功的時候沮脖,我們也要去對應(yīng)的數(shù)據(jù)庫表中核對相應(yīng)的數(shù)據(jù)
3)、當(dāng)出現(xiàn)保存失敗的情況時,我們需要查看系統(tǒng)的日志勺届,所以我們也要準(zhǔn)備好查看日志的權(quán)限和地址
2驶俊、測試工具的準(zhǔn)備
1)、單個接口測試免姿,我們使用火狐的插件poster
2)饼酿、多個接口測試,我們使用Jmeter進(jìn)行測試
三养泡、使用工具測試
1嗜湃、Poster工具的使用方法見
http://note.youdao.com/share/?id=a3efa149d165258710ebf1bd04079f72&type=note
2、使用Jmeter對接口測試
首先我們說一下為什么用Poster測試后我們還要用Jmeter做接口測試澜掩,在用poster測試時候會發(fā)現(xiàn)的是一個接口一個接口的測試,我們每次? 測試成功后的數(shù)據(jù)杖挣,在工具中是無法保存的肩榕,再次測試的時候我們還要重新輸入測試的數(shù)據(jù),當(dāng)我們測試一個接口的時候可能感覺不明顯惩妇,但是當(dāng)你測試幾十個接口的時候株汉,你就會發(fā)現(xiàn)使用Jmeter的好處,如果測試階段來說冒煙測試我們用poster歌殃,集成測試我們用Jmeter
1乔妈、首先郵件添加一個線程組,這里我們重命名InterfaceTest
2氓皱、在線程組上添加一個Http默認(rèn)請求路召,并配置服務(wù)器的IP地址和傳輸編碼
3、在線程組中添加一個HTTP請求波材,這里我們重命名“增加信用卡賬戶信息接口”
4股淡、配置接口請求信息,這配置示例如下:
5廷区,在保存信用卡賬單接口請求唯灵,示例如下:
注:由于Jmeter請求線程組內(nèi)的請求時從第一個開始執(zhí)行,所以我們將需要最先執(zhí)行的請求放在前面
6隙轻、在線程組上添加監(jiān)聽器埠帕,察看結(jié)果樹和聚合報告
7、點(diǎn)擊啟動玖绿,運(yùn)行結(jié)束后查看敛瓷,結(jié)果樹和聚合報告
8、去數(shù)據(jù)庫中核對數(shù)據(jù)
9镰矿、大批量數(shù)據(jù)制造思路:
1琐驴、可參數(shù)化的參數(shù),保存信用卡賬戶信息接口(clientNo,cardNo),保存信用卡賬單接口(clientNo,cardNo,billMonth绝淡,paymentDate)
2宙刘、兩個接口的依賴關(guān)系,保存信用卡賬單接口(clientNo,cardNo)要和信用卡賬戶信息接口(clientNo,cardNo)的兩個相同牢酵,也就是說這兩個? ? ? 要用一個參數(shù)悬包,且還不能重復(fù)
根據(jù)上面兩個接口的特點(diǎn),(clientNo,cardNo)我們選取使用計(jì)數(shù)器馍乙,每循環(huán)一次計(jì)數(shù)器加1布近,那么我們將線程組設(shè)置循環(huán)執(zhí)行1萬? 次;billMonth丝格,paymentDate撑瞧,這兩個日期我們是使用隨機(jī)函數(shù)${ Random(1,9,)},將月份參數(shù)化显蝌;
3预伺、在線程組上創(chuàng)建計(jì)數(shù)器,配置如下:
4曼尊、引用計(jì)數(shù)器和隨機(jī)函數(shù)信用卡賬戶接口傳入?yún)?shù)
args={
"clientNo":"${add}434343556", "alias": "** 信 用 卡 2", "cardName": "長城*****卡2",
"cardNo": "${add}25622356788251",
}
賬單接口傳入?yún)?shù)
args={
"clientNo":"${add}434343556", "accountName": "測試",
"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)測試,點(diǎn)擊運(yùn)行
四骆撇、性能測試
簡單的性能測試
性能分析:
-測試結(jié)論:
-當(dāng)前測試環(huán)境下瞒御,TPS峰值為317.6次/秒。根據(jù)業(yè)務(wù)預(yù)期的客戶日常訪問量50次每分鐘神郊,按照每客戶訪問一次調(diào)用全部13個接口計(jì) 算肴裙,則業(yè)務(wù)預(yù)期為50*13=650次/分=10.83次/秒。測試結(jié)果表明系統(tǒng)的業(yè)務(wù)處理能力符合業(yè)務(wù)預(yù)期屿岂。
-由響應(yīng)時間來看践宴,保存XXXX這個接口的響應(yīng)時間明顯較慢,在50線程并發(fā)的時候爷怀,90%響應(yīng)時間為7.7秒阻肩,而75線程并發(fā)的時候則達(dá) 到了24秒,建議進(jìn)行優(yōu)化运授。
-由點(diǎn)擊率烤惊,響應(yīng)時間,TPS統(tǒng)計(jì)圖可知吁朦,整個穩(wěn)定性測試期間柒室,系統(tǒng)反應(yīng)很穩(wěn)定。
-詳細(xì)測試結(jié)果:
1. 負(fù)載測試
場景運(yùn)行測試時間:10分鐘總體測試結(jié)果
并發(fā)用戶數(shù) 90%用戶響應(yīng)時間(秒) 錯誤率 吞吐量(事務(wù)數(shù)/秒)
20 0.121 0.00% 303.2
50 0.243 0.00% 317.6
75 0.699 0.00% 122.4
100 3.458 0.00% 20.5
1. 穩(wěn)定性測試
場景運(yùn)行時間:1小時
并發(fā)用戶數(shù) 90%用戶響應(yīng)時間(秒) 錯誤率 吞吐量(事務(wù)數(shù)/秒)
20 0.132 0.00% 216.9
測試環(huán)境數(shù)據(jù)量如下:
表名稱 數(shù)據(jù)量(條)
逗宜。雄右。空骚。。擂仍。_BANK_CARD 143045
囤屹。。逢渔。肋坚。。_DEPOSIT_DETAI L 136865
有侵權(quán)現(xiàn)象聯(lián)系即刪除肃廓,從網(wǎng)上找的文章智厌。更多資料可以加 ? ?QQ:2135774420