当前位置:   article > 正文

利用jmeter Ant Jenkins搭建 接口 性能测试 持续集成平台_jenkins jmeter功能

jenkins jmeter功能

目录

0. 环境准备

1. ANT-执行测试脚本并生成测试报告

下载ant安装包并将jmeter所在extras目录下的ant-jmeter-1.1.1.jar文件copy到ant所在的lib目录下

Jmeter配置文件修改

编写ant的build.xml文件

cmd下运行ant命令,生成html文件

2. Jenkins - 持续集成平台

新建一个job

jenkin相关插件介绍与配置

3、注意事项 


0. 环境准备

安装如下工具:
1、Jmeter:编写测试脚本,相关的安装、配置、编写可以参考:快速掌握jmeter的基本操作和使⽤

2、ant:执行测试脚本,并生成测试报告,相关的安装以及build.xml的编写语法可以参考:Apache-ant 工具的介绍、安装及build.xml文件的解析

3、Jenkins:持续集成平台可以实现脚本的定时运行、邮件发送、测试报告展示等

1. ANT-执行测试脚本并生成测试报告

测试脚本运行后生成的是JTL(xml)格式的文件,这些文件不具备可读性,因此我们要把他转化为可以阅读的html格式报告。

转化步骤如下:

下载ant安装包并将jmeter所在extras目录下的ant-jmeter-1.1.1.jar文件copy到ant所在的lib目录下

Jmeter配置文件修改

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文件结果参数如下:

  1. #
  2. jmeter.save.saveservice.data_type=true
  3. jmeter.save.saveservice.label=true
  4. jmeter.save.saveservice.response_code=true
  5. # response_data is not currently supported for CSV output
  6. jmeter.save.saveservice.response_data=false
  7. # Save ResponseData for failed samples
  8. jmeter.save.saveservice.response_data.on_error=false
  9. jmeter.save.saveservice.response_message=true
  10. jmeter.save.saveservice.successful=true
  11. jmeter.save.saveservice.thread_name=true
  12. jmeter.save.saveservice.time=true
  13. jmeter.save.saveservice.subresults=true
  14. jmeter.save.saveservice.assertions=true
  15. jmeter.save.saveservice.latency=true
  16. # Only available with HttpClient4
  17. jmeter.save.saveservice.connect_time=true
  18. jmeter.save.saveservice.samplerData=false
  19. jmeter.save.saveservice.responseHeaders=false
  20. jmeter.save.saveservice.requestHeaders=false
  21. jmeter.save.saveservice.encoding=false
  22. jmeter.save.saveservice.bytes=true
  23. # Only available with HttpClient4
  24. jmeter.save.saveservice.sent_bytes=true
  25. jmeter.save.saveservice.url=true
  26. jmeter.save.saveservice.filename=false
  27. jmeter.save.saveservice.hostname=false
  28. jmeter.save.saveservice.thread_counts=true
  29. jmeter.save.saveservice.sample_count=false
  30. jmeter.save.saveservice.idle_time=true

