编辑推荐: |
本文首先讲解了如何使用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文件。
|