一、监控服务器性能

1、PerfMon插件

image.png
image.png
image.png
image.png
image.png
image.png

2、ServerAgent

image.png
image.png
image.png

3、监控目标服务器性能简介及演示

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

image.png
image.png

一、docker应用

熟悉运用docker搭建测试环境

1、docker环境安装

2、docker基本命令

3、docker实战部署

二、性能测试监控

搭建性能监控体系,实时获取服务端性能情况

1、搭建grafana+Prometheus+jmeter性能监控平台

2、搭建grafana+influxdb+jmeter性能监控平台

三、持续集成

满足企业CICD需求,实现性能测试持续集成

1、持续集成的概念

image.png

2、Jenkins+Ant+Jmeter环境搭建

2.1 配置Jmeter、Ant、Jenkins环境

https://blog.csdn.net/weixin_46457203/article/details/105860961

2.2 使用Ant+Jmeter+Jenkins搭建接口自动化

3、持续集成配置文件讲解

image.png

  1. <?xml version="1.0" encoding="GBK"?>
  2. <project name="ant-jmeter-test" default="run" basedir=".">
  3. <tstamp>
  4. <format property="time" pattern="yyyyMMddhhmm" />
  5. </tstamp>
  6. <target name="run">
  7. <antcall target="clear1" />
  8. <antcall target="test1" />
  9. <antcall target="report1" />
  10. <antcall target="sendmail1" />
  11. </target>
  12. <target name="test1">
  13. <echo message="开始执行jmeter脚本..."></echo>
  14. <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
  15. <jmeter jmeterhome="jmeter家目录" resultlog="jtl路径\1.jtl">
  16. <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
  17. <testplans dir="脚本路径" includes="脚本名称" />
  18. <property name="jmeter.save.saveservice.output_format" value="xml"/>
  19. </jmeter>
  20. </target>
  21. <path id="xslt.classpath">
  22. <fileset dir="jmeter中lib路径" includes="xalan*.jar"/>
  23. <fileset dir="jmeter中lib路径" includes="serializer*.jar"/>
  24. </path>
  25. <target name="report1">
  26. <echo message="开始转换执行结果..."></echo>
  27. <tstamp> <format property="time" pattern="yyyy/MM/dd HH:mm" /></tstamp>
  28. <xslt classpathref="xslt.classpath"
  29. force="true"
  30. in="jtl路径\1.jtl"
  31. out="html路径\1.html"
  32. style="jmeter中exaters的路径+jmeter-results-detail-report_21的名称">
  33. <param name="titleReport" expression="xxxxx"/>
  34. <param name="dateReport" expression="${time}"/>
  35. </xslt>
  36. <!-- jmeter-results-detail-report_21 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝-->
  37. <copy todir="html的路径">
  38. <fileset dir="jmeter中exaters的路径">
  39. <include name="collapse.png" />
  40. <include name="expand.png" />
  41. </fileset>
  42. </copy>
  43. </target>
  44. <target name="clear1">
  45. <!-- 每次执行前先删除清空jtlhtml文件夹,释放空间 -->
  46. <echo message="释放空间,清空jtl和html文件夹中 ..."></echo>
  47. <delete dir="jtl的路径" />
  48. <delete dir="html的路径" />
  49. <!-- 删除单个文件-- >
  50. <delete file="jtl的路径\1.jtl" />
  51. <sleep seconds="2"/>
  52. <echo message="释放完成 ..."></echo>
  53. </target>
  54. <target name="sendmail1">
  55. <!--把报告进行压缩打包-->
  56. <jar jarfile="report的路径.rar" basedir="html的路径"/>
  57. <!--把文件贴到邮件正文-->
  58. <loadfile property="html" srcFile="html的路径\1.html" encoding="UTF-8">
  59. <filterchain>
  60. <expandproperties />
  61. </filterchain>
  62. </loadfile>
  63. <mail mailhost="smtp.126.com"
  64. mailport="25" subject="邮件标题"
  65. messagemimetype="text/html" tolist="norma_bai@163.com"
  66. user="norma_bai@163.com" password="邮箱授权码">
  67. <from address="norma_bai@163.com"/>
  68. <!--发送附件-->
  69. <fileset dir="在jmeter中创建的文件夹">
  70. <include name="report.rar"/>
  71. </fileset>
  72. <message><![CDATA[
  73. <p>维度电影项目组收:</p>
  74. <pre> ${html} </pre>
  75. <p>自定义邮件内文字</p>
  76. ]]></message>
  77. </mail>
  78. </target>
  79. </project>
  1. <?xml version="1.0" encoding="GBK"?>
  2. <project name="ant-jmeter-test" default="run" basedir=".">
  3. <tstamp>
  4. <format property="time" pattern="yyyyMMddhhmm" />
  5. </tstamp>
  6. <target name="run">
  7. <antcall target="clear1" />
  8. <antcall target="test1" />
  9. <antcall target="report1" />
  10. <antcall target="sendmail1" />
  11. </target>
  12. <target name="test1">
  13. <echo message="开始执行jmeter脚本..."></echo>
  14. <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
  15. <jmeter jmeterhome="D:\tools\apache-jmeter-5.0" resultlog="E:\Jmeter\result\1.jtl">
  16. <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
  17. <testplans dir="E:\Jmeter\scrpit" includes="*.jmx" />
  18. <property name="jmeter.save.saveservice.output_format" value="xml"/>
  19. </jmeter>
  20. </target>
  21. <path id="xslt.classpath">
  22. <fileset dir="D:\tools\apache-jmeter-5.0\lib" includes="xalan*.jar"/>
  23. <fileset dir="D:\tools\apache-jmeter-5.0\lib" includes="serializer*.jar"/>
  24. </path>
  25. <target name="report1">
  26. <echo message="开始转换执行结果..."></echo>
  27. <tstamp> <format property="time" pattern="yyyy/MM/dd HH:mm" /></tstamp>
  28. <xslt classpathref="xslt.classpath"
  29. force="true"
  30. in="E:\Jmeter\result\1.jtl"
  31. out="E:\Jmeter\html\1.html"
  32. style="D:\tools\apache-jmeter-5.0\extras\jmeter-results-detail-report_21.xsl">
  33. <param name="titleReport" expression="测试报告"/>
  34. <param name="dateReport" expression="${time}"/>
  35. </xslt>
  36. <!-- jmeter-results-detail-report_21 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
  37. <copy todir="E:\Jmeter\html">
  38. <fileset dir="D:\tools\apache-jmeter-5.0\extras">
  39. <include name="collapse.png" />
  40. <include name="expand.png" />
  41. </fileset>
  42. </copy>
  43. </target>
  44. <target name="clear1">
  45. <!-- 每次执行前先删除清空jtlhtml文件夹,释放空间 -->
  46. <echo message="释放空间,清空jtl和html文件夹中 ..."></echo>
  47. <delete dir="E:\Jmeter\result" />
  48. <delete dir="E:\Jmeter\html" />
  49. <!-- 删除单个文件-->
  50. <delete file="E:\Jmeter\1.rar" />
  51. <sleep seconds="2"/>
  52. <echo message="释放完成 ..."></echo>
  53. </target>
  54. <target name="sendmail1">
  55. <!--把报告进行压缩打包-->
  56. <jar jarfile="E:\Jmeter\1.rar" basedir="E:\Jmeter\html"/>
  57. <!--把文件贴到邮件正文-->
  58. <loadfile property="html" srcFile="E:\Jmeter\html\1.html" encoding="UTF-8">
  59. <filterchain>
  60. <expandproperties />
  61. </filterchain>
  62. </loadfile>
  63. <mail mailhost="smtp.qq.com"
  64. mailport="25" subject="测试结果"
  65. messagemimetype="text/html" tolist="273153@qq.com"
  66. user="273153@qq.com" password="nwybggd">
  67. <from address="273153@qq.com"/>
  68. <!--发送附件-->
  69. <fileset dir="E:\Jmeter">
  70. <include name="1.rar"/>
  71. </fileset>
  72. <message><![CDATA[
  73. <p>项目组收:</p>
  74. <pre> ${html} </pre>
  75. <p>自定义邮件内文字</p>
  76. ]]></message>
  77. </mail>
  78. </target>
  79. </project>

