您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
详解使用Git和Jmeter-Maven-Plugin管理Jmeter脚本的接口测试方案
 
作者:测试开发Kevin
   次浏览      
 2022-6-10
 
编辑推荐:
本文首先讲解了如何使用jmeter进行接口测试以及落地的方案,接着深入讲解如何通过git和jmeter-maven-plugin来管理jmeter脚本,以及其如何在接口持续集成测试中进行应用 ,希望本文对您的学习有所帮助。
本文来自于51CTO,由火龙果软件Alice编辑、推荐。

Jmeter落地接口测试的实现方案

前接口测试越来越重要,也普遍得到了各个公司的重视,通常开展接口测试的方案有:

  • 代码(java或者python),要求测试人员有基础的编码能力,实现有一定门槛。
  • jmeter,绝大多数场景无需编码,另外便于直接对接口进行性能测试(增加线程组中的线程数即可)。
  • 自己研发的测试平台,大厂秀kpi的东东,普通公司不需要玩这个。

在这里我来讲解一下通过jmeter落地接口测试的方案,本文先介绍用例的设计逻辑,以及jmeter中一些相关的基础的技术点,接着会重点介绍如何通过git和jmeter-maven-plugin插件管理jmeter接口文档!

备注: 本文默认读者了解接口测试的基础概念,能够对jmeter进行基础操控。

基础设计逻辑

应用为基础创建Jmeter脚本,即.jmx文件,一个人创建一个jmx文件(避免不熟悉git操作的同学多人协作时产生冲突)

各个模块进行细分,一个简单控制器就是一个模块(一个简单控制器中可以包括多个接口),如下图:

一个接口就是一个sampler(通常都是http类型接口),如下图:

每个接口都需要有响应断言来校验接口的返回值正确性(依赖接口文档)。

统一设计查看结果树和聚合报告,用来查看接口的执行结果。

整体用例组织结构,如下:

使用jmeter执行基础接口测试时,常用的知识点汇总如下:

  • 用户自定义变量。
  • 定义形式是:${变量名}。
  • 例如:/url&accessToken=${access_token}。

线程组>右键添加>配置元件>用户定义的变量,如下图:

以后再次调用时就可以使用${user}。

我们也可以把变量放到配置文件中,然后读取,具体方法如下:

线程组>右键添加>配置元件> CSV 数据文件设置,如下图:

设置完成后,就可以把文件中的变量赋值给user和password了,然后脚本中就可以进行引用了。

备注:

  • 再次循环 True: 假设csv 文件共有 10 条记录,但是线程循环15次,执行 10 次后,重头开始循环。
  • 停止线程 False: ,如果全部取完了想继续那就是True,如果想文件的数据用完就结束,比如注册不可以重复用,那就设置False。

默认请求

线程组>右键添加>配置元件>HTTP请求默认值。

设置的好处是,请求中不需要再设置ip和端口了,有利于在不同环境中的统一配置。

信息头管理器

线程组或者具体请求(作用域不同)>右键添加>配置元件>。

以json为例:

JSON Extractor

请求>右键添加>后置处理器> JSON Extractor。

例如响应:

{"status":200,"message":"","data":{"testCode":" 95a9a6dfc3e5e8107523a782fc4cc55x",
"token":" 00522794718a07fac56c7d18f2e8c9xy","refreshToken":" 8e10d3a688a97bdecbb441a9590fa0zz","expires":604800}}

上图中的token代表着变量名称。

$.data.token 是固定写法,表示取响应中的data值中的token内容:

00522794718a07fac56c7d18f2e8c9xy,并把其赋值给变量token。

总体策略

  • 使用公司的gitlab管理jmeter脚本(maven工程),大家每次本地编辑脚本后都需要提交更新的脚本到gitlab。
  • 每个人只更新维护自己的脚本(避免引起冲突)。
  • 脚本提交前要确保脚本执行的正确性。
  • 只在主干工作,没有涉及到分支。
  • 后续使用 jmeter-maven-plugin对jmx执行进行管理,这样方便了jmx接口测试脚本在持续集成中的应用(脚本编写人员无须关注)

