赞
踩
目录
下载ant安装包并将jmeter所在extras目录下的ant-jmeter-1.1.1.jar文件copy到ant所在的lib目录下
安装如下工具:
1、Jmeter:编写测试脚本,相关的安装、配置、编写可以参考:快速掌握jmeter的基本操作和使⽤
2、ant:执行测试脚本,并生成测试报告,相关的安装以及build.xml的编写语法可以参考:Apache-ant 工具的介绍、安装及build.xml文件的解析
3、Jenkins:持续集成平台可以实现脚本的定时运行、邮件发送、测试报告展示等
测试脚本运行后生成的是JTL(xml)格式的文件,这些文件不具备可读性,因此我们要把他转化为可以阅读的html格式报告。
转化步骤如下:
1)修改原因:
a) jmeter执行结果文件默认保存的不是xml格式,无法转化成html格式
b) jmeter执行结果文件默认有很多执行数据是不保存的,而测试报告需要这些数据
2)配置路径:
${jmeterhome}/bin/jmeter.profile
3) 修改内容:
a) 修改jtl文件格式:
jmeter.save.saveservice.output_format=xml (去掉注释(#),修改csv 为 xml)
b) 添加jtl文件结果参数如下:
- #
- jmeter.save.saveservice.data_type=true
- jmeter.save.saveservice.label=true
- jmeter.save.saveservice.response_code=true
- # response_data is not currently supported for CSV output
- jmeter.save.saveservice.response_data=false
- # Save ResponseData for failed samples
- jmeter.save.saveservice.response_data.on_error=false
- jmeter.save.saveservice.response_message=true
- jmeter.save.saveservice.successful=true
- jmeter.save.saveservice.thread_name=true
- jmeter.save.saveservice.time=true
- jmeter.save.saveservice.subresults=true
- jmeter.save.saveservice.assertions=true
- jmeter.save.saveservice.latency=true
- # Only available with HttpClient4
- jmeter.save.saveservice.connect_time=true
- jmeter.save.saveservice.samplerData=false
- jmeter.save.saveservice.responseHeaders=false
- jmeter.save.saveservice.requestHeaders=false
- jmeter.save.saveservice.encoding=false
- jmeter.save.saveservice.bytes=true
- # Only available with HttpClient4
- jmeter.save.saveservice.sent_bytes=true
- jmeter.save.saveservice.url=true
- jmeter.save.saveservice.filename=false
- jmeter.save.saveservice.hostname=false
- jmeter.save.saveservice.thread_counts=true
- jmeter.save.saveservice.sample_count=false
- jmeter.save.saveservice.idle_time=true
- <?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="/Users/leiyuxing/apache-jmeter-5.0"/>
- <!-- jmeter生成jtl格式的结果报告的路径 -->
- <property name="jmeter.result.jtl.dir" value="/Users/leiyuxing/apache-jmeter-5.0/AntReport"/>
- <!-- jmeter生成html格式的结果报告的路径 -->
- <property name="jmeter.result.html.dir" value="/Users/leiyuxing/apache-jmeter-5.0/AntReport"/>
- <!-- 生成报告的前缀 -->
- <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"/>
-
- <target name="run">
- <antcall target="init"/> <!-- 调用其他的目标 -->
- <antcall target="testOneLogin"/>
- <antcall target="test2NumByTypeAndSample"/>
- <antcall target="logout"/>
- <antcall target="report"/>
- </target>
-
- <!-- 定义一个目标,任务名称为ini——将需要的外部文件删除将需要的外部文件删除 -->
- <target name="init">
- <!-- 每次运行前删除之前产生的报告文件 -->
- <delete >
- <fileset dir="/Users/leiyuxing/apache-jmeter-5.0/AntReport" includes="*.doc,*.html,*.jtl,*.xls"/>
- </delete>
- </target>
-
-
- <target name="testOneLogin">
- <!-- 定义一个任务,任务名称为jmeterA -->
- <taskdef name="jmeterA" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
- <jmeterA jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
- <!-- 声明要运行的脚本 -->
- <testplans dir="/Users/leiyuxing/apache-jmeter-5.0/AntReport" includes="一次登录-suadmin.jmx"/>
- <property name="jmeter.save.saveservice.output_format" value="xml"/>
- </jmeterA>
- </target>
-
-
- <target name="test2NumByTypeAndSample">
- <delete file="/Users/leiyuxing/apache-jmeter-5.0/AntReport/submitInfo.txt"/>
- <!-- 定义一个任务,任务名称为jmeterA -->
- <taskdef name="jmeterA" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
- <jmeterA jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
- <!-- 测试脚本 -->
- <testplans dir="/Users/leiyuxing/apache-jmeter-5.0/AntReport" includes="CoinCola_3.4.5Test.jmx"/>
- <property name="jmeter.save.saveservice.output_format" value="xml"/>
- </jmeterA>
- </target>
-
- <target name="logout">
- <!-- 定义一个任务,任务名称为jmeterA -->
- <taskdef name="jmeterA" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
- <jmeterA jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
- <!-- 声明要运行的脚本 -->
- <testplans dir="/Users/leiyuxing/apache-jmeter-5.0/AntReport/" includes="CoinCola_3.4.5Test.jmx"/>
- <property name="jmeter.save.saveservice.output_format" value="xml"/>
- </jmeterA>
- </target>
-
-
- <!-- 自定义的path路径,该路径下包含下面匹配的jar包,下面会用到 -->
- <path id="xsltA.classpath">
- <fileset dir="${jmeter.home}/lib" includes="xalan*.jar,serializer*.jar"/>
- </path>
- <target name="report">
- <!-- 这里用到了上面定义的path路径 -->
- <xslt classpathref="xsltA.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
- <param name="deateReport" expression="${time}"/> <!-- 有没有这句没有什么影响 -->
- </xslt>
-
- <!-- 复制两个图片过来,已经有的就可以不用复制了 -->
- <!--
- <copy todir="${jmeter.result.html.dir}">
- <fileset dir="${jmeter.home}/extras">
- <include name="collapse.png"/>
- <include name="expand.png"/>
- </fileset>
- </copy>
- -->
- </target>
- </project>
注:我目前只放了一个测试用例,当然可以放多个文件,在build.xml中添加指定的任务代码即可。
- $ ant
-
- Buildfile: /Users/leiyuxing/apache-jmeter-5.0/extras/build.xml
-
- run:
-
- init:
-
- testOneLogin:
-
- test2NumByTypeAndSample:
- [jmeterA] Executing test plan: /Users/leiyuxing/apache-jmeter-5.0/AntReport/CoinCola_3.4.5Test.jmx ==> /Users/leiyuxing/apache-jmeter-5.0/AntReport/TestReport201811301031.jtl
- [jmeterA] Creating summariser <summary>
- [jmeterA] Created the tree successfully using /Users/leiyuxing/apache-jmeter-5.0/AntReport/CoinCola_3.4.5Test.jmx
- [jmeterA] Starting the test @ Fri Nov 30 10:31:48 CST 2018 (1543545108243)
- [jmeterA] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
- [jmeterA] summary = 6 in 00:00:02 = 3.9/s Avg: 176 Min: 0 Max: 685 Err: 1 (16.67%)
- [jmeterA] Tidying up ... @ Fri Nov 30 10:31:50 CST 2018 (1543545110071)
- [jmeterA] ... end of run
-
- logout:
- [jmeterA] Executing test plan: /Users/leiyuxing/apache-jmeter-5.0/AntReport/CoinCola_3.4.5Test.jmx ==> /Users/leiyuxing/apache-jmeter-5.0/AntReport/TestReport201811301031.jtl
- [jmeterA] Creating summariser <summary>
- [jmeterA] Created the tree successfully using /Users/leiyuxing/apache-jmeter-5.0/AntReport/CoinCola_3.4.5Test.jmx
- [jmeterA] Starting the test @ Fri Nov 30 10:31:52 CST 2018 (1543545112819)
- [jmeterA] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
- [jmeterA] summary = 6 in 00:00:02 = 3.4/s Avg: 214 Min: 1 Max: 659 Err: 1 (16.67%)
- [jmeterA] Tidying up ... @ Fri Nov 30 10:31:54 CST 2018 (1543545114883)
- [jmeterA] ... end of run
-
- report:
- [xslt] Processing /Users/leiyuxing/apache-jmeter-5.0/AntReport/TestReport201811301031.jtl to /Users/leiyuxing/apache-jmeter-5.0/AntReport/TestReport201811301031.html
- [xslt] Loading stylesheet /Users/leiyuxing/apache-jmeter-5.0/extras/jmeter-results-detail-report_21.xsl
-
- BUILD SUCCESSFUL
- Total time: 10 seconds
最终你会发现此时你的目标文件夹中会多两个文件:
其中:TestReport201811301031.jtl文件可以通过jmeter打开查看结果报告
而/TestReport201811301031.html文件则支持直接打开,可以通过邮件形式发送给他人
注:部署到持续集成平台可以实现脚本的定时运行,这是接口、性能测试的核心。
具体步骤如下:
提前下载好插件
系统管理-管理插件-可选插件
下载所需要的插件,例如:Performance plugin、HTML Publisher plugin、 Ant Plugin等
1)配置中添加Jmeter插件:Performance plugin、HTML Publisher plugin
功能:用来展示jmeter执行结果
Report file:配置jtl文件路径,相对路径与绝对路径均可
HTML directory to archive:生成的html文件路径
注:修改build.xml文件生成jtl和html文件的目录到jenkins的工作目录下!!!
查看Jekins 工作目录:系统管理-系统设置 - 高级
修改如下
- <!-- jmeter生成jtl格式的结果报告的路径 -->
- <property name="jmeter.result.jtl.dir" value="/Users/leiyuxing/apache-jmeter-5.0/AntReport"/>
- <!-- jmeter生成html格式的结果报告的路径 -->
- <property name="jmeter.result.html.dir" value="/Users/leiyuxing/apache-jmeter-5.0/AntReport"/>
2)配置中添加Ant插件:Ant Plugin
功能:用来执行Ant,以下路径全改为你电脑build.xml文件所在路径
Build File:build.xml文件路径
后面可根据所需配置邮件、定时任务等
3)构建脚本
4)查看报告
搭建接口性能测试的持续集成平台是一个重要的工作,确保性能稳定和可靠性。以下是一些注意事项:
环境准备:在搭建之前,确保所有相关的环境(包括服务器、数据库、网络配置等)都已经准备就绪,并且符合性能测试的需求。
版本控制:使用版本控制工具(如Git)管理测试脚本、配置文件和其他相关代码,以便跟踪变更和回滚操作。
JMeter脚本编写:编写性能测试脚本时要考虑脚本的可重用性和可维护性,尽量避免硬编码,使用参数化来提高脚本的灵活性。
Jenkins集成:在Jenkins中设置定时任务,自动触发性能测试,并配置邮件通知、报告生成等功能。确保Jenkins服务器的性能足够支撑测试负载。
Ant构建:使用Ant作为构建工具,可以方便地执行JMeter脚本、生成测试报告,并与Jenkins集成。编写好Ant的构建脚本,确保能够顺利地进行性能测试。
结果分析:建立合适的结果分析机制,对性能测试结果进行监控和分析。可以考虑使用图表或报表的形式展示测试结果,以便于查看和比较不同测试周期的结果。
权限控制:对于持续集成平台的使用权限进行合理的管理,确保只有授权人员才能够进行性能测试的操作。
异常处理:考虑可能出现的异常情况,如服务器宕机、网络中断等,制定相应的应急处理方案,以确保持续集成平台的稳定性和可靠性。
定期维护:持续集成平台需要定期维护和更新,包括JMeter、Ant和Jenkins等工具的版本升级、系统安全补丁的更新等。
以上是一些建议,希望对你搭建接口性能测试的持续集成平台有所帮助。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。