Day09_JMeter軟件測(cè)試
1. 性能測(cè)試
1.1. 性能測(cè)試是什么
基于協(xié)議模擬用戶發(fā)出請(qǐng)求咬崔,對(duì)服務(wù)器形成一定負(fù)載,來測(cè)試服務(wù)器的性能指標(biāo)是否滿足要求
性能指標(biāo)關(guān)注點(diǎn):時(shí)間性能、空間性能
性能測(cè)試與頁(yè)面無關(guān)
性能測(cè)試定義:指通過自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試汉买。
1.2. 性能測(cè)試類型
基準(zhǔn)測(cè)試:在給系統(tǒng)施加較低壓力時(shí)滋将,查看系統(tǒng)的運(yùn)行狀況并記錄相關(guān)數(shù)做為基礎(chǔ)參考
負(fù)載測(cè)試:是指對(duì)系統(tǒng)不斷地增加壓力或增加一定壓力下的持續(xù)時(shí)間邻悬,直到系統(tǒng)的某項(xiàng)或多項(xiàng)性能指標(biāo)達(dá)到安全臨界值,例如某種資源已經(jīng)達(dá)到飽和狀態(tài)等 随闽。
壓力測(cè)試:壓力測(cè)試是評(píng)估系統(tǒng)處于或超過預(yù)期負(fù)載時(shí)系統(tǒng)的運(yùn)行情況父丰,關(guān)注點(diǎn)在于系統(tǒng)在峰值負(fù)載或超出最大載荷情況下的處理能力。
穩(wěn)定性測(cè)試(可靠性測(cè)試):在給系統(tǒng)加載一定業(yè)務(wù)壓力的情況下掘宪,使系統(tǒng)運(yùn)行一段時(shí)間蛾扇,以此檢測(cè)系統(tǒng)是否穩(wěn)定。24X3小時(shí)
并發(fā)測(cè)試:測(cè)試多個(gè)用戶同時(shí)訪問同一個(gè)應(yīng)用魏滚、同一個(gè)模塊或者數(shù)據(jù)記錄時(shí)是否存在死鎖或者其他性能問題蘑斧,
1.3. 性能測(cè)試工具
2. Jmeter簡(jiǎn)介
2.1. Jmeter的基本概念
Apache JMeter是Apache組織開發(fā)的基于Java的壓力測(cè)試工具。
2.2. 我們?yōu)槭裁词褂肑meter
開源职辅,免費(fèi)秀鞭,基于Java編寫,可集成到其他系統(tǒng)可拓展各個(gè)功能插件
支持接口測(cè)試,壓力(負(fù)載和壓力)測(cè)試等多種功能,支持錄制回放,
入門簡(jiǎn)單相較于自己編寫框架活其他開源工具噪馏,有較為完善的UI界面粹淋,便于接口調(diào)試
多平臺(tái)支持葛碧,可在Linux进泼,Windows纤虽,Mac上運(yùn)行
支持多協(xié)議
2.3. Jmeter的作用
接口測(cè)試
性能測(cè)試
壓力測(cè)試
Web自動(dòng)化測(cè)試
數(shù)據(jù)庫(kù)測(cè)試
JAVA程序測(cè)試
2.4. Jmeter****怎么用
Windows下Jmeter下載安裝
登錄 http://jmeter.apache.org/download_jmeter.cgi 绞惦,根據(jù)自己平臺(tái),下載對(duì)應(yīng)文件
2.5. 安裝****JAVA環(huán)境
安裝JDK,配置環(huán)境變量(具體步驟不做介紹)
將下載Jmeter文件解壓涝婉,打開/bin/jmeter.bat
2.6. Jmeter的目錄結(jié)構(gòu)
/bin 目錄(常用文件介紹)
examples:目錄下包含Jmeter使用實(shí)例
ApacheJMeter.jar:JMeter源碼包
jmeter.bat:windows下啟動(dòng)文件
jmeter.sh:Linux下啟動(dòng)文件
jmeter.log:Jmeter運(yùn)行日志文件
jmeter.properties:Jmeter配置文件
jmeter-server.bat:windows下啟動(dòng)負(fù)載生成器服務(wù)文件
jmeter-server:Linux下啟動(dòng)負(fù)載生成器文件
/docs目錄——Jmeter幫助文檔
/extras目錄——提供了對(duì)Ant的支持文件,可也用于持續(xù)集成
/lib目錄——存放Jmeter依賴的jar包寞射,同時(shí)安裝插件也放于此目錄
/licenses目錄——軟件許可文件渔工,不用管
/printable_docs目錄——Jmeter用戶手冊(cè)
3. 使用Jmeter測(cè)試快速入門
3.1. 線程組是什么
進(jìn)程: 一個(gè)正在執(zhí)行的程序?qū)?yīng)一個(gè)進(jìn)程
線程: 一個(gè)進(jìn)程有多個(gè)執(zhí)行線程
線程組: 按照線程性質(zhì)對(duì)線程分組
三者關(guān)系: 一個(gè)進(jìn)程有多個(gè)線程組,一個(gè)線程組有多個(gè)線程
測(cè)試計(jì)劃—線程組—線程組屬性中的線程數(shù)
并發(fā)執(zhí)行:多個(gè)線程同時(shí)執(zhí)行桥温,特點(diǎn):執(zhí)行結(jié)束的順序與開始的順序不一致
順序執(zhí)行:按照線程的啟動(dòng)順序挨個(gè)執(zhí)行
默認(rèn)情況下引矩,線程組中的線程是并發(fā)執(zhí)行
每一個(gè)線程都要執(zhí)行組內(nèi)的http請(qǐng)求
設(shè)置線程組順序執(zhí)行:勾選測(cè)試計(jì)劃中的(獨(dú)立運(yùn)行每個(gè)線程組)
線程組用來模擬用戶的并發(fā)訪問
1.1.1. 創(chuàng)建線程組
1.1.2. 線程組主要包含三個(gè)參數(shù):線程數(shù)、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up Period(in seconds))侵浸、循環(huán)次數(shù)旺韭。
1.1.3. 線程數(shù):虛擬用戶數(shù)。一個(gè)虛擬用戶占用一個(gè)進(jìn)程或線程掏觉。設(shè)置多少虛擬用戶數(shù)在這里也就是設(shè)置多少個(gè)線程數(shù)区端。
1.1.4. 準(zhǔn)備時(shí)長(zhǎng)(秒):設(shè)置的虛擬用戶數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)。如果線程數(shù)為20 澳腹,準(zhǔn)備時(shí)長(zhǎng)為10 织盼,那么需要10秒鐘啟動(dòng)20個(gè)線程。也就是每秒鐘啟動(dòng)2個(gè)線程酱塔。
1.1.5. 循環(huán)次數(shù):每個(gè)線程發(fā)送請(qǐng)求的次數(shù)沥邻。如果線程數(shù)為20 ,循環(huán)次數(shù)為100 羊娃,那么每個(gè)線程發(fā)送100次請(qǐng)求谋国。總請(qǐng)求數(shù)為20*100=2000 迁沫。如果勾選了“永遠(yuǎn)”芦瘾,那么所有線程會(huì)一直發(fā)送請(qǐng)求捌蚊,一到選擇停止運(yùn)行腳本。
1.1.6. . 調(diào)度器:設(shè)置線程組啟動(dòng)的開始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí)近弟,需要勾選循環(huán)次數(shù)為永遠(yuǎn))
1.1.7. 持續(xù)時(shí)間(秒):測(cè)試持續(xù)時(shí)間缅糟,會(huì)覆蓋結(jié)束時(shí)間
1.1.8. 啟動(dòng)延遲(秒):測(cè)試延遲啟動(dòng)時(shí)間,會(huì)覆蓋啟動(dòng)時(shí)間
1.1.9. 啟動(dòng)時(shí)間:測(cè)試啟動(dòng)時(shí)間祷愉,啟動(dòng)延遲會(huì)覆蓋它窗宦。當(dāng)啟動(dòng)時(shí)間已過,手動(dòng)只需測(cè)試時(shí)當(dāng)前時(shí)間也會(huì)覆蓋它二鳄。
1.1.10. 結(jié)束時(shí)間:測(cè)試結(jié)束時(shí)間赴涵,持續(xù)時(shí)間會(huì)覆蓋它霍狰。
3.2. 創(chuàng)建http請(qǐng)求
3.3. 指定請(qǐng)求域名蹦肴,請(qǐng)求路徑
3.4. 設(shè)置對(duì)應(yīng)的查看內(nèi)容
3.5. 查看表格信息
3.6. 查看結(jié)果樹
通過察看結(jié)果樹,我們可以看到每個(gè)請(qǐng)求的結(jié)果据某,其中紅色的是出錯(cuò)的請(qǐng)求欺殿,綠色的為通過寄纵。
Thread Name:線程組名稱
Sample Start: 啟動(dòng)開始時(shí)間
Load time:加載時(shí)長(zhǎng)
Latency:等待時(shí)長(zhǎng)
Size in bytes:發(fā)送的數(shù)據(jù)總大小
Headers size in bytes:發(fā)送數(shù)據(jù)的其余部分大小
Sample Count:發(fā)送統(tǒng)計(jì)
Error Count:交互錯(cuò)誤統(tǒng)計(jì)
Response code:返回碼
Response message:返回信息
Response headers:返回的頭部信息
3.7. 聚合報(bào)告參數(shù)說明
3.8. 圖形結(jié)果
樣本數(shù)目:總共發(fā)送到服務(wù)器的請(qǐng)求數(shù)。
最新樣本:代表時(shí)間的數(shù)字脖苏,是服務(wù)器響應(yīng)最后一個(gè)請(qǐng)求的時(shí)間程拭。
吞吐量:服務(wù)器每分鐘處理的請(qǐng)求數(shù)。
平均值:總運(yùn)行時(shí)間除以發(fā)送到服務(wù)器的請(qǐng)求數(shù)棍潘。
中間值:有一半的服務(wù)器響應(yīng)時(shí)間低于改值而另一半高于該值恃鞋。
偏離:表示服務(wù)器響應(yīng)時(shí)間變化、離散程度測(cè)量值的大小亦歉。
4. Jmeter主要組件介紹
|
1.測(cè)試計(jì)劃是使用 JMeter 進(jìn)行測(cè)試的起點(diǎn)恤浪,它是其它 JMeter 測(cè)試元件的容器。
4.1. 測(cè)試計(jì)劃
測(cè)試計(jì)劃就是一個(gè)完整的場(chǎng)景
“獨(dú)立運(yùn)行每個(gè)線程組” :勾選以后所有的線程組都是順序執(zhí)行的了鳍徽。一般不勾選,讓所有 的線程組并發(fā)啟動(dòng)敢课。
“函數(shù)測(cè)試模式” :勾選后會(huì)有詳細(xì)的請(qǐng)求記錄阶祭,消耗資源,影響客戶端性能直秆。一般不勾選濒募。
用戶定義的變量:全局變量,測(cè)試計(jì)劃上可以添加用戶定義的變量圾结。一般添加一些系統(tǒng)常用的配置瑰剃。如果測(cè)試過程中想切換環(huán)境,切換配置筝野,一般不建議在測(cè)試計(jì)劃上添加變量
4.2. 線程組
(1)晌姚、thread group(線程組)
這個(gè)就是我們通常添加運(yùn)行的線程粤剧。通俗的講一個(gè)線程組,可以看做一個(gè)虛擬用戶組挥唠,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶抵恋。
(2)、setup thread group
一種特殊類型的ThreadGroup的宝磨,可用于執(zhí)行預(yù)測(cè)試操作弧关。這些線程的行為完全像一個(gè)正常的線程組元件。不同的是唤锉,這些類型的線程執(zhí)行測(cè)試前進(jìn)行定期線程組的執(zhí)行世囊;類似LoadRunner的init,測(cè)試開始時(shí)進(jìn)行初始化的工作窿祥。
(3)株憾、teardown thread group
一種特殊類型的ThreadGroup的,可用于執(zhí)行測(cè)試后動(dòng)作壁肋。這些線程的行為完全像一個(gè)正常的線程組元件号胚。不同的是,這些類型的線程執(zhí)行測(cè)試結(jié)束后執(zhí)行定期的線程組浸遗;類似LoadRunnner的end猫胁,測(cè)試結(jié)束時(shí)進(jìn)行回收工作。
4.3. 取樣器(Http請(qǐng)求)
關(guān)于http請(qǐng)求的的屬性參數(shù)說明:
1)名稱:用于標(biāo)識(shí)一個(gè)sample跛锌。建議使用一個(gè)有意義的名稱
2)注釋:對(duì)于測(cè)試沒任何影響弃秆,僅用來記錄用戶可讀的注釋信息
3)服務(wù)器名稱或IP:http請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或者IP地址,比如http://www.baidu.com
4)端口號(hào):目標(biāo)服務(wù)器的端口號(hào)髓帽,默認(rèn)值為80菠赚,可不填
5)協(xié)議:向目標(biāo)服務(wù)器發(fā)送http請(qǐng)求時(shí)的協(xié)議,http/https郑藏,大小寫不敏感衡查,默認(rèn)http
6)方法:發(fā)送http請(qǐng)求的方法(鏈接:http://www.cnblogs.com/imyalost/p/5630940.html)
7)Content encoding:內(nèi)容的編碼方式(Content-Type=application/json;charset=utf-8)
8)路徑:目標(biāo)的URL路徑(不包括服務(wù)器地址和端口)
9)自動(dòng)重定向:如果選中該項(xiàng),發(fā)出的http請(qǐng)求得到響應(yīng)是301/302必盖,jmeter會(huì)重定向到新的界面
10)Use keep Alive:jmeter 和目標(biāo)服務(wù)器之間使用 Keep-Alive方式進(jìn)行HTTP通信(默認(rèn)選中)
11)Use multipart/from-data for HTTP POST :當(dāng)發(fā)送HTTP POST 請(qǐng)求時(shí)拌牲,使用
12)Parameters、Body Data以及Files Upload的區(qū)別:
1. parameter是指函數(shù)定義中參數(shù)歌粥,而argument指的是函數(shù)調(diào)用時(shí)的實(shí)際參數(shù)
2. 簡(jiǎn)略描述為:parameter=形參(formal parameter)塌忽, argument=實(shí)參(actual parameter)
3.在不很嚴(yán)格的情況下,現(xiàn)在二者可以混用失驶,一般用argument土居,而parameter則比較少用
While defining method, variables passed in the method are called parameters.
當(dāng)定義方法時(shí),傳遞到方法中的變量稱為參數(shù).
While using those methods, values passed to those variables are called arguments.
當(dāng)調(diào)用方法時(shí),傳給變量的值稱為引數(shù).(有時(shí)argument被翻譯為“引數(shù)“)
4擦耀、Body Data指的是實(shí)體數(shù)據(jù)棉圈,就是請(qǐng)求報(bào)文里面主體實(shí)體的內(nèi)容,一般我們向服務(wù)器發(fā)送請(qǐng)求埂奈,攜帶的實(shí)體主體參數(shù)迄损,可以寫入這里
5、Files Upload指的是:從HTML文件獲取所有有內(nèi)含的資源:被選中時(shí)账磺,發(fā)出HTTP請(qǐng)求并獲得響應(yīng)的HTML文件內(nèi)容后還對(duì)該HTML
進(jìn)行Parse 并獲取HTML中包含的所有資源(圖片芹敌、flash等):(默認(rèn)不選中)
如果用戶只希望獲取特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達(dá)式垮抗,只有能匹配指定正則表達(dá)式的URL指向資源會(huì)被下載
4.4. 監(jiān)聽器
監(jiān)聽器(Listener)負(fù)責(zé)收集測(cè)試結(jié)果氏捞,同時(shí)也被告知了結(jié)果顯示的方式。我們常用的包括:聚合報(bào)告冒版、查看結(jié)果樹液茎、用表格查看結(jié)果,都支持將結(jié)果數(shù)據(jù)寫入文件辞嗡。其他的添加上去看看就行捆等。聚合報(bào)告前面我們介紹過,后面是查看結(jié)果樹和用表格查看結(jié)果的截圖续室。
4.5. 邏輯控制器
4.6. 循環(huán)控制器栋烤、事務(wù)控制器
1.1.11. 循環(huán)控制器
1.1.12. 事務(wù)控制器
作用: 事務(wù)控制器會(huì)生產(chǎn)一個(gè)額外的采樣器,用來統(tǒng)計(jì)該控制器子結(jié)點(diǎn)的所有時(shí)間挺狰。
在線程組下創(chuàng)建事務(wù)控制器
參數(shù):
· Generate parent sample:(選中這個(gè)參數(shù)結(jié)果展示如下圖紅框明郭,否則顯示為下圖藍(lán)框)
· Include duration of timer and pre-post processors in generated sample:選中這一項(xiàng)會(huì)統(tǒng)計(jì)定時(shí)器(timer)的時(shí)間,否則只統(tǒng)計(jì)采樣器(sample)的時(shí)間
創(chuàng)建sample 訪問首頁(yè)和注冊(cè)頁(yè)面
生成聚合報(bào)告
勾選
聚合報(bào)告中只有一項(xiàng)事務(wù)報(bào)告
4.7. 斷言---檢查點(diǎn)
斷言(Assertions)可以用來判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶所期望的丰泊。它可以用來隔離問題域薯定,即在確保功能正確的前提下執(zhí)行壓力測(cè)試。這個(gè)限制對(duì)于有效的測(cè)試是非常有用的瞳购。
4.8. 前置處理器和后置處理器
前置處理器(Pre Processors)和后置處理器(Post Processors)負(fù)責(zé)在生成請(qǐng)求之前和之后完成工作话侄。前置處理器常常用來修改請(qǐng)求的設(shè)置,后置處理器則常常用來處理響應(yīng)的數(shù)據(jù)学赛。我們主要在動(dòng)態(tài)關(guān)聯(lián)中用到后置處理器的正則表達(dá)式提取器年堆。
https://www.cnblogs.com/fengpingfan/p/4755411.html
4.9. 定時(shí)器
定時(shí)器(Timer)負(fù)責(zé)定義請(qǐng)求之間的延遲間隔
5. Jmeter組件參數(shù)化
5.1. 參數(shù)化是什么
動(dòng)態(tài)的獲取并設(shè)置數(shù)據(jù)
5.2. 為什么使用參數(shù)化
執(zhí)行批量操作,批量添加批量刪除罢屈,人工效率太低
運(yùn)用程序代替人工獲取并設(shè)置數(shù)據(jù)嘀韧,安全高效
比如:對(duì)被測(cè)系統(tǒng)的用戶名和密碼進(jìn)行參數(shù)化篇亭,來模擬多個(gè)用戶同時(shí)登錄系統(tǒng)
5.3. 參數(shù)化實(shí)現(xiàn)之CSV Data Set Config
通過這個(gè)組件可以動(dòng)態(tài)獲取并設(shè)置數(shù)據(jù)缠捌,實(shí)現(xiàn)批量添加操作
Filename:所需數(shù)據(jù)文件的路徑。如和腳本同一路徑,可直接填寫文件名
File encoding:編碼和文件保持一致即可曼月,默認(rèn)為ANSI谊却。如有中文,建議為UTF-8
Variable Names:引用變量時(shí)的變量名哑芹,對(duì)應(yīng)數(shù)據(jù)文件中的每一列炎辨,以逗號(hào)分隔。如不填寫聪姿,文件的第一行數(shù)據(jù)將被讀取為變量名
Delimiter:在.txt碴萧、.dat文件中,可以用逗號(hào)(,)或者Tab鍵(\t)來區(qū)分列與列
Allow quote data:選項(xiàng)選為“true”的時(shí)候?qū)θ亲址奶幚沓霈F(xiàn)亂碼
Recycle on EOF:到數(shù)據(jù)文件結(jié)尾時(shí)是否循環(huán)讀取末购。設(shè)置為True時(shí)破喻,線程數(shù)過多,數(shù)據(jù)文件讀取到最后一行時(shí)盟榴,會(huì)再次從第一行開始讀取曹质。設(shè)置為False,到達(dá)文件結(jié)尾時(shí)如繼續(xù)讀取擎场,則值會(huì)默認(rèn)為<EOF>羽德,可通過設(shè)置jmeter屬性csvdataset.eofstring來改變?cè)撝怠?/p>
Stop thread on EOF:Recycle on EOF設(shè)置為False,Stop thread on EOF設(shè)置為True迅办,則讀取數(shù)據(jù)文件最后一行后宅静,停止測(cè)試,不管還有多少線程組未執(zhí)行礼饱。
Sharing mode:共享模式坏为。默認(rèn)在所有線程組中使用,可選擇每個(gè)線程組單獨(dú)打開
查看結(jié)果樹
5.4. 镊绪、使用Jmeter函數(shù)助手:
1匀伏、點(diǎn)擊 選項(xiàng)-->函數(shù)助手 調(diào)出函數(shù)助手對(duì)話框
2、選擇 _CSVRead 函數(shù)(下圖第一個(gè)框)
3蝴韭、函數(shù)參數(shù):
1)第一個(gè)參數(shù):填寫文件路徑够颠。
2)第二個(gè)參數(shù):文件列號(hào)是從0開始的,第一列0榄鉴、第二列1履磨、第三列2、依次類推,然后點(diǎn)擊【生成】按鈕庆尘,則會(huì)自動(dòng)生成我們需要的參數(shù)化函數(shù)剃诅。
復(fù)制生成的參數(shù)化函數(shù), copy過程需要使用的地方即可驶忌。
_Random函數(shù)是從某數(shù)據(jù)段隨機(jī)讀取數(shù)據(jù)替換參數(shù)矛辕,當(dāng)需要添加多條數(shù)據(jù)記錄且某些字段需要唯一性時(shí)使用。
6. Jmeter腳本錄制
6.1. 什么是腳本錄制
在進(jìn)行測(cè)試的時(shí)候,可能有好多腳本或者界面需要操作測(cè)試聊品,并且有些測(cè)試鏈接需要重復(fù)多線程高并發(fā)進(jìn)行測(cè)試飞蹂,我們一般會(huì)針對(duì)這一些操作,進(jìn)行一個(gè)腳本錄制翻屈,錄制好之后陈哑,之后測(cè)試就可以在這個(gè)基礎(chǔ)上進(jìn)行測(cè)試。
6.2. Jemeter腳本錄制方式
BadBoy腳本錄制
使用Jmeter自帶的代理服務(wù)器進(jìn)行腳本錄制
7. 使用Jmeter自帶的代理服務(wù)器進(jìn)行腳本錄制
7.1. 在測(cè)試計(jì)劃上創(chuàng)建線程組
7.2. 添加錄制控制器
7.3. 在工作臺(tái)上添加http代理服務(wù)器
7.4. 配置Http代理服務(wù)器
7.5. 配置瀏覽器
1.1.13. Google瀏覽器
1.1.14. 火狐瀏覽器
7.6. 瀏覽器請(qǐng)求測(cè)試
7.7. 過濾信息
添加如下內(nèi)容
..js.|..css.|..png.|..jpg.|..gif.|..bmp.
8. Android手機(jī)端腳本錄制
8.1. 查看電腦IP
8.2. 配置手機(jī)網(wǎng)路連接
8.3. 手機(jī)訪問app
8.4. 模擬登陸操作
8.5. 執(zhí)行結(jié)束之后伸眶,停止腳本錄制
8.6. 腳本測(cè)試-線程組設(shè)置10個(gè)線程分別請(qǐng)求10次
8.7. 查看結(jié)果樹
9. BadBoy腳本錄制
9.1. 安裝badboy腳本軟件
傻瓜式安裝即可
9.2. 打開badboy軟件
9.3. badboy腳本錄制
點(diǎn)擊錄制按鈕進(jìn)行腳本錄制惊窖,完成打開搜狗搜索,搜索測(cè)試崗位薪資操作厘贼,然后停止爬坑,回放,(回放的時(shí)候涂臣,會(huì)因?yàn)榫幋a原因?qū)е聛y碼盾计,需要手動(dòng)調(diào)亂碼問題)
9.4. 添加驗(yàn)證點(diǎn)
驗(yàn)證點(diǎn)的作用就是驗(yàn)證腳本是否按照我們測(cè)試的思路執(zhí)行,判斷腳本執(zhí)行過程中是否存現(xiàn)問題
9.5. badboy參數(shù)化
所謂參數(shù)化赁遗,是指請(qǐng)求的某個(gè)參數(shù)提前設(shè)定多個(gè)值署辉,在具體請(qǐng)求的時(shí)候,去獲取提前設(shè)定的值岩四,不同的業(yè)務(wù)場(chǎng)景設(shè)置的參數(shù)不一致哭尝。
9.6. 導(dǎo)出Jmeter腳本
9.7. 在Jmeter中導(dǎo)入badboy生成的腳本,驗(yàn)證測(cè)試
9.8. badboy并發(fā)測(cè)試
選擇tools run background
9.9. badboy測(cè)試報(bào)告
在badboy-->view--->report下可以看到測(cè)試報(bào)告
[圖片上傳失敗...(image-ea070b-1603883592481)]
10. Jmeter擴(kuò)展插件-顯示內(nèi)存效果圖
Jmeter本身是不能夠展示內(nèi)存剖煌,cpu和吞吐量的材鹦,但是可以通過添加插件的方式來對(duì)jmeter添加這些功能
<u>https://www.cnblogs.com/imyalost/p/7751981.html</u>
<u>JMeter之ServerAgent監(jiān)控資源</u>
10.1. 對(duì)linux服務(wù)器的服務(wù)進(jìn)行壓測(cè)
時(shí),服務(wù)器的運(yùn)行情況可以通過添加插件來觀察耕姊,而不用使用top命令實(shí)時(shí)的去看
1桶唐、資源準(zhǔn)備
2、環(huán)境準(zhǔn)備
3茉兰、資源監(jiān)控
1尤泽、資源準(zhǔn)備
可通過該網(wǎng)址下載jmeter所有插件http://jmeter-plugins.org/downloads/all/
萬(wàn)能的網(wǎng)盤:
本次所需插件:
JMeterPlugins-Extras.jar
JMeterPlugins-Standard.jar
ServerAgent-2.2.1
將JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar放到apache-jmeter-3.0\lib\ext目錄下
將ServerAgent-2.2.1放到linux服務(wù)器opt目錄下
2、環(huán)境準(zhǔn)備
ServerAgent服務(wù)端口號(hào)默認(rèn)為4444规脸,需要設(shè)置防火墻對(duì)此端口不攔截:
vi /etc/sysconfig/iptables坯约,在端口22下面添加 iptables -I INPUT -p tcp --dport 4444 -j ACCEPT //允許4444端口訪問
然后在服務(wù)器中啟動(dòng)監(jiān)控服務(wù):
使用以下命令可以改變默認(rèn)的4444端口
<u>java</u> -jar ./CMDRunner.jar --tool PerfMonAgent --udp-port 7777 --tcp-port 7777
同樣的,7777端口也要設(shè)置防火墻規(guī)則以及使用telnet本地測(cè)試下是否可以訪問
10.2. windows****本機(jī)進(jìn)行監(jiān)聽
先在服務(wù)器上開啟server的監(jiān)聽
開始演示效果
jp@gc - Bytes Throughput Over Time:不同時(shí)間吞吐量(字節(jié)Bytes)展示(圖表)
聚合報(bào)告里莫鸭,Throughput是按請(qǐng)求個(gè)數(shù)來展示的闹丐,比如說1.9/sec,就是每s發(fā)送1.9個(gè)請(qǐng)求被因;而這里的展示是按字節(jié)Bytes來展示的圖表卿拴,表示每秒發(fā)送多少字節(jié)
jp@gc - Hits per Second:每秒點(diǎn)擊量滥玷,點(diǎn)擊量在性能測(cè)試-常見的性能指標(biāo)(一)的博文中已經(jīng)詳細(xì)介紹,指的是每秒web服務(wù)器接收到的請(qǐng)求數(shù)
jp@gc - PerfMon Metrics Collector:服務(wù)器性能監(jiān)測(cè)控件巍棱,包括CPU,Memory蛋欣,Network航徙,I/O等等(此功能用到在需監(jiān)聽的服務(wù)器上啟動(dòng)startAgent)
根據(jù)需要選擇CPU,Memory陷虎,Network I/O等
11. Jmeter數(shù)據(jù)庫(kù)壓力測(cè)試
11.1. 先配置jdbc(數(shù)據(jù)庫(kù)連接)驅(qū)動(dòng)
1到踏、啟動(dòng)jmeter,打開界面工具尚猿,添加一個(gè)線程組,添加驅(qū)動(dòng)
2、添加一個(gè)JDBC Connection Configuration撵幽,連接池配置文件斯稳。右鍵線程組【添加】--【配置元件】--【JDBC Connection Configuration】
Variable Name:連接池名稱。JDBC Request會(huì)通過此名稱來獲取連接池的配置庄萎,名稱可以隨意填寫踪少,但是最好具體實(shí)際的業(yè)務(wù)意義,方便理解和記憶糠涛。
其他的可以默認(rèn)援奢,可以根據(jù)實(shí)際情況來調(diào)節(jié)優(yōu)化性能。
Database URL:數(shù)據(jù)鏈接url忍捡,格式:jdbc:mysql://localhost:3306/host
注釋:數(shù)據(jù)庫(kù)的ip地址+端口/數(shù)據(jù)庫(kù)名(查詢數(shù)據(jù)庫(kù)端口號(hào)show global variables like 'port')
JDBC Driver Class:驅(qū)動(dòng)器名稱集漾。固定:com.mysql.jdbc.Driver
Username:用戶名
Passowrd:密碼
添加一個(gè)JDBC Request。
3砸脊、右鍵線程組【添加】-【Sampler】-【JDBC Request】
Select Statement:查詢語(yǔ)句
Updata Statement:更新語(yǔ)句
Prepared Select Statement:預(yù)編譯查詢語(yǔ)句具篇。(長(zhǎng)時(shí)間執(zhí)行效率更高,支持占位符)
Prepared Update Statement:預(yù)編譯更新語(yǔ)句凌埂。(同上)
Commit (立即提交)Rollback(回滾)
Parameter values:參數(shù)值栽连。參數(shù)化sql語(yǔ)句中的值。故輸入:localhost,root
Paramter types:參數(shù)類型侨舆。數(shù)據(jù)庫(kù)的參數(shù)你可以去查看一下秒紧。這里是兩個(gè)CHAR,CHAR類型。
Variable names:變量名字挨下,也就是將篩選出來的值放在變量里面熔恢。例如這三列數(shù)據(jù)分為放在變量:A,B,C中(實(shí)際操作中命名一定要有實(shí)際意義)。
Result variable name:存儲(chǔ)變量名臭笆。將整個(gè)結(jié)果存儲(chǔ)在變量中叙淌。取名:rs
Query timeouts :超時(shí)時(shí)間秤掌。
12. Jmeter正則表達(dá)式提取
12.1. badboy錄制腳本
12.2. 將腳本導(dǎo)出到j(luò)meter
12.3. 回放時(shí)候失敗-session過期
12.4. 查看返回信息,查找userSession
12.5. 使用正則提取
運(yùn)用Jmeter正則提取器鹰霍,可以從請(qǐng)求的響應(yīng)結(jié)果中取到需要的內(nèi)容闻鉴,從而實(shí)現(xiàn)關(guān)聯(lián)。關(guān)聯(lián)是請(qǐng)求與請(qǐng)求之間存在數(shù)據(jù)依賴關(guān)系茂洒,需要從上一個(gè)請(qǐng)求獲取下一個(gè)請(qǐng)求需要回傳回去的數(shù)據(jù)
位置****1:名稱及注釋
正則表達(dá)式(regular expression)描述了一種字符串匹配的模式(pattern)孟岛,可以用來檢查一個(gè)串是否含有某種子串、將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串等督勺。
構(gòu)造正則表達(dá)式的方法和創(chuàng)建數(shù)學(xué)表達(dá)式的方法一樣渠羞。也就是用多種元字符與運(yùn)算符可以將小的表達(dá)式結(jié)合在一起來創(chuàng)建更大的表達(dá)式。正則表達(dá)式的組件可以是單個(gè)的字符智哀、字符集合次询、字符范圍、字符間的選擇或者所有這些組件的任意組合瓷叫。
位置2:正則表達(dá)式提取的相關(guān)設(shè)置
說明:
(1)引用名稱:下一個(gè)請(qǐng)求要引用的參數(shù)名稱屯吊,如填寫title,則可用${title}引用它摹菠。
(2)正則表達(dá)式:
():括起來的部分就是要提取的雌芽。
.:匹配任何字符串。
+:一次或多次辨嗽。
?:不要太貪婪世落,在找到第一個(gè)匹配項(xiàng)后停止。
(3)模板:用31$表示解析到的第1個(gè)值
(4)匹配數(shù)字:0代表隨機(jī)取值武花,1代表全部取值,通常情況下填0
(5)缺省值:如果參數(shù)沒有取得到值杈帐,那默認(rèn)給一個(gè)值讓它取体箕。