接口测试之Jmeter接口测试自动化

Jmeter是压力测试、接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkins是持续集成工具。将这三者结合起来可以搭建一套webservice接口测试的持续构建环境。

 

优势

通过Ant构建可以看到详细的执行结果,相比jmeter看结果直观一点,而且可以看到测试结果统计,可以做记录留备份,而单独使用jmeter只能去手动触发,而且记录不会保存,再次执行就找不到记录。通过预留备份还可以对比优化效率。最大的好处是可以异步去执行,如果通过jenkins集成,我们可以通过部署代码的时候去自动测试,自动生出测试结果。也可以通过写定时脚本,定时的去执行,比较适用于线上项目,可以定时到凌晨自动执行,早晨上班只需要看结果,去分析就可以了,也不需要测试人员专门去等。

 

 

目录

安装工具以及环境配置

安装JDK

安装Jmeter

安装 ANT   

Jmeter

创建脚本:(可以使用jmeter录制一个脚本,需要jmx脚本文件)

Jmeter  + ANT

ANT中配置Jmeter   

验证配置,执行构建测试

测试报告优化:更换模板

Jmeter  + ANT + Jenkins

Jenkins 安装

Jenkins 配置环境变量

Jenkins创建项目(自动测试配置)

1 新建项目:

2 设置丢弃旧的构建

3 构建触发器

4 配置构建

5 设置构建后操作

测试集成

常见问题汇总(不定期更新)


 

 

安装工具以及环境配置

 

安装JDK

需要配置java环境变量,这里用的是 jdk1.8

window 10 安装教程:https://blog.csdn.net/qq_37138756/article/details/100511976

 

安装Jmeter

这里Jmeter用到的版本是 :jmeter4.0

链接:https://pan.baidu.com/s/1mDouaMBYvkW2NOCSWUfQVQ
       提取码:ftyk 

 

安装 ANT   

  这是ANT使用的版本: apache-ant-1.10.3

    1 下载安装

      下载地址 http://ant.apache.org/bindownload.cgi,下载后解压到指定位置即可,

      比如:D:\apache-ant-1.10.3

 

    2 配置环境变量(window中)

       新增 ANT_HOME 变量添加:D:\apache-ant-1.10.3

       Path 变量中添加:%ANT_HOME%\bin

       classpath 变量中添加: %ANT_HOME%\bin

       注意:变量之间用 ; 分割

 

    3 安装验证

      验证安装结果,命令行输入ant -v ,出现版本信息则安装成功

      

注意:环境配置中如果设置成:path:%ANT_HOME%\bin (为了方便在dos环境下操作),结果环境配置不成功,需要把地址换成为 D:\apache-ant-1.10.3\bin

 

Jmeter

 

创建脚本:(可以使用jmeter录制一个脚本,需要jmx脚本文件)

1 启动jmeter:通过jmeter安装目录,进入到bin目录,通过jmeter.bat(win端)启动jmeter

如果下载的是英文版的,通过以下操作设置成中文简体

2 创建一个线程组:设置10个线程,2秒时间执行完成,执行10次

3 设置一个http请求:

4 设置请求头信息:Content-Type:application/json

5 保存脚本到jmeter目录:Ctrl+s  (我在jmeter目录下创建了一个文件名称为压力测试的文件夹,用来保存脚本)

 

 

Jmeter  + ANT

 

ANT中配置Jmeter   

1 将jmeter extras目录下的ant-jmeter-1.1.1.jar 文件拷贝到ant安装目录下的lib文件夹中

      

 

 

2  配置ANT与Jmeter的配置文件

 

  2.1 配置ant 编译文件 build.xml

    在保存脚本的目录下,拷贝下面的内容到新建的.txt文件中,并将此文件改名为: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="D:\jmeter\apache-jmeter-4.0\apache-jmeter-4.0" />
	<!-- jmeter生成jtl格式的结果报告的路径-->
	<property name="jmeter.result.jtl.dir" value="D:\jmeter\apache-jmeter-4.0\apache-jmeter-4.0\ResultReport\jtl" />
	<!-- jmeter生成html格式的结果报告的路径-->
	<property name="jmeter.result.html.dir" value="D:\jmeter\apache-jmeter-4.0\apache-jmeter-4.0\ResultReport\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}.html" />

	<target name="run">
	<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="D:\jmeter\apache-jmeter-4.0\apache-jmeter-4.0\backups" 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" />

		<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
		<copy todir="${jmeter.result.html.dir}">
			<fileset dir="${jmeter.home}/extras">
				<include name="collapse.png" />
				<include name="expand.png" />
			</fileset>
		</copy>
	</target>

</project>
				

      

2.2 按实际情况修改build.xml文件,如下:

如果bulid文件有问题,这是我使用的文件,目录替换掉就行了:

链接:https://pan.baidu.com/s/1wPr04eunQcTvHoR5njyieQ 
提取码:lrnf

 

注意:

1 生成报告路径,ResultReport可以不用创建,如果创建了必须保证文件夹中为空

2 建议路径地址最好不要使用中文,避免使用的时候出现问题

3 如果避免文件覆盖,需要保留测试报告,可以修改文件成以下示例

 

 

2.3 配置jmeter.properties

       配置jmeter报告输出格式为xml

                在jmeter安装目录bin目录下jmeter.properties文件中修改jmeter.save.saveservice.output_format=csv 为

               jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#

 

 

注意:编码格式 utf-8

 

验证配置,执行构建测试

1 进入到脚本保存目录

2 在地址栏输入cmd进入命令行,输入ant run ,执行测试

看到build successful 则说明构建测试成功:

3 进入保存报告的路径下查看测试结果报告:

按build.xml文件中设置的测试报告地址找到html版测试报告,在build.xml我们设置的路径是:ResultReport目录

打开看看:测试结果展现了用例数、成功率、用例执行时间等结果参数:

 

测试报告优化:更换模板

      用jmeter自带的测试报告得到的测试报告信息并不是很全,这里参考网上的方法,做一个优化

 

    1 下载优化模板 jmeter.results.shanhe.me.xsl,拷贝到jmeter的extras目录中,

           如C:\apache-jmeter-2.12\extras

    百度云下载地址:https://pan.baidu.com/s/1TPZFEJdtgAohDLZFg4TsiQ 密码:zwp3

     CSDN 下载:https://download.csdn.net/download/qq_37138756/10493615

    

    

   2 设置测试输出报告要输出的内容

          同样在jmeter.properties中,设置需要输出的内容为true,并去掉前面的注释符号#,这里全部设置成true

    

    

    3  设置build文件的报告模板为优化后的模板:jmeter.results.shanhe.me.xsl

 

4    按步骤6的方式再次用ant构建测试,查看优化后的测试报告

(注意: ResultReport 文件是生成报告文件夹。每次启动命令之前,为了避免模板信息,数据信息错误,文件夹内容必须清空)

 

Jmeter  + ANT + Jenkins

以下示例是我在另一台电脑完成,服务路径稍有不同,请自行替换目录

Jenkins 安装

请参考我另一篇文章,来安装Jenkins和配置

Jenkins 安装与配置:https://blog.csdn.net/qq_37138756/article/details/103559827

 

Jenkins 配置环境变量

jmeter  + ant + jenkins集成需要以下配置:

 

插件安装(已安装请忽略):

运行ant需要插件:Ant Plugin、Ant In Workspace

HTML测试报告展示的插件:HTML Publisher Plugin、Performance plugin

 

HTML Publisher Plugin下载(为了方便在jenkins中查看html测试报告):

 

Performance plugin下载(根据测试工具获取性能KPIs):

 

环境配置:

需要配置jdk,ant环境,配置完成后点"Save"

 

Jenkins创建项目(自动测试配置)

 

1 新建项目:

 

输入项目名称,选择"Freestyle project"项目,点击"OK"

 

2 设置丢弃旧的构建

Jenkins在每一次的执行构建后,都会对该构建的项目生成一个历史构建记录,测试的项目越来越多,长期的构建,历史版本同样也越来越多。每编译执行一次,就会生成一个构建记录,预留的磁盘越来越满,有可能面临崩溃的风险。

 

3 构建触发器

可以通过设置去指定什么时候去触发,也可以不设置,通过手动构建触发

Build periodically:Jenkins采用了著名的UNIX任务调度工具CRON所使用的配置方式。

用5个字段代表5个不同的时间单位(中间用空格隔开):分 时 日 月 星期几

例如:

Schedule :

0 * * * *   代表每小时0分的时候构建1次项目

*/10 * * * *   每隔10分钟一次

45 10 * * 1-5    每星期的星期一到星期五的10:45分执行

"0 15 10 * * ? 2019"   2019年的每天上午10:15触发 

 

4 配置构建

注意:

构建需要指定构建项目,如果不指定项目,默认执行的是Jenkins中workspace下的脚本,如果workspace下没有脚本则构建会报错

 

5 设置构建后操作

设置HTML Publisher 配置信息,方便在jenkins中查看html测试报告

参数说明:

HTML directory to archive: 存放html报告的路径

Index page[s]: 因为我这边在build.xml文件中设置的生成报告名称是时间戳格式的,所以我这边设置了*.html,为了在jenkins中打开html报告

Report title: 默认,不可更改

 

设置Performance plugin配置信息,方便在jenkins中查看测试性能

 

测试集成

 

构建任务

 

点击任务进去以后,可以看到运行日志,当看到success字样的时候表示构建成功

 

查看html报告

可以点击进去看测试报告

 

查看新能KPIs

可以看到每次测试的性能报告

 

 

常见问题汇总(不定期更新)

根据网友真实遇到问题,进行整合

 

错误 1:前言中不允许有内容

在执行ant run的时候,构建出现前言中不允许有内容错误

排查问题

1.1 保证build.xml和执行脚本在同一个目录下

1.2  保证 jmeter安装目录bin目录下jmeter.properties文件中修改jmeter.save.saveservice.output_format=csv 为jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#

1.3 编码,编码,编码,一定要注意编码问题(好几个网友碰到了编码问题),务必为UTF-8,可以使用Notepad++来查看下编码,一定要保证在Notepad中页面右下角,编码为以下图所示

 

问题 2: Unexpected text "? ?"

在执行ant run的时候,构建出现build.xml:X: Unexpected text "? ?" 错误

 

排查问题

2.1 确定文件编码,务必为UTF-8,可以使用Notepad++来查看下编码,一定要保证在Notepad中页面右下角,编码为以下图所示

 

2.2 通过Notepad排查文档中特殊字符,保证文档中全部文字,包括空格都是utf-8格式

 

问题 3:构建完成查看测试报告,样式展示错误

原因: 样式加载错误

解决:在项目启动的时候添加执行脚本,来保证样式加载

3.1 下载 Startup Trigger 和 Groovy plugin插件

 

3.2 在项目配置中添加启动执行脚本

  • 在Build Triggers模块下,勾选Build when job nodes start;
  • 在Build模块下,Add build step->Execute system Groovy script,在Groovy Script中输入配置命令
  • System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

3.3 配置完成后,点击保存,重新构建即可解决问题

  • 67
    点赞
  • 496
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值