截止目前为止:整体的自动化集成测试基本已经搞定,唯一美中不足的就是,在jmeter中没有找到断言失败自动发送邮件的判断条件。有知道的同学可以给我留言解惑一下,问题是这样的:我在jmeter中通过如果(if)控制器,来判断cese中是否有断言失败的,如果有则发送邮件
-
先看看成果吧
-
现在有3个任务再跑。做的定时任务,每天早晚各一次。
-
每个任务的配置在构建成功后自动发送邮件,为防止发送邮件服务器异常特地将发送邮件时间分开。
-
喜出望外的情况就是HTML Report 和 Performance Trend 两个插件的功能,能够一定程度弥补一下jmeter那个邮件的问题:其中HTML Report可以直接点击查看测试报告,模板很清晰,执行中的各项数据也很直观:
- 如果有错误在summary那里就能直接看出来了,另外一个优点就是如果有错误,直接点击就可以实现跳转,算是一个小功能吧。
-
Performance Trend 这个插件也很强大,能直接检测出当前jmeter-case中断言/执行失败的个数,然后在视图中都会显示出来,线性图表,另一个维度的感觉:
- 从图中可以看出来,第四次构建没有失败但是有一个错误,然后打开当前的HTML Report,确实有一次失败情况存在,这里提供的两种视图均可以点击查看详细。
特地上2张比较明显的图片供参考:
percentage of errors.png
-
通过建立3个job,所以对bild.xml有了一点小了解,也做了一点优化,很简单的变动了一下参数,这样在每次新建job的时候,只需要在原有的基础上修改一下项目名称就行了,(前提:workplace不变,否则需要把workplace修改下)
<?xml version="1.0" encoding="utf-8"?> <project name="JmeterTest" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 这里耍了个小聪明构建项目配置信息--> <property name="project.name" value="a-client\" /> <property name="project.workspace" value="E:\Jenkins\workspace\" /> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="E:\workplace-jenkins\apache-jmeter-2.13\" /> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="${project.workspace}${project.name}jtl" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="${project.workspace}${project.name}" /> <!-- 生成的报告的前缀 --> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" /> <!-- 接收测试报告的邮箱 --> <property name="mail_to" value="XX@qq.com" /> <!-- 电脑地址 --> <property name="ComputerName" value="andre" /> <target name="all"> <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="${project.workspace}${project.name}case" includes="*.jmx" /> </jmeter> </target> <target name="report"> <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" /> <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> <!-- 发送邮件 --> </project>
- 每次新建项目,只需要在${project.workspace}下,新建一个叫做${project.name}的文件夹,然后将之前项目里面的文件夹全部拷贝过来即可。别忘了再将build.xm中${project.name}修改下就行了,很简单吧。
-
这次的持续集成接口测试,就暂时告一段落了,暂时能满足我的需求了,如果后期还有进一步的需求升级,我在继续研究!
网友评论