编写ant的build.xml文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <project name="ant-jmeter-test" default="run" basedir=".">
  3. <tstamp>
  4. <!-- 可以自定义日期格式 -->
  5. <format property="time" pattern="yyyyMMddhhmm"/>
  6. </tstamp>
  7. <!-- 配置jmeter目录 -->
  8. <property name="jmeter.home" value="/Users/leiyuxing/apache-jmeter-5.0"/>
  9. <!-- jmeter生成jtl格式的结果报告的路径 -->
  10. <property name="jmeter.result.jtl.dir" value="/Users/leiyuxing/apache-jmeter-5.0/AntReport"/>
  11. <!-- jmeter生成html格式的结果报告的路径 -->
  12. <property name="jmeter.result.html.dir" value="/Users/leiyuxing/apache-jmeter-5.0/AntReport"/>
  13. <!-- 生成报告的前缀 -->
  14. <property name="ReportName" value="TestReport"/>
  15. <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl"/>
  16. <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html"/>
  17. <target name="run">
  18. <antcall target="init"/> <!-- 调用其他的目标 -->
  19. <antcall target="testOneLogin"/>
  20. <antcall target="test2NumByTypeAndSample"/>
  21. <antcall target="logout"/>
  22. <antcall target="report"/>
  23. </target>
  24. <!-- 定义一个目标,任务名称为ini——将需要的外部文件删除将需要的外部文件删除 -->
  25. <target name="init">
  26. <!-- 每次运行前删除之前产生的报告文件 -->
  27. <delete >
  28. <fileset dir="/Users/leiyuxing/apache-jmeter-5.0/AntReport" includes="*.doc,*.html,*.jtl,*.xls"/>
  29. </delete>
  30. </target>
  31. <target name="testOneLogin">
  32. <!-- 定义一个任务,任务名称为jmeterA -->
  33. <taskdef name="jmeterA" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
  34. <jmeterA jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
  35. <!-- 声明要运行的脚本 -->
  36. <testplans dir="/Users/leiyuxing/apache-jmeter-5.0/AntReport" includes="一次登录-suadmin.jmx"/>
  37. <property name="jmeter.save.saveservice.output_format" value="xml"/>
  38. </jmeterA>
  39. </target>
  40. <target name="test2NumByTypeAndSample">
  41. <delete file="/Users/leiyuxing/apache-jmeter-5.0/AntReport/submitInfo.txt"/>
  42. <!-- 定义一个任务,任务名称为jmeterA -->
  43. <taskdef name="jmeterA" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
  44. <jmeterA jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
  45. <!-- 测试脚本 -->
  46. <testplans dir="/Users/leiyuxing/apache-jmeter-5.0/AntReport" includes="CoinCola_3.4.5Test.jmx"/>
  47. <property name="jmeter.save.saveservice.output_format" value="xml"/>
  48. </jmeterA>
  49. </target>
  50. <target name="logout">
  51. <!-- 定义一个任务,任务名称为jmeterA -->
  52. <taskdef name="jmeterA" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
  53. <jmeterA jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
  54. <!-- 声明要运行的脚本 -->
  55. <testplans dir="/Users/leiyuxing/apache-jmeter-5.0/AntReport/" includes="CoinCola_3.4.5Test.jmx"/>
  56. <property name="jmeter.save.saveservice.output_format" value="xml"/>
  57. </jmeterA>
  58. </target>
  59. <!-- 自定义的path路径,该路径下包含下面匹配的jar包,下面会用到 -->
  60. <path id="xsltA.classpath">
  61. <fileset dir="${jmeter.home}/lib" includes="xalan*.jar,serializer*.jar"/>
  62. </path>
  63. <target name="report">
  64. <!-- 这里用到了上面定义的path路径 -->
  65. <xslt classpathref="xsltA.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
  66. <param name="deateReport" expression="${time}"/> <!-- 有没有这句没有什么影响 -->
  67. </xslt>
  68. <!-- 复制两个图片过来,已经有的就可以不用复制了 -->
  69. <!--
  70. <copy todir="${jmeter.result.html.dir}">
  71. <fileset dir="${jmeter.home}/extras">
  72. <include name="collapse.png"/>
  73. <include name="expand.png"/>
  74. </fileset>
  75. </copy>
  76. -->
  77. </target>
  78. </project>

注:我目前只放了一个测试用例,当然可以放多个文件,在build.xml中添加指定的任务代码即可。

