測(cè)試需求描述
1昵仅、 本次測(cè)試的接口為http服務(wù)端接口
2缓熟、 接口的主要分成兩類,一類提供給查詢功能接口摔笤,一類提供保存數(shù)據(jù)功能接口够滑,這里我們舉例2個(gè)保存數(shù)據(jù)的接口,因?yàn)檫@兩個(gè)接口有關(guān)聯(lián)
性吕世,比較有代表性彰触;
保存信用卡賬戶信息接口:
傳入?yún)?shù):
args={
"clientNo":"434343556",
"alias": "**信用卡2",
"cardName": "長(zhǎng)城*****卡2",
"cardNo": "25622356788251",
}
傳出參數(shù):
保存成功:{"returnCode":"0","returnMsg":"保存成功"}
保存失敗:{"returnCode":"1","returnMsg":"保存失敗"}
保存邏輯:數(shù)據(jù)傳入進(jìn)來(lái)命辖,驗(yàn)證通過(guò)况毅,保存到信用卡賬戶表中
保存信用卡賬單接口:
傳入?yún)?shù):
args={
"clientNo":"434343556",
"accountName": "測(cè)試",
"billDate": "08",
"billMonth": "201509",
"cardNo": "25622356788251",
"currentPayment": "欠款459.80",
"paymentDate": "2015-09-25 09:00:00",
}
傳出參數(shù):
保存成功:{"returnCode":"0","returnMsg":"保存成功"}
保存失敗:{"returnCode":"1","returnMsg":"保存失敗"}
保存邏輯:保存時(shí)先去信用卡信息表查看clientNo對(duì)應(yīng)的表是否存在尔艇,如存在則數(shù)據(jù)校驗(yàn)通過(guò)尔许,將數(shù)據(jù)保存進(jìn)入信用卡賬單表
測(cè)試分析
1 、 邏輯分析
1) 终娃、從保存邏輯上來(lái)看味廊,這兩個(gè)接口明顯是有依賴關(guān)系的,所以我們先測(cè)試信用卡賬戶信息接口棠耕,再測(cè)試保存信用卡賬單接口
2) 余佛、接口傳入的數(shù)據(jù),最終是保存到數(shù)據(jù)庫(kù)中昧辽,所以當(dāng)接口返回保存成功的時(shí)候衙熔,我們也要去對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中核對(duì)相應(yīng)的數(shù)據(jù)
3) 、當(dāng)出現(xiàn)保存失敗的情況時(shí)搅荞,我們需要查看系統(tǒng)的日志,所以我們也要準(zhǔn)備好查看日志的權(quán)限和地址
2 框咙、測(cè)試工具的準(zhǔn)備
1) 咕痛、單個(gè)接口測(cè)試,我們使用火狐的插件 poster
2)喇嘱、多個(gè)接口測(cè)試茉贡,我們使用Jmeter進(jìn)行測(cè)試
使用工具測(cè)試
1、Poster工具
2者铜、使用Jmeter對(duì)接口測(cè)試
首先我們說(shuō)一下為什么用Poster測(cè)試后我們還要用Jmeter做接口測(cè)試腔丧,在用poster測(cè)試時(shí)候會(huì)發(fā)現(xiàn)的是一個(gè)接口一個(gè)接口的測(cè)試放椰,我們每次
測(cè)試成功后的數(shù)據(jù),在工具中是無(wú)法保存的愉粤,再次測(cè)試的時(shí)候我們還要重新輸入測(cè)試的數(shù)據(jù)砾医,當(dāng)我們測(cè)試一個(gè)接口的時(shí)候可能感覺(jué)不明顯,但是當(dāng)你
測(cè)試幾十個(gè)接口的時(shí)候衣厘,你就會(huì)發(fā)現(xiàn)使用Jmeter的好處如蚜,如果測(cè)試階段來(lái)說(shuō)冒煙測(cè)試我們用poster,集成測(cè)試我們用Jmeter
jmeter視頻
http://edu.51cto.com/course/2324.html
具體步驟
1影暴、首先郵件添加一個(gè)線程組错邦,這里我們重命名InterfaceTest
2、在線程組上添加一個(gè)Http默認(rèn)請(qǐng)求型宙,并配置服務(wù)器的IP地址和傳輸編碼
3撬呢、在線程組中添加一個(gè)HTTP請(qǐng)求,這里我們重命名“增加 信用卡賬戶信息接口 ”
4妆兑、配置接口請(qǐng)求信息魂拦,這配置示例如下:
5,在 保存信用卡賬單接口請(qǐng)求箭跳,示例如下:
注:由于Jmeter請(qǐng)求線程組內(nèi)的請(qǐng)求時(shí)從第一個(gè)開(kāi)始執(zhí)行晨另,所以我們將需要最先執(zhí)行的請(qǐng)求放在前面
6、在 線程組上添加監(jiān)聽(tīng)器谱姓,察看結(jié)果樹(shù)和聚合報(bào)告
7借尿、點(diǎn)擊啟動(dòng),運(yùn)行結(jié)束后查看屉来,結(jié)果樹(shù)和聚合報(bào)告
8路翻、去數(shù)據(jù)庫(kù)中核對(duì)數(shù)據(jù)
大批量數(shù)據(jù)制造
思路:
1、可參數(shù)化的參數(shù)茄靠, 保存信用卡賬戶信息接口( clientNo,cardNo )茂契,保存信用卡賬單接口( clientNo,cardNo, billMonth,paymentDate)
2慨绳、兩個(gè)接口的依賴關(guān)系掉冶,保存信用卡賬單接口( clientNo,cardNo)要和 信用卡賬戶信息接口( clientNo,cardNo )的兩個(gè)相同,也就是說(shuō)這兩個(gè)
要用一個(gè)參數(shù)脐雪,且還不能重復(fù)
根據(jù)上面兩個(gè)接口的特點(diǎn)厌小,( clientNo,cardNo) 我們 選取使用計(jì)數(shù)器,每循環(huán)一次計(jì)數(shù)器加1战秋,那么我們將線程組設(shè)置循環(huán)執(zhí)行1萬(wàn)
次璧亚; billMonth,paymentDate脂信,這兩個(gè)日期我們是使用隨機(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": "長(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)行
簡(jiǎn)單的性能測(cè)試
當(dāng)前測(cè)試環(huán)境下甜攀,TPS峰值為317.6次/秒。根據(jù)業(yè)務(wù)預(yù)期的客戶日常訪問(wèn)量50次每分鐘琐馆,按照每客戶訪問(wèn)一次調(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í)間來(lái)看谁撼,保存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é)果:
1. 負(fù)載測(cè)試
場(chǎng)景運(yùn)行測(cè)試時(shí)間:10分鐘
2. 穩(wěn)定性測(cè)試
場(chǎng)景運(yùn)行時(shí)間:1小時(shí)