十、持續整合(Jenkins+Ant+Jmeter)
前言:
jmeter 是一個 java 開發的,apache 下的開源工具,常被用於做介面自動化和效能測試工具。因為他開源,入手也非常簡單,所以越來越受測試人員青睞。
ant 也是用 Java 開發的,apache 下的一個將程式碼編譯、測試、部署等聯絡在一起加以自動化的開源工具。深受 java 開發人員歡迎。
Jenkins 是一款開源的 CI/CD 軟體,因為功能齊全,外掛豐富,支援各種執行方式,使用也很簡單,是持續整合方面的領導者。
這樣一個組合,就能讓測試人員把 jmeter 編寫的介面測試指令碼,通過 Jenkins 持續整合編輯、測試,檢視測試結果報告。
環境配置
因為,jmeter、ant 都是 java 開發的,所以我們要有 java 執行環境安裝 jre 或 jdk
一、安裝與配置 jdk:
1、下載 jdk 或 jre 安裝包
2、安裝 jdk
3、開啟系統環境變數,在系統變數中,
①、新增 JAVA_HOME 變數,路徑為 jdk 安裝路徑,
②、再在 PATH 變數值中插入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
③、再在 CLASSPATH 變數值中插入%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
儲存關閉環境變數視窗,在 dos 視窗中,輸入 java -version, 如果返回了 java 的版 本,說明安裝配置成功
二、安裝 jmeter:
1、下載 jmeter 包
2、解壓,進入解壓路徑的 .\bin 資料夾,雙擊 jmeter.bat檔案(windows),即可啟動 jmeter,編寫介面測試指令碼
3.ant 安裝與配置
1、下載 ant 包,解壓
2、開啟系統環境變數,新增 ANT_HOME 為 ant 路徑, 在$PATH 中新增%ANT_HOME%\bin
3、修改 jmeter 的 jmeter.properties jmeter.save.saveservice.output_format=xml
4、jmeter 的 extras 資料夾中的 ant-jmeter.***.jar 拷貝到 ant 的 lib 資料夾中 用於發 郵件
5、驗證環境配置:執行 cmd,輸入ant -version
6、修改 build.xml 檔案 進入 jmeter 的 extras 資料夾,找到 build.xml 檔案,修改該檔案
修改後的build檔案:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project name="ant-jmeter-test" default="all" basedir="."> 3 <tstamp> 4 <format property="time" pattern="yyyyMMddhhmm" /> 5 </tstamp> 6 <property name="encoding" value="UTF-8" /> 7 <!-- 需要改成自己本地的 Jmeter 目錄--> 8 <property name="jmeter.home" value="D:\Program Files (x86)\apache-jmeter-3.3" /> 9 <property name="report.title" value="介面效能監控"/> 10 <!-- jmeter生成jtl格式的結果報告的路徑--> 11 <property name="jmeter.result.jtl.dir" value="D:\Program Files (x86)\apache-jmeter-3.3\report\jtl" /> 12 <!-- jmeter生成html格式的結果報告的路徑--> 13 <property name="jmeter.result.html.dir" value="D:\Program Files (x86)\apache-jmeter-3.3\report\html" /> 14 <!-- 生成的報告的字首--> 15 <property name="ReportName" value="TestReport" /> 16 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> 17 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> 18 19 <target name="all"> 20 <antcall target="test" /> 21 <antcall target="report" /> 22 <antcall target="mail" /> 23 </target> 24 25 <target name="test"> 26 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 27 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 28 <!-- 宣告要執行的指令碼"*.jmx"指包含此目錄下的所有jmeter指令碼--> 29 <testplans dir="D:\Program Files (x86)\apache-jmeter-3.3\jmeter_scripts" includes="*.jmx" /> 30 31 <property name="jmeter.save.saveservice.output_format" value="xml"/> 32 </jmeter> 33 </target> 34 35 <path id="xslt.classpath"> 36 <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 37 <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> 38 </path> 39 40 41 <target name="report"> 42 <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp> 43 <xslt 44 classpathref="xslt.classpath" 45 force="true" 46 in="${jmeter.result.jtlName}" 47 out="${jmeter.result.htmlName}" 48 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> 49 50 <param name="showData" expression="${show-data}"/> 51 52 <param name="dateReport" expression="${report.datestamp}"/> 53 <param name="titleReport" expression="${report.title}:${report.datestamp}"/> 54 55 </xslt> 56 57 <!-- 因為上面生成報告的時候,不會將相關的圖片也一起拷貝至目標目錄,所以,需要手動拷貝 --> 58 <copy todir="${jmeter.result.html.dir}"> 59 <fileset dir="${jmeter.home}/extras"> 60 <include name="collapse.png" /> 61 <include name="expand.png" /> 62 </fileset> 63 </copy> 64 </target> 65 <property name="mail_from" value="[email protected]" /> 66 <property name="password" value="grpmkerhjmtbbfae" /> 67 <!--mail_to:傳送列表,多個之間逗號間隔 --> 68 69 <property name="mail_to" value="[email protected]" /> 70 <property name="mailport" value="465" /> 71 <!--郵箱需要開通smtp服務--> 72 <property name="mailhost" value="smtp.qq.com" /> 73 74 <target name="mail"> 75 76 <loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="${encoding}" /> 77 <mail from="[email protected]" tolist="[email protected]" mailport="587" mailhost="smtp.qq.com" user="[email protected]" password="grpmkerhjmtbbfae" subject="TestReport" messagemimetype="text/html"> 78 <message> 79 本輪構建的結果如下: 80 ${report} 81 </message> 82 </mail> 83 <delete file="${jmeter.result.htmlName}" /> 84 </target> 85 </project>build.xmll
注意:QQ郵箱的埠用587,不能使用465
四、安裝 jenkins:
2種安裝方式:1、war包安裝 ;2、下載可執行檔案msi安裝
war包安裝並啟動jenkins服務:
--安裝jdk1.8以上版本,並配置環境變數(將jdk的bin路徑放在系統變數的PATH中,cmd中檢視Java版本:java-version)
--將.jenkins放在C:\Users\Administrator目錄下
--將jenkins.war包放在.jenkins下
--進入C:\Users\Administrator\.jenkins,在路徑地址中輸入cmd回車進入命令列
--啟動war包:java -jar jenkins.war
--顯示: Jenkins is fully up and running,表示成功。
瀏覽器訪問:
--開啟瀏覽器輸入localhost:8080
注意:如果開啟jenkins服務的時候,出現埠被佔用,需要修改埠java -jar jenkins.war --httpPort =5678
--輸入賬戶名、密碼(第一次啟動在命令列日誌中可檢視初始密碼)
修改初始密碼:可在C:\Users\Administrator\.jenkins\users\admin_3084889522813644434\config.xml檔案中修改密碼
#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdS
安裝外掛並配置Ant
--登 錄 jenkins-> 進 入 系 統 管 理 ->pluginManager 管 理 插 件 安 裝 AntPlugin 和PerformancePlugin 確認是否已經安裝
--系統管理-> GlobalTool Configuration 配置 Ant 路徑
6、 新建一個任務, 選擇 freestyle project 7、 在任務的‘構建’中, 選擇 invoke ant ,targets 要填寫 build.xml 中的 antcall 的值, 儲存應用
8.專案構建
9.郵箱資訊