始终使用最新版本的Jmeter
JMeter的性能正在不断提高,因此强烈建议使用最新版本。确保始终阅读版本更新内容,以了解新的改进和组件。应该避免使用比最新一个版本早3个版本的版本。
如果是进行分布式测试,还应该保证控制机与压力机使用相同版本的Jmeter,且JDK版本也应该保持一致,否则可能会遇到一些不可预估的错误。
始终使用正确的线程数进行测试
测试机硬件性能以及测试计划设计都会影响JMeter有效运行的线程数,该数字还取决于服务器的运行速度(速度更快的服务器会使JMeter更加努力地工作,因为它更快地返回了响应)。
与任何负载测试工具一样,如果没有正确设置线程数的大小,,这可能会带来错误或不正确的结果。如果需要进行大规模负载测试,考虑使用分布式模式在多台计算机上运行多个CLI JMeter实例。
使用分布式模式时,结果文件将在控制机上合并,如果使用多个压力机进行负载,则可以合并样本结果文件以进行后续分析。
为了测试JMeter在给定平台上的性能,可以使用JavaTest取样器。它不需要任何网络访问,因此可以测试可实现的最大吞吐量。
使用用户变量实现多用户测试
一些测试计划需要针对不同的线程使用不同的用户进行测试,该序列要请求每个线程都具有一个唯一的登录名并且使用用户对应的密码进行登录。使用JMeter提供的功能很容易实现。
例如:
创建一个包含用户名和密码的文本或者CSV文件,用逗号分隔。将其放在测试计划所在的目录中。将CSV数据集配置元素添加到测试计划。将变量命名为USER和PASS。在适当的取样器上, 将登录名替换为$ {USER},将密码替换为$ {PASS},CSV数据集元素将为每个线程读取一个新行。
需要注意的是,如果使用分布式测试,读取文件的路径为绝对路径时,需要所有控制机与压力机对于的路径文件夹下有相同的文件,所以建议使用相对路径,相对路径根目录被定义为Jmeter的bin目录。
减少压力机资源消耗
关于减少资源使用的一些建议。
1 使用CLI模式:jmeter -n -t test.jmx -l test.jtl
2 使用尽可能少的监听:如果使用上述的-l标志,则可以将其全部删除或禁用。在负载测试期间,勿使用“察看结果树”或“在表中查看结果”监听器,仅在脚本编写阶段使用它们来调试脚本。
3 与其使用大量相似的取样器,不如在循环中使用相同的取样器,并使用变量(CSV数据集)来改变采样。
4 不要使用函数模式
5 结果文件使用CSV输出而不是XML
6 结果文件只保存需要的数据
7 使用尽可能少的断言(大量断言将消耗压力机性能)
8 使用性能最高的脚本语言