1. 程式人生 > >Jmeter+Maven+jenkins介面和效能可持續整合測試

Jmeter+Maven+jenkins介面和效能可持續整合測試

話說無時無刻都覺得有很多東西需要學習,但是我所奉行的理念的就是每天都進步一點,不斷完善不斷提高!!!!話不多說,進入正題:其實在本文最重要的應該就是jmeter的指令碼和pom.xml檔案
一、首先當然是在Jmeter的工具裡面編寫好自己的指令碼,除錯執行成功。本文就以專案測試中的兩個指令碼為例。
二、新建MAVEN工程,我用的是Eclipse
1、在src/test目錄下新建jmeter目錄,然後把自己的測試指令碼丟進去

這裡寫圖片描述

2、在在src/test目錄下新建resources目錄,然後把測試模板丟進去。
在Jmeter3.2中自帶的模板是下圖的兩個,apache-jmeter-3.2\extras

這裡寫圖片描述

但是基於自帶的模板太簡單了,需要去網上下載比較好用的模板,我這裡下載的就是這兩個,反正喜歡哪個就把哪個丟進去。

這裡寫圖片描述

3、編寫pom.xml檔案
我這裡列舉比較重要的幾點
(1)新增jmeter-maven-plugin依賴,這樣才能在eclipse裡面執行Jmeter的指令碼,而不依賴與Jmeter這個工具本身;
(2)由於jmeter-maven-plugin這個外掛生成的測試結果的格式是jtl的,我們需要轉換成html的,更直觀,而且能在jenkins中直接顯示;
(3)在本人構建專案的過程中,遇到一個比較大的坑就是html頁面顯示出來的資料有一些是NaN的

這裡寫圖片描述

這個問題確實困擾了我很久,在網上搜到的辦法都是關於ant的。相對於Maven的資料相對就很少了。後來才發現需要用XSLT2.0,在pom.xml中新增依賴就可以了

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion
>
<groupId>zdt</groupId> <artifactId>zdt-test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>zdt-test</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir> <jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir> <jmeter.result.html.dir1>${project.build.directory}\jmeter\html1</jmeter.result.html.dir1> <ReportName>TestReport</ReportName> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>com.lazerycode.jmeter</groupId> <artifactId>jmeter-maven-plugin</artifactId> <version>2.2.0</version> <configuration> <resultsFileFormat>xml</resultsFileFormat> <ignoreResultFailures>true</ignoreResultFailures> <testResultsTimestamp>false</testResultsTimestamp> </configuration> <executions> <execution> <id>jmeter-tests</id> <phase>verify</phase> <goals> <goal>jmeter</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>xml-maven-plugin</artifactId> <version>1.0-beta-3</version> <executions> <execution> <phase>verify</phase> <goals> <goal>transform</goal> </goals> </execution> </executions> <configuration> <transformationSets> <transformationSet> <dir>${jmeter.result.jtl.dir}</dir> <stylesheet>src\test\resources\jmeter-results-report-loadtest.xsl</stylesheet> <outputDir>${jmeter.result.html.dir}</outputDir> <fileMappers> <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper"> <targetExtension>html</targetExtension> </fileMapper> </fileMappers> </transformationSet> <transformationSet> <dir>${jmeter.result.jtl.dir}</dir> <stylesheet>src\test\resources\jmeter.results.shanhe.me.xsl</stylesheet> <outputDir>${jmeter.result.html.dir1}</outputDir> <fileMappers> <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper"> <targetExtension>html</targetExtension> </fileMapper> </fileMappers> </transformationSet> </transformationSets> </configuration> <!-- using XSLT 2.0 --> <dependencies> <dependency> <groupId>net.sf.saxon</groupId> <artifactId>saxon</artifactId> <version>8.7</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>

至此專案的執行應該不存在問題了。在Eclipse中執行之後就會有測試結果。
results、html、html1三個檔案中存在的就是jtl、HTML、HTML格式的測試結果。html中得測試結果更偏向於效能測試,html1中的測試結果更多的是顯示一些介面資訊,適用於介面測試。

這裡寫圖片描述

三、在Jenkins進行自動化構建並展示測試結果
在jenkins進行構建之前首先需要裝幾個外掛
Maven Integration plugin Maven外掛;
Git plugin GIT 外掛;
Performance plugin 效能報告外掛;
HTML Publisher plugin HTTP report外掛;
前面兩個外掛是因為專案本身是Maven專案,程式碼統一傳在git上;後面兩個外掛只是為了展示測試報告。

1、建立一個Maven專案

這裡寫圖片描述

2、選擇存放程式碼的位置。git伺服器的URL地址

這裡寫圖片描述

build中填寫pom.xml路徑

這裡寫圖片描述

至此應該可以構建成功了。

這裡寫圖片描述

檢視構建日誌

這裡寫圖片描述

3、但是我們還需要一些步驟來做測試前準備和測試後報告展示

測試前準備:pre steps

在下一次測試前刪除上一次的測試結果,這裡可以執行各種型別的指令碼,因為我們的伺服器是linux的,所以這裡選的是shell指令碼

這裡寫圖片描述

測試後測試結果展示:
(1)jenkins設定展示jtl的測試結果

這裡寫圖片描述

展示的效果:

這裡寫圖片描述

這裡寫圖片描述

(2)jenkins設定展示成html

這裡寫圖片描述

展示的效果:

這裡寫圖片描述

scenario1 HTML Report:

這裡寫圖片描述

scenario1 HTML Report1:(這個需要修改jmeter.properties檔案,把需要的欄位改為true,否則顯示不出來)

這裡寫圖片描述