11.4 详解JMeter最佳实践经验(1)

转自:http://book.51cto.com/art/201204/327430.htm

 

11.4  详解JMeter最佳实践经验(1)

1.限制线程数目

机器硬件性能将会限制用户可以运行的JMeter有效线程数目。另外这还依赖于待测服务器的性能(快速服务器会加重JMeter的负担,因为它响应请求的速度更快)。运行的JMeter线程越多,统计得到的时间信息就越不准确。JMeter负担越重,每一个线程等待CPU的时间就越长,得到的时间统计信息也就越发膨胀。如果测试人员需要完成大并发量的负载测试,那么请考虑在多台机器上运行多个非GUI JMeter实例。

2.灵活使用用户变量

有一些测试计划会针对不同的虚拟用户/线程,使用不同的变量值。例如,测试人员所希望测试的业务流程,可能会要求每个虚拟用户独立地完成系统登录操作。这可以通过JMeter的特性轻松实现。

例如:

创建一个文本文件,其中包含用户名和密码,通过逗号进行分隔。将它放到测试计划所在的同一个目录之中。

为测试计划添加一个CSV DataSet配置元件,如图11-5所示。命名变量USER和PASS。

在合适的采样器中,用${USER}代替登录名,用${PASS}代替密码。

CSV DataSet配置元件会为每一个虚拟用户从文件中读取一行。

 
(点击查看大图)图11-5  CSV DataSet配置元件

3.减少JMeter对资源的要求

减少资源占用的一些建议。

使用非GUI模式:jmeter -n -t test.jmx -l test.jtl。

尽可能地少使用监听器;如果像上面一样使用了-l标志,那么就可以删除所有监听器或者使它们失效。

避免使用一大堆相同的采样器,而应该在一个循环中使用相同的采样器,并使用变量(CSV Data Set)来修改这些采样器。或者可能会用到Access Log Sampler(在这里不能使用Include Controller,因为它会将指定文件中的所有测试元件直接添加到测试计划中来)。

不要使用函数测试模式(Functional Mode)。

以CSV格式输出测试结果,尽量不要使用XML格式。

仅保存测试人员需要的数据。

尽量少使用断言。

如果测试人员的测试需要大量数据(特别是数据需要随机化),请提前准备好测试数据,放到数据文件中,以CSV Dataset方式读取。这样就能避免在测试运行阶段浪费资源。

4.参数化测试

通常使用不同的设置反复运行相同的测试会很有用。例如,改变线程或者循环的数目,或者改变主机名。

办法之一就是在测试计划中定义一系列变量,并在测试元件中使用这些变量。例如,用户可以定义变量LOOPS=10,并在线程组中引用${LOOPS}。如果要循环运行20次,只需要在测试计划中改变变量LOOPS的值。

如果要以非GUI模式运行大量测试,使用变量参数化就比较麻烦。一种解决办法就是用属性来代替变量,例如LOOPS=${__P(loops,10))}。这样就会使用属性"loops"的值,如果属性loops不存在,就使用默认值10。属性"loops"接下来可以在JMeter命令行中定义:jmeter ... -Jloops=12 ... 。如果有很多属性需要一起改变,那么解决办法就是使用一组属性文件。用户可以使用命令行-q选项,以便将合适的属性文件传递给JMeter。

posted @ 2017-06-15 16:44  抹茶MM  阅读(319)  评论(0)    收藏  举报