性能测试自动化背景
很多性能测试工程师在进行性能测试执行时,都会出现工作时间的限制,特别是性能场景的执行,一般由于白天测试环境不稳定、需要进行功能测试。所以许多场景的执行需要放在晚上执行,而且需要一个一个的执行,这样作为性能测试工程师,就必须加班加点或者通宵进行场景执行。那么有没有一个工具或者好的方法实现一键式或者说是自动化的方式,使场景能够按照我们事先设置好的规则进行执行呢?
性能测试自动化方案
方案对比
1、LoadRunner作为以前很火的性能测试工具是自带定时配置,到达配置的指定时间就会开始执行。但是随着LoadRunner不开源,各大公司开始转向使用轻量级的开源工具,目前比较主流的当属于jmeter。
2、jenkins+ant+jmeter,书本上经常介绍的方案,但是实际操作发现其实可以不用ant,使用ant去构建,会发现很难实现参数配置,比如指定线程组参数去执行性能测试。
3、python/java实现定时自动执行,需要编写代码并且调试,需要花费较长的时间。
我的方案
那么我采用的方案是什么呢?
我采用的是第四种:Jenkins+jmeter。直接用Jenkins调用jmeter去执行,可以利用Jenkins的前端页面去配置参数,通过制定参数去调用jmeter执行。并且使用定时器制定时间去执行。
- 通过定时任务定时到晚上执行,这样测试人员不用晚上加班,实现无人值守,并且不会占用白天的测试环境,有效利用晚上的环境进行测试。
- 各个测试小组的人定时到不同的时间点去执行测试,实现梯队式性能测试,解决多个组抢占测试资源的问题。
- 通过部署性能测试自动化平台到单独服务器上,释放测试人员本地主机资源。
- 将性能测试报告、脚本等数据保存在git、nginx静态资源web服务器,实现测试数据的有效归档。
技术方案流程图
技术方案流程介绍
1、在平台上传脚本与参数化csv的测试文件,上传到GitHub上。
2、Jenkins指定分支拉取文件到本地D:\apache-jmeter-3.1\jmx
3、Jenkins设置构建触发器定时任务
4、Jenkins通过命令行调用jmeter执行性能测试
5、jmeter执行完成生成的测试报告,保存到nginx搭建的web服务器
6、通过调用nginx访问测试报告