JMeter 十四:最佳实践
参考:http://jmeter.apache.org/usermanual/best-practices.html
1. 总是使用最新版本的JMeter
2. 使用合适数目的Thread
Thread数目取决于:硬件环境、Test Plan的设计、以及服务器的运行速度。
不合适数目的Thread,可能会造成测试结果不正确或者不精确。
如果我们需要大规模的负载测试,可以考虑在分布式模式下多个机器命令行运行JMeter。
3. 正确使用 HTTP(S) Test Script Recorder
1. 过滤录制的内容
录制时,最重要的事情就是要找出哪些是我们不感兴趣的请求。
比如,录制图片请求就没有意义。这时候我们就可以在 HTTP(S) Test Script Recorder -> Requests Filtering -> URL Patterns to Exclude 中添加“.*\.gif”,这样录制的时候就不会录制gif请求。类似的可能我们也会排除CSS、JS文件。
我们感兴趣的请求,比如“.jsp, .asp, .php, .html”之类,我们就可以在 HTTP(S) Test Script Recorder -> Requests Filtering -> URL Patterns to Include 中添加“.*\.jsp”等。

2. 变量处理
在Test Plan级别定义的变量,以及 User Defined Variables 控件定义的变量,JMeter 录制时,遇到值会自动使用变量进行替换。
假如我们定义了一个变量叫“server”,值为“www.baidu.com”,那么录制的样本中,任意地方的“www.baidu.com”都会自动用“${server}”来代替。
这里要注意的是,匹配是大小写敏感的。
4. 减少资源需求
以下是一些建议:
- 使用命令行模式跑测试:jmeter –n –t test.jmx –l test.jtl
- 尽量少使用Listeners。如果我们使用 –l 命令,那么所有的Listeners 都可以不要了。因为后期分析完全可以使用 –l 生成的文件来产生所有的Listeners结果
- 负载测试时,不要使用“View Results Tree”或者”View Results in Table“。这两项只能在编写脚本阶段、或者调试脚本时期使用
- 不要使用很多相似的取样器,我们可以在一个循环中使用相同的取样器,然后使用变量来区别这些取样器。
- 不要使用 Test Plan 的 Functional Test Mode
- 输出尽量选择CSV,来代替XML
- 只保存我们需要的数据
- 尽量少使用Assertions
5. 参数化测试
我们经常需要在不同设置下跑相同的测试用例。比如,改变Thread数目,或者循环次数,或者改变服务器地址。
一种解决方案是在Test Plan中定义一系列变量,然后在测试中使用这些变量。这样如果有有变动就只需要改变这些变量的值即可。
另外一种解决方案是按照属性值来定义变量值。这样比较适用于命令行方式运行多个测试。比如我们可以定义一个变量 LOOPS,变量值为“${__P(loops,10)}”。这里“__P”是一个函数。这样如果命令行定义了属性loops的值,那么就采用命令行定义的值,否则就采用变量默认的“10”。
比如“jmeter -n -t "Test Plan1.jmx" -l a.csv”,会有10次循环。
“jmeter -n -t "Test Plan1.jmx" -l a.csv –Jloops=12”,会有12次循环。

6. 管理属性文档
最好不要更改 jmeter.properties 文件。
如果我们想要更改jmeter 属性,可以考虑从jmeter.properties中将这些属性拷贝出来,放到 user.properties文件中,然后进行修改。
user.properties属性文件会覆盖 jmeter.properties属性文件的属性。
7. 扩展JMeter
有很多开源的插件之类可以帮助我们使用JMeter.
我们可以在JMeter Wiki上看到资源列表。
- JMeterPlugins - JMeter 的扩展插件
- JMeterAddons - 方便使用JMeter的插件,比如 browsers, Maven 以及 Jenkins.
- JMeterServices - 第三方服务。比如 cloud-based JMeter。
JMeter 十四:最佳实践的更多相关文章
- 软件设计师【软件工程:软件开发模型、XP极限编程十二最佳实践】
一.软件开发模型 二.XP极限编程十二最佳实践
- [转] Jenkins Pipeline插件十大最佳实践
[From] http://blog.didispace.com/jenkins-pipeline-top-10-action/ Jenkins Pipeline 插件对于 Jenkins 用户来说可 ...
- JMeter(十四)-自动生成测试报告
很多朋友都在问jmeter如何生成测试报告,这里随便说两句. 环境要求 1:jmeter3.0版本之后开始支持动态生成测试报表 2:jdk版本1.7以上 3:需要jmx脚本文件 基本操作 1:在你的脚 ...
- Jmeter(十四) - 从入门到精通 - JMeter定时器 - 下篇(详解教程)
1.简介 用户实际操作时,并非是连续点击,而是存在很多停顿的情况,例如:用户需要时间阅读文字内容.填表.或者查找正确的链接等.为了模拟用户实际情况,在性能测试中我们需要考虑思考时间.若不认真考虑思考时 ...
- JavaScript基础笔记(十四)最佳实践
最佳实践 一)松散耦合 1.解耦HTML/JavaScript: 1)避免html种使用js 2)避免js种创建html 2.解耦CSS/JS 操作类 3.解耦应用逻辑和事件处理 以下是要牢记的应用和 ...
- Laravel 的十八个最佳实践
本文翻译改编自 Laravel 的十八个最佳实践 这篇文章并不是什么由 Laravel 改编的 SOLID 原则.模式等. 只是为了让你注意你在现实生活的 Laravel 项目中最常忽略的内容. ...
- 浅读《视觉SLAM十四讲:从理论到实践》--操作1--初识SLAM
下载<视觉SLAM十四讲:从理论到实践>源码:https://github.com/gaoxiang12/slambook 第二讲:初识SLAM 2.4.2 Hello SLAM(书本P2 ...
- jmeter之最佳实践
官方文档: http://jmeter.apache.org/usermanual/best-practices.html 翻译: 16.最佳实践 16.1 始终使用最新版本的JMeter JMete ...
- 高翔《视觉SLAM十四讲》从理论到实践
目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...
随机推荐
- CSS3主要的几个样式笔记
1.边框:border-color: 设置对象边框的颜色. 使用CSS3的border-radius属性,如果你设置了border的宽度是X px,那么你就可以在这个border上使用X ...
- 【我要学python】open函数的简单用法
open函数 1,使用方法:open('文件路径', '模式',编码方式). 2,最好使用with open as: 省去每一次都需要close()的环节 3,模式介绍: ①w 可写(如果存在,会覆盖 ...
- 【BZOJ 1027】 (凸包+floyd求最小环)
[题意] 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金 ...
- 【转载】随机生成k个范围为1-n的随机数,其中有多少个不同的随机数?
来源:http://www.cnblogs.com/haolujun/archive/2012/11/11/2765102.html 假如现在让你随机生成k个范围在1-n内的随机数,那么你能得到多少个 ...
- Base64序列化和反序列化
序列化: Dictionary<string, string> sPara = GetRequestPost(ref parameterStr); string serializeStri ...
- 【MySQL笔记】启动弹窗问题,unable to connect to remote host. catalog download has failed.
安装完MySQL之后,它每天凌晨启动一个Intaller任务,甚是烦人: 这是一个Windows的计划服务,在这里删除即可,开始/附件/系统工具/任务计划程序,把mysql的定时任务计划取消/删除 ...
- ie8以下浏览器注意事项
ie8以下ajax请求或者socket请求时一定要加二级域名:(目的不能垮域访问)
- NServiceBus入门:发送一个命令(Introduction to NServiceBus: Sending a command)
原文地址:https://docs.particular.net/tutorials/intro-to-nservicebus/2-sending-a-command/ 侵删. 能够发送和接收mess ...
- spring的@Async异步使用
pring的@Async功能,用的时候一定要注意: 1.异步方法和调用类不要在同一个类中. 2.xml里需要加入这一行 <task:annotation-driven/> 下面的可以直接粘 ...
- Dependent Parameters in Concurrent Program using Special Value Set
Dependent Parameters in Oracle Applications Requirement: Say there is a concurrent program that lets ...