接下来会对git基础概念和 jmeter-maven-plugin进行基础介绍:

Git基础概念

这部分讲解非常实用简单,即使大家是git小白,看了这篇文章也会快速上手git!

Git 工作区、暂存区和版本库概念:

工作区:就是在电脑里能看到的目录,下图中的workspace。

暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),下图中的staging area。

版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

对应下图中的local repository(本地)和remote repository(远程,通常指github、gitlab)

重点!重点!重点!对于git的各种命令使用记住上面这个图就可以了!!!

核心命令

  • clone(克隆): 从远程仓库中克隆代码到本地仓库。
  • checkout (检出):从本地仓库中检出一个仓库分支然后进行修订。
  • add(添加): 在提交前先将代码提交到暂存区。
  • commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本。
  • fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  • pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到工作区,相当于 fetch+merge。
  • push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库。

初始化

git init初始化仓库。

备注:使用git clone 无须初始化仓库。

提交代码到仓库

  • git add [file1] [file2] ... 添加一个或多个文件到暂存区。
  • git add [dir] 添加指定目录到暂存区,包括子目录。
  • git add . 添加当前目录下的所有文件到暂存区,提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件。
  • git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)。
  • git add -A 提交所有变化。
  • git commit -m '初始化项目版本' 提交暂存区到本地仓库中:
  • git commit -a 参数a设置修改文件后不需要执行 git add 命令,直接来提交。

修改

  • git status 查看仓库当前的状态,显示有变更的文件。
  • git diff 比较文件的不同,即暂存区和工作区的差异。
  • git diff <分支名1> <分支名2> :比较两个分支上最后 commit 的内容的差别。
  • git diff --cached 或 git diff --staged:显示暂存区(已add但未commit文件)和最后一次commit(HEAD)之间的所有不相同文件的增删改。
  • git diff HEAD:显示工作目录(已track但未add文件)和暂存区(已add但未commit文件)与最后一次commit之间的所有不相同文件的增删改。
  • git reset 回退版本。
  • git rm 删除工作区文件。
  • git mv 移动或重命名工作区文件。

提交日志

  • git log 查看历史提交记录。
  • git blame <file> 以列表形式查看指定文件的历史修改记录。

远程操作

  • git remote 远程仓库操作。
  • git fetch 从远程获取代码库。
  • git pull 下载远程代码并合并。
  • git push 上传远程代码并合并。

Git 分支管理

  • git branch 查看分支。
  • git branch aa 添加分支aa。
  • git checkout aa 切换到aa分支。
  • git branch -d aa 删除aa分支。
  • git branch -d aa 合并完后就可以删除分支。

jmeter-maven-plugin管理jmx文件

jmeter-maven-plugin实现了在maven项目中运行jmx文件进而批量执行jmeter脚本并生成测试报告的需求,这样在持续继承中运行jmx脚本就非常方便了,pom.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>JmeterAPI</artifactId>
<version>1.0-SNAPSHOT</version>
-<build>
-<plugins>
-<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>3.4.0</version>
-<executions>
<!-- Generate JMeter configuration -->
-<execution>
<id>configuration</id>
-<goals>
<goal>configure</goal>
</goals>
</execution>
<!-- Run JMeter tests -->
-<execution>
<id>jmeter-tests</id>
-<goals>
<goal>jmeter</goal>
</goals>
</execution>
<!-- Fail build on errors in test -->
-<execution>
<id>jmeter-check-results</id>
-<goals>
<goal>results</goal>
</goals>
</execution>
</executions>
-<configuration>
<generateReports>true</generateReports>
-<testFilesExcluded>
<excludeJMeterTestFile>Demo.jmx</excludeJMeterTestFile>
<ignoreResultFailures>true</ignoreResultFailures>
</testFilesExcluded>
</configuration>
</plugin>
</plugins>
</build>

