Jmeter+ant+jenkins性能接口自動(dòng)化平臺(tái)

一淑倾、平臺(tái)簡介

一個(gè)完整的接口自動(dòng)化測試平臺(tái)需要支持接口的自動(dòng)執(zhí)行,自動(dòng)生成測試報(bào)告公你,以及持續(xù)集成踊淳。 Jmeter 支持接口的
測試, Ant 支持自動(dòng)構(gòu)建陕靠,而 Jenkins 支持持續(xù)集成迂尝,所以三者組合在一起可以構(gòu)成一個(gè)功能完善的接口自動(dòng)化測試平臺(tái)。

二剪芥、環(huán)境準(zhǔn)備

jenkins插件

1 .下載插件: Manage Jenkins--- Manage Plugins---高級(jí) ---可選插件 搜索 ant 下載安裝

  • 我這里是我已經(jīng)安裝好了


    image.png

2. 全局配置 ant的目錄

  • Manage Jenkins--Global Tool Configuration--搜 ant
image.png

三溉躲、平臺(tái)搭建

依賴文件配置

1. 首先在 Jmeter bin目錄下面新建一個(gè)文件夾 testcase (文件夾名稱不要使用下劃線,空格字符),并將 Jemter 測試腳本放置到該文件夾中

益兄。

2. 將 Jmeter extras 文件中的 ant-jmeter-1.1.1.jar 放到 Ant 中的 lib 文件夾中

image.png

3. 將 Jmeter extras 文件中的 build.xml 放到 第一步testcase下面锻梳。

image.png

上面的build.xml用下面百度網(wǎng)盤下載的,內(nèi)容比較豐富點(diǎn)

鏈接:https://pan.baidu.com/s/1chMgBy2dbmR5JjahF4cNSw
提取碼:p7mi
復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App净捅,操作更方便哦

4. jmeter.properties 修改 jmeter.save.saveservice.output_format=csv 成 jmeter.save.saveservice.output_format=xml

(修改原因: jmeter執(zhí)行結(jié)果文件默認(rèn)保存的是csv格式疑枯,不是xml格式,csv無法轉(zhuǎn)化成html格式)

image.png

5 配置 D:\software\JMETER4.0\apache-jmeter-4.0\bin\testcase目錄下的文件

image.png

build文件解析

image.png

image.png
image.png

創(chuàng)建工程 構(gòu)建處 可以寫上需要執(zhí)行的命令

image.png

mail解析

image.png

  • qq郵箱的 mailport 要設(shè)置為25蛔六,我設(shè)置465一直報(bào)錯(cuò)荆永。

完整XML 代碼

<?xml version="1.0" encoding="UTF-8"?>
<project name="接口性能監(jiān)控" default="all" basedir=".">  
 <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <property name="encoding" value="UTF-8" />
    <!-- 需要改成自己本地的 Jmeter 目錄-->  
    <property name="jmeter.home" value="D:\software\JMETER4.0\apache-jmeter-4.0" /> 
    <property name="report.title" value="阿登接口性能測試"/>
    <!-- jmeter生成jtl格式的結(jié)果報(bào)告的路徑--> 
    <property name="jmeter.result.jtl.dir" value="${jmeter.home}/bin/testcase/report/jtl" />
    <!-- jmeter生成html格式的結(jié)果報(bào)告的路徑-->
    <property name="jmeter.result.html.dir" value="${jmeter.home}/bin/testcase/report/html" />
    <!-- 生成的報(bào)告的前綴-->  
    <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" />

    <target name="all">
        <antcall target="test" />
        <antcall target="report" />
        <antcall target="mail" />
    </target>
    
    <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="${jmeter.home}/bin/testcase" includes="*.jmx" />
            
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
        
    <path id="xslt.classpath">
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    </path>


    <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">

              <param name="showData" expression="${show-data}"/>

              <param name="dateReport" expression="${report.datestamp}"/>
              <param name="titleReport" expression="${report.title}:${report.datestamp}"/>

       </xslt>

                <!-- 因?yàn)樯厦嫔蓤?bào)告的時(shí)候废亭,不會(huì)將相關(guān)的圖片也一起拷貝至目標(biāo)目錄,所以具钥,需要手動(dòng)拷貝 --> 
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>
    <property name="mail_from" value="1774080833@qq.com" />
    <property name="password" value="owfcgrvbddgpebfi" />
    <!--mail_to:發(fā)送列表,多個(gè)之間逗號(hào)間隔 -->
    
    <property name="mail_to" value="330524840@qq.com,1774080833@qq.com" /> 
    <property name="mailport" value="25" />
    <!--郵箱需要開通smtp服務(wù)-->
    <property name="mailhost" value="smtp.qq.com" />

    <target name="mail">
        
        <loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="${encoding}" />
        <mail from="${mail_from}" tolist="${mail_to}" mailport="${mailport}" mailhost="${mailhost}" user="${mail_from}" password="${password}" subject="TestReport-${ant.project.name}" messagemimetype="text/html">
            <message>
                            本輪構(gòu)建的結(jié)果如下:
                            ${report}                           
                   </message>
        </mail>
    <delete file="${jmeter.result.htmlName}" />
    </target>