cmd下运行ant命令,生成html文件

  1. $ ant
  2. Buildfile: /Users/leiyuxing/apache-jmeter-5.0/extras/build.xml
  3. run:
  4. init:
  5. testOneLogin:
  6. test2NumByTypeAndSample:
  7. [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
  8. [jmeterA] Creating summariser <summary>
  9. [jmeterA] Created the tree successfully using /Users/leiyuxing/apache-jmeter-5.0/AntReport/CoinCola_3.4.5Test.jmx
  10. [jmeterA] Starting the test @ Fri Nov 30 10:31:48 CST 2018 (1543545108243)
  11. [jmeterA] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
  12. [jmeterA] summary = 6 in 00:00:02 = 3.9/s Avg: 176 Min: 0 Max: 685 Err: 1 (16.67%)
  13. [jmeterA] Tidying up ... @ Fri Nov 30 10:31:50 CST 2018 (1543545110071)
  14. [jmeterA] ... end of run
  15. logout:
  16. [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
  17. [jmeterA] Creating summariser <summary>
  18. [jmeterA] Created the tree successfully using /Users/leiyuxing/apache-jmeter-5.0/AntReport/CoinCola_3.4.5Test.jmx
  19. [jmeterA] Starting the test @ Fri Nov 30 10:31:52 CST 2018 (1543545112819)
  20. [jmeterA] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
  21. [jmeterA] summary = 6 in 00:00:02 = 3.4/s Avg: 214 Min: 1 Max: 659 Err: 1 (16.67%)
  22. [jmeterA] Tidying up ... @ Fri Nov 30 10:31:54 CST 2018 (1543545114883)
  23. [jmeterA] ... end of run
  24. report:
  25. [xslt] Processing /Users/leiyuxing/apache-jmeter-5.0/AntReport/TestReport201811301031.jtl to /Users/leiyuxing/apache-jmeter-5.0/AntReport/TestReport201811301031.html
  26. [xslt] Loading stylesheet /Users/leiyuxing/apache-jmeter-5.0/extras/jmeter-results-detail-report_21.xsl
  27. BUILD SUCCESSFUL
  28. Total time: 10 seconds

最终你会发现此时你的目标文件夹中会多两个文件:

其中:TestReport201811301031.jtl文件可以通过jmeter打开查看结果报告


而/TestReport201811301031.html文件则支持直接打开,可以通过邮件形式发送给他人

2. Jenkins - 持续集成平台

注:部署到持续集成平台可以实现脚本的定时运行,这是接口、性能测试的核心。

具体步骤如下:

新建一个job

jenkin相关插件介绍与配置

提前下载好插件

系统管理-管理插件-可选插件
下载所需要的插件,例如: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 工作目录:系统管理-系统设置 - 高级

修改如下

  1. <!-- jmeter生成jtl格式的结果报告的路径 -->
  2. <property name="jmeter.result.jtl.dir" value="/Users/leiyuxing/apache-jmeter-5.0/AntReport"/>
  3. <!-- jmeter生成html格式的结果报告的路径 -->
  4. <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)查看报告

3、注意事项 

搭建接口性能测试的持续集成平台是一个重要的工作,确保性能稳定和可靠性。以下是一些注意事项:

  1. 环境准备:在搭建之前,确保所有相关的环境(包括服务器、数据库、网络配置等)都已经准备就绪,并且符合性能测试的需求。

  2. 版本控制:使用版本控制工具(如Git)管理测试脚本、配置文件和其他相关代码,以便跟踪变更和回滚操作。

  3. JMeter脚本编写:编写性能测试脚本时要考虑脚本的可重用性和可维护性,尽量避免硬编码,使用参数化来提高脚本的灵活性。

  4. Jenkins集成:在Jenkins中设置定时任务,自动触发性能测试,并配置邮件通知、报告生成等功能。确保Jenkins服务器的性能足够支撑测试负载。

  5. Ant构建:使用Ant作为构建工具,可以方便地执行JMeter脚本、生成测试报告,并与Jenkins集成。编写好Ant的构建脚本,确保能够顺利地进行性能测试。

  6. 结果分析:建立合适的结果分析机制,对性能测试结果进行监控和分析。可以考虑使用图表或报表的形式展示测试结果,以便于查看和比较不同测试周期的结果。

  7. 权限控制:对于持续集成平台的使用权限进行合理的管理,确保只有授权人员才能够进行性能测试的操作。

  8. 异常处理:考虑可能出现的异常情况,如服务器宕机、网络中断等,制定相应的应急处理方案,以确保持续集成平台的稳定性和可靠性。

  9. 定期维护:持续集成平台需要定期维护和更新,包括JMeter、Ant和Jenkins等工具的版本升级、系统安全补丁的更新等。

以上是一些建议,希望对你搭建接口性能测试的持续集成平台有所帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/416742
推荐阅读
相关标签
  

闽ICP备14008679号