一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成。 Jmeter 支持接口的测试, Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可以构成一个功能完善的接口自动化测试平台。


1. 环境依赖

  • JDK环境配置
  • Jmeter安装
  • Ant安装环境变量配置
  • Jenkins安装

2. 环境准备

2.1 jdk环境配置

  参考:https://www.cnblogs.com/silgen/p/16537198.html

2.2 jmeter安装

  参考:https://www.cnblogs.com/silgen/p/16673082.html

2.3 Jenkins安装

  参考:https://www.cnblogs.com/silgen/p/16849051.html

2.4 Ant安装环境变量配置

  Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。

  下载地址:https://ant.apache.org/bindownload.cgi

  网盘链接:https://pan.baidu.com/s/17s3o-gjR5oO49vNr9zrkpA   提取码:phi3

  将ant上传到服务器,解压到指定目录

  1. [root@ZWZF-CWY-LZY-12 upload]# tar -zxvf apache-ant-1.10.13-bin.tar.gz -C /usr/local/
  2. apache-ant-1.10.13/bin/ant
  3. apache-ant-1.10.13/bin/antRun
  4. apache-ant-1.10.13/bin/antRun.pl
  5. apache-ant-1.10.13/bin/complete-ant-cmd.pl

  配置环境变量,vim /etc/profile

  1. export ANT_HOME=/usr/local/apache-ant-1.10.13
  2. export PATH=$PATH:$ANT_HOME/bin

  加载环境变量,source /etc/profile

  查看ant安装配置结果:ant -version

  1. [root@ZWZF-CWY-LZY-12 local]# vim /etc/profile
  2. [root@ZWZF-CWY-LZY-12 local]# source /etc/profile
  3. [root@ZWZF-CWY-LZY-12 local]# ant -version
  4. Apache Ant(TM) version 1.10.13 compiled on January 4 2023

3. 平台搭建

3.1 依赖文件配置

  首先在/opt目录下面新建一个文件夹 pertest(文件夹名称不要使用下划线,空格字符),并将Jmeter测试脚本放置到该文件夹中。
  将Jmeter extras 文件中的 ant-jmeter-1.1.1.jar 放到Ant中的 lib文件夹中
  将Jmeter extras 文件中的 jmeter-results-detail-report_21.xsl 、build.xml、collapse.png、expand.png 放到 ant目录中的 bin目录下面。

  1. [root@ZWZF-CWY-LZY-12 lib]# cd /opt/apache-jmeter-5.4.1/extras/
  2. [root@ZWZF-CWY-LZY-12 extras]# cp ant-jmeter-1.1.1.jar /usr/local/apache-ant-1.10.13/lib
  3. [root@ZWZF-CWY-LZY-12 extras]# cp jmeter-results-detail-report_21.xsl build.xml collapse.png expand.png /usr/local/apache-ant-1.10.13/bin/

3.2 build.xml配置

  在Ant的bin目录中打开build.xml文件找到以下内容(44-49行)

  1. <property name="testpath" value="${user.dir}"/>
  2. <property name="jmeter.home" value="${basedir}/.."/>
  3. <property name="report.title" value="Load Test Results"/>
  4.  
  5. <!-- Name of test (without .jmx) -->
  6. <property name="test" value="Test"/>

  根据自己的环境,修改如下:

  1. <property name="testpath" value="/opt/pertest"/>
  2. <property name="jmeter.home" value="/opt/apache-jmeter-5.4.1"/>
  3. <property name="report.title" value="Test Report"/>
  4.  
  5. <!-- Name of test (without .jmx) -->
  6. <property name="test" value="Test"/>

参数说明:

  testpath: 测试计划,这里用于存放测试脚本、测试生成的文件、测试报告
  jmeter.home :Jmeter目录路径
  report.title :测试报告的标题
  test: jmeter测试脚本的名称(无需后缀.jmx)

3.3 Jenkins配置

3.3.1 配置jdk

  从主页面直接到“系统管理>全局工具配置”,点击新增JDK,在Name中填入名字(自定义,下图写成jdk),JAVA_HOME填入JDK的环境变量。【保存】

3.3.2 配置Ant

从主页面直接到“系统管理>全局工具配置”,点击新增Ant,在Name中填入名字(自定义,下图写成ant),ANT_HOME填入Ant的环境变量。【保存】