</project>



測試一下
cd 到j(luò)meter bin目錄的testcase下面 運(yùn)行 ant命名--會(huì)在report下面 html和jtl 生成報(bào)告

image.png

image.png
image.png

四豆村、 使用Jenkins構(gòu)建自動(dòng)化平臺(tái)

1.打開Jenkins,新建job骂删,選擇“構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目”:

image.png

2. 安裝插件: 進(jìn)入系統(tǒng)管理- 管理插件- 可選插件掌动,安裝 Performance plugin、HTML Publisher plugin桃漾、Ant Plugin

比如:

image.png

3. 配置過程

1) 源碼管理坏匪,沒有通過GIT或者SVN管理,所以選擇“無”:


image.png

2) 構(gòu)建撬统,點(diǎn)擊【增加構(gòu)建步驟】按鈕,選擇“invoke Ant”敦迄,用來執(zhí)行Ant:

image.png

3)配置invoke Ant參數(shù)恋追,其中Build File填寫build.xml文件路徑


image.png
image.png

4)在構(gòu)建后的操作中,點(diǎn)擊【增加構(gòu)建后操作步驟】罚屋,Publish HTML report 和 Publish Performance test result report


image.png
  1. 配置“Publish html reports”苦囱,其中HTML directory to archive填寫html報(bào)告保存路徑:
image.png
  1. 配置“Publish Performance test result report”,其中Source data files填寫jtl格式報(bào)告的保存路徑:
image.png
image.png
image.png

7) 也可以添加構(gòu)建觸發(fā)器

image.png

image.png

鏈接:https://pan.baidu.com/s/1pnGteA3HlERVXeS-CkDskA
提取碼:mii2

踩坑處理

  1. java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage


    image.png

解決辦法:下載4個(gè)插件的jar包 放在ant lib下面脾猛,可在下面網(wǎng)盤下載撕彤。


image.png

下面是百度網(wǎng)盤下載jar包地址
鏈接:https://pan.baidu.com/s/11Msl5jeNOFLsPEVfXDcECg
提取碼:a78i

2.Could not connect to SMTP host: smtp.qq.com, port: 465, response: -1


image.png

解決: 端口設(shè)置成 25

報(bào)告優(yōu)化 釋放洪荒之力

進(jìn)入 Jmeter 的 bin 目錄,找到 jmeter.properties 文件打開猛拴。然后將以下代碼取消注釋狀態(tài)羹铅,并改為 true

jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=true
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
# Only available with HttpClient4
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=true
jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true

image.png

最后執(zhí)行即可生成最新的報(bào)告:樣式如下,可以清晰看到每一個(gè)請求發(fā)送愉昆,響應(yīng)內(nèi)容.

cd 到j(luò)meter bin目錄的testcase下面 運(yùn)行 ant命名--會(huì)在report下面 html和jtl 生成報(bào)告

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末职员,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跛溉,更是在濱河造成了極大的恐慌焊切,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芳室,死亡現(xiàn)場離奇詭異专肪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)堪侯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門嚎尤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抖格,你說我怎么就攤上這事诺苹」窘” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵收奔,是天一觀的道長掌呜。 經(jīng)常有香客問我,道長坪哄,這世上最難降的妖魔是什么质蕉? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮翩肌,結(jié)果婚禮上模暗,老公的妹妹穿的比我還像新娘。我一直安慰自己念祭,他們只是感情好兑宇,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粱坤,像睡著了一般隶糕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上站玄,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天枚驻,我揣著相機(jī)與錄音,去河邊找鬼株旷。 笑死再登,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晾剖。 我是一名探鬼主播锉矢,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钞瀑!你這毒婦竟也來了沈撞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤雕什,失蹤者是張志新(化名)和其女友劉穎缠俺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贷岸,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壹士,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了偿警。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躏救。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盒使,到底是詐尸還是另有隱情崩掘,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布少办,位于F島的核電站苞慢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏英妓。R本人自食惡果不足惜挽放,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔓纠。 院中可真熱鬧辑畦,春花似錦、人聲如沸腿倚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敷燎。三九已至潦刃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間懈叹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國打工分扎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留澄成,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓畏吓,卻偏偏與公主長得像墨状,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子菲饼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359