一、简介
本文章主要是介绍接口自动化持续集成环境搭建以及测试实例,Apache JMeter是Apache组织开发的基于Java的接口和性能测试工具。
二、集成环境搭建
1、安装JDK:
由于jmeter是100%的纯java编写的,需要有java的运行环境,所以我们需要安装jdk,官网链接:https://www.oracle.com/technetwork/java/javase/downloads/index.html(版本要求:最好是1.8以上)
1.1、下载jdk:
1.2、安装jdk:Java SE 8u191
1.3、配置jdk环境变量
我的电脑”>鼠标右键菜单>"属性">"高级系统设置">"环境变量"。
![](https://i-blog.csdnimg.cn/blog_migrate/dcbe3ca9106c2974fb7339fcd35c1b31.png)
1.4、在命令窗口输入Java -version,可以查看到jdk版本说明安装正确。
2、安装Jmeter:
2.1、下载Jmeter:官网地址:http://jmeter.apache.org/download_jmeter.cgi
解压就可以用,前提条件是必须是已经安装jdk,
2.2、插件下载:官网地址:http://jmeter-plugins.org/downloads/all/
插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins-Extras.jar放到apache-jmeter-2.12\lib\ext目录。
2.3、配置环境变量
具体操作位置同刚jdk一样,把jdk的java_home相应的换成jmeter的地址即可。
我的电脑”>鼠标右键菜单>"属性">"高级系统设置">"环境变量";
JMETER_HOME=D:\Auto_Test\apache-jmeter-5.0(注:具体路径根据自己实际安装路径填写)
CLASSPATH=%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar; %JMETER_HOME%\lib\jorphan.jar;
PATH=%JMETER_HOME%\bin
2.4、启动jmeter 在命令窗口输入jmeter或者在 apache-jmeter-2.12\bin\jmeter.bat启动 (打开后的命令窗口不能关闭,否则jmeter的GUI也不能使用)
两种方式都能够成功启动说明jmeter安装成功
3、安装Ant:
Ant是一个代码构建工具,在这里主要作用是为了构建我们写的jmeter脚本,然后再后面安装Jenkins上可以持续集成监控到我们的脚本情况。
3.1、下载Ant,官网下载地址:https://ant.apache.org/bindownload.cgi
3.2、配置Ant环境变量
具体操作位置同刚jdk一样,把jdk的java_home相应的换成jmeter的地址即可。
ANT_HOME=D:\Auto_Test\apache-ant-1.9.13(注:具体路径根据自己实际安装路径填写)
PATH=%ANT_HOME%\bin
CLASSPATH=%ANT_HOME%\lib
3.3、验证Ant是否安装成功
在命令窗口输入ant,出现下面提示说明安装成功,还可以通过ant -version查看ant版本。
4、安装Jenkins
jenkins是基于java开发一个持续集成工具,在这是用于我们监控我们跑jmeter写的接口测试用例。
4.1、安装jenkins,官网地址:https://jenkins.io/download/
4.2、配置jenkins
通过在浏览器访问localhost:8080/jenkins既可以进入到jenkins页面(后面加了jenkins后访问不不了,是bug,直接去掉jenkins,如果你的8080端口没有被占用的话)
![](https://i-blog.csdnimg.cn/blog_migrate/f11913f9bbd27411ed38ac1fbc455055.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ab22dd6de899d0fba81c833021d32dd2.png)
然后就可以创建任务了。
这个是我们百度云的安装包,有需要的朋友可以下载:
链接:https://pan.baidu.com/s/1MANCRvZg9BinUyso1DXCKA
提取码:wqbo
三、Python开发http接口(这个可以不关注)
一般公司接口测试,开发会提供明确的接口文档,包含接口地址、请求方式、入参、出参等以及各个返回值的对应的含义。
具体开发不做详细介绍哈,有兴趣的朋友可以一起探讨下。
四、Jmeter设计接口测试的脚本以及用例场景
1、打开jmeter,创建测试计划,在测试计划下面创建线程组,线程组本质就是并发用户数。
在这边简单介绍一个http接口用jmeter开发的脚本
在测试计划组件下,鼠标右键添加线程组
2、添加取样器,我们这篇文章主要介绍http请求,jmeter支持其他ftp、jdbc、tcp请求,都是类似的操作,后续会更新。
3、根据接口文档维护http取样器参数
4、判断请求结果是否正确,我们可以添加响应断言,
5、为了能够很直观的查看到测试结果,我们可以添加监听器,其中可以添加查看结果树和聚合报告
这样一个很简单的接口测试脚本就完成了,像我们这边做接口测试进行测试时是需要考虑接下来几个场景:
5、接口测试用例设计
a、功能测试:正常场景(通过性验证)、参数测试(参数组合)、异常场景(空)等
b、性能测试:响应时间、吞吐量、并发数等
c、安全测试:敏感信息、权限、数据加密、SQL注入等
6、一个完整的接口测试脚本
a、添加http头信息管理器,用于处理请求中存在中文的编码问题
b、添加用户自定义变量,相当于我们的全局变量,在整个测试计划中都可以使用
c、添加功能测试场景用例
d、添加性能测试场景
e、参数化不可变数据,为了模拟真实的用户场景,使数据不重复
g、添加后置处理器BeanShell PostProcessor,用于处理响应中存在中文的编码问题
h、添加监听器、(聚合报告、查看结果树)
整个测试计划结构如下:
五、连接ant和jmeter配置(注意点)
(1)将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中,这一步操作使Ant运行时能够找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本。
(2)修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml,同时去掉前面的注释,这一步操作使Jmeter报告输出文件格式为xml。
(3)生成的测试报告可能会有三个指标显示NAN,那么复制jmeter的lib目录下的xalan-2.7.2.jar和serializer-2.7.2.jar copy到Ant的lib包里,重新生成就会成功!
(4)如果生成jmeter报告数据为空,是因为jmeter的extra目录中缺少jmeter-results-detail-report_21.xsl文件导致,下载拷贝即可。
好了,所有的环境以及配置还有脚本都已经准备好了,接下来就是配置jenkins
六、build文件配置
ant工具主要是根据build.xml文件来执行,build.xml默认存放于jmeter下的extras文件下,我们可以对build.xml文件进行修改来指定测试脚本、测试结果存放路径等。
我的bulid.xml放在jmeter下的D:\Auto_Test\apache-ant-1.9.13目录下
我的bulid.xml文件如下所示,把相应的路径改成自己的的就可以运行。
<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <property environment="env"/> <property name="ReportName" value="TestReport" /> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="D:\Auto_Test\apache-jmeter-5.0" /> <!-- jmeter生成jtl、html格式的结果报告的路径--> <property name="jmeter.result.dir" value="${env.WORKSPACE}/results/${env.BUILD_ID}" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="${env.WORKSPACE}/results/${env.BUILD_ID}" /> <!-- 生成的报告的前缀--> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.dir}/${ReportName}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.dir}/${ReportName}.html" /> <target name="run"> <echo message="start..."/> <antcall target="clean" /> <antcall target="test" /> <antcall target="report" /> </target> <target name="clean"> <mkdir dir="${env.WORKSPACE}/results/${env.BUILD_ID}" /> </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="D:\Auto_Test\apache-jmeter-5.0\demo" includes="*.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter> </target> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> </path> <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>
七、创建job构建脚本
1、创建配置如下:
2、构建
然后再D:\Auto_Test\jenkins-2.138.3\workspace\jobs\results目录下会生成测试报告
其中有一个失败是用例就是这么设置的场景。
好了,到这为止我们接口测试的部分已经完成,关于测试报告的分析,在后面我会做进一步的分析和总结,谢谢!
参考博客:https://www.cnblogs.com/puresoul/p/4737716.html