5.3 性能测试
Taurus是一个开源的自动化框架,用于运行各种开源负载测试工具和功能测试工具。其支持最流行的开源负载测试工具Apache JMeter、Selenium、Gatling、The Grinder等。Taurus的关键特性有:
• 我们可以使用YAML或JSON来描述性能测试。这也正是我们想要的test as code。
• 它会根据我们选择的性能测试类型自动下载相应的工具。比如在下例中会使用JMeter,那么Taurus会自动下载JMeter并安装。
Jenkins的Performance插件就是使用Taurus来进行性能测试的。在进行性能测试之前,首先要准备环境。
5.3.1 准备性能测试环境
(1)在运行性能测试环境的机器上,按照4.2.6节介绍的步骤准备Python环境。
(2)安装Performance插件(https://plugins.jenkins.io/performance)。
(3)安装Taurus?不需要自行安装,Performance插件如果发现机器上没有安装Taurus,它会自动运行pip install bzt命令进行安装。
5.3.2 运行JMeter测试
假设平时你都是手动执行JMeter测试的,现在希望将它自动化。这很简单,只需要两步。
(1)在现有的项目中加入Jenkinsfile。
(2)在项目中加入blaze_exist_jmeter_config.yml文件。
blaze_exist_jmeter_config.yml是Taurus的配置文件,用于描述如何进行性能测试。以上配置很简单,就是执行一个名为simple的场景(scenario),这个场景就是执行现有的JMeter脚本。modules配置了JMeter的下载地址及版本。上例中,我们指定了国内的下载链接,避免从国外下载。
在Jenkinsfile中,bzt是Performance插件提供的一个步骤。其参数如下:
• params:字符串类型,Taurus配置文件的路径。
• alwaysUseVirtualenv:布尔类型,如果为false,则不使用virtualenv进行环境隔离。默认值为true。
• bztVersion:字符串类型,bzt版本。
• generatePerformanceTrend:布尔类型,是否在Jenkins项目详情页生成性能趋势图。默认值为true。
• useBztExitCode:布尔类型,是否使用bzt步骤的退出码作为Jenkins项目的构建结果。默认值为true。
• useSystemSitePackages:布尔类型,是否为virtualenv加上“--system-site-packages”参数。默认值为true。
• workingDirectory:字符串类型,指定bzt的工作目录。
• workspace:字符串类型,已经废弃,请使用workingDirectory。
只有params参数是必需的,其他参数都是可选的。
至此,以上用法可以满足大部分人在Jenkins上使用JMeter的需求。关于Taurus配置文件的更多语法,大家可以前往Taurus官网学习。
最后,性能测试结果将显示在该项目的首页,如图5-7所示。
图5-7 性能测试结果