Jmeter +Jenkins +Ant 集成发送邮件报告
[TOC]
一、什么是接口测试?
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。
接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比,接口测试天生为高复杂性的平台带来高效的缺陷监测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显。
基于接口测试的重要性,以及它比较容易自动化的特性,通过持续集成的接口监控能够及时的发现项目中存在的问题,这对持续运营的项目来说,非常重要。
二、接口测试的流程
1、 项目启动后,测试人员要尽早找到开发人员拿到接口测试文档
2、 获取接口测试文档后,就可以进行接口用例的编写和调试
3、 接口用例编写调试完成后,部署到持续集成的测试环境中,
4、 设定脚本运行频率,告警方式等基本参数,进行接口的日常监控
5、 每日进行接口脚本的维护更新,接口异常的处理
三、jenkins + ant + jmeter 集成测试报告发送邮件
环境准备
- 安装Jdk
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
- 鼠标右击
计算机(此电脑)->属性->高级系统设置->高级->环境变量 - 在系统变量中,点击
新建,新建JAVA_HOME变量,变量的值:JDK的安装目录
- 在系统变量中找到
Path变量,双击打开,新增两个变量%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin,点击确定

- 在系统变量中新建
CLASSPATH变量,变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意前面的.),点击确定,保存退出。

- 检查是否配置成功,
win+R输入cmd,然后回车,在黑乎乎的窗口输入java -version,能够看到你安装的jdk版本信息,即环境配置成功。

- 安装Ant
ant 是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点:
1、跨平台性:Ant是纯Java语言编写的,所以具有很好的跨平台性。
2、操作简单:Ant是由一个内置任务和可选任务组成的,用ant任务就像是在dos中写命令行一样。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。
3、维护简单、可读性好、集成简单:由于Ant构建文件 时XML格式的文件,所以很容易维护和书写,而且结构很清晰。Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开 发环境中去。
以下是解压后的目录布局。
apache-ant-1.10.8
+--- README, LICENSE, fetch.xml, 其他文本文件. //基本信息
+--- bin // 包含安装程序脚本
|
+--- lib // 包含Ant JARs plus必要的依赖项
|
+--- manual // Ant文档 (必读 ;-)
|
+--- etc // 包含xsl工具:
// - 可以从xml输出的各种任务中创建一个增强型的报告。
// - 迁移你的构建文件,并摆脱 "已废弃 "的警告
// - ... 更多 ;-)
- 点击http://ant.apache.org/bindownload.cgi进入ant官网,下载对应的安装包。

- 将下载的.zip压缩包解压到对应文件夹
- 配置环境变量
ANT_HOME H:\Ant\apache-ant-1.10.2
path H:\Ant\apache-ant-1.10.2\bin
classpath H:\Ant\apache-ant-1.10.2\lib
- 验证是否安装成功
依次选择:win + R –>cmd,输入如下命令:ant ,出现如下图,则表示安装成功
- 安装jenkins
jenkins有三种安装方式
第一种:快速安装
选择windows系统的版本
解压成功后双击jenkins.msi程序
安装成功后会显示如下要你填写密码的验证页面,按照它的提示信息到对应的目录底下找文件initialAdminPassword,然后将密码拷贝出来 localhost:8080
第二种:快速安装
使用命令 java -jar jenkins.war
这是依赖于 java环境和 jenkins.war进行搭建
这里不多说,因为后面的安装顺序都是和上述一致
第三种方法:
是直接将jenkins.war包安装在tomcat的webapps目录下,然后启动tomcatcat就可以了,当然Tomcat也有两种启动方式。但原理都是一样的。只是看谁比较方便,兼容性比较强而已。关键还是看系统 st
startup.sh
总结:三种安装方式都使用与Windows系统,第二种和第三种可以使用在linux系统,但是为求不出错,第二种才是最方便的。如果直接将jenkins.war包放到Tomcat的webapps下,那你公司的项目也放到这里,那就好玩了。
此处, 我们选择第一种方式进行安装 - 配置jmeter变量
- 官网下载

- 解压任意目录即可
- 配置环境变量
点击“新建”,建立一个变量:JMETER_HOME,值为你解压的jmeter安装路径。我的安装路径是在C盘,这个路径根据自己实际安装路径进行填写。然后点击确定保存即可
配置classpath变量 ;
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar

在用系统变量path后面加上%JMETER_HOME%\bin
最后在cmd输入jmeter 直接打开 如图
配置jenkins
环境变量配置
- 全局系统环境变量配置JDK

- 全局系统环境变量配置Ant

- 全局系统环境变量配置Git

- 配置jenkins报告支持显示HTML样式
首先在jenkins-系统管理,脚本命令行输入
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","sandbox; default-src 'self';")

保存后,不是立即生效,需要重新构建下项目,html报告就有显示了
常用插件安装
由于我们需要显示报告、因此需要安装邮件和第三方报告插件 ,jenkins管理 ->Manager Plugins
- Ant Plugin
- Email Extension Plugin
- HTML Publisher plugin
- Performance Plugin
Manage Jenkins ->Manage plugins
集成jmeter用例集
- 新建一个自由风格的项目
- 配置构建触发器

