jdk安裝
jmeter基于Java谢谦,所以使用jmeter前需要安裝jdk亲铡,目前最新jmeter版本需要JDK8
jmeter安裝
下載jmeter zip包
jmeter官網(wǎng):https://jmeter.apache.org/
下載最新版本jmeter zip包,2018/8/22當(dāng)前最新版本為4.0举瑰,需要JDK8捣辆,如下圖:
解壓jmeter zip包
mac環(huán)境下,將zip解壓到/user/loacal路徑下
jmeter環(huán)境變量配置
修改mac的.bash_prifile配置文件此迅,便于直接喚起jmeter
# add jmeter
export JMETER=/usr/local/apache-jmeter-4.0
export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$PATH:$JMETER/bin
jmeter安裝驗(yàn)證
iTerm中輸入:jmeter -v 查看jmeter版本
jc@jc:~$ jmeter -v
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____
/ \ | _ \ / \ / ___| | | | ____| | | \/ | ____|_ _| ____| _ \
/ _ \ | |_) / _ \| | | |_| | _| _ | | |\/| | _| | | | _| | |_) |
/ ___ \| __/ ___ \ |___| _ | |___ | |_| | | | | |___ | | | |___| _ <
/_/ \_\_| /_/ \_\____|_| |_|_____| \___/|_| |_|_____| |_| |_____|_| \_\ 4.0 r1823414
Copyright (c) 1999-2018 The Apache Software Foundation
iTerm中輸入:jmeter 啟動jmeter的GUI mode
jc@jc:~$ jmeter
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
jmeter用例編寫
線程組
作用:設(shè)置并發(fā)用戶數(shù)汽畴,循環(huán)次數(shù),循環(huán)時間的模塊
新建路徑: TestPlain -> Threads(Users) -> Thread Group
模塊屬性:
number of Threads(users):并發(fā)用戶數(shù)
Ramp-Up Period(in seconds):全量并發(fā)啟動的完成時間
Loop Count: Forver/n, Forver:一直運(yùn)行耸序;n:執(zhí)行次數(shù)
Duration(seconds):循環(huán)時間
如下圖忍些,設(shè)置為10并發(fā),持續(xù)30秒坎怪,其中1秒內(nèi)并發(fā)數(shù)達(dá)到10
HTTP Request
作用:新建http請求
新建路徑:
線程組 -> Add -> Sampler -> HTTP Request
模塊屬性:
Protocol [http] //協(xié)議類型罢坝,默認(rèn)為http,可選擇https
Server Name or IP //請求域名搅窿,或IP+端口號
Method // GET / POST請求
Path //請求路徑
Send Parameters //請求參數(shù)
如下請求
https://xxx.xxx.163.com?_tdchannel={tdchannel} & sdkAuth={sdkAuth}
設(shè)置如下圖嘁酿,其中{tdchannel}隙券,{sdkAuth}采用CSV文件讀取,稍后會介紹
CSV參數(shù)讀取
作用:從CSV文件中讀取數(shù)據(jù)闹司,作為HTTPS的請求
新建路徑:
線程組 -> Config ELement -> CSV Data Set Config
模塊屬性:
Filename //CSV文件路徑
Variable Name //定義變量名
Delimiter //CSV分割符娱仔,模式使用","
Sharing mode //作用域,默認(rèn)選擇全域游桩,All thread
如下圖牲迫,
從指定路徑讀取csv文件,
csv文件第一列變量名定義為channel借卧,第二列變量定義為sdkAuth
分割符為","
作用域?yàn)槿?br>
定義參數(shù)變量channel盹憎,sdkAuth后,可在請求中使用該變量
正則表達(dá)式提取
作用:從請求結(jié)果中按正則表達(dá)式提取參數(shù)铐刘,即動態(tài)提取參數(shù)
新建路徑:
Http請求 -> Add -> Post Processors -> Regular Expression Extractor
模塊屬性:
Apply to //使用作用域陪每,默認(rèn)選擇 Main sample only
Field to check //匹配作用域,如選擇Response Headers, 在響應(yīng)請求頭匹配正則表達(dá)式
Name of created variable //參數(shù)變量名
Regular Expression //正則表達(dá)式
Template //匹配參數(shù)
如下圖镰吵,定義正則匹配參數(shù):
定義參數(shù)名為ch5sdk
參數(shù)使用域:請求全局
正則匹配范圍為Response Headers
正則表達(dá)式為:_ch5sdk.us.c.v.online=(.*); Domain=奶稠,即匹配online的值
觀察結(jié)果樹
作用:查看性能測試結(jié)果
新建路徑:
線程組 -> Listener -> View Result Tree
模塊屬性:
Sampler result // 請求基本信息
Request // Request數(shù)據(jù)
Response data // Response 數(shù)據(jù)
ant安裝
官網(wǎng):
http://ant.apache.org/bindownload.cgi
下載最新版本的ant zip安裝包
解壓ant zip包到指定文件
環(huán)境變量設(shè)置
# add ant
export ANT_HOME=/usr/local/apache-ant-1.10.5
export PATH=$PATH:$ANT_HOME/bin
安裝驗(yàn)證
ant -version
Ant 運(yùn)行jmeter腳本
配置
1)將 jmeter的extras目錄中ant-jmeter-1.1.1.jar包拷貝至ant安裝目錄下的lib目錄中
作用使Ant運(yùn)行時能夠找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"這個類,從而成功觸發(fā)JMeter腳本
2)修改Jmeter的bin目錄下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
作用使Jmeter報告輸出文件格式為xml
Ant執(zhí)行jmeter腳本
1.jmeter安裝目錄下新建文件夾
TestReport文件夾:用于保存html的結(jié)果報告
TestScrip文件夾:用于保存jmeter的測試腳本
2.運(yùn)行jmeter腳本
如下圖捡遍,需要注意2個文件
build.xml:ant根據(jù)該文件運(yùn)行jmeter腳本
build.xml通用模版如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddHHmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目錄-->
<property name="jmeter.home" value="/usr/local/apache-jmeter-4.0" />
<!-- jmeter生成jtl格式的結(jié)果報告的路徑-->
<!-- <property name="jmeter.result.jtl.dir" value="/usr/local/apache-jmeter-4.0/TestReport/testToken/jtl"/> -->
<property name="jmeter.result.jtl.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/jtl" />
<!-- jmeter生成html格式的結(jié)果報告的路徑-->
<!-- <property name="jmeter.result.jtl.dir" value="/usr/local/apache-jmeter-4.0/TestReport/testToken/html"/> -->
<property name="jmeter.result.html.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/html" />
<!-- 生成的報告的前綴-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<!-- 輸出生成的報告名稱和存放路徑-->
<echo message="${jmeter.result.jtlName}"/>
<echo message="${jmeter.result.htmlName}"/>
<echo message="${jmeter.result.html.dir}"/>
<target name="run">
<antcall target="test"/>
<antcall target="report"/>
</target>
<!--加載jar包,解決顯示時間問題-->
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 聲明要運(yùn)行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本-->
<testplans dir="/usr/local/apache-jmeter-4.0/TestScrip" includes="test.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<target name="report">
<tstamp> <format property="report.datestamp" pattern="yyyy-MM-dd HH:mm" /></tstamp>
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<!--顯示dateReport的時間-->
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<!-- 因?yàn)樯厦嫔蓤蟾娴臅r候竹握,不會將相關(guān)的圖片也一起拷貝至目標(biāo)目錄画株,所以,需要手動拷貝 -->
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>
根據(jù)個人環(huán)境的不同啦辐,上述需要修改的模版參數(shù)為:
<!-- 需要改成自己本地的 Jmeter 目錄-->
<property name="jmeter.home" value="/usr/local/apache-jmeter-4.0" />
<!-- jmeter生成jtl格式的結(jié)果報告的路徑-->
<property name="jmeter.result.jtl.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/jtl" />
<!-- jmeter生成html格式的結(jié)果報告的路徑-->
<property name="jmeter.result.html.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/html" />
<!-- 聲明要運(yùn)行的腳本谓传。"*.jmx"指包含此目錄下的所有jmeter腳本-->
<testplans dir="/usr/local/apache-jmeter-4.0/TestScrip" includes="test.jmx" />
jmeter腳本xx.jmx
根據(jù)build.xml中的testplans節(jié)點(diǎn)配置,運(yùn)行test.jmx
3.運(yùn)行結(jié)果
對應(yīng)build.xml的路徑芹关,輸入
ant run
運(yùn)行結(jié)果結(jié)果
4.查看運(yùn)行報告
build.xml中設(shè)置的jmeter生成html格式的結(jié)果報告的路徑查看結(jié)果
html測試結(jié)果瀏覽器查看
Jenkins安裝
安裝Jenkins
官網(wǎng):https://jenkins.io/index.html
安裝方式
1.官網(wǎng)下載zip包
2.brew install jenkins
jenkins環(huán)境變量配置
mac 命令行編輯.bash_profile
# add jmeter
export JMETER=/usr/local/apache-jmeter-4.0
export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$PATH:$JMETER/bin
JDK配置
配置路徑:
系統(tǒng)管理 -> 全局工具配置 -> JDK
Ant配置
配置路徑:
系統(tǒng)管理 -> 全局工具配置 -> JDK
1.構(gòu)建一個自由風(fēng)格的項目
2.配置構(gòu)建步驟
參數(shù)說明
Ant Version //jenkins全局工具配置過Ant后续挟,點(diǎn)擊表單會出現(xiàn)在下拉框中,直接選中即可侥衬;
Targets //前一章中提到的build.xml文件中的targets的名字诗祸;
Build File //指定build.xml文件的路徑以及文件名
3.jmeter.log授權(quán)
命令行輸入
ls -lh
chmod 777 jmeter.log
如下圖,jmeter.log為可執(zhí)行文件
4.運(yùn)行Jenkins任務(wù)
5.郵件配置
全局配置郵件發(fā)送者:
配置路徑:
Jenkins的系統(tǒng)管理 -> 系統(tǒng)設(shè)置 -> Extended E-mail Notification
項目配置郵件接收者:
配置路徑:
Jenkins項目 -> 配置 -> 構(gòu)建后操作
參數(shù)配置
Project Recipient List //郵件接收者列表轴总,間隔符為","
Content Type //郵件格式直颅,選擇“HTML(text/html)”
Default Content //默認(rèn)郵件模版
Attachments //郵件附件,如test_token/html/*.html怀樟,表明html文件夾下所有html都會作為郵件附件
Triggers //高級設(shè)置的選項功偿,建議選擇運(yùn)行success/failure-any 都Send To Reciplent List
郵件配置截圖如下:
附件路徑說明
1.Jenkins主目錄
查看路徑:系統(tǒng)管理 -> 系統(tǒng)設(shè)置 -> 主目錄
2.Jenkins工作共建
Jenkins主目錄/workspace
3.Ant執(zhí)行build.xml配置
Jenkins能夠獲取工作區(qū)間的文件,因此需要修改builder.xml中的參數(shù)往堡,將測試結(jié)果保存到Jenkins對應(yīng)項目的工作區(qū)間械荷,附件就能正確讀取
如下
工作空間路徑:
/Users/jc/.jenkins/workspace/helloWorld/
對應(yīng)build.xml的參數(shù)設(shè)置為:
<property name="jmeter.result.jtl.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/jtl" />
<!-- jmeter生成html格式的結(jié)果報告的路徑-->
<property name="jmeter.result.html.dir" value="/Users/jc/.jenkins/workspace/helloWorld/test_token/html" />
驗(yàn)證方法
運(yùn)行對應(yīng)項目共耍,查看工作區(qū)間是否生成目標(biāo)附件,如下圖