詳解使用Git和Jmeter-Maven-Plugin管理Jmeter腳本的接口測試方案
上一篇文章中講解了如何使用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文件。