51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3126|回复: 2
打印 上一主题 下一主题

[原创] JMeter+Ant接口自动化搭建及实践

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:34
  • 签到天数: 1052 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2020-11-25 10:35:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    前言
      JMeter是Apache组织的开放源代码项目,能做接口测试、功能测试和性能测试。它能够对HTTP和FTP服务器进行压力和性能测试,也可以对数据库进行同样的测试(通过JDBC),还能以多种形式展现测试结果。然而,在使用JMeter进行测试过程中,不可避免遇到两个痛点:“运行测试脚本”和“生成测试报告”。前者主要是需要不断重复运行脚本,且当脚本数量较多或进行并发测试时,JMeter GUI界面容易宕机、卡死等,这种情况下就需要重复使用命令执行脚本;后者则是需要手工整理数据、分析测试结果然后生成测试报告。因此,本文采用JMeter+Ant(一个将软件编译、测试、部署等步骤联系在一起加以自动化的工具)搭建自动化测试环境,用以解决测试过程中的痛点,通过此环境可以实现:(1)自动重复运行脚本(2)自动生成测试报告(3)自动发送邮件。
      大体的逻辑如下:
      1、配置build.xml文件,Ant通过XML文件进行构建,通过调用target就可以执行各种task,每个task实现了特定接口对象。因此,通过Ant可以实现批量执行。
      2、Ant通过测试结果(jtl文件)构建生成HTML测试报告,并输出在指定路径下,避免了手工整理测试报告。
      3、根据build.xml文件中配置的的邮件信息,将HTML测试报告自动发送到指定的邮箱。
      JDK安装
      JMeter依赖Java环境,故需要先安装JDK并配置好环境变量。JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
      Java环境变量配置
      1、创建JAVA_HOME(JDK安装目录)。如:C:\Program Files (x86)\Java\jdk1.8.0_231
      2、创建CLASSPATH,.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)
      3、编辑Path,把值放在最前面?%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
      验证JDK
      CMD命令行输入java -version,显示如图,表示安装成功。

     JMeter安装
      JMeter下载地址:http://jmeter.apache.org/download_jmeter.cgi。下载成功后,解压缩到建立的文件夹路径中(如:D:\Apache\JMeter)。
      JMeter环境变量配置
      1、创建JMETER_HOME,填写JMeter文件所属路径(如:D:\Apache\JMeter)
      2、修改CLASSPATH,添加;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar;
      3、修改Path,添加%JMETER_HOME%\bin
      点击JMeter目录下bin文件夹中的jmeter.bat就可以打开JMeter,具体界面如下:

     添加常用插件  注:官网下载的JMeter不包含一些常用插件。
      将plugins-manager-xxx.jar、JMeterPlugins-Extras.jar、JMeterPlugins-Standard.jar和JMeterPlugins-Standard-1.4.0.zip解压后的jar包放入D:\Apache\JMeter目录下的lib\ext目录,重启JMeter。
      打开有如下页面,则成功安装。

     JMeter相关配置修改  1、修改默认语言和jvm参数(根据电脑配置进行修改),编辑JMeter.bat如下:


    2、编辑JMeter.peoperties使用第三方模块生成详细报告:


    Ant安装  Ant下载地址:http://ant.apache.org/bindownload.cgi。下载成功后,解压Ant压缩包到建立的文件夹路径(如:D:\Apache\Ant)。
      Ant环境变量配置
      1、创建ANT_HOME,填写Ant所属路径(如D:\Apache\Ant?)
      2、修改CLASSPATH,添加;%ANT_HOME%\lib
      3、修改Path,添加;%ANT_HOME%\bin
      验证Ant
      CMD命令行输入ant,如下图所示表示安装成功。

     Ant配置及相关使用操作  1、将D:\Apache\JMeter\extras下面的ant-jmeter-1.1.1.jar包复制到D:\Apache\Ant\lib目录下。
      2、将jmeter.results.shanhe.me.xsl和jmeter-results-detail-report_21.xsl分别放在D:\Apache\JMeter\extras目录下。
      3、(发送邮件所需jar包)下载activation-1.1.1.jar、commons-email-1.5.jar和javax.mail.jar放到D:\ Apache\ant\lib。
      4、在本地任意创建目录testcases(如:D:\testcases),并在其目录下创建report文件夹和build.xml文件,复制以下内容到build.xml文件中:
    1. <?xml version="1.0" encoding="UTF-8"?>

    2. <project name="ant-jmeter-test" default="all" basedir=".">

    3. <tstamp>

    4. <format property="time" pattern="yyyyMMddhhmm" />

    5. </tstamp>

    6. <!-- 需要改成自己本地的 Jmeter 目录 -->

    7. <property name="jmeter.home" value="D:\Apache\jmeter" />

    8. <property name="report.title" value="测试报告" />

    9. <!-- jmeter生成jtl格式的结果报告的路径 -->

    10. <property name="jmeter.result.jtl.dir" value="D:\testcases\report" />

    11. <!-- jmeter生成html格式的结果报告的路径 -->

    12. <property name="jmeter.result.html.dir" value="D:\testcases\report" />

    13. <!-- zip文件路径 -->

    14. <property name="zip.dir" value="D:\testcases" />

    15. <!-- 生成的报告的前缀 -->

    16. <property name="ReportName" value="testcases" />

    17. <!-- 报告名称 -->

    18. <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />

    19. <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />

    20. <property name="zipname" value="${zip.dir}/${ReportName}${time}.zip" />

    21. <!-- 邮件配置信息 -->

    22. <property name="mail_host" value="smtp.163.com" />

    23. <property name="mail_port" value="465" />

    24. <property name="username" value="testcases@163.com" />

    25. <property name="password" value="123456789" />

    26. <property name="mail_from" value="dtestcases@163.com" />

    27. <property name="mail_to" value="testcases@163.com,testcases2@163.com" />

    28. <property name="mailsubject" value="测试报告" />

    29. <!-- 输出生成的报告名称和存放路径 -->

    30. <echo message="${jmeter.result.jtlName}" />

    31. <echo message="${jmeter.result.htmlName}" />

    32. <echo message="${jmeter.result.html.dir}" />

    33. <echo message="${zip.dir}" />

    34. <echo message="${zipname}" />

    35. <!-- 加载jar包,解决时间显示问题 -->

    36. <path id="xslt.classpath">

    37. <fileset dir="${jmeter.home}/lib" includes="xalan*.jar" />

    38. <fileset dir="${jmeter.home}/lib" includes="serializer*.jar" />

    39. </path>

    40. <target name="all">

    41. <antcall target="test" />

    42. <antcall target="report" />

    43. <antcall target="summary-report" />

    44. <antcall target="zip" />

    45. <!-- 打包zip -->

    46. <antcall target="sendEmail" />

    47. <!-- 发送邮件 -->

    48. </target>

    49. <target name="test">

    50. <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />

    51. <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">

    52. <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本 -->

    53. <!-- 如果只想执行部分脚本,可以写多条testplans 将需要执行的jmx写在includes中 -->

    54. <testplans dir="D:\testcases" includes="*.jmx" />

    55. <property name="jmeter.save.saveservice.output_format" value="xml" />

    56. <!-- 这里就是jmeter.properties修改的部分 -->

    57. </jmeter>

    58. </target>

    59. <target name="report">

    60. <tstamp>

    61. <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" />

    62. </tstamp>

    63. <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.html.dir}/summary-report.html" style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">

    64. <!-- 这里是第三方模板,修改jmeter.properties后生成的报告有详细的请求、响应、错误信息等 -->

    65. <param name="Date Report" expression="${report.datestamp}" />

    66. </xslt>

    67. <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->

    68. <copy todir="${jmeter.result.html.dir}">

    69. <fileset dir="${jmeter.home}/extras">

    70. <include name="collapse.png" />

    71. <include name="expand.png" />

    72. </fileset>

    73. </copy>

    74. </target>

    75. <target name="summary-report">

    76. <tstamp>

    77. <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" />

    78. </tstamp>

    79. <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">

    80. <!-- 这里是一个简要的信息,查看成功和失败的请求百分比 -->

    81. <param name="dateReport" expression="${report.datestamp}" />

    82. </xslt>

    83. </target>

    84. <!-- zip配置 -->

    85. <target name="zip">

    86. <echo>

    87. 打包zip文件

    88. </echo>

    89. <zip destfile="${zipname}" duplicate="preserve">

    90. <zipfileset dir="${jmeter.result.html.dir}" includes="**/*.*" prefix="测试报告" />

    91. </zip>

    92. <copy todir="${jmeter.result.html.dir}">

    93. <fileset dir="${zip.dir}">

    94. <include name="*.zip" />

    95. </fileset>

    96. </copy>

    97. </target>

    98. <!-- 配置发送邮件报告 -->

    99. <target name="sendEmail">

    100. <echo>

    101. 发送测试报告

    102. </echo>

    103. <loadfile property="email_content" srcFile="${jmeter.result.htmlName}" encoding="UTF-8" />

    104. <mail mailhost="${mail_host}" ssl="true" user="${username}" password="${password}" mailport="${mail_port}" subject="${mailsubject}" messagemimetype="text/html" messagefileinputencoding="UTF-8" tolist="${mail_to}">

    105. <from address="${mail_from}" />

    106. <message charset="UTF-8">

    107. ${email_content}

    108. </message>

    109. <!-- 附件 -->

    110. <attachments>

    111. <fileset dir="${jmeter.result.html.dir}">

    112. <include name="*.zip" />

    113. </fileset>

    114. </attachments>

    115. </mail>

    116. </target>

    117. </project>
    复制代码
    5、打开CMD命令行,切换到testcases目录下执行ant命令;或在testcases目录编写ant.bat文件执行,文件内容如下:
    1. [url=home.php?mod=space&uid=1806]@echo[/url]  

    2. call ant -buildfile build.xml -l logfile  

    3. pause  
    复制代码
    注:执行日志存放在testcase目录下的logfile文件中。  附:报告及邮件
      1、概略报告

     2、详细报告


     3、邮件及附件








    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-28 04:53 , Processed in 0.066895 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表