性能測(cè)試知識(shí)點(diǎn)
1.性能測(cè)試概念:
通過(guò)自動(dòng)化測(cè)試工具模擬多種正常,峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試
2.性能測(cè)試條件
- 系統(tǒng)基礎(chǔ)功能測(cè)試驗(yàn)證完成
- 系統(tǒng)趨于穩(wěn)定
3.性能測(cè)試基本流程
- 需求分析
(1)系統(tǒng)信息調(diào)研
(2)業(yè)務(wù)信息調(diào)研
(3)性能需求評(píng)估
?判斷是否進(jìn)行性能測(cè)試主要從下面兩個(gè)方面進(jìn)行思考:
業(yè)務(wù)角度:
系統(tǒng)是公司內(nèi)部 or 對(duì)外?系統(tǒng)使用的人數(shù)的多少?此時(shí)可進(jìn)行性能測(cè)試來(lái)排查問(wèn)題。
系統(tǒng)角度:系統(tǒng)又可以從以下3個(gè)方面進(jìn)行分析
a.系統(tǒng)架構(gòu):
如果一個(gè)系統(tǒng)采用的框架是老的系統(tǒng)框架(通常大公司都有自己的統(tǒng)一框架),只是在此框架上增加一些應(yīng)用,其實(shí)是沒(méi)有必要做性能測(cè)試,因?yàn)槔峡蚣艿氖褂每隙ㄊ墙?jīng)過(guò)了驗(yàn)證的。如果一個(gè)系統(tǒng)采用的是一種新的框架,可以考慮做性能測(cè)試。
b.數(shù)據(jù)庫(kù)要求:
很多情況下,性能測(cè)試是大數(shù)據(jù)量的并發(fā)訪問(wèn)、修改數(shù)據(jù)庫(kù),而瓶頸在于連接數(shù)據(jù)庫(kù)池的數(shù)量,而非數(shù)據(jù)庫(kù)本身的負(fù)載、吞吐能力。這時(shí),可以結(jié)合DBA的建議,來(lái)決定是否來(lái)做性能測(cè)試。
c.系統(tǒng)特殊要求:
從實(shí)時(shí)性角度來(lái)分析,某些系統(tǒng)對(duì)響應(yīng)時(shí)間要求比較,比如證券系統(tǒng),系統(tǒng)的快慢直接影響客戶的收益,這種情況就有作并發(fā)測(cè)試的必要,在大并發(fā)量的場(chǎng)景下,查看這個(gè)功能的響應(yīng)時(shí)間。從大數(shù)據(jù)量上傳下載角度分析,某些系統(tǒng)經(jīng)常需要進(jìn)行較大數(shù)據(jù)量的上傳和下載操作,有必要進(jìn)行性能測(cè)試,確定系統(tǒng)能處理的最大容量
(4)確定性能測(cè)試點(diǎn)
(5)確定性能指標(biāo)
- 測(cè)試準(zhǔn)備
(1)測(cè)試環(huán)境準(zhǔn)備:
a)系統(tǒng)運(yùn)行環(huán)境:這個(gè)通常就是我們的測(cè)試環(huán)境,有些時(shí)候需求比較多,做性能測(cè)試擔(dān)心把環(huán)境搞跨了影響其它的功能測(cè)試,可能需要重新搭建一套專門用來(lái)做性能測(cè)試的環(huán)境。
b)執(zhí)行機(jī)環(huán)境:這個(gè)就是用來(lái)生成負(fù)載的執(zhí)行機(jī),通常需要在物理機(jī)上運(yùn)行,而物理機(jī)又是稀缺資源,所以我們每次做性能測(cè)試都需要提前準(zhǔn)備好執(zhí)行機(jī)環(huán)境。
(2)測(cè)試場(chǎng)景設(shè)計(jì):根據(jù)性能需求分析來(lái)設(shè)計(jì)符合用戶使用習(xí)慣的場(chǎng)景,場(chǎng)景設(shè)計(jì)的好不好直接影響到性能測(cè)試的效果。
(3)性能工具準(zhǔn)備:
a)負(fù)載工具:根據(jù)需求分析和系統(tǒng)特點(diǎn)選擇合適的負(fù)載工具,比如LR、Jmeter或galting等
b)監(jiān)控工具:準(zhǔn)備性能測(cè)試時(shí)的服務(wù)器資源、JVM、數(shù)據(jù)庫(kù)監(jiān)控工具,以便進(jìn)行后續(xù)的性能測(cè)試分析與調(diào)優(yōu)。
(4)測(cè)試腳本準(zhǔn)備:如果性能測(cè)試工具不能滿足被測(cè)系統(tǒng)的要求或只能滿足部分要求時(shí),需要我們自己開(kāi)發(fā)腳本配合工具進(jìn)行性能測(cè)試。
(5)測(cè)試數(shù)據(jù)準(zhǔn)備:
a)負(fù)載測(cè)試數(shù)據(jù):并發(fā)測(cè)試時(shí)需要多少數(shù)據(jù)?比如登錄場(chǎng)景?
b)DB數(shù)據(jù)量大?。簽榱吮M量符合生產(chǎn)場(chǎng)景,需要模擬線上大量數(shù)據(jù)情況,那么要往數(shù)據(jù)庫(kù)里提前插入一定的數(shù)據(jù)量。這可能需要花費(fèi)一些時(shí)間,特點(diǎn)是關(guān)聯(lián)系統(tǒng)較多,邏輯復(fù)雜的業(yè)務(wù)可能同時(shí)涉及多張表。
(6)其它:如果需要其它其它關(guān)聯(lián)系統(tǒng)或?qū)I(yè)人士如DBA配合的,也需要提前進(jìn)行溝通。
- 測(cè)試執(zhí)行
(1)人工邊執(zhí)行邊分析
(2)無(wú)人值守執(zhí)行性能測(cè)試
- 結(jié)果分析與調(diào)優(yōu)
- 報(bào)告與總結(jié)
自動(dòng)化測(cè)試工具Jmeter
jmeter能夠完成功能:
- 用于對(duì)服務(wù)器,網(wǎng)絡(luò)或?qū)ο竽M巨大負(fù)載
- 通過(guò)創(chuàng)建帶有斷言的腳本來(lái)驗(yàn)證程序是否能返回預(yù)期的結(jié)果
優(yōu)缺點(diǎn):
優(yōu)點(diǎn):開(kāi)源,跨平臺(tái),支持多協(xié)議 小巧且功能強(qiáng)大
缺點(diǎn):不支持IP欺騙? 無(wú)法驗(yàn)證JS程序和UI界面
工具使用:
參照項(xiàng)目點(diǎn)餐系統(tǒng)(MVC框架,RESTfull風(fēng)格)進(jìn)行測(cè)試
(一)添加協(xié)議及接口相關(guān)配置信息
(1)添加http請(qǐng)求
?(2)新增監(jiān)聽(tīng)器,查看測(cè)試結(jié)果
?
?(二)線程組
設(shè)置屬性:
(1)線程數(shù):虛擬用戶數(shù)。一個(gè)虛擬用戶占用一個(gè)進(jìn)程或線程。設(shè)置多少虛擬用戶數(shù)在這里也就是設(shè)置多少個(gè)線程數(shù)。
(2)Ramp-Up時(shí)間(秒)準(zhǔn)備時(shí)長(zhǎng):設(shè)置的虛擬用戶數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)。如果線程數(shù)為10,準(zhǔn)備時(shí)長(zhǎng)為2,那么需要2秒鐘啟動(dòng)10個(gè)線程,也就是每秒鐘啟動(dòng)5個(gè)線程。
(3) 循環(huán)次數(shù):每個(gè)線程發(fā)送請(qǐng)求的次數(shù)。如果線程數(shù)為10,循環(huán)次數(shù)為100,那么每個(gè)線程發(fā)送100次請(qǐng)求??傉?qǐng)求數(shù)為10x100=1000 。如果勾選了“永遠(yuǎn)”,那么所有線程會(huì)一直發(fā)送請(qǐng)求,一到選擇停止運(yùn)行腳本。
(4)Delay Thread creation until needed:直到需要時(shí)延遲線程的創(chuàng)建。
(5)調(diào)度器:設(shè)置線程組啟動(dòng)的開(kāi)始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí),需要勾選循環(huán)次數(shù)為永遠(yuǎn))
持續(xù)時(shí)間(秒):測(cè)試持續(xù)時(shí)間,會(huì)覆蓋結(jié)束時(shí)間
啟動(dòng)延遲(秒):測(cè)試延遲啟動(dòng)時(shí)間,會(huì)覆蓋啟動(dòng)時(shí)間
啟動(dòng)時(shí)間:測(cè)試啟動(dòng)時(shí)間,啟動(dòng)延遲會(huì)覆蓋它。當(dāng)啟動(dòng)時(shí)間已過(guò),手動(dòng)只需測(cè)試時(shí)當(dāng)前時(shí)間也會(huì)覆蓋它。
結(jié)束時(shí)間:測(cè)試結(jié)束時(shí)間,持續(xù)時(shí)間會(huì)覆蓋它。
(三)并發(fā)和順序執(zhí)行
并發(fā)執(zhí)行
?順序執(zhí)行
?(四)特殊線程組
- ?setUp線程組:最優(yōu)先執(zhí)行的線程組
- tearDown線程組:最后執(zhí)行的線程組
(五)http請(qǐng)求默認(rèn)值
http請(qǐng)求默認(rèn)值的設(shè)置,將被復(fù)用的內(nèi)容進(jìn)行封裝
?(六)信息頭管理器
新增修改實(shí)現(xiàn)時(shí) 所提交數(shù)據(jù)都為json格式 需要說(shuō)明所提交數(shù)據(jù)類型
?(七)參數(shù)化
動(dòng)態(tài)獲取,設(shè)置或生成數(shù)據(jù),滿足多次大量提交,避免每次測(cè)試都要修改
實(shí)現(xiàn)參數(shù)化:
- 用戶定義的變量
- CSV數(shù)據(jù)文件設(shè)置
步驟:
1使用CSV文件存儲(chǔ)測(cè)試數(shù)據(jù)
2編寫(xiě)被復(fù)用的菜單新增腳本模板
3關(guān)聯(lián)腳本與數(shù)據(jù)(將文件數(shù)據(jù)導(dǎo)入腳本)
?
- 用戶參數(shù)
步驟:
1編寫(xiě)被復(fù)用的菜單新增腳本模板
2使用用戶參數(shù)存儲(chǔ)測(cè)試數(shù)據(jù)
3將數(shù)據(jù)導(dǎo)入腳本模板
4設(shè)置執(zhí)行次數(shù)
- 函數(shù)
(1)計(jì)數(shù)器函數(shù):_counter? ?
TRUE:每個(gè)用戶都有自己的計(jì)數(shù)器
FALSE:所有用戶共用一個(gè)計(jì)數(shù)器
(2)隨機(jī)數(shù)函:_Randm
參數(shù)1:取值范圍最小值
參數(shù)2:取值范圍最大值
(3)時(shí)間函數(shù):_time
無(wú)參:獲取距離1970/1/1 00:00:00的毫秒值
參數(shù)格式:yyyyMM_dd HH:mm::ss
(八)斷言
斷言:程序代替人工判斷響應(yīng)結(jié)果是否符合預(yù)期
步驟:
1編寫(xiě)測(cè)試腳本
2為判斷的取樣器添加斷言組件
3直接運(yùn)行查看結(jié)果? ?斷言通過(guò):無(wú)提示? ?斷言失?。航o出錯(cuò)誤
分類:
響應(yīng)斷言:斷言狀態(tài)碼和響應(yīng)體
大小斷言:判斷響應(yīng)內(nèi)容的字節(jié)長(zhǎng)度
斷言持續(xù)時(shí)間:判斷響應(yīng)時(shí)間
(九)邏輯控制器
測(cè)試完整的業(yè)務(wù)邏輯或流程
- if邏輯控制器
??????????????
?給定一個(gè)變量值,根據(jù)變量值是否一致判斷 請(qǐng)求是否需要被執(zhí)行
如果條件滿足 則執(zhí)行:
?如果不滿足 則不執(zhí)行:
- ForEach邏輯控制器
???????
- 循環(huán)邏輯控制器
??????????????
(十)關(guān)聯(lián)
上一個(gè)請(qǐng)求的響應(yīng)結(jié)果和下一個(gè)請(qǐng)求的數(shù)據(jù)有關(guān)系
將A網(wǎng)址title獲取并傳遞給B網(wǎng)站(Baidu.com)作為關(guān)鍵字搜索
(十一)跨越線程組關(guān)聯(lián)
局部變量可直接傳遞:
?非全局變量無(wú)法跨線程傳遞:
?借助函數(shù)生成器完成 全局變量傳遞:
?
(十二)高并發(fā)
同一時(shí)刻 100個(gè)用戶訪問(wèn)
?
(十三)高頻率
一個(gè)用戶以20QPS頻率訪問(wèn)? 持續(xù)15秒
QPS:每秒查詢量? ? 每秒訪問(wèn)多少次服務(wù)器
(十四)分布式
多機(jī)協(xié)作,集群方式完成測(cè)試任務(wù),提高測(cè)試效率
角色劃分:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-407511.html
- 控制機(jī):負(fù)責(zé)任務(wù)分配
- 執(zhí)行機(jī):負(fù)責(zé)任務(wù)實(shí)現(xiàn)
流程:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-407511.html
- 控制機(jī)需要制定測(cè)試任務(wù),并下發(fā)到執(zhí)行機(jī)
- 執(zhí)行機(jī)執(zhí)行任務(wù)并返回結(jié)果到控制機(jī)
- 控制機(jī)結(jié)果匯總???????
到了這里,關(guān)于自動(dòng)化測(cè)試工具之 Jmeter性能測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!