1、获取QQ邮箱授权码
image.png
2、build.xml需保持为ANSI编码,否则执行过程中会出现乱码
image.png
image.png

4、实现步骤

4.1 首先根据ant和jmeter验证脚本可以正常执行

image.png
在当前目录下输入cmd命令,然后输入ant命令,检查脚本能否正常执行
image.png
注意点:若报错ant不是内部命令,则检查环境变量path路径,将%ANT_HOME%修改为ant的绝对路径

4.2 在Jenkins工具内完成以下操作

  1. 在全局工具配置中添加JDK和ANT的绝对路径

image.png
image.png

  1. 新建任务

image.png

  1. 设置构建触发器

image.png

  1. 该任务的构建环境选择全局工具配置中设置的ant和JDK

image.png

  1. 该任务的构建栏位选择Execute Windows batch command,输入ant命令(即cmd下的ant命令)

image.png

  1. 然后再在该任务的构建栏位添加invoke ant,选择ant版本,在build file中输入build.xml的完整路径

image.png

  1. 将4.1步已验证的脚本放入jmeter的任务目录之下

image.png

  1. 修改build.xml中相关的文件路径,均指向jmeter工作空间下的任务目录

image.png

4.3 点击build now立即构建,或者按照触发器构建后,检查构建日志

image.png
构建失败原因一:’ant’ 不是内部或外部命令,也不是可运行的程序
解决办法:修改环境变量path:ant路径为绝对路径:D:\tools\apache-ant-1.9.14\bin
image.png
构建失败原因二:build.xml不在Jenkins工作空间下该任务的目录下
image.png
构建失败原因三:原因是未修改build.xml中的脚本路径,导致scrpit目录不存在
image.png

image.png
image.png
ssh-rsa 2048 0b:02:4b:74:9d:ee:20:ba:20:b5:79:4a:37:6b:33:9a

image.png

image.png
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