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 ...
随机推荐
- 剑指offer-链表中倒数第 K 个结点
输入一个链表,输出该链表中倒数第k个结点. /* public class ListNode { int val; ListNode next = null; ListNode(int val) { ...
- Python开发基础-Day16import模块导入和包的调用
模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...
- JZYZOJ1537 [haoi2014]贴海报
http://172.20.6.3/Problem_Show.asp?id=1537 用的方法叫作浮水法,实质是递归自下而上判断一个区间有没有覆盖,O(n^2)感觉也没有很实用. 前几年的haoi怎么 ...
- SQL 中 HAVING 用法
现在 Student表有 如下数据 现需求如下: 查找每个老师的学生的平均年龄且平均年齿大于12 不使用 HAVING SELECT * FROM (SELECT TeacherID, AVG(Age ...
- Problem B: 查找某一个数
#include<stdio.h> int main(void) { ]; int i; char ch='n'; while(scanf("%d %d",&x ...
- RSA加密破解
1Linux 下安装gmpy2 https://www.cnblogs.com/ESHLkangi/p/8576113.html 2.yafu安装使用方法 https://www.cnblogs.co ...
- Ajax同步异步的区别
1,什么是Ajax Ajax: asynchronous javascript and xml (异步javascript和xml) 其是可以与服务器进行(异步/同步)交互的技术之一. Aja ...
- 让你的WPF程序在Win7下呈现Win8风格主题
今天在Win8下使用了一个我之前写的一个WPF程序的时候,发现现在也支持Win8效果了(记得以前的.net 4.0的版本是不支持的).由于WPF的控件是自绘的,并不受系统主题所控制,也就是说.net ...
- Cargo, Rust’s Package Manager
http://doc.crates.io/ Installing The easiest way to get Cargo is to get the current stable release o ...
- express-session的简单使用说明
我们知道Internet 通过协议分为stateful和stateless两类,而http是stateless协议,客户端发送请求到服务端建立一个连接,请求得到响应后连接即中断,服务器端不会记录状态, ...