使用maven运行jmeter测试脚本进行自动化接口测试
准备工作
假设你已经下载并安装好如下软件:
使用 idea 创建 maven 项目工程
添加 jmeter 测试脚本
在 src/test
文件夹内创建jmeter
文件夹用于存放 jmeter 测试脚本。可以使用子文件夹,无需将 jmeter 这个文件夹的类型设置为 test。
修改 pom.xml 添加 jmeter 插件 (重点)
maven 集成 jmeter-maven-plugin 可以运行自动化测试。
<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
<artifactId>jxyx-app-testing</artifactId>
<version>1.0.1</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<java.version>1.8</java.version>
<!-- 指定jmeter版本 -->
<jmeter.version>5.4.3</jmeter.version>
<!-- 指定jmeter-plugin版本 -->
<jmeter-plugin-version>3.5.0</jmeter-plugin-version>
<!-- 指定使用的mysql jdbc driver的版本 -->
<mysql-driver.version>8.0.29</mysql-driver.version>
</properties>
<profiles>
<profile>
<!-- 定义测试环境 -->
<id>test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<testing.host>test-cps.example.org</testing.host>
<testing.db>test</testing.db>
</properties>
</profile>
<profile>
<!-- 定义预发环境 -->
<id>pre</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<testing.host>pre-cps.example.org</testing.host>
<testing.db>pre</testing.db>
</properties>
</profile>
</profiles>
<build>
<!-- 配置使用变量的配置文件-->
<!-- <filters>-->
<!-- <filter>src/test/resources/testing-config.properties</filter>-->
<!-- </filters>-->
<!-- <resources>-->
<!-- <!–配置文件路径–>-->
<!-- <resource>-->
<!-- <directory>src/test/resources</directory>-->
<!-- <filtering>true</filtering>-->
<!-- </resource>-->
<!-- </resources>-->
<plugins>
<plugin>
<!-- 命令行执行: mvn clean verify -->
<!-- 文档及配置 https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki/ -->
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>${jmeter-plugin-version}</version>
<configuration>
<!-- 使用特定的 jmeter 版本 -->
<jmeterVersion>${jmeter.version}</jmeterVersion>
<generateReports>true</generateReports>
<propertiesUser>
<!-- 用户定义的变量,相当于 jmeter 的 -J选项传递的变量及值 -->
<!-- 定义线程数threads变量 -->
<threads>1</threads>
<!-- 定义接口主机host变量 -->
<host>${testing.host}</host>
<db>${testing.db}</db>
</propertiesUser>
<testPlanLibraries>
<!-- 依赖的额外的java jar 文件 -->
<artifact>mysql:mysql-connector-java:${mysql-driver.version}</artifact>
</testPlanLibraries>
<testFilesIncluded>
<!-- 指定运行的jmeter脚本 -->
<jMeterTestFile>**/*.jmx</jMeterTestFile>
</testFilesIncluded>
</configuration>
<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>
</plugin>
</plugins>
</build>
</project>
首次配置
首次运行时,需要先进行 jmeter 配置。运行如下命令进行配置:
# 配置
mvn jmeter:configure
# 测试
mvn jmeter:jmeter
运行测试用例
使用默认的测试环境进行测试
# 清理并测试
mvn clean verify
# 指定使用 test profile
mvn clean verify -Ptest
# 仅仅测试
mvn verify
# 指定使用 test profile
mvn verify -Ptest
使用预发布环境进行测试
# 指定使用 pre profile
mvn clean verify -Ppre
# 指定使用 test profile
mvn verify -Ppre
结语
至此,jmeter 已经能够和 maven 正常结合起来。再集成进 Jenkins 或 gitlab 就可以进行自动化构建和测试了。