jenkins|「2019-11新」jenkins+maven+jmeter组合实现接口自动化测试
该实践需要一下工具:
-
- maven,安装一个maven即可,或者你有java的ide编辑器也行,推荐后者的;
- jenkins,如果是公司有,就不需要自己单独安装,如果自己想做更多的实践,可以自己安装一下。这是一个用得最广泛持续集成工具了;
- jmeter,在这个教程上,可以不需要自己额外安装,因为maven会帮你下载,当然我想你的本机环境已有
step1,新建一个maven项目,pom.xml是关键
文章图片
文章图片
文章图片
文章图片
4.0.0 com.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
false true
【jenkins|「2019-11新」jenkins+maven+jmeter组合实现接口自动化测试】其实我们在2016年就采用过这种实践了,那时用的是比较原始的办法。而且jmeter-maven-plugi这个插件版本是1.1.x,那时我花了点时间去认真读官网内容,包括例子,正因为那时的折腾,捣鼓,读通读懂,时至今日,我能花小小的半个小时就重拾起。java体系的依赖包管理工具,ant是1.0,maven是2.0,gradle是3.0 。
到这里,我就真得说说,这里你百度到的东西都是陈旧的,可能是被人复制黏贴用烂掉的技术了。我们都是后生仔,要敢于创新。学习真的需要讲究方法,最好的办法就是去官网学习,强迫自己去读英文,有兴趣并且有时间的同学可以把英文翻译成中文教程,这样你的博客必定能涨粉。
文章图片
接下来就是把项目上传到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 \
最后生成的文件有如下:
文章图片
可以简单剖析一下,里面的组织方式也是值得我们学习的。通过最简单的修改,就能够跑起来了。
好吧,这种方案我就介绍到此。这种的话,后期的维护成本较高,不利于团队统一管理,下面介绍一种较通用,接近银弹的方式,这种方式是前期开发jmx,测试用例+数据参数化的成本较高,当前已经是不是问题了。
文章图片
文章图片
不论服务或者api再多接口,我们就都用同一套jmx,维护两张数据库表即可,同样,初始化的时候可以python插入。缺点是,可能会造成性能测试常态化响应时间会偏大,原因是有额外的性能开销。脚本开发好后,将其放置上面maven项目,src/test/jmeter目录下,git commit
step3,jenkins配置
jenkins安装三个必要的插件。
- Maven Integration
- HTML Publishe
- Performance
文章图片
文章图片
文章图片
配置好后就尝试运行一下。期间运行几次后,碰到几个问题,一个是html和结果报告路径配置不对,这个根据日志的输出就能很快找到了。另一还碰到了一个问题,就是html样式报告显示不全的问题,解决方案如下:
进入Manage Jenkins-> Script console,输入如下命令并进行执行。
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
当看到如下结果后,则说明配置修改已经生效。
Result
Result:
再次进行构建,新生成的HTML就可以正常展示样式了。需要说明的是,该操作对之前构建生成的HTML报告无效。
图例:
最后的报告如下:
文章图片
推荐阅读
- 八、「料理风云」
- 「#1-颜龙武」区块链的价值是什么()
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 「我的2017」——2017|「我的2017」——2017,大事件盘点
- 2019-11-24|2019-11-24 第三个复盘日
- 「适合发朋友圈的可爱短句文案」
- 「漫威之父」斯坦·李去世,回味老爷子在漫威中客串的各种角色
- 史前艺术的审美类型「清央美术」
- 「未来30年」你的孩子会成为社会精英吗()