1. 安裝Jmeter、jdk
Jmeter 5.1版本 ;
jdk 1.8版本 :https://pan.baidu.com/s/1nv668Mt
3. 安裝Jenkins
5. 建立build.xml
Jmeter 根目錄創建一個demo文件夾,將build.xml和腳本放置在裏面,並且需要配置下jmeter路徑以及報告樣式
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project name="ant-jmeter-test" default="run" basedir="."> 4 <tstamp> 5 <format property="time" pattern="yyyyMMddhhmm" /> 6 </tstamp> 7 <!-- 需要改成自己本地的 Jmeter 目錄--> 8 <property name="jmeter.home" value="D:\apache-jmeter-3.3" /> 9 <!-- jmeter生成jtl格式的結果報告的路徑--> 10 <property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-3.3\demo\report\jtl" /> 11 <!-- jmeter生成html格式的結果報告的路徑--> 12 <property name="jmeter.result.html.dir" value="D:\apache-jmeter-3.3\demo\report\html" /> 13 <!-- 生成的報告的前綴--> 14 <property name="ReportName" value="TestReport" /> 15 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> 16 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> 17 18 <target name="run"> 19 <antcall target="test" /> 20 <antcall target="report" /> 21 </target> 22 23 <target name="test"> 24 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 25 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 26 <!-- 聲明要運行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本--> 27 <testplans dir="D:\apache-jmeter-3.3\demo" includes="*.jmx" /> 28 <property name="jmeter.save.saveservice.output_format" value="xml"/> 29 </jmeter> 30 </target> 31 32 <path id="xslt.classpath"> 33 <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 34 <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> 35 </path> 36 37 <target name="report"> 38 <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp> 39 <xslt 40 classpathref="xslt.classpath" 41 force="true" 42 in="${jmeter.result.jtlName}" 43 out="${jmeter.result.htmlName}" 44 style="${jmeter.home}/extras/jmeter-results-report-loadtest.xsl"> 45 <param name="dateReport" expression="${report.datestamp}"/> 46 </xslt> 47 <!-- 因爲上面生成報告的時候,不會將相關的圖片也一起拷貝至目標目錄,所以,需要手動拷貝 --> 48 <copy todir="${jmeter.result.html.dir}"> 49 <fileset dir="${jmeter.home}/extras"> 50 <include name="collapse.png" /> 51 <include name="expand.png" /> 52 </fileset> 53 </copy> 54 </target> 55 </project>
6. 運行jmx文件
① 通過fiddler抓包,創建jmx文件腳本,並調試成功,可以查看結果樹數據
② 然後通過ant運行,查看結果 :cmd進入腳本目錄,並執行ant
③ 執行結果顯示:BUILD SUCCESSFUL 證明執行成功,進入report文件夾,查看HTML報告顯示,如下:【報告的樣式,取決於\apache-jmeter-3.3\extras\jmeter-results-detail-report_21.xsl 模板】
PS:問題解決
問題1: 執行ant時報錯 “Error reading project file D:\apache-jmeter-3.3\demo\build.xml: 2 字節的 UTF-8序列的字節 2 無效。”
解決辦法:build.xml中<?xml version="1.0" encoding="UTF-8"?>,UTF-8修改爲UTF8;
7. 集成Jenkins
***安裝Jenkins,控制檯模式進入到Jenkins.war包所在目錄,執行<java -jar Jenkins.war>命令,打開<http://10.10.31.6:8080/login>
【PS:Jenkins 通過命令行安裝完之後,會在<C:\Users\XXXX\.jenkins>用戶目錄下生成.jenkins文件夾,裏面包含配置文件等】
①第二次以後啓動Jenkins
jenkins.war 已放置在tomcat\webapps文件夾下,進入bin目錄,雙擊startup.bat【linux系統用startup.sh】
② 瀏覽器輸入:http://localhost:8080/jenkins 【默認端口號爲8080】,彈出配置頁面或登錄頁面,證明Jenkins啓動成功。
③ 創建一個項目。
⑤ 配置ant,增加build路徑
⑥ 點擊高級;Targets 輸入“run”;Build File 輸入“D:\apache-jmeter-3.3\demo\build.xml”【build.xml配置文件地址】,點擊保存。
⑦ Jenkins 配置性能測試報告模板
a, 下載插件Public HTML reports
系統管理 ---> 管理插件 ---> 可選插件,輸入 HTML Publisher 進行查詢 ---> 並點擊立即安裝 ---> 安裝完成
b, 配置報告
點擊已創建的工程 ---> 進入配置頁面 ---> 頁面最下方,點擊增加構建後操作步驟 ---> 點擊Public HTML reports ---> 保存
8. Jenkins 構建任務
已創建任務中,點擊立即構建
9. 查看構建結果,構建成功
10. 查看report,工程左側,點擊HTML Report 查看
11. 配置系統管理中郵件發送相關內容
① 安裝郵件插件 (Extended E-mail Notification) 搜索 Email Extension。
② 系統管理 ---> 系統設置 --->Extended E-mail Notification 進行郵件發送的配置
③ 系統管理 ---> 系統設置 --->郵件通知 配置【與②配置類似】
④ 需要注意項
⑤ 測試發送郵件配置是否成功,顯示“Email was successfully sent”,證明郵件發送配置成功
12. 設置job中,添加Email插件,給項目相關人員發送郵件通知
① 已創建任務 ---> 配置頁面 ---> 構建後操作添加<Editable Email Notification>
② Advanced Settings 設置郵件接受人以及接受郵件場景,通過<add triggers> 進行添加。
Always
Success
【PS:接受郵件地址之間用逗號分隔,可在郵箱地址前加“cc”,直接抄送發郵件】
【問題彙總】
問題1:BUILD FAILED Error reading project file D:\apache-jmeter-3.3\demo\build.xml: 2 字節的 UTF-8 序列的字節 2 無效。
解決:build.xml 編碼改爲UTF8
問題2:BUILD FAILED D:\apache-jmeter-3.3\demo\build.xml:9: 在註釋中找到無效的 XML 字符 (Unicode: 0xd9eb)。
解決:刪除註釋
問題3:BUILD FAILED “java.lang.UnsupportedClassVersionError: org/apache/jmeter/NewDriver : Unsupported major.minor version 52.0 ”
D:\apache-jmeter-3.3\demo\build.xml:16: The following error occurred while executing this line:
D:\apache-jmeter-3.3\demo\build.xml:39: input file D:\apache-jmeter-3.3\demo\report\jtl\TestReport201806200210.jtl does not exist
解決:jdk版本與major.minor 版本對應 不一致造成的
major version : 52 對應的是jdk 1.8
配置Jenkins JAVA_HOME爲jdk 1.8 即可解決
系統管理 --> 系統設置 --> 全局屬性-Environment variables 配置鍵 爲 “JAVA_HOME”,值爲“C:\Program Files (x86)\Java\jdk1.8.0_144” --> 保存後重啓Jenkins
附:其他minor.major 版本的對應關係,如下
問題4:報告格式顯示異常
由於Jenkins安全默認將以下功能關閉:
1、javascript
2、html上的內置插件
3、內置css或從其它站的css
4、從其它站的圖處
5、AJAX
解決:
臨時解決方案:
① 在Jenkins 系統管理 ---> 腳本命令行中 輸入 <System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")>
② 需要再次構建,查看新生成的report html,之前已生成的report仍然顯示異常【重啓Jenkins後需要重新執行此命令】
永久解決方案:
① 搜索安裝<startup-trigger-plugin>
和<Groovy>
插件;
插件管理---> 可選插件 搜索“tartup Trigger”、“Groovy
”並安裝;
Startup Trigger
:可實現在Jenkins
節點(master/slave)啓動時觸發構建;
Groovy plugin
:可實現直接執行Groovy
代碼。
② 配置方式如下:
- 新建一個job,該job專門用於Jenkins啓動時執行的配置命令;
- 在build trigger 模塊下,勾選 build when job nodes start;
- 在
Build
模塊下,Add build step
->Execute system Groovy script
,在Groovy Script
中輸入配置命令,System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
。
問題5:發送郵件配置完畢後,測試發送郵件時報錯“553”
解決:由於認證錯誤,校驗下服務器地址、端口號、郵件名及密碼、系統管理員郵箱地址未設置【注意:必須設置"系統管理員郵件地址"】
問題6:發送郵件配置完畢後,測試發送郵件時報錯“25”
解決:郵件通知設置中,不要勾選<使用SSL協議>,點擊apply後,重新測試發送郵件,問題解決
問題7: 發送郵件配置完畢後,測試發送郵件時報錯“535”
解決:檢查郵箱地址及密碼是否正確,重新輸入郵件通知中郵箱密碼,問題得到解決,提示“Email was successfully sent”