1. 什么是jmeter
JMeter使用了不同技术和协议,是一款可以进行配置和执行负载测试、性能测试和压力测试的工具。
- 负载测试: 这类测试使系统或者应用程序在预先设计好的极端场景下测试运行。这类测试用来评估系统或者程序在极端条件下的行为。
- 性能测试: 这种测试被用来检测系统的性能表现,包括特定情况下,系统的响应能力和稳定性。
- 压力测试: 这类测试通过载入更多的外部资源,并使系统组件超越其所设定的能力范围,试图使系统挂掉。
注意: jmeter = 负载/性能/压力测试 + 功能测试
JMeter最初的用途是用来测试web应用的,但是它的功能已得到扩展,如今已经可以针对绝大部分的程序进行测试,
同时可以在你的程序中进行功能测试。
2. jmeter 特点
它是免费的。开放源码软件。
它具有简单,直观的图形用户界面。
JMeter中负载和性能测试许多不同的服务器类型:网站 - HTTP,HTTPS,SOAP,数据库通过JDBC,LDAP,JMS,邮件 - POP3
它是独立于平台的工具。在Linux / UNIX,JMeter中JMeter中shell脚本点击可以调用。在Windows上,它可以调用启动jmeter.bat文件。
它具有完整的Swing和轻量级组件支持(预编译的JAR使用包javax.swing中*)。
JMeter 测试计划存储为XML格式。这意味着可以使用文本编辑器生成一个测试计划。
它的完整的多线程框架,允许并发多线程和同步采样不同的功能由单独的线程组采样。
它是高度可扩展的。
也可用于执行应用程序的自动化测试和功能测试。
3. 主要测试组件
1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。一个完整的测试计划将包括一个或多个元素,如线程组,逻辑控制器,样品产生控制器,监听器,定时器,断言和配置元素。测试计划必须至少有一个线程组。
2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。
3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。
4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。
6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
8. 定时器负责定义请求之间的延迟间隔。
4. 简单实例
4.1 别问为什么这么做, just do it .
http://www.cnblogs.com/fnng/archive/2011/07/26/2117600.html
4.2 入门教程
http://www.yiibai.com/jmeter/#
注 :
mac jmeter 安装:
http://blog.csdn.net/u013399759/article/details/39206139
1.http://jmeter.apache.org/download_jmeter.cgi 下载jmeter
2.解压包
3.进入解压目录/bin/
4.sh jmeter
使用:
appledeMacBook-Air:~ apple$ cd /Users/apple/apache-jmeter-2.13/bin
appledeMacBook-Air:bin apple$ sh jmeter
appledeMacBook-Air:bin apple$
4.3 实例
(1) 测试mysql
http://www.cnblogs.com/fnng/archive/2011/07/26/2117600.html
(2) 测试http接口
http://leafwf.blog.51cto.com/872759/1618409
(3) 参数化
两种参数化的方式:函数助手,CSV Data Set Config(函数助手方法要比CSV控件方法参数化功能要弱,推荐使用CSV控件方法)
http://www.cnblogs.com/yangxia-test/p/3966154.html
(4) 发送json的三种方法
http://yangyoupeng-cn-fujitsu-com.iteye.com/blog/2013649
(5) 使用 CSV Data Set Config 将 json 数据参数化
http://www.itnose.net/detail/6145069.html
(6) 正则表达式提取器
从请求的响应结果中取到需要的内容,从而实现关联---上一个结果作为下一个的输入。 使用 JMeter 提供的 后置处理器(Post Processers) --> 正则表达式提取器 (Regular Expression Extractor) 从返回的结果中取得数据。
http://www.51testing.com/html/12/252512-224758.html
http://blog.sina.com.cn/s/blog_6090a6ba01012g3e.html
注:以下摘录自 http://www.51testing.com/html/14/209114-811759.html
提取单个字符串:
假设测试人员期望匹配Web页面的如下部分:name = "file" value = "readme.txt">并提取readme.txt。
一个符合要求的正则表达式:name = "file" value = "(.+?)">。
():封装了待返回的匹配字符串。
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止
提取多个字符串:
假设测试人员期望匹配Web页面的如下部分:name = "file" value = "readme.txt">并提取file和readme.txt。
一个符合要求的正则表达式:name = "(.+?)" value = "(.+?)"。
引用名称:MYREF
模板:$1$$2$
如下变量的值将会被设定:
MYREF_g0:name = "file"value = "readme.txt"
MYREF_g1:file
MYREF_g2:readme.txt
引用${MYREF_g1}
提取的JMeter的JSON响应数据
提取实例: {"authorizationToken":"abcdef"}
首先判断“authorizationToken”是否只出现一次?
1. 如果是的话你可能正则表达式提取添加到HTTP请求返回的JSON响应:
HTTP Request
Regular Expression Extractor
Reference Name: authToken
Regular Expression: "authorizationToken":"(.+?)"
Template: $1$
Match No.: 1
并指进一步提取值${authToken}。
2. 但是,如果你的情况是有“authorizationToken”的JSON响应几次露面,你必须提取具体一个你如BeanShell的后处理器/ BSF后处理器添加到HTTP请求中提取价值的BeanShell代码+JSON proceesing库
http://xingronglin.blog.163.com/blog/static/10340270420152911582179/
(7) jmeter断言
对上一个请求返回的信息,做字符串、数据包大小、HTML、XML、图片等做判断,确保返回的信息的准确性。
断言中可以添加多个断言一起判断,断言中也可以使用参数化方法,进行动态判断.
http://www.51testing.com/html/12/252512-223704.html
http://www.51testing.com/html/80/n-2430180.html
http://blog.csdn.net/czp11210/article/details/26075961
(8) Java请求-java工程中引入jmeter
"Java请求"测试是指通过JMeter工具对Java Class进行压力测试。
JMeter可设定测试时的并发线程数、循环次数或测试时长等,模拟出巨大的负载后便可观察在不同压力下程序的强度和分析出整体性能。
http://blog.csdn.net/kash_chen007/article/details/37690411
http://blog.csdn.net/czp11210/article/details/26174969
http://www.cnblogs.com/yangxia-test/p/4019541.html
http://wangym.iteye.com/blog/731729
http://blog.sina.com.cn/s/blog_702a7c3f0101cqa5.html
http://www.51testing.com/html/80/n-853680-4.html
(9) jmeter函数
http://www.tuicool.com/articles/fq2qMb
(10) JMeter创建FTP测试计划
目的: 测试FTP服务器上传和下载的性能
详见:http://www.cnblogs.com/fnng/archive/2011/07/01/2095654.html
(11) 远程测试
http://book.51cto.com/art/201204/327427.htm
5. 测试结果分析
聚合报告
以树状列表查看结果
图形报表
http://wenku.baidu.com/link?url=_crsbWMqY4h1v9ax1R_iNQIHxhoIMS_7Z0Hqvr6_kw8xO0zCaUTfDwiMRYZ-6okkxGURCzw6v_OKl79e6rLqJ7e2SQ83ptd4BAtz6Ta54Lq
http://www.cnblogs.com/Carrie_Liang/archive/2008/11/10/1330997.html
http://blog.csdn.net/xiaojianpitt/article/details/4821554
6. jmeter二次开发
http://www.tuicool.com/articles/26ZV7n
源码阅读:http://blog.csdn.net/zhangren07/article/details/6233174
用eclipse搭建jmeter编译环境:
http://lihao.cf/2011/12/%E7%94%A8eclipse%E6%90%AD%E5%BB%BAjmeter%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83/
7. jenkins集成jmeter
Jenkins中集成jmeter-maven插件:
http://my.oschina.net/u/1377774/blog/168969
8. jmeter 云
blazemeter
见:https://blazemeter.com/
参考:http://www.jmeter.cf/load-test-tools/174-jmeter.html