性能測試里面包含三個測試:基準測試优构、負載測試、壓力測試雁竞。
基準測試就是用一個虛擬用戶(UV)進行一個對被測系統(tǒng)/對象的操作
負載測試就是慢慢不斷地加UV
壓力測試就是長時間連續(xù)運行系統(tǒng)給系統(tǒng)性能造成的影響钦椭,一直到測出問題為止
一、JMeter進行HTTP協(xié)議接口的壓力測試
1.添加線程組
填寫并發(fā)信息
2.添加HTTP請求
填寫HTTP請求信息
3.設(shè)置監(jiān)聽器
4.測試執(zhí)行
5.測試結(jié)果解析
1.)查看結(jié)果樹:可以查看測試結(jié)果、請求信息玉凯、響應(yīng)信息势腮;
2)查看聚合報告:可以查看測試的請求數(shù)、響應(yīng)時間和成功率
二漫仆、JMeter測試搶紅包示例
(1)概述
???? 此處記錄使用JMeter對搶紅包業(yè)務(wù)進行壓力測試的過程捎拯,涉及的內(nèi)容包括:
1.搶紅包業(yè)務(wù)壓力測試需求分析;
2.創(chuàng)建JMeter測試計劃盲厌,根據(jù)業(yè)務(wù)執(zhí)行邏輯設(shè)計測試腳本署照;
3.設(shè)置檢查點;
4.回放腳本吗浩,根據(jù)業(yè)務(wù)邏輯判斷檢查點設(shè)置是否有效建芙;
5.腳本參數(shù)化;
6.虛擬批量用戶執(zhí)行搶紅包業(yè)務(wù)懂扼;
7.測試結(jié)果分析禁荸;
(2)測試需求分析
1.驗證批量用戶搶紅包時的響應(yīng)時間是否滿足300ms以內(nèi);
2.驗證相同紅包每個用戶只能搶1次阀湿;
3.每個紅包最多只能被搶9次赶熟;
4.用戶搶紅包的業(yè)務(wù):
1)使用手機訪問紅包,請求驗證碼陷嘴;(參數(shù)包含手機號碼和驗證碼)
2)(驗證碼下發(fā)成功)映砖,使用手機搶紅包;(參數(shù)包含手機號碼和驗證碼)
5.測試手機號碼和測試紅包有限灾挨;
(3)創(chuàng)建測試計劃邑退、設(shè)計測試腳本
步驟如下:
1.新建測試計劃,右擊測試計劃-->【添加】-->【Threads(Users)】-->【線程組】劳澄,創(chuàng)建名為“搶紅包測試”的線程組地技;
2.右擊“搶紅包測試”線程組-->【添加】-->【Sampler】-->【HTTP請求】,添加名為“請求驗證碼”的HTTP請求秒拔;
1)填寫“請求驗證碼”的HTTP請求信息乓土;
“請求驗證碼”
右擊“搶紅包測試”線程組-->【添加】-->【Sampler】-->【HTTP請求】,添加名為“搶紅包”的HTTP請求溯警;
“搶紅包”
2)為“搶紅包”請求添加【查看結(jié)果樹】趣苏,監(jiān)聽測試結(jié)果;
右擊“搶紅包測試”線程組-->【添加】-->【監(jiān)聽器】-->【查看結(jié)果樹】梯轻,看測試結(jié)果食磕、請求信息、響應(yīng)信息喳挑;
5.右擊“搶紅包測試”線程組-->【添加】-->【監(jiān)聽器】-->【聚合報告】彬伦,查看測試的請求數(shù)滔悉、響應(yīng)時間和成功率等信息;
6.按上述步驟創(chuàng)建測試腳本单绑,效果如下:
(4)設(shè)置檢查點
步驟如下:
1.使用一組正確的測試數(shù)據(jù)回官,驗證請求驗證碼、搶紅包成功的提示信息:
? ?1)請求驗證碼成功的提示信息為“短信驗證碼下發(fā)成功搂橙!”
?2)請求驗證碼成功后歉提,搶紅包成功的提示信息為“成功”
2.設(shè)置檢查點
請求驗證碼-->【添加】-->【斷言】-->【響應(yīng)斷言】;
2)點擊【添加】按鈕区转,編輯斷言信息苔巨,該例中檢查響應(yīng)數(shù)據(jù)是否包含“短信驗證碼下發(fā)成功!”
“搶紅包”-->【添加】-->【斷言】-->【響應(yīng)斷言】废离;
4)點擊【添加】按鈕侄泽,編輯斷言信息,該例中檢查響應(yīng)數(shù)據(jù)是否包含“成功”蜻韭;
(5)驗證檢查點是否生效
.使用失效數(shù)據(jù)模擬用戶請求悼尾,確認檢查點是否生效;
?1.)使用失效數(shù)據(jù)請求驗證碼時肖方,測試失敗闺魏,因沒有檢查到指定信息;
2.)使用失效數(shù)據(jù)搶紅包時窥妇,測試失敗兑徘,因沒有檢查到指定信息榄攀;
2.使用正確信息請求時瘩例,測試通過氯窍;
(6)腳本參數(shù)化
步驟如下:
右擊“搶紅包測試”線程組-->【添加】-->【配置元件】-->【CSV Data Set Config】阐枣;
2.編輯【CSV Data Set Config】信息佑钾,如下圖:
3.修改“請求驗證碼”和“搶紅包”請求中需要參數(shù)化的參數(shù)值悠鞍,和步驟2中定義的變量屬性一致弓坞;
(7)虛擬批量用戶執(zhí)行搶紅包業(yè)務(wù)
前置條件:
1.檢查點生效吨岭、測試腳本調(diào)試成功拉宗;
2.測試參數(shù)化的測試數(shù)據(jù)準備完成;
步驟:
1.設(shè)置測試計劃循環(huán)次數(shù)辣辫;
(8)測試結(jié)果分析
1.查看結(jié)果樹:測試結(jié)果與實際結(jié)果一致旦事,成功118次,失敗7次(調(diào)試腳本時已使用的信息急灭,為失效信息)
2.查看聚合報告:
三姐浮、多線程組并發(fā)測試(多場景混合并發(fā))
如果測試需求出現(xiàn)如下場景,該如何使用JMeter實現(xiàn)壓力測試呢葬馋?即JMeter如何實現(xiàn)多線程組并發(fā)測試卖鲤,也就是Loadrunner中的混合場景測試時肾扰,該如何設(shè)置并發(fā)數(shù)?
測試需求如下:對業(yè)務(wù)A蛋逾、業(yè)務(wù)B集晚、業(yè)務(wù)C、業(yè)務(wù)D区匣、業(yè)務(wù)E偷拔,5個業(yè)務(wù)按并發(fā)比例要求進行100個用戶并發(fā)的壓力測試;
JMeter是可以實現(xiàn)上述需求的沉颂,測試方案如下:
1.創(chuàng)建一個測試計劃条摸;
2.在該計劃下添加5個線程組,分別是對業(yè)務(wù)A铸屉、業(yè)務(wù)B钉蒲、業(yè)務(wù)C、業(yè)務(wù)D彻坛、業(yè)務(wù)E顷啼;
3.分別設(shè)置線程組業(yè)務(wù)A、業(yè)務(wù)B昌屉、業(yè)務(wù)C钙蒙、業(yè)務(wù)D、業(yè)務(wù)E的線程數(shù)為:40间驮、10躬厌、20、25竞帽、5(總并發(fā)量為100扛施,按并發(fā)比例設(shè)置并發(fā)用戶數(shù))
3.在該計劃下添加測試結(jié)果監(jiān)控;
4.設(shè)置執(zhí)行時間屹篓,開始執(zhí)行測試疙渣,測試時可以看到并發(fā)數(shù)為5個業(yè)務(wù)并發(fā)量的總和,堆巧,如下圖:
四妄荔、Jmeter發(fā)送https請求的基礎(chǔ)壓測操作
現(xiàn)在越來越多的服務(wù)器都是使用https的請求,所以直接還是使用http以前的那一套肯定是不行了谍肤。有較多的服務(wù)器請求需要證書啦租,才能進行訪問,比如阿里云的ip定位服務(wù)荒揣,就是需要信息頭證書篷角。服務(wù)端驗證了信息頭中的值正確了才會放行response,并同時回調(diào)信息乳附。這樣可以最大的保證服務(wù)的安全和價值性内地。
第一步:右鍵添加線程組
第二步:線程組下右鍵添加Sampler---HTTP請求
(前提是你需要壓測的是https協(xié)議的)必須在協(xié)議欄中手動輸入https(大小寫都可)伴澄,一般都是get,請求方法視自己需要選擇阱缓。在Parameters中輸入字段標識和值非凌。
如果只是普通的HTTP協(xié)議,可以不填荆针,但是如果是HTTPS協(xié)議敞嗡,那么需要在協(xié)議處添加https,端口號的位置也需要填寫上? ? ? ? 443 ?? ? ?航背,其他部分都是按照正常的方式填寫喉悴!再叮囑一句端口一般情況下一定是443!
第三步:添加http信息頭管理器玖媚。
在頭管理器中添加授權(quán)方給的key輸入到值列表中箕肃,注意如果是復(fù)制過來的一定要注意? ?空格~~~
同時我們要把頭管理器放到http請求的序列之前(不要問為什么,因為jmeter是嚴格按照序列來執(zhí)行請求的今魔。)
第四步:右擊添加查看結(jié)果樹勺像、聚合報告等,然后保存執(zhí)行就可以了
?第五步:在以上幾步之前要搞清楚線程組中的線程數(shù)和循環(huán)次數(shù)的區(qū)別错森。(一定要清楚吟宦,不然跑出來的聚合報告數(shù)據(jù)完全不同并對測試結(jié)果造成偏差。)
源碼交流及其它接口測試細節(jié)歡迎加入知識星球「細說測試」涩维,掃碼下圖二維碼即可殃姓。