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

该实践需要一下工具:

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

step1,新建一个maven项目,pom.xml是关键
jenkins|「2019-11新」jenkins+maven+jmeter组合实现接口自动化测试
文章图片

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

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

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



4.0.0com.deepexi.qa good-api-test 1.0-SNAPSHOT com.lazerycode.jmeter jmeter-maven-plugin 2.9.0 jmeter-tests jmeter mysql:mysql-connector-java:8.0.18 falsetrue

【jenkins|「2019-11新」jenkins+maven+jmeter组合实现接口自动化测试】其实我们在2016年就采用过这种实践了,那时用的是比较原始的办法。而且jmeter-maven-plugi这个插件版本是1.1.x,那时我花了点时间去认真读官网内容,包括例子,正因为那时的折腾,捣鼓,读通读懂,时至今日,我能花小小的半个小时就重拾起。java体系的依赖包管理工具,ant是1.0,maven是2.0,gradle是3.0 。
到这里,我就真得说说,这里你百度到的东西都是陈旧的,可能是被人复制黏贴用烂掉的技术了。我们都是后生仔,要敢于创新。学习真的需要讲究方法,最好的办法就是去官网学习,强迫自己去读英文,有兴趣并且有时间的同学可以把英文翻译成中文教程,这样你的博客必定能涨粉。

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

接下来就是把项目上传到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 \

最后生成的文件有如下:
jenkins|「2019-11新」jenkins+maven+jmeter组合实现接口自动化测试
文章图片

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



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

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

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

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

step3,jenkins配置
jenkins安装三个必要的插件。
  1. Maven Integration
  2. HTML Publishe
  3. Performance
新建一个maven风格的项目
jenkins|「2019-11新」jenkins+maven+jmeter组合实现接口自动化测试
文章图片

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

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

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

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
当看到如下结果后,则说明配置修改已经生效。

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

图例:
最后的报告如下:

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

    推荐阅读