1.介绍
文章介绍了通过jmeter事先录制api脚本,然后使用ant进行编译,最后生成html的接口测试报告,并且通过web展示。
这种测试主要应用于持续集成环境中,在运维部署代码完成之后,迅速对所有接口或者部分接口(录制一些过程,比如登录,购物)进行测试,测试完成之后把html的测试报告访问地址以邮件的形式发送给相关人员。
2.环境安装
(1)安装java
tar xf jdk-8u65-linux-x64.tar.gz -C /usr/local/ cd /usr/local/ ln -s jdk1.8.0_65/ jdk echo "JAVA_HOME=/usr/local/jdk" > /etc/profile.d/java.sh echo "export PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile.d/java.sh source /etc/profile.d/java.sh java -version
(2)安装jmeter
wget http://apache.fayea.com//jmeter/binaries/apache-jmeter-3.0.tgz tar xf apache-jmeter-3.0.tgz -C /usr/local/ cd /usr/local/ ln -s apache-jmeter-3.0/ jmeter
(3)安装ant
tar xf apache-ant-1.9.7-bin.tar.gz -C /usr/local/ cd /usr/local/ ln -s apache-ant-1.9.7/ ant
优化ant执行路径
echo "export ANT_HOME=/usr/local/ant" > /etc/profile.d/ant.sh echo "export PATH=$ANT_HOME/bin:$PATH" >> /etc/profile.d/ant.sh source /etc/profile.d/ant.sh
3.准备工作
(1)使用jmeter添加需要测试的api,并且添加了断言,判断接口的返回值是否正确。线程组设置属性均为1。由于我使用的是我司的接口做测试,一些内容做了屏蔽。
如果执行测试没有问题,就把测试计划保存为一个jmx的文件,这个文件中的内容就是自动化接口测试的内容。
(2)将jmeter所在目录下的extras子目录里的ant-Jmeter-1.1.1.jar复制到Ant所在目录lib子目录之下,这样Ant运行时才能找到”org.programmerplanet.ant.taskdefs.jmeter.JMeterTask”这个类,从而成功触发JMeter脚本
cp /usr/local/jmeter/extras/ant-jmeter-1.1.1.jar /usr/local/ant/lib/
(3)将jmeter.results.shanhe.me.xsl放到jmeter的extras目录下
说明:jmeter.results.shanhe.me.xsl文件是jmeter生成测试报告的web页面,也可以使用其他样式的页面替换,如果不使用此样式文件,则是jmeter默认样式。
4.环境配置
修改jmeter目录下的bin/jmeter.properties文件,修改内容如下
创建一个工作目录result_log放测试报告,script存放录入接口生成的jmx文件
mkdir /data/jmeter-test/{result_log/{html,jt1},script} -p
复制两个图片:
cp /usr/local/jmeter/extras/collapse.png /usr/local/jmeter/extras/expand.png /data/jmeter-test/result_log/html/
设置build.xml
[root@node1 jmeter-test]# cat build.xml
最后jmeter的工作目录是这样的结构
执行ant构建:出现SUCCESSFUL表示构建是成功的
5.web页面显示测试报告
由于测试报告是生成在linux平台,无法直接看到测试报告,所有需要搭建一个apache或者Nginx将测试报告通过web页面的形式提供出来。
软件安装,并删除默认配置文件
yum -y install httpd rm -f /etc/httpd/conf.d/welcome.conf
将配置文件中的如下内容进行修改
yum -y install httpd rm -f /etc/httpd/conf.d/welcome.conf
修改为
DocumentRoot "/data/jmeter/result_log/"
启动服务:
/etc/init.d/httpd start
访问web界面出现如下内容:
一个接口故障的示例: