「2019-11新」jenkins+maven+jmeter组合实现接口自动化测试

1 篇文章 0 订阅
1 篇文章 0 订阅

该实践需要一下工具:

    1. maven,安装一个maven即可,或者你有java的ide编辑器也行,推荐后者的;
    2. jenkins,如果是公司有,就不需要自己单独安装,如果自己想做更多的实践,可以自己安装一下。这是一个用得最广泛持续集成工具了;
    3. jmeter,在这个教程上,可以不需要自己额外安装,因为maven会帮你下载,当然我想你的本机环境已有

 

step1,新建一个maven项目,pom.xml是关键

image.png

image.png

image.png

image.png

image.png

 

<?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>com.deepexi.qa</groupId>
    <artifactId>good-api-test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>2.9.0</version>
                <executions>
                    <execution>
                        <id>jmeter-tests</id>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <jmeterExtensions>
                        <artifact>mysql:mysql-connector-java:8.0.18</artifact>
                    </jmeterExtensions>
                    <!-- The plugin uses some broken dependencies
                         An alternative is to set this to true and use excludedArtifacts, see below
                    -->
                    <downloadExtensionDependencies>false</downloadExtensionDependencies>
<!--                    <jmeterVersion>5.2.1</jmeterVersion>-->
                    <generateReports>true</generateReports>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!--        <dependency>-->

<!--        </dependency>-->
    </dependencies>


</project>

其实我们在2016年就采用过这种实践了,那时用的是比较原始的办法。而且jmeter-maven-plugi这个插件版本是1.1.x,那时我花了点时间去认真读官网内容,包括例子,正因为那时的折腾,捣鼓,读通读懂,时至今日,我能花小小的半个小时就重拾起。java体系的依赖包管理工具,ant是1.0,maven是2.0,gradle是3.0 。

到这里,我就真得说说,这里你百度到的东西都是陈旧的,可能是被人复制黏贴用烂掉的技术了。我们都是后生仔,要敢于创新。学习真的需要讲究方法,最好的办法就是去官网学习,强迫自己去读英文,有兴趣并且有时间的同学可以把英文翻译成中文教程,这样你的博客必定能涨粉。

image.png

image.png

接下来就是把项目上传到gitlab上,折腾了好些时间,原来这里设定不能直接提交到master,git地址是http://gitlab.xxx/qa/goodapitest.git,之后在jenkins需要用到。

 

step2,开发jmx脚本

这步是三步中最重要的一步了。可以说,接口自动化最后的质量就是体现在这。如果是一个全新的被测服务,如果接入了swagger,如果我们不但要做接口自动化测试,还有性能测试常态化的话,我们可以这样:

📎swagger-codegen-cli-2.2.1.jar

虽然个人习惯用一些新的东西,可是比如说这个swagger-codegen-cli.jar包的话,并不是所有版本都能够执行,有些执行会报错。这个是官方文档里推荐的。如果用brew install 安装的话,安装成功,但是往往不能兼容到swagger2.0的版本会报错。

java -jar swagger-codegen-cli-2.2.1.jar generate -i "http://120.24.57.116:8118/v2/api-docs" -l jmeter

 

java -jar swagger-codegen-cli.jar generate  \
  -i swagger.json  \
  -l jmeter \
  -o ./jmeter \

最后生成的文件有如下:

image.png

可以简单剖析一下,里面的组织方式也是值得我们学习的。通过最简单的修改,就能够跑起来了。

image.png

image.png

image.png

好吧,这种方案我就介绍到此。这种的话,后期的维护成本较高,不利于团队统一管理,下面介绍一种较通用,接近银弹的方式,这种方式是前期开发jmx,测试用例+数据参数化的成本较高,当前已经是不是问题了。

image.png

image.png

image.png

不论服务或者api再多接口,我们就都用同一套jmx,维护两张数据库表即可,同样,初始化的时候可以python插入。缺点是,可能会造成性能测试常态化响应时间会偏大,原因是有额外的性能开销。脚本开发好后,将其放置上面maven项目,src/test/jmeter目录下,git commit

 

step3,jenkins配置

jenkins安装三个必要的插件。

  1. Maven Integration
  2. HTML Publishe
  3. Performance

新建一个maven风格的项目

image.png

image.png

image.png

配置好后就尝试运行一下。期间运行几次后,碰到几个问题,一个是html和结果报告路径配置不对,这个根据日志的输出就能很快找到了。另一还碰到了一个问题,就是html样式报告显示不全的问题,解决方案如下:

进入Manage Jenkins-> Script console,输入如下命令并进行执行。

 

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

当看到如下结果后,则说明配置修改已经生效。

 

Result

Result:

再次进行构建,新生成的HTML就可以正常展示样式了。需要说明的是,该操作对之前构建生成的HTML报告无效。

 

图例:

最后的报告如下:

image.png

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值