一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成。 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上传到服务器,解压到指定目录

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

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

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

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

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

[root@ZWZF-CWY-LZY-12 local]# vim /etc/profile
[root@ZWZF-CWY-LZY-12 local]# source /etc/profile
[root@ZWZF-CWY-LZY-12 local]# ant -version
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目录下面。

[root@ZWZF-CWY-LZY-12 lib]# cd /opt/apache-jmeter-5.4.1/extras/
[root@ZWZF-CWY-LZY-12 extras]# cp ant-jmeter-1.1.1.jar /usr/local/apache-ant-1.10.13/lib
[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行)

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

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

<property name="testpath" value="/opt/pertest"/>
<property name="jmeter.home" value="/opt/apache-jmeter-5.4.1"/>
<property name="report.title" value="Test Report"/> <!-- Name of test (without .jmx) -->
<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)中执行构建

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

Started by user silgen
Running as SYSTEM
Building in workspace /root/.jenkins/workspace/Api_test
[bin] $ /usr/local/apache-ant-1.10.13/bin/ant -file build.xml
Buildfile: /usr/local/apache-ant-1.10.13/bin/build.xml run:
[echo] funcMode = false
[jmeter] Executing test plan: /opt/pertest/test.jmx ==> /opt/pertest/test.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using /opt/pertest/test.jmx
[jmeter] Starting standalone test @ Wed Jan 11 14:19:45 CST 2023 (1673417985786)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
[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
[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
[jmeter] summary = 9339 in 00:00:44 = 213.2/s Avg: 85 Min: 15 Max: 276 Err: 0 (0.00%)
[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
[jmeter] summary = 10025 in 00:00:47 = 215.1/s Avg: 85 Min: 15 Max: 276 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Wed Jan 11 14:20:32 CST 2023 (1673418032789)
[jmeter] ... end of run _message_xalan: xslt-report:
[xslt] Processing /opt/pertest/test.jtl to /opt/pertest/test.html
[xslt] Loading stylesheet /usr/local/apache-ant-1.10.13/bin/jmeter-results-detail-report_21.xsl verify-images: copy-images:
[copy] Copying 1 file to /opt/pertest
[copy] Copying 1 file to /opt/pertest report:
[echo] Report generated at 2023/01/11 14:20 all: BUILD SUCCESSFUL
Total time: 52 seconds
Finished: SUCCESS

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

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

[root@qy-ggyf-zyl-32 pertest]# ant -buildfile /usr/local/apache-ant-1.10.13/bin/build.xml
Buildfile: /usr/local/apache-ant-1.10.13/bin/build.xml run:
[echo] funcMode = false
[jmeter] Executing test plan: /opt/pertest/test.jmx ==> /opt/pertest/test.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using /opt/pertest/test.jmx
[jmeter] Starting standalone test @ Wed Jan 11 14:28:49 CST 2023 (1673418529574)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
[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
[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
[jmeter] summary = 8075 in 00:00:40 = 201.5/s Avg: 90 Min: 17 Max: 309 Err: 0 (0.00%)
[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
[jmeter] summary = 10025 in 00:00:50 = 201.5/s Avg: 90 Min: 17 Max: 309 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Wed Jan 11 14:29:39 CST 2023 (1673418579674)
[jmeter] ... end of run _message_xalan: xslt-report:
[xslt] Processing /opt/pertest/test.jtl to /opt/pertest/test.html
[xslt] Loading stylesheet /usr/local/apache-ant-1.10.13/bin/jmeter-results-detail-report_21.xsl verify-images: copy-images:
[copy] Copying 1 file to /opt/pertest
[copy] Copying 1 file to /opt/pertest report:
[echo] Report generated at 2023/01/11 14:29 all: BUILD SUCCESSFUL
Total time: 55 seconds
[root@qy-ggyf-zyl-32 pertest]#

5. 查看测试报告

6. 批量运行多个脚本

6.1 修改配置文件

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

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

<?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="/opt/apache-jmeter-5.4.1" />
<!-- 设置脚本的测试目录-->
<property name="jmeter.dir" value="/opt/pertest" /> <!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="${jmeter.dir}/report/jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="${jmeter.dir}/report/html" /> <!-- 生成的报告的前缀-->
<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="test" />
<antcall target="report" />
</target> <target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl"> <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本,也可以指定具体执行的脚本-->
<testplans dir="${jmeter.dir}" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter>
</target> <target name="report">
<tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt> <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target> <path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
</project>

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

6.3 在Jenkins执行构建任务

  控制台输出,如下:

Started by user silgen
Running as SYSTEM
Building in workspace /root/.jenkins/workspace/Api_test
[bin] $ /usr/local/apache-ant-1.10.13/bin/ant -file build.xml
Buildfile: /usr/local/apache-ant-1.10.13/bin/build.xml run: test:
[jmeter] Executing test plan: /opt/pertest/凭证箱列表查询.jmx ==> /opt/pertest/report/jtl/TestReport202301110422.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using /opt/pertest/凭证箱列表查询.jmx
[jmeter] Starting standalone test @ Wed Jan 11 16:22:50 CST 2023 (1673425370183)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
[jmeter] summary = 1 in 00:00:00 = 2.0/s Avg: 220 Min: 220 Max: 220 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Wed Jan 11 16:22:50 CST 2023 (1673425370994)
[jmeter] ... end of run
[jmeter] Executing test plan: /opt/pertest/登录.jmx ==> /opt/pertest/report/jtl/TestReport202301110422.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using /opt/pertest/登录.jmx
[jmeter] Starting standalone test @ Wed Jan 11 16:22:52 CST 2023 (1673425372803)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
[jmeter] summary = 2 in 00:00:01 = 3.7/s Avg: 96 Min: 15 Max: 177 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Wed Jan 11 16:22:53 CST 2023 (1673425373735)
[jmeter] ... end of run report:
[xslt] Processing /opt/pertest/report/jtl/TestReport202301110422.jtl to /opt/pertest/report/html/TestReport202301110422.html
[xslt] Loading stylesheet /opt/apache-jmeter-5.4.1/extras/jmeter-results-detail-report_21.xsl
[copy] Copying 2 files to /opt/pertest/report/html BUILD SUCCESSFUL
Total time: 6 seconds
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. cat,more,cp,mv,rm,命令

    cat命令 查看文件内容 语法:cat[linux路径] more命令查看文件内容 more命令同样可以查看文件内容, 同cat不同的是: •cat是直接将内容全部显示出来 •more支持翻页,如果文 ...

  2. percona-server-rocksdb-8.0.32 安装

    MyRocks是关系型数据库Mysql 基于RocksDB 的存储引擎,一个可嵌入的.持久的键值存储.Percona MyRocks 是集于 Percona Server for MySQL的. Ro ...

  3. 2022-09-13:给你两个整数 m 和 n ,分别表示一块矩形木块的高和宽。 同时给你一个二维整数数组 prices ,其中 prices[i] = [hi, wi, pricei] 表示你可以

    2022-09-13:给你两个整数 m 和 n ,分别表示一块矩形木块的高和宽. 同时给你一个二维整数数组 prices ,其中 prices[i] = [hi, wi, pricei] 表示你可以以 ...

  4. 2021-08-11:按要求补齐数组。给定一个已排序的正整数数组 nums,和一个正整数 n 。从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用

    2021-08-11:按要求补齐数组.给定一个已排序的正整数数组 nums,和一个正整数 n .从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用 ...

  5. TestForPicGo

    如果显示,则为成功 否则,失败 同时为CN-BLOG的vscode插件进行测试

  6. 2013年蓝桥杯C/C++大学B组省赛真题(翻硬币)

    题目描述: 明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如 ...

  7. WPF入门教程系列二十六——DataGrid使用示例(3)

    WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...

  8. Isito 入门:为什么学 Istio、Istio 是什么

    1,Istio 概述 聊聊微服务设计 似乎用上 Kubernetes ,就是微服务系统了. 碰到很多人或公司盲目崇拜 Kubernetes ,一直喊着要上 Kubernetes,但是本身既没有技术储备 ...

  9. awk 内置变量与自定义变量

    点击上方" 生信科技爱好者 ",马上关注 真爱,请置顶或星标 作者:ghostwu 原文:https://www.cnblogs.com/ghostwu/p/9085653.htm ...

  10. 【python基础】循环语句-while循环

    1.初识while循环 循环语句主要的作用是在多次处理具有相同逻辑的代码时使用.while循环是Python提供的循环语句之一. while循环的语法格式之一: 比如我们输出1-10之间的奇数,编写程 ...