平時(shí)在服務(wù)端測試時(shí),我們需要涉及2方面的內(nèi)容:
- 基于JAVA白盒的單元測試;
- 基于Jmeter黑盒的接口測試&性能測試;
不管是黑盒還是白盒,我們一旦實(shí)現(xiàn)代碼或腳本的測試,就可以做到可持續(xù)集成,這在接口的日常回歸和冒煙測試中非常的高效。
下面開始介紹如何實(shí)現(xiàn)以上2個(gè)方面的可持續(xù)集成環(huán)境搭建。
1. Jenkins+Ant+Jmeter框架
1.1 環(huán)境搭建
環(huán)境配置(僅代表本文作者搭建環(huán)境時(shí)相關(guān)配置):
JDK:jdk1.8.0_144
Ant:apache-ant-1.9.9
Jmeter: apache-jmeter-3.0
Jenkins: jenkins-2.60.2
1.1.1 Jenkins環(huán)境搭建
下載最新的版本(一個(gè) WAR 文件)。Jenkins官方網(wǎng)址: http://Jenkins-ci.org/
-
運(yùn)行 Java -jar jenkins.war
注意:Jenkins 需要運(yùn)行 Java 5以及以上的版本。
還有一種安裝方式就是將下載的war包文件部署到 servlet 容器,然后啟動(dòng)容器,在瀏覽器的URL地址欄中輸入類似http://localhost:8080/jenkins/這樣的地址即可。下圖是安裝成功后的界面(使用的是Linux+Tomcat6+Java6環(huán)境):
Jenkins配置
寫在配置前的一些話:Jenkins的配置不可能全部都說到的,大部分配置是有英文說明的,點(diǎn)擊輸入框后面的問號(hào)就可以看見了。英文不會(huì)用翻譯工具,連蒙帶猜的,多測試幾次,你就懂了。-
Jenkins服務(wù)默認(rèn)端口為8080,如與其他服務(wù)沖突,可在..\Jenkins\jenkins.xml中修改默認(rèn)端口,如我這里修改為--httpPort=8081;
另外一種修改端口號(hào)方式:
- 安裝Jenkins時(shí)運(yùn)行“Java -jar jenkins.war” 命令,出現(xiàn)下列問題
點(diǎn)擊查看大圖
只是因?yàn)?080端口已經(jīng)有程序占用了,需要修改端口號(hào)。
解決方法是:
運(yùn)行“java -jar jenkins.war --ajp13Port=-1 --httpPort=8089”命令。
8089是新的端口號(hào),可以換成任何你想要的,但是不要和其他程序沖突哦。
OK啦。
2、安裝jenkins服務(wù),這樣每次不用每次敲命令,開機(jī)自啟動(dòng)
(Jenkins->Manage Jenkins->Installing Jenkins as Windows service, 安裝到你指定目錄D:\jenkins)
關(guān)掉啟動(dòng)的窗口,試著啟動(dòng)安裝的服務(wù)
控制面板->管理工具->服務(wù), 可以看到j(luò)enkins, 右擊啟動(dòng)
Jenkins服務(wù)默認(rèn)是自動(dòng)啟動(dòng)的,如果想修改為手動(dòng)啟動(dòng),請(qǐng)自行管理->服務(wù),找到Jenkins服務(wù),修改為手動(dòng)啟動(dòng)即可。
打開Jenkins,首次進(jìn)入會(huì)默認(rèn)讓你選擇安裝插件(此處如果完全不清楚自己需要什么插件,建議全選)。插件安裝完成之后,需要設(shè)置登錄用戶,按照自己喜好設(shè)置即可。
1.1.2 Ant環(huán)境搭建
-
解壓apache-ant-1.9.7-bin.zip到D:\Progrom Files目錄下;
配置Ant環(huán)境變量
新建以下環(huán)境變量:
ANT_HOME:D:\Progrom Files\apache-ant-1.9.7,此為你的ANT安裝路徑;設(shè)置完成后,點(diǎn)擊"確認(rèn)"來保存。在環(huán)境變量PATH的最后面添加一下內(nèi)容:
;%ANT_HOME%\bin 注意前面的分號(hào),如果PATH中最后沒有分號(hào)";"的話要加上,有的話就可去除。進(jìn)入cmd命令窗口,在CMD窗口中輸入ant -version,敲擊回城鍵,會(huì)顯示出你安裝的ANT版本,如果成功顯示,說明你的配置應(yīng)該是成功了.
本地調(diào)試使用ant構(gòu)建運(yùn)行Jmeter,并且生成jtl、Html報(bào)告;
jmeter默認(rèn)保存的是.csv格式的文件,所以我們先要設(shè)置一下bin/jmeter.properties文件內(nèi)容,修改jmeter.properties文件 jmeter.save.saveservice.output_format=xml;
將apache-jmeter-2.13\extras\ant-jmeter-1.1.1.jar拷貝到apache-ant-1.9.7\lib目錄下;在\apache-jmeter-2.13\extras目錄下打開CMD,運(yùn)行"ant.bat -file build.xml -Dtest=Test" . 查看\apache-jmeter-2.13\extras目錄下是否出現(xiàn)Test.jtl、Test.html文件,若有,則構(gòu)建成功。注意:Test.jmx是默認(rèn)存在的Sample腳本文件。
若構(gòu)建失敗,請(qǐng)分析cmd打印的日志消息,定位問題;build文件推薦設(shè)置:
**[html]** [view plain](http://blog.csdn.net/qi_lin7/article/details/52045713#) [copy](http://blog.csdn.net/qi_lin7/article/details/52045713#)
<!-- 這個(gè)是推薦build,至于原理,大家可以查看ant-jmeter-1.1.1.jar源碼 -->
**[html]** [view plain](http://blog.csdn.net/qi_lin7/article/details/52045713#) [copy](http://blog.csdn.net/qi_lin7/article/details/52045713#)
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<property name="basedirectory" value="D:\Program Files\apache-jmeter-3.1\extras" />
<!-- 需要改成自己本地的 Jmeter 目錄-->
<property name="jmeter.home" value="D:\Program Files\apache-jmeter-3.1" />
<!-- jmeter生成jtl格式的結(jié)果報(bào)告的路徑-->
<property name="jmeter.result.jtl.dir" value="${basedirectory}" />
<!-- jmeter生成html格式的結(jié)果報(bào)告的路徑-->
<property name="jmeter.result.html.dir" value="${basedirectory}" />
<!-- Name of test (without .jmx) -->
<property name="test" value="Test"/>
<!-- 生成的報(bào)告的前綴-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${test}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${test}.html" />
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="run">
<antcall target="test" />
<antcall target="report" />
</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="${basedirectory}" includes="${test}.jmx" />
</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">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>
1.1.3 Jmeter環(huán)境搭建
-
解壓apache-jmeter-2.13.zip到D:\Progrom Files目錄下。
-
Jmeter插件的安裝。解壓JMeterPlugins-Extras-1.3.0.zip、JMeterPlugins-Standard-1.3.0.zip,將對(duì)應(yīng)ext目錄下的文件拷貝到D:\Progrom Files\apache-jmeter-2.13\lib\ext目錄下;
配置jmeter環(huán)境變量:
- 設(shè)置環(huán)境變量,新建系統(tǒng)變量在變量名中輸入:JMETER_HOME,變量值中輸入:D:\Progrom Files\apache-jmeter-2.13,點(diǎn)擊確定即可。
-
在環(huán)境變量CLASSPATH中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar;
在環(huán)境變量Path中添加%JMETER_HOME%\bin3) 檢驗(yàn)是否配置成功 運(yùn)行cmd 輸入 jmeter -v (jmeter和 -v 之間有空格)
若如圖所示 顯示版本信息 則說明安裝和配置成功。
1.2 項(xiàng)目實(shí)戰(zhàn)
步驟1:
Jmeter腳本設(shè)計(jì),包括性能測試腳本和接口測試腳本test.jmx;
步驟2:
將Jmeter腳本放在文件夾 *D:\apache-jmeter-3.0\extras *;
步驟3:
本地登陸http://121.40.190.131:1080/ ,構(gòu)建測試環(huán)境,可復(fù)制已經(jīng)搭建好的test例子(項(xiàng)目路徑:http://121.40.190.131:1080/job/test), 然后進(jìn)入配置更改以下2項(xiàng)即可:
如上圖,紅色框內(nèi)的信息需要跟你的腳本名稱一致,這樣可易于識(shí)別不同的腳本,不同的結(jié)果。如我們的腳本為test.jmx,那么我們只需更改紅框內(nèi)信息為 test.jtl、test.html,其他無需更改,點(diǎn)擊構(gòu)建即可;
步驟4:
查看測試結(jié)果,如圖:
同時(shí),可以可以點(diǎn)擊進(jìn)入每次構(gòu)建的Performance Report,查看具體的jtl文件信息,如下圖:
如上圖,可以查看本次構(gòu)建,線程數(shù)、響應(yīng)時(shí)間、錯(cuò)誤率與上次相比,增減量。
2. Jenkins+Java+Maven+Junit+Git框架
2.1 環(huán)境搭建
//
2.2 項(xiàng)目實(shí)戰(zhàn)
步驟1:
Java單元測試——基于主干拉取autotest分支,然后基于autotest代碼進(jìn)行白盒測試。在每次新項(xiàng)目提測時(shí),將新代碼合并至autotest分支即可,不會(huì)覆蓋我們的單測代碼;同時(shí),也可以用于每日的業(yè)務(wù)回歸測試。
步驟2:
提交本地代碼至autotest分支,復(fù)制已經(jīng)搭建好的 jingqi_center項(xiàng)目(http://test.cxjc.youzibuy.com/jenkins/view/%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96/job/jingqi_center/), 只需修改git的路徑和分支號(hào)即可,如下圖:
步驟3:
構(gòu)建完成后,可查看測試結(jié)果及歷來構(gòu)建的趨勢,如下圖:
同時(shí),點(diǎn)擊最新測試結(jié)果,可查看具體信息:
如上圖,會(huì)列出Failed Tests的接口,點(diǎn)擊 + ,可展示具體信息: