jmeter+ant+Jenkins持續(xù)性能測試

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安裝.jpg

解壓jmeter zip包
mac環(huán)境下,將zip解壓到/user/loacal路徑下


jmeter解壓路徑.jpg

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


線程組.jpg

模塊屬性:

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


線程組設(shè)置舉例.jpg

HTTP Request

作用:新建http請求
新建路徑:
線程組 -> Add -> Sampler -> HTTP Request


http.jpg

模塊屬性:

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文件讀取,稍后會介紹

http請求.jpg

CSV參數(shù)讀取

作用:從CSV文件中讀取數(shù)據(jù)闹司,作為HTTPS的請求
新建路徑:
線程組 -> Config ELement -> CSV Data Set Config


csv參數(shù)讀取.jpg

模塊屬性:

Filename  //CSV文件路徑
Variable Name  //定義變量名
Delimiter  //CSV分割符娱仔,模式使用","
Sharing mode  //作用域,默認(rèn)選擇全域游桩,All thread

如下圖牲迫,
從指定路徑讀取csv文件,
csv文件第一列變量名定義為channel借卧,第二列變量定義為sdkAuth
分割符為","
作用域?yàn)槿?br> 定義參數(shù)變量channel盹憎,sdkAuth后,可在請求中使用該變量


csv設(shè)置.jpg

正則表達(dá)式提取

作用:從請求結(jié)果中按正則表達(dá)式提取參數(shù)铐刘,即動態(tài)提取參數(shù)
新建路徑:
Http請求 -> Add -> Post Processors -> Regular Expression Extractor


正則參數(shù)提取.jpg

模塊屬性:

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的值


正則參數(shù)簡介.jpg

觀察結(jié)果樹

作用:查看性能測試結(jié)果

新建路徑:
線程組 -> Listener -> View Result Tree


結(jié)果樹.jpg

模塊屬性:

Sampler result // 請求基本信息
Request // Request數(shù)據(jù)
Response data //  Response 數(shù)據(jù)
結(jié)果樹rs.jpg

ant安裝

官網(wǎng):
http://ant.apache.org/bindownload.cgi
下載最新版本的ant zip安裝包

antZip.jpg

解壓ant zip包到指定文件


ant安裝路徑.jpg

環(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)證.jpg

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腳本


jmeter的jar設(shè)置.jpg

2)修改Jmeter的bin目錄下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
作用使Jmeter報告輸出文件格式為xml


jmeterxml.jpg

Ant執(zhí)行jmeter腳本

1.jmeter安裝目錄下新建文件夾
TestReport文件夾:用于保存html的結(jié)果報告
TestScrip文件夾:用于保存jmeter的測試腳本


jmeter新建文件夾.jpg

2.運(yùn)行jmeter腳本
如下圖捡遍,需要注意2個文件


antBuild.jpg

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é)果


ant運(yùn)行結(jié)果.jpg

4.查看運(yùn)行報告
build.xml中設(shè)置的jmeter生成html格式的結(jié)果報告的路徑查看結(jié)果


ant測試結(jié)果.jpg

html測試結(jié)果瀏覽器查看


html結(jié)果.jpg

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


jdk配置.jpg

Ant配置
配置路徑:
系統(tǒng)管理 -> 全局工具配置 -> JDK


ant配置.jpg

1.構(gòu)建一個自由風(fēng)格的項目


image.png

2.配置構(gòu)建步驟
參數(shù)說明

Ant Version //jenkins全局工具配置過Ant后续挟,點(diǎn)擊表單會出現(xiàn)在下拉框中,直接選中即可侥衬;
Targets //前一章中提到的build.xml文件中的targets的名字诗祸;
Build File //指定build.xml文件的路徑以及文件名
image.png

3.jmeter.log授權(quán)
命令行輸入

ls -lh
chmod 777 jmeter.log

如下圖,jmeter.log為可執(zhí)行文件


image.png

4.運(yùn)行Jenkins任務(wù)


image.png

5.郵件配置
全局配置郵件發(fā)送者:
配置路徑:
Jenkins的系統(tǒng)管理 -> 系統(tǒng)設(shè)置 -> Extended E-mail Notification


image.png

項目配置郵件接收者:
配置路徑:
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

郵件配置截圖如下:


image.png

image.png

附件路徑說明
1.Jenkins主目錄
查看路徑:系統(tǒng)管理 -> 系統(tǒng)設(shè)置 -> 主目錄


image.png

2.Jenkins工作共建
Jenkins主目錄/workspace


image.png

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)附件,如下圖


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吨瞎,一起剝皮案震驚了整個濱河市痹兜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌关拒,老刑警劉巖佃蚜,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異着绊,居然都是意外死亡谐算,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門归露,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洲脂,“玉大人,你說我怎么就攤上這事剧包】纸酰” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵疆液,是天一觀的道長一铅。 經(jīng)常有香客問我,道長堕油,這世上最難降的妖魔是什么潘飘? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮掉缺,結(jié)果婚禮上卜录,老公的妹妹穿的比我還像新娘。我一直安慰自己眶明,他們只是感情好艰毒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搜囱,像睡著了一般丑瞧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上犬辰,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天嗦篱,我揣著相機(jī)與錄音,去河邊找鬼幌缝。 笑死灸促,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浴栽,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼荒叼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了典鸡?” 一聲冷哼從身側(cè)響起被廓,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎萝玷,沒想到半個月后嫁乘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡球碉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年蜓斧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睁冬。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡挎春,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出豆拨,到底是詐尸還是另有隱情直奋,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布施禾,位于F島的核電站脚线,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏弥搞。R本人自食惡果不足惜殉挽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拓巧。 院中可真熱鬧,春花似錦一死、人聲如沸肛度。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽承耿。三九已至,卻和暖如春伪煤,著一層夾襖步出監(jiān)牢的瞬間加袋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工抱既, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留职烧,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蚀之,于是被迫代替她去往敵國和親蝗敢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容