平时在服务端测试时,我们需要涉及2方面的内容:
- 基于JAVA白盒的单元测试;
- 基于Jmeter黑盒的接口测试&性能测试;
不管是黑盒还是白盒,我们一旦实现代码或脚本的测试,就可以做到可持续集成,这在接口的日常回归和冒烟测试中非常的高效。
下面开始介绍如何实现以上2个方面的可持续集成环境搭建。
1. Jenkins+Ant+Jmeter框架
1.1 环境搭建
环境配置(仅代表本文作者搭建环境时相关配置):
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环境搭建
下载最新的版本(一个 WAR 文件)。Jenkins官方网址: http://Jenkins-ci.org/
-
运行 Java -jar jenkins.war
注意:Jenkins 需要运行 Java 5以及以上的版本。
还有一种安装方式就是将下载的war包文件部署到 servlet 容器,然后启动容器,在浏览器的URL地址栏中输入类似http://localhost:8080/jenkins/这样的地址即可。下图是安装成功后的界面(使用的是Linux+Tomcat6+Java6环境):
Jenkins配置
写在配置前的一些话:Jenkins的配置不可能全部都说到的,大部分配置是有英文说明的,点击输入框后面的问号就可以看见了。英文不会用翻译工具,连蒙带猜的,多测试几次,你就懂了。-
Jenkins服务默认端口为8080,如与其他服务冲突,可在..\Jenkins\jenkins.xml中修改默认端口,如我这里修改为--httpPort=8081;
另外一种修改端口号方式:
- 安装Jenkins时运行“Java -jar jenkins.war” 命令,出现下列问题
只是因为8080端口已经有程序占用了,需要修改端口号。
解决方法是:
运行“java -jar jenkins.war --ajp13Port=-1 --httpPort=8089”命令。
8089是新的端口号,可以换成任何你想要的,但是不要和其他程序冲突哦。
OK啦。
2、安装jenkins服务,这样每次不用每次敲命令,开机自启动
(Jenkins->Manage Jenkins->Installing Jenkins as Windows service, 安装到你指定目录D:\jenkins)
关掉启动的窗口,试着启动安装的服务
控制面板->管理工具->服务, 可以看到jenkins, 右击启动
Jenkins服务默认是自动启动的,如果想修改为手动启动,请自行管理->服务,找到Jenkins服务,修改为手动启动即可。
打开Jenkins,首次进入会默认让你选择安装插件(此处如果完全不清楚自己需要什么插件,建议全选)。插件安装完成之后,需要设置登录用户,按照自己喜好设置即可。
1.1.2 Ant环境搭建
-
解压apache-ant-1.9.7-bin.zip到D:\Progrom Files目录下;
配置Ant环境变量
新建以下环境变量:
ANT_HOME:D:\Progrom Files\apache-ant-1.9.7,此为你的ANT安装路径;设置完成后,点击"确认"来保存。在环境变量PATH的最后面添加一下内容:
;%ANT_HOME%\bin 注意前面的分号,如果PATH中最后没有分号";"的话要加上,有的话就可去除。进入cmd命令窗口,在CMD窗口中输入ant -version,敲击回城键,会显示出你安装的ANT版本,如果成功显示,说明你的配置应该是成功了.
本地调试使用ant构建运行Jmeter,并且生成jtl、Html报告;
jmeter默认保存的是.csv格式的文件,所以我们先要设置一下bin/jmeter.properties文件内容,修改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,运行"ant.bat -file build.xml -Dtest=Test" . 查看\apache-jmeter-2.13\extras目录下是否出现Test.jtl、Test.html文件,若有,则构建成功。注意:Test.jmx是默认存在的Sample脚本文件。
若构建失败,请分析cmd打印的日志消息,定位问题;build文件推荐设置:
**[html]** [view plain](http://blog.csdn.net/qi_lin7/article/details/52045713#) [copy](http://blog.csdn.net/qi_lin7/article/details/52045713#)
<!-- 这个是推荐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格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="${basedirectory}" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="${basedirectory}" />
<!-- Name of test (without .jmx) -->
<property name="test" value="Test"/>
<!-- 生成的报告的前缀-->
<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}">
<!-- 声明要运行的脚本。"*.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环境搭建
-
解压apache-jmeter-2.13.zip到D:\Progrom Files目录下。
-
Jmeter插件的安装。解压JMeterPlugins-Extras-1.3.0.zip、JMeterPlugins-Standard-1.3.0.zip,将对应ext目录下的文件拷贝到D:\Progrom Files\apache-jmeter-2.13\lib\ext目录下;
配置jmeter环境变量:
- 设置环境变量,新建系统变量在变量名中输入:JMETER_HOME,变量值中输入:D:\Progrom Files\apache-jmeter-2.13,点击确定即可。
-
在环境变量CLASSPATH中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar;
在环境变量Path中添加%JMETER_HOME%\bin3) 检验是否配置成功 运行cmd 输入 jmeter -v (jmeter和 -v 之间有空格)
若如图所示 显示版本信息 则说明安装和配置成功。
1.2 项目实战
步骤1:
Jmeter脚本设计,包括性能测试脚本和接口测试脚本test.jmx;
步骤2:
将Jmeter脚本放在文件夹 *D:\apache-jmeter-3.0\extras *;
步骤3:
本地登陆http://121.40.190.131:1080/ ,构建测试环境,可复制已经搭建好的test例子(项目路径:http://121.40.190.131:1080/job/test), 然后进入配置更改以下2项即可:
如上图,红色框内的信息需要跟你的脚本名称一致,这样可易于识别不同的脚本,不同的结果。如我们的脚本为test.jmx,那么我们只需更改红框内信息为 test.jtl、test.html,其他无需更改,点击构建即可;
步骤4:
查看测试结果,如图:
同时,可以可以点击进入每次构建的Performance Report,查看具体的jtl文件信息,如下图:
如上图,可以查看本次构建,线程数、响应时间、错误率与上次相比,增减量。
2. Jenkins+Java+Maven+Junit+Git框架
2.1 环境搭建
//
2.2 项目实战
步骤1:
Java单元测试——基于主干拉取autotest分支,然后基于autotest代码进行白盒测试。在每次新项目提测时,将新代码合并至autotest分支即可,不会覆盖我们的单测代码;同时,也可以用于每日的业务回归测试。
步骤2:
提交本地代码至autotest分支,复制已经搭建好的 jingqi_center项目(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的路径和分支号即可,如下图:
步骤3:
构建完成后,可查看测试结果及历来构建的趋势,如下图:
同时,点击最新测试结果,可查看具体信息:
如上图,会列出Failed Tests的接口,点击 + ,可展示具体信息: