线程数量
一般来说单节点,jmeter可以有效地运行线程的最大数量是300。硬件性能以及测试计划设计都将影响JMETER有效运行的线程数量。所以如果你的性能测试需求大量并发或者涉及大量线程使用,那么可采用以下两种解决方案。
1. 分布式测试,采用slave-node,将测试分配到不同节点主机运行。
2. 将测试数据评估,采用推算的方式来评估大量测试可能会遇到问题,例如,从50线程,到100线程,再到200线程,结合测试数据,查看服务器性能变化,推算可能会存在的瓶颈。
在命令行下运行测试
永远不要在GUI界面运行任何压力测试!
那么GUI界面下都干些什么呢?
1. debugging,有时候你可能需要用一些结果查看器,查看返回的请求,或者你用正则匹配器时,来查看获取的结果是否正确等。
2. record test,我必须要承认,录制脚本要比直接写脚本快的多,也方便的多。
3. development,有时我们或许要对脚本进行一些定制开发,当我们需要查看结果报告时候,GUI仍然是不错的选择,不过越来越多的第三方插件,可以直接生成测试报告。
Jmeter在GUI模式下并不是被设计成一个高负载的模式,换句话其实jmeter性能真的不怎么样,简单易用以及第三方插件工具较多,才是jmeter被广泛应用的原因,如果你追求高性能的工具,推荐使用gatling。
禁用listener
因为大量使用监听器会消耗大量的内存,将导致GUI界面卡死或jmeter运行内存不足。
当然,安全的使用‘结果树’listener来查看测试结果的正确性还是有必要的。
所以无论是在命令行模式还是GUI模式,我们在运行压力测试时,将无用的listener移除掉。
使用最新版本的jmeter
jmeter仍然存在各种各样的问题,所以一直在发布新的版本,使用最新版本可能会修复你的一些bug以及改进工具性能。
使用断言
jemter的各种断言,帮助我们验证从服务端返回的响应是否正确。
加入think time
真实的场景中,用户不可能不停歇的点完这个就去点那个按钮,所以考虑到真实用户的行为,我们要在不同动作间,加入think time来模拟真实用户的行为,这样才能更准确模拟性能测试场景。