上一篇文章中讲解了如何使用jmeter进行接口测试以及落地的方案,详情参考:
本文我们来继续这一话题,深入讲解如何通过git和jmeter-maven-plugin来管理jmeter脚本,以及其如何在接口持续集成测试中进行应用。
总体策略
- 使用公司的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文件。