- 构建执行命令: Execute Windows batch command
3.1 此处通过命令行简单执行 jmeter生成报告
rd /s/q D:\auto\jtl
rd /s/q D:\auto\report
mkdir jtl
mkdir report
jmeter -n -t D:\auto\testcase.jmx -l D:\auto\jtl\result_.jtl -e -o D:\auto\report
exit 0
- 3.2 再次新建Invoke Ant ,通过ant build文件构建生成日志

- 构建后操作:
完整显示结构如下:
Publish HTML reports : 此处展示 简单报告
结果如下显示:
Publish performance test result report 此处展示性能报告
结果如下:
- 集成邮件配置
- 全局系统配置邮件config system
(1)全局系统管理配置

(2)全局邮件服务器设置

- 扩展邮件配置邮件Extended E-mail Notification


- 回到项目配置: 添加 构建后操作 -> Editable Email Notification


完整 邮件报告模板
53在线接口自动化-第${BUILD_NUMBER}次构建日志
offset="0">
style="font-size: 30pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
(本邮件是程序每天定时下发,有问题请联系测试雍伟业!(公司之后的外网无法打开邮件里的 URL))
构建状态 - ${BUILD_STATUS}
构建信息
- 项目名称 : ${PROJECT_NAME}
- 构建编号 : 第${BUILD_NUMBER}次构建
- 触发原因: ${CAUSE}
- 构建日志: ${BUILD_URL}console
- 变更集:${JELLY_SCRIPT,template="html"}
- SummaryReport:${FILE, path="D:/demo/log/html/SummaryReport.html"}
- 邮箱显示报告如下样式:


jmeter相关配置
一: 通过简单的命令:构建 目录结构如下
csv & xml
- 简单结构目录如下

- 修改jmeter.properties文件内容细节
文件地址
- 设置运行机器为本机

- 设置报告方式为csv

- 禁用ssl模式

二:通过build文件构建目录如下
注意!注意!注意!
使用到的jmeter-results-detail-report_21.xsl 文件
将build.xml中的第42行
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
拷贝以下内容将这个路径下的jmeter-results-detail-report_21.xsl文件覆盖,这个文件说明了xsl文件装换为html文件的一些规则
使用到的:jmeter.results.shanhe.me.xsl 文件
jmeter.results.shanhe.me.xsl
链接:https://pan.baidu.com/s/1TQ7VIEXR9SubNEUZZ3a2xQ
提取码:ne14
- 文件目录结构

build文件详细内容如下:
<?xml version="1.0" encoding="UTF-8"?>
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName2}"
style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">
- jmeter.properties文件配置内容
文件地址:
- 设置运行机器为本机
- 设置禁用ssl
- 设置报告方式为xml

邮件报告乱码处理
- 进入jenkins安装显示目录如下:

- 修改指定编码运行jenkins

运行完以后记得重启生效: https://localhost:8080/restart - 查看jenkins 系统信息编码为UTF-8即操作成功

注意事项:
如果修改此处的编码方式为utf-8那么 ,**.jmx文件必须为英文 否则构建时由于文件编码不正确会构建失败
总结
ANT构建脚本 xml
1.jmeter脚本准备(不说了)
2.新建一个demo,把jmx脚本放进去
3.在demo下新建目录resultLog,log下新建两个子目录html,jtl
4.将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中
5.修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
html:存放生成的html报告
jtl:存放生成的jtl报告
build.xml配置
<?xml version="1.0" encoding="UTF-8"?>
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName2}"
style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">
1.修改build.xml中的(1)(2)(3)(4)(5)的路径为自己的响应的路径
2.将build.xml中的第42行
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
拷贝以下内容将这个路径下的jmeter-results-detail-report_21.xsl文件覆盖,这个文件说明了xsl文件装换为html文件的一些规则
jmeter-results-detail-report_21.xsl 文件内容如下:
<?xml version="1.0"?>
<script language="JavaScript"> function expand(details_id)
{
document.getElementById(details_id).className = "page_details_expanded";
}
function collapse(details_id)
{
document.getElementById(details_id).className = "page_details";
}
function change(details_id)
{
if(document.getElementById(details_id+"_image").src.match("expand"))
{
document.getElementById(details_id+"_image").src = "collapse.png";
expand(details_id);
}
else
{
document.getElementById(details_id+"_image").src = "expand.png";
collapse(details_id);
}
}
]]></script>
Date report:
Designed for use with JMeter and Ant.
Summary
# Samples
Failures
Success Rate
Average Time
Min Time
Max Time
Failure
Pages
URL
# Samples
Failures
Success Rate
Average Time
Min Time
Max Time
Failure
#
javascript:change('page_details_ ')

page_details_ _image
page_details_
Details for Page " "
Thread
Iteration
Time (milliseconds)
Bytes
Success
Failure Detail
Response
Failure Message
Response Data
-
NaN
NaN