3.3.3 构建任务配置

  创建一个任务,如:Api_test。进行如下配置:

① 构建环境,勾选With Ant,选择Ant Version、JDK(全局工具配置中定义的ant、jdk别名)。【保存】

② Build Steps-->Invoke Ant,选择Ant Version(全局工具配置中定义的ant别名),在Build File选项(点击“高级”)输入build.xml配置文件路径:/usr/local/apache-ant-1.10.13/bin/build.xml。【保存】

4. 执行测试

4.1 服务器/opt/pertest路径下上传测试脚本:test.jmx

4.2 在Jenkins的任务(Api_test)中执行构建

  控制台输出内容详情如下:

  1. Started by user silgen
  2. Running as SYSTEM
  3. Building in workspace /root/.jenkins/workspace/Api_test
  4. [bin] $ /usr/local/apache-ant-1.10.13/bin/ant -file build.xml
  5. Buildfile: /usr/local/apache-ant-1.10.13/bin/build.xml
  6.  
  7. run:
  8. [echo] funcMode = false
  9. [jmeter] Executing test plan: /opt/pertest/test.jmx ==> /opt/pertest/test.jtl
  10. [jmeter] Creating summariser <summary>
  11. [jmeter] Created the tree successfully using /opt/pertest/test.jmx
  12. [jmeter] Starting standalone test @ Wed Jan 11 14:19:45 CST 2023 (1673417985786)
  13. [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
  14. [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
  15. [jmeter] summary + 2809 in 00:00:14 = 202.9/s Avg: 85 Min: 15 Max: 243 Err: 0 (0.00%) Active: 20 Started: 20 Finished: 0
  16. [jmeter] summary + 6530 in 00:00:30 = 217.9/s Avg: 85 Min: 46 Max: 276 Err: 0 (0.00%) Active: 20 Started: 20 Finished: 0
  17. [jmeter] summary = 9339 in 00:00:44 = 213.2/s Avg: 85 Min: 15 Max: 276 Err: 0 (0.00%)
  18. [jmeter] summary + 686 in 00:00:03 = 246.1/s Avg: 75 Min: 45 Max: 149 Err: 0 (0.00%) Active: 0 Started: 20 Finished: 20
  19. [jmeter] summary = 10025 in 00:00:47 = 215.1/s Avg: 85 Min: 15 Max: 276 Err: 0 (0.00%)
  20. [jmeter] Tidying up ... @ Wed Jan 11 14:20:32 CST 2023 (1673418032789)
  21. [jmeter] ... end of run
  22.  
  23. _message_xalan:
  24.  
  25. xslt-report:
  26. [xslt] Processing /opt/pertest/test.jtl to /opt/pertest/test.html
  27. [xslt] Loading stylesheet /usr/local/apache-ant-1.10.13/bin/jmeter-results-detail-report_21.xsl
  28.  
  29. verify-images:
  30.  
  31. copy-images:
  32. [copy] Copying 1 file to /opt/pertest
  33. [copy] Copying 1 file to /opt/pertest
  34.  
  35. report:
  36. [echo] Report generated at 2023/01/11 14:20
  37.  
  38. all:
  39.  
  40. BUILD SUCCESSFUL
  41. Total time: 52 seconds
  42. Finished: SUCCESS

4.3 进入服务器路径/opt/pertest,查看执行结果,生成测试报告(test.html)和测试结果(test.jtl)。

  在服务器本地执行ant -buildfile /usr/local/apache-ant-1.10.13/bin/build.xml,可达到同样效果,如下:

  1. [root@qy-ggyf-zyl-32 pertest]# ant -buildfile /usr/local/apache-ant-1.10.13/bin/build.xml
  2. Buildfile: /usr/local/apache-ant-1.10.13/bin/build.xml
  3.  
  4. run:
  5. [echo] funcMode = false
  6. [jmeter] Executing test plan: /opt/pertest/test.jmx ==> /opt/pertest/test.jtl
  7. [jmeter] Creating summariser <summary>
  8. [jmeter] Created the tree successfully using /opt/pertest/test.jmx
  9. [jmeter] Starting standalone test @ Wed Jan 11 14:28:49 CST 2023 (1673418529574)
  10. [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
  11. [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
  12. [jmeter] summary + 1829 in 00:00:10 = 181.4/s Avg: 91 Min: 17 Max: 269 Err: 0 (0.00%) Active: 20 Started: 20 Finished: 0
  13. [jmeter] summary + 6246 in 00:00:30 = 208.2/s Avg: 90 Min: 46 Max: 309 Err: 0 (0.00%) Active: 20 Started: 20 Finished: 0
  14. [jmeter] summary = 8075 in 00:00:40 = 201.5/s Avg: 90 Min: 17 Max: 309 Err: 0 (0.00%)
  15. [jmeter] summary + 1950 in 00:00:10 = 201.7/s Avg: 92 Min: 52 Max: 276 Err: 0 (0.00%) Active: 0 Started: 20 Finished: 20
  16. [jmeter] summary = 10025 in 00:00:50 = 201.5/s Avg: 90 Min: 17 Max: 309 Err: 0 (0.00%)
  17. [jmeter] Tidying up ... @ Wed Jan 11 14:29:39 CST 2023 (1673418579674)
  18. [jmeter] ... end of run
  19.  
  20. _message_xalan:
  21.  
  22. xslt-report:
  23. [xslt] Processing /opt/pertest/test.jtl to /opt/pertest/test.html
  24. [xslt] Loading stylesheet /usr/local/apache-ant-1.10.13/bin/jmeter-results-detail-report_21.xsl
  25.  
  26. verify-images:
  27.  
  28. copy-images:
  29. [copy] Copying 1 file to /opt/pertest
  30. [copy] Copying 1 file to /opt/pertest
  31.  
  32. report:
  33. [echo] Report generated at 2023/01/11 14:29
  34.  
  35. all:
  36.  
  37. BUILD SUCCESSFUL
  38. Total time: 55 seconds
  39. [root@qy-ggyf-zyl-32 pertest]#

5. 查看测试报告

6. 批量运行多个脚本

6.1 修改配置文件

  由于jmeter默认提供的build.xml不支持通配符来批量运行多个脚本,所以这里修改build.xml配置文件来实现批量执行,具体脚本如下:

  注:将原有的build.xml文件备份,使用如下配置文件信息。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <project name="ant-jmeter-test" default="run" basedir=".">
  4.  
  5. <!-- 根据时间戳来命名测试报告名称-->
  6. <tstamp>
  7. <format property="time" pattern="yyyyMMddhhmm" />
  8. </tstamp>
  9.  
  10. <!-- 需要改成自己本地的 Jmeter 目录-->
  11. <property name="jmeter.home" value="/opt/apache-jmeter-5.4.1" />
  12. <!-- 设置脚本的测试目录-->
  13. <property name="jmeter.dir" value="/opt/pertest" />
  14.  
  15. <!-- jmeter生成jtl格式的结果报告的路径-->
  16. <property name="jmeter.result.jtl.dir" value="${jmeter.dir}/report/jtl" />
  17. <!-- jmeter生成html格式的结果报告的路径-->
  18. <property name="jmeter.result.html.dir" value="${jmeter.dir}/report/html" />
  19.  
  20. <!-- 生成的报告的前缀-->
  21. <property name="ReportName" value="TestReport" />
  22. <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
  23. <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
  24.  
  25. <target name="run">
  26. <antcall target="test" />
  27. <antcall target="report" />
  28. </target>
  29.  
  30. <target name="test">
  31. <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
  32. <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl">
  33.  
  34. <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本,也可以指定具体执行的脚本-->
  35. <testplans dir="${jmeter.dir}" includes="*.jmx" />
  36. <property name="jmeter.save.saveservice.output_format" value="xml"/>
  37.  
  38. </jmeter>
  39. </target>
  40.  
  41. <target name="report">
  42. <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
  43. <xslt
  44. classpathref="xslt.classpath"
  45. force="true"
  46. in="${jmeter.result.jtlName}"
  47. out="${jmeter.result.htmlName}"
  48. style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
  49. <param name="dateReport" expression="${report.datestamp}"/>
  50. </xslt>
  51.  
  52. <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
  53. <copy todir="${jmeter.result.html.dir}">
  54. <fileset dir="${jmeter.home}/extras">
  55. <include name="collapse.png" />
  56. <include name="expand.png" />
  57. </fileset>
  58. </copy>
  59. </target>
  60.  
  61. <path id="xslt.classpath">
  62. <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
  63. <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
  64. </path>
  65. </project>

6.2 上传多个脚本到路径:/opt/pertest

6.3 在Jenkins执行构建任务

  控制台输出,如下:

  1. Started by user silgen
  2. Running as SYSTEM
  3. Building in workspace /root/.jenkins/workspace/Api_test
  4. [bin] $ /usr/local/apache-ant-1.10.13/bin/ant -file build.xml
  5. Buildfile: /usr/local/apache-ant-1.10.13/bin/build.xml
  6.  
  7. run:
  8.  
  9. test:
  10. [jmeter] Executing test plan: /opt/pertest/凭证箱列表查询.jmx ==> /opt/pertest/report/jtl/TestReport202301110422.jtl
  11. [jmeter] Creating summariser <summary>
  12. [jmeter] Created the tree successfully using /opt/pertest/凭证箱列表查询.jmx
  13. [jmeter] Starting standalone test @ Wed Jan 11 16:22:50 CST 2023 (1673425370183)
  14. [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
  15. [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
  16. [jmeter] summary = 1 in 00:00:00 = 2.0/s Avg: 220 Min: 220 Max: 220 Err: 0 (0.00%)
  17. [jmeter] Tidying up ... @ Wed Jan 11 16:22:50 CST 2023 (1673425370994)
  18. [jmeter] ... end of run
  19. [jmeter] Executing test plan: /opt/pertest/登录.jmx ==> /opt/pertest/report/jtl/TestReport202301110422.jtl
  20. [jmeter] Creating summariser <summary>
  21. [jmeter] Created the tree successfully using /opt/pertest/登录.jmx
  22. [jmeter] Starting standalone test @ Wed Jan 11 16:22:52 CST 2023 (1673425372803)
  23. [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
  24. [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
  25. [jmeter] summary = 2 in 00:00:01 = 3.7/s Avg: 96 Min: 15 Max: 177 Err: 0 (0.00%)
  26. [jmeter] Tidying up ... @ Wed Jan 11 16:22:53 CST 2023 (1673425373735)
  27. [jmeter] ... end of run
  28.  
  29. report:
  30. [xslt] Processing /opt/pertest/report/jtl/TestReport202301110422.jtl to /opt/pertest/report/html/TestReport202301110422.html
  31. [xslt] Loading stylesheet /opt/apache-jmeter-5.4.1/extras/jmeter-results-detail-report_21.xsl
  32. [copy] Copying 2 files to /opt/pertest/report/html
  33.  
  34. BUILD SUCCESSFUL
  35. Total time: 6 seconds
  36. Finished: SUCCESS

6.4 查看测试报告

Jmeter+Ant+Jenkins接口自动化测试平台的更多相关文章

  1. Jmeter+ant+jenkins接口自动化测试 平台搭建(一)

    平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成.Jmeter 支持接口的测试,Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可 ...

  2. Jmeter+ant+jenkins接口自动化测试 平台搭建(三)

    四.报告优化 Jmeter 默认生成报告不是很详细,因此我们需要进行优化.这里我们使用新的报告模板:默认的报告模板是 jmeter-results-detail-report_21.xsl 先上效果图 ...

  3. Jmeter+ant+jenkins接口自动化测试 平台搭建(二)

    一.依赖文件配置 1.在ant目录C:\apache-ant-1.10.5下新建一个demo文件夹,并将jmeter测试脚本放在该文件夹中 2.将\apache-jmeter-3.3\extras下面 ...

  4. Jmeter+Ant+Jenkins接口自动化测试框架搭建

    前言 软件开发的V模型大家都不陌生,其中测试阶段分为单元测试→功能测试→系统测试→验收测试.其中单元测试一般由开发同学们自己完成,大部分测试具体实施(这里不包括用例设计)是从单体功能测试开始着手的. ...

  5. jmeter+ant+jenkins接口自动化测试框架

    大致思路:Jmeter可以做接口测试,也能做压力测试,而且是开源软件:Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台,Jenkins是持续集成工具.将这三者结合起来可以搭建 ...

  6. Jmeter+Ant+Jenkins接口自动化测试(二)_测试方案设计及jmeter脚本开发

    前言 根据之前部署好的测试环境,进行接口自动化测试的方案设计及Jmeter脚本开发.测试方案设计过程中采用了数据分离和对象分离等思路,因此直接通过特定的测试用例文档来驱动整个自动化接口测试的执行,相关 ...

  7. Jmeter+Ant+Jenkins接口自动化测试(一)_环境部署

    前言: 2017年最后一个月份,今天抽出时间把之前的一些记录分享出来,也为今年画上个简单的句号吧,无论好与坏,无论成功与失败,简单的记忆,不要留下点点空白. 特别提示: 知识是用来分享的,但是也要尊重 ...

  8. jmeter+ant+jenkins 接口自动化测试持续集成(送源码)

     9.1  安装和介绍 JMeter 安装文件路径:https://pan.baidu.com/s/1kVJdnuv. JMeter 是轻量级的开源且稳定的自动化测试工具. 思路:在接口说明文档中整理 ...

  9. Jmeter+ant+Jenkins接口自动化框架搭建

    摘自:https://testerhome.com/topics/13389 一.背景  上一篇讲了Jmeter 接口自动化-脚本数据分离实例,我们知道怎么利用Jmeter去编写接口自动化脚本,但是接 ...

  10. 使用jmeter+ant进行接口自动化测试(数据驱动)之二:利用apache-ant执行测试用例并生成HTML格式测试报告

    在 使用jmeter+ant进行接口自动化测试(数据驱动)之一 介绍了如何使用csv文件来批量管理接口 本次接着介绍如何利用apache-ant执行测试用例并生成HTML格式测试报告 ①下载安装 ap ...

随机推荐

  1. yaml的读写

    yaml文件的读写是真的快,也很简单.代码如下:from ruamel.yaml import YAMLimport os # 读取yaml配置文件def read_yaml(yaml_path): ...

  2. react中useRef的应用

    何为useRef useRef是随着react函数式组件发展而来的,是react众多官方hook中的一个,调用useRef可以返回一个伴随这组件整个声明周期不发生改变的对象,这个对象常见的用途有两个: ...

  3. JS逆向实战14——猿人学第二题动态cookie

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 https:// ...

  4. Sublime Text Windows/Linux平台快捷键

    编辑 按键 对应命令 Ctrl + X 删除行 Ctrl + 行后插入 Ctrl + ⇧ + 行前插入 Ctrl + ⇧ + ↑ 上移文本/选择 Ctrl + ⇧ + ↓ 下移文本/选择 Ctrl + ...

  5. python学习---logging模块

    # shutil 主要更目录和文件有关模块# 拷贝目录 shutil,copy2('原路径', '目标路径')# 拷贝文件# 删除目录'''#为什么要写LOG # log是为了排错: #log 是为了 ...

  6. 使用 conda 和 Jupyter 在 R 中实现数据科学分析

    前两篇文章我们介绍了 Jupyter Notebook 的一些基础用法,今天我们来介绍一下如何使用 conda 和 Jupyter 在 R 中开始一个数据科学项目. 在开始之前我们先要明确一个概念:K ...

  7. 移动App测试概述:移动App特性

    移动App测试概述:移动App特性 移动App在现代人的日常生活中扮演着越来越重要的角色,因而对于它们的质量和稳定性的要求也越来越高.为了确保App的质量,开发商需要进行充分的测试和检验.本文将讨论移 ...

  8. Java 新的生态,Solon v2.3.2 发布

    Solon 是什么框架? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(全球第二级别的生态).与其他框架相比,它解决了两个重要的痛点:启动慢,费资源. 解决痛点? ...

  9. JS工具函数

    工具函数 用于工程化开发,记录,备用 返回 [min, max) 间的随机整数 /** 返回 [min, max) 间的随机整数 */ export function getRandom(min, m ...

  10. 给你的 Discord 接入一个既能联网又能画画的 ChatGPT

    如果有这样一款 Discord 机器人,它既能访问互联网,又能绘画,还能给 YouTube 视频提供摘要.最重要的是,它是完全免费的,不需要提供 OpenAI 的 API Key,我就问你香不香? 现 ...