使用该插件核心有以下三点:

  • 使用jmeter-maven-plugin,我们需要把所有的用例放在/src/test/jmeter目录下。
  • 运行脚本通过mvn clean verify。
  • 生成的日志和报告在工程目录 \target\jmeter,一个jmx脚本会生成一个报告。

在pom.xml中,如果你想忽略某个jmx文件的运行,可以如下设置:

<excludeJMeterTestFile>Demo.jmx</excludeJMeterTestFile>

默认如果jmx执行过程中有错误,则会停止运行,pom中配置<ignoreResultFailures>true</ignoreResultFailures>则可以避免这个问题。

还有很多关于jmeter-maven-plugin的使用技巧等待大家自行探索,非常简单,参考:

https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki 完全可以轻松搞定!

Git管理脚本的具体应用

具体执行步骤:

本机安装git环境,下载git bash并默认安装即可,官方链接如下:

https://git-scm.com/downloads。

在git bash中可以使用linux命令进行相关操作,创建一个目录

执行命令 git init,初始化git工程

执行命令 git pull 下载远程项目到本地(我们前一章节讲解的使用了jmeter-maven-plugin的maven项目)

进入工程目录。

/JmeterScript/YourAPIProject/src/test/jmeter

通过jmeter编写接口用例,然后把本地jmx用例拷贝到目录

/JmeterScript/YourAPIProject/src/test/jmeter中,这样就实现了git 与maven项目的文件关联。

先后执行命令:

git add 具体业务.jmx (只提交自己的jmx文件即可)
git commit –m “提交信息”

备注:首次提交需要执行命令。

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

执行命令git push origin master 把脚本上传到gitlab(完成了脚本的上传工作)。

备注:如果只有自己维护代码大家只需要执行push 操作更新gitlab脚本即可;如果涉及多人共享,需要先执行git pull origin master,从gitlab获取最新代码,然后在进行编辑,最后提交。

运行jmx脚本

我们可以定时构建使用了jmeter-maven-plugin的maven项目。

  • 运行脚本通过mvn clean verify。
  • 生成的日志和报告在工程目录 \target\jmeter。
  • 分析日志和报告,判断接口的执行情况,这里需要写一些代码对生成的报告进行解析 ,在此就不详细介绍了。

总结

文章写了很多,但是总结起来其实很简单,主要包括以下四点:

  • 把jmx放在maven的工程里,通过jmeter-maven-plugin管理jmx的运行策略。
  • maven工程放到gitlab中,通过git上传下载工程文件。
  • 本地的jmx文件,通过git上传到gitlab中。
  • 通过构建maven工程运行jmx文件。

 

 

 
   
次浏览       
相关文章

每日构建解决方案
如何制定有效的配置管理流程
配置管理主要活动及实现方法
构建管理入门
相关文档

配置管理流程
配置管理白皮书
CM09_C配置管理标准
使用SVN进行版本控制
相关课程

配置管理实践
配置管理方法、工具与应用
多层次集成配置管理
产品发布管理

最新活动计划
数据建模方法与工具 12-3[北京]
基于模型系统仿真与验证 12-14 [讲座]
白盒测试技术与工具实践 12-24[线上]
LLM大模型应用与项目构建 12-26[特惠]
UML和EA进行系统分析设计 12-20[线上]
SysML建模专家 1-16[北京]
 
 
最新文章
git原理图解
Git分支管理实践
Git学习和项目应用实例
Git 天天用 但是 Git 原理你了解吗?
对比 Git 与 SVN,这篇讲的很易懂
最新课程
Git版本控制系统
配置管理与持续集成实践
配置管理方法、实践、工具与应用
持续集成与敏捷开发
配置管理实践(从组织级到项目级)
更多...   
成功案例
某单位研发中心 产品集成与服务平台
某电子制造商 配置管理与持续集成
北京 配置管理与持续集成实践
金雅拓 分布式持续集成工具链
北京 持续集成测试最佳实践
更多...