性能测试|学会这篇文章分享的知识,你就超过了90%的测试人

性能测试|学会这篇文章分享的知识,你就超过了90%的测试人

文章图片

性能测试|学会这篇文章分享的知识,你就超过了90%的测试人

文章图片

性能测试|学会这篇文章分享的知识,你就超过了90%的测试人

文章图片


? 前 言
jmeter 可以做性能测试 , 这个很多人都知道 , 那你知道 , jmeter 可以在启动运行时 , 指定线程数和运行时间 , 自定义性能场景吗?
jmeter 性能测试 , 动态设定性能场景平时 , 我们使用 jmeter 进行性能测试时 , 使用普通线程组 , 并发用户数和运行时间等场景参数都是固定写死的 。 运行脚本时 , 就按照写死在脚本中的场景来运行 。

相信 , 绝大多使用jmeter 进行性能测试 , 性能场景设计 , 都类似上图 , 写死线程数、ramp-up 时间、持续运行时间 。
这样 , 固然很好 , 直接就可以用 , 但是 , 当我们用 CLI 模式 , 做负载测试时 , 我们期望能随时更改线程数、ramp-up 时间和持续运行时间 , 你怎么做?
用 jmeter 的 gui 界面 , 修改场景中的这些参数值 , 然后 , 保存 , 再运行;或者 , 直接编辑脚本 jmx 文件 , 保存 , 再运行 。
两种方法都可以 , 但是 , 有没有感觉 , 比较麻烦?有没有更简洁的方法呢?
在我的教学中 , 给大家讲过 , jmeter 除了变量之外 , 还有‘属性’ , 属性是 jmeter 工具的标签 , 可以在 jmeter 这个工具的任何地方被使用 。
【性能测试|学会这篇文章分享的知识,你就超过了90%的测试人】jmeter 不仅支持属性文件配置静态属性 , 也支持 , 在脚本运行过程中 , 动态生成属性 , 而且 , 还支持 , 外部传入动态属性 。
我们可以把场景 , 修改为如图:

通过获取属性 pthreads , 来指定线程数 ,获取属性 pramp 来指定 ramp-up 时间 , 获取属性 pruntime 来指定持续运行时间 。
这些属性 , 真实存在吗?后面的数字 , 又是什么意思呢?
首先 , P 函数 , 在 jmeter 中 , 是获取属性函数 , 它有两个参数 , 1 个参数 , 是属性名 , 这些属性 , 可以事先定义的静态属性 , 也可以是动态生成的动态属性 , 图中用到的所有属性 , 就是事先没有定义 , 在运行时动态定义的属性;第 2参数 , 是属性默认值 , 当这个属性没有获取到值时 , 使用这个默认值 。
什么意思?
意思是 , 如上图这样设计 , 你不传任何属性值 , 直接运行 , 就会按 1 秒钟内启动 30并发用户数 , 持续运行 60 秒的场景来运行 。

现在 , 你可以放心了吧 , 即便你没有传入这些属性值 , 这个场景 , 也是可以正常运行的 。
那 , 我们在 CLI 模式下 , 进行性能测试时 , 到底应该怎么传入这些属性值呢?
首先 , 我们要知道 , 使用 CLI 模式 , 进行性能测试 , 通常有两种方式 , 一种 , 就是直接启动本地脚本运行;另外一种 , 就是采用分布式 , 指定助攻机器来运行 。