背景:用过jmeter做性能测试的都知道,jmeter脚本用命令执行要求生成报告的路径为空,每次跑完都要手动去清理路径。
命令如下:jmeter -n -t E:\工作文件\***.jmx -l E:\工作文件\jmeter测试报告\result.jtl -e -o E:\工作文件\jmeter测试报告\html -JthreadNum=5 -JrampupTime=1 -JloopCount=10
而且由于我们测试资源有限,与开发公用一套环境,白天做性能测试容易把系统搞崩耽误开发进度。
有没有办法解决不需要重复地清空报告路径,也可以跟开发错峰使用测试环境???
方法总比困难多,在我们一步一步探索中,终于找到了方法:jenkins,真香!!
解决方法思路
使用jenkins集成jmeter,批处理jmeter脚本,空闲时间跑性能测试,生成测试报告
两个重要插件:Multijob plugin和HTML Publisher plugin。
其中Multijob plugin用于管理多个job的,HTML Publisher plugin用于展示jmeter生成的测试报告。
步骤一:新建job,参数化jenkins路径、脚本路径、jmeter并发数threadNum、启动时间rampupTime 、持续时间duration
General --> This project is parameterized ---> 添加参数 --> String Parameter
如:
步骤二:源码在本地的,勾选“无”,我脚本在本地,没有使用git或者svn管理。
步骤三:构建触发器选中定期构建
此步骤可以定期构建脚本,配置闲时构建,错开高峰期。这也是jenkins的重要功能。
日程表语法:
步骤四:构建环境默认,都不勾选。
步骤五:重要步骤在构建步骤。
构建步骤是具体实现的过程,dos语法创建“时间戳+并发数+压测时长+序号”命名规则的文件夹,备份上一次跑的结果,接着执行jmeter命令跑用例,生成测试数据和报告。
为了解决jmeter执行结果路径必须为空这个问题,小伙伴们绞尽脑汁找到的方法:将文件夹参数化,执行用例前先备份上一次执行结果,清空文件夹。只有想不到,没有做不到的!
创建“时间戳+并发数+压测时长+序号”命名规则的文件夹的语法解析:
效果就是每次构建完之后,将上一次的结果数据备份到foldername文件中,本次的执行结果保存在latest文件中。
步骤六:添加构建后步骤,主要是展示测试报告
前面已经要求安装插件:HTML Publisher plugin,这个插件主要是用于展示html页面,因为jmeter命令已经生成了报告,我们要做的就是展示。之前尝试使用Ant来构建jmeter的,但生成的html的报告过于简陋,故放弃这个方案了。想了解的可以搜索jenkins+jmeter+ant。
效果就是每次构建完后,点击红圈按钮,展示本次执行的结果。
总结:之前有想过用python调用jmeter脚本实现批处理的,一来编码能力有限至少要花两天才能调好脚本,二来python没有定期构建的功能。提出用jenkins集成时并没有想过会有什么效果。用过之后才知道:真香!半小时就实现了jmeter脚本的处理,定期构建,报告展示。下一篇重点写jenkins批处理jmeter脚本,使用插件Multijob plugin。