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 ...
随机推荐
- php 如何写 mysql insert into 语句
$sql="INSERT INTO moneytb (riqi,item,inout,cost,bz) VALUES ('$riqi','$item','$inout','$cost','$ ...
- Codeforces Round #423 A Restaurant Tables(模拟)
A. Restaurant Tables time limit per test 1 second memory limit per test 256 megabytes input standard ...
- ECNU 2018 10月月赛 E 盖房子 (bitset + 倍增)
题目链接 ECNU Monthly 2018.10 Problem E 从开场写到结束…… 显然要把三角形分成上下两部分. 把每一部分分成三部分,以上部分为例. 上面和右边,以及左下角的正方形. 也 ...
- 洛谷P1514 引水入城 [搜索,区间DP]
题目传送门 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 N 行×M 列的矩形,如上图所示,其中每个格子都代表一座城市,每 ...
- 【计算几何】【推导】【补集转化】AtCoder Regular Contest 082 E - ConvexScore
题意:平面上给你N个点.对于一个“凸多边形点集”(凸多边形点集被定义为一个其所有点恰好能形成凸多边形的点集)而言,其对答案的贡献是2^(N个点内在该凸多边形点集形成的凸包内的点数 - 该凸多边形点集的 ...
- 【概率DP】BZOJ4318-OSU!
[题目大意] 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的01串.在这个串中连续的 X个1可以贡献X^3 的分数,这x个1不能被其他连续的1所包含( ...
- django查询
阅读目录 大于.大于等于 小于.小于等于 在...范围内 模糊查询 是否为空 不等于/不包含于 大于.大于等于 1 2 3 4 5 __gt 大于 __gte 大于等于 User.objects. ...
- 给lnmp一键包中的nginx安装openresty的lua扩展
lnmp一键包(https://lnmp.org)本人在使用之后发现确实好用,能帮助我们快速搭建起lnmp.lamp和lnmpa的web生产环境,因此推荐大家可以多试试.但有的朋友可能需要使用open ...
- 解决maven无法下载jar的问题
先去本地仓库查看是否有没有jar包,如果没有并且存在除jar包以外的文件,先将文件删除,重新用maven下载一遍.如果还是不行,就自己下载jar包导入到本地仓库,但是不能手动的添加文件夹和pom.xm ...
- CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂 中二版
"问题:众所周知772002很喜欢马尾,所以他决定画几幅马尾送给他的女朋友. 772002会画m种马尾,772002还有n张纸,n张纸分别编号1到n,每张纸上只能画一种马尾. 然而77200 ...