注意:非原创!!! 东拼西凑的总结的 用到的内容里都有链接
一、工具
- 脚本录制:badboy、jmeter、fiddler
- 编译:ant
- 持续集成平台:jenkins
这三者结合起来可以搭建一套Web HTTP接口测试的持续构建环境,实现接口自动化测试。
二、什么是接口测试
接口测试是测试系统组件间接口的一种测试。主要用于外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的切换、传递和控制管理的过程,以及系统间的相互逻辑依赖关系等。
接口测试适用于为其它系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供提供的接口,验证其正确性和稳定性。
接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。
接口测试实施在多系统多平台的构架下,有着极高效的成本收益比,接口测试天生为高复杂性的平台带来高效的缺陷检测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显。
基于接口测试的重要性,以及他比较容易自动化的特性,通过持续集成的接口监控能够及时的发现项目中存在的问题,这对持续运营的项目来说,十分重要。
20190320113051464.png
20190320113103980.png
三、测试流程
1、测试接口文档(需求文档)
2、根据接口文档编写测试用例(用例编写可以完全按照功能用例来编写,例如等价类划分、边界值等方法)
3、执行测试,查看不同的参数请求,接口返回的数据是否达到预期
4、部署到持续集成的环境中
5、设定脚本运行频率、告警方式等基本参数,进行接口的日常监控
6、每日进行接口脚本的运行更新、接口异常的处理
四、环境部署
1、Jmeter
Jmeter可以做接口测试,也可以做压力测试,是个开源软件。纯Java语言开发。
https://blog.csdn.net/wust_lh/article/details/86095924
注意:配置Jmeter环境变量时,版本为5+的lib包下没有logkit-2.0.jar,也不用配置在环境变量中。
2、Ant
Ant是基于Java的构建工具,可以跨平台。
ant下载安装看最上边的链接就好
3、Jenkins
Jenkins是持续集成工具。
下载安装(到最后一步,打开initialAdminPassword文件时,如果打不开的话,就把该文件拖到电脑桌面,就能打开)
https://blog.csdn.net/qq_39720249/article/details/81264026
安装以及离线状态的解决办法
https://blog.csdn.net/qq_38966361/article/details/90734163
五、jmeter编写脚本+ant执行脚本&生成报告(重要!!!)
按照下方链接一步一步来肯定不会出错:
https://blog.csdn.net/weixin_41948075/article/details/97894080?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242
-
将jmeter 所在 extras目录下 的 ant-jmeter-1.1.1.jar 文件 copy 到 ant 所在lib 目录下。这样Ant运行时才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本。
-
修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml,并解开注释,别的啥也别动。
作用是使Jmeter报告输出文件格式为xml -
在jmeter安装目录下新建文件夹JmeterTest,在JmeterTest下新建文件夹resultLog,resultLog下再新建jtl和html文件夹,html和jtl文件夹的作用:
html文件夹:用于保存html的结果报告
jtl文件夹:用于保存jmeter的测试脚本
image.png
image.png -
build.xml:Ant根据该文件运行jmeter脚本(关键文档,需要配置正确)
它的作用就是把生成的.jtl数据文件转换为.html格式的报告
具体属性的含义:
in:生成的.jtl文件的路径
out:生成的.html文件的路径
style:从.jtl转换成.html所使用的样式,这些文件也在extras目录下,这个是最重要的部分,如果我们想定制报告可以自行定义这个文件或者从网上找一些合适的文件。
build.xml通用模版如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddHHmm" />
</tstamp>
<!-- 需要改成自己本地的Jmeter目录-->
<property name="jmeter.home" value="/Applications/apache-jmeter-5.1.1" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="/Applications/apache-jmeter-5.1.1/demo/report/jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="/Applications/apache-jmeter-5.1.1/demo/report/html" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<!-- 输出生成的报告名称和存放路径-->
<echo message="${jmeter.result.jtlName}"/>
<echo message="${jmeter.result.htmlName}"/>
<echo message="${jmeter.result.html.dir}"/>
<target name="run">
<antcall target="test"/>
<antcall target="report"/>
</target>
<!-- 指定ant-jmeter-1.1.1.jar 的位置 -->
<path id="jmeter.classpath">
<fileset dir="${jmeter.home}/extras">
<include name="ant-jmeter-1.1.1.jar"/>
</fileset>
</path>
<!--加载jar包,解决显示时间问题-->
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本,比如test*。jmx表示以test开头的所有.jmx文件-->
<testplans dir="/Applications/apache-jmeter-5.1.1/demo" includes="*.jmx" />
<!-- 声明ant执行jmeter时,传入jmeter的属性值,可以自定义必须是xml格式 -->
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<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">
<!--jmeter-results-detail-report_21.xsl这里的文件名可以换成你想要的报告效果-->
<!--显示dateReport的时间-->
<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>
需要改的地方改成自己的路径啥的,详情看上方链接,原作者标注的地方。
-
准备要要运行的项目,放在demo目录下(注意:网上好多人没说这一步,所以我一直build失败)
这一步就是找一个 .jmx格式的文件放在script文件夹中。我是随便找了一个,如下:
image.png - 运行
切换到运行的目录,在运行ant或者ant run命令,然后就回运行成功。
这样是你还不运行成功,你就要找找自己的原因了。这是我在网上找了那么就的资料,以上链接都是简单易懂且能安装成功的。该说的都说了,再有问题就是笨蛋!!
网友评论