利用Jenkins+ant+jmeter实现日常工作接口自动化持续集成。
所有环境依赖JDK,所以第一步我们必须先安装配置好JDK环境。JDK下载安装配置教程
然后我们开始正式搭建:
1.搭建jmeter环境:我本地上已经搭建好,如果不会的可以自行百度一下jmeter的安装教程。有很多,讲解的也很清晰明了。jmeter的下载地址
2.搭建ant环境:Ant和maven类似,maven是执行pom文件,ant是执行build文件。点击下载ant
解压
3.配置ant环境变量:参考百度,这里环境不是重点,不细解,进入命令行模式输入ant -version能够显示版本号说明配置成功
4.搭建Jenkins环境,点击下载jenkins.war
注:这里需要注意一下,Jenkins第一可以依赖容器Tomcat,也可以依赖自带的 Jetty 服务器独立运行。第一种方法:如果您电脑上有配置好的Tomcat环境,将下载的jenkins.war拷贝到apache-tomcat-8.0.28\的webapps目录下,然后进入到Tomcat的bin目录下,点击startup.bat启动Tomcat。在浏览器中输入http://127.0.0.1:8080/jenkins访问。如果端口号被占用,可以通过修改Tomcat的端口号来实现。这里不细讲,有不懂的可以留言或者添加QQ群、微信。第二种方法:我电脑上有Tomcat,但是我这里为了教大家最简单的方法,我说一下第二种。直接使用命令启动。Win+R运行进入cmd模式,cd进入到jenkins.war目录,输入命令java -jar jenkins.war --httpPort=8888,8888可以改成一个没有被占用的你想用的端口号。然后在浏览器中输入http://127.0.0.1:8888进行访问。
5.使用jmeter创建一个测试脚本test01.jmx,具体步骤如下:
①进入jmeter安装目录,例如D:\JMeter\apache-jmeter-5.1.1\下的bin目录下,然后找到jmeter.bat启动jmeter,然后添加线程用户-线程组
②右键线程组,添加取样器-http请求
③http中我们随便写点,比如就写请求百度
④添加察看结果树
⑤点击运行,这时候提示我们是否保存,我们在jmeter安装目录D:\JMeter\apache-jmeter-5.1.1\下创建文件夹temp_test
然后选择将脚本存放到创建的temp_test目录下。
6.将jmeter安装路径下的D:\JMeter\apache-jmeter-5.1.1\extras的ant-jmeter-1.1.1.jar文件拷贝到ant安装目录D:\JD.com\JmeterScript\apache-ant-1.9.14-bin\apache-ant-1.9.14\下的lib下。这样Ant运行时才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本
7.在temp_test下创建文件夹report
8.将D:\JMeter\apache-jmeter-5.1.1\extras下的build.xml文件拷贝到temp_test中,将build.xml中的内容全部删除后,修改为以下内容(运行.jmx脚本,生成.jtl文件放入C:\Users\songlihui\.jenkins\workspace\xtl_jcyf_接口自动化回归测试/report/jtl文件中,ant在将相应的文件转换为对应的.html文件放入C:\Users\songlihui\.jenkins\workspace\xtl_jcyf_接口自动化回归测试/report/html中)。
将里面注释需要改的地方,改成自己本地真实的路径。 这样我们的环境就全部准备好啦~
最后,我们开始配置我们的Jenkins项目环境
1.cd进入到jenkins.war目录,输入命令java -jar jenkins.war --httpPort=8888。端口号8888可以任意改成你想要的,只要是未被其他进程占用的。不过这种启动方式有一个弊端,就是每次启动都需要指定端口号,我们可以通过修改Jenkins安装目录jenkins\jenkins.xml文件修改第41行httpPort为8082(你想要的,未被其他进程占用的),此时如果直接使用命令java -jar jenkins.war,会发现启动的jenkins服务还是用的默认端口8080,并未按修改的jenkins.xml中的端口号进行启动。正确的启动方式是:net start jenkins。。。初次访问http://localhost:8888/,如果发现一直卡在启动界面,提示:Jenkins正在启动,请稍后...
你可以按 Ctrl + C 强制结束启动,然后再次执行上面的命令,发现就会继续启动了,或者可以修改一下配置文件,因为你所在网络可能被限制了,如下:
进入 jenkins 的工作目录,也可以自定义 jenkins 的工作目录,设置 JENKINS_HOME 环境变量,启动 jenkins.war 后将被解压到 JENKINS_HOME 目录下,同时所有 jenkins 的 plugins 和 配置文件等也将被写入到 JENKINS_HOME 所设置的目录下。
打开 hudson.model.UpdateCenter.xml,将 http://updates.jenkins-ci.org/update-center.json 替换成 http://mirror.xmission.com/jenkins/updates/update-center.json,还是不行的话找到 updates 目录下的 default.json 把里面所有的谷歌地址改成百度的,即将 http://www.google.com/ 替换为 http://www.baidu.com/。
待出现如下界面。然后我们进入红色的地址,使用txt文本打开该文件
点击下一步继续,进入插件安装,默认继续到下面页面,开始安装
然后使用注册的用户名密码登录
给任务起一个名字,点击确定
其他的保持默认就好,我们在构建中选择invoke ant,然后选择高级
查看我们的build.xml文件, 找到target name,发现我们的target名叫“run”,将这个填写到targets里
点击保存,返回到如下页面,这时候我们点击左侧列表中的build now
然后我们返回到build.xml文件,查看是不是哪里写的不对,然后发现需要改的地方没有改成自己的。
然后最后别忘记保存,我们保存我们最新的对build.xml文件的更改,然后继续返回Jenkins中点击,build now,发现又构建失败了
然后我们点击#2,进去后选择控制台输出,查看一下日志吧
发现哦,原来是build.xml文件中出现了--,
继续打开build.xml文件
去掉后的
然后保存我们对build.xml文件的修改,然后返回Jenkins,我们继续build now
出现问题不要怕,一步一步的找,这次我们发现成功了,变为蓝色了
完事了吗???显然还没有,别忘记我们当时在我们的temp_test下创建了一个report文件夹,这个是做什么用??当然是生成我们的测试报告咯~~,然后我们进入D:\JMeter\apache-jmeter-5.1.1\temp_test\report下的html中赶紧看一下吧。
扩展:
1.生成的报告中展示细节,如请求的URL、参数、header、返回的header、body等等。例如下图
那我们需要怎么做呢?细心的童鞋可能发现了,在我们的build.xml文件中,我们设置生成了两个报告,一个是SummaryReport,另一个是DetailsReport。summary肯定是一个整体的报告情况,而detail不用说,是更详细的详情。这时候我们就需要用到一个文件jmeter.results.shanhe.me.xsl。在jmeter默认下载安装后,这个文件是没有的。需要单独下载,有好多地址的下载都是受限的,这里给大家找一个可以直接下载的博客地址:jmeter.results.shanhe.me.xsl。下载完成后,把这个文件放到jmeter安装目录下的extra下:
修改我们的build.xml文件
然后重新build now构建一下,去生成报告的地方打开DetailsReport.html,可以看到现在的报告中显示了非常详细的详情。
2.我们在查看报告的时候,发现里面的数据是累加的。比如我们执行了1次构建,生成了报告。又执行了一次,打开报告是第一次+第二次构建执行的脚本情况总和。如果我们只需要打开将最新的执行情况展现,需要怎么做呢?继续打开我们的build.xml文件
需要修改的地方我都框出来了
中间部分代码有点多,我贴到下面。
修改好后,保存build.xml,继续构建。这时候在生成报告前,会先将jtl、html两个文件夹下的内容删除,从而每次生成的报告文件中只有最新一次构建,而不是累加叠加。
3.修改发送报告的样式
${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志
本邮件由系统自动发出,无需回复!
各位同事,大家好,以下为${PROJECT_NAME }项目构建信息
构建结果 - ${BUILD_STATUS}
构建信息
- 项目名称 : ${PROJECT_NAME}
- 构建编号 : 第${BUILD_NUMBER}次构建
- 触发原因: ${CAUSE}
- 构建状态: ${BUILD_STATUS}
- 构建日志: ${BUILD_URL}console
- 构建 Url : ${BUILD_URL}
- 工作目录 : ${PROJECT_URL}ws
- 项目 Url : ${PROJECT_URL}
失败用例
$FAILED_TESTS
最近提交(#$SVN_REVISION)
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="- %d [%a] %m
"}
详细提交: ${PROJECT_URL}changes
4.这时候前几次的构建报告我们就看不到了,如果还希望看到前几次的怎么办呢?
5.所有的工作做完了,我们想每次测试完成,生成报告,并通过邮箱将测试报告发送给领导和同事们?
后续内容会在空余的时间一点点补充,如果感觉博文的分享能给大家带来提升或者难题的解答,欢迎点赞评论。欢迎添加我的微信,相互学习探讨~1305618688,qq交流群:849102042