1. 什么是jmeter
- 负载测试: 这类测试使系统或者应用程序在预先设计好的极端场景下测试运行。这类测试用来评估系统或者程序在极端条件下的行为。
- 性能测试: 这种测试被用来检测系统的性能表现,包括特定情况下,系统的响应能力和稳定性。
- 压力测试: 这类测试通过载入更多的外部资源,并使系统组件超越其所设定的能力范围,试图使系统挂掉。
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.2 入门教程
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
(2) 测试http接口
(3) 参数化
(4) 发送json的三种方法
(6) 正则表达式提取器
http://www.51testing.com/html/12/252512-224758.html
提取单个字符串:
一个符合要求的正则表达式:name = "file" value = "(.+?)">。
():封装了待返回的匹配字符串。
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止
提取多个字符串:
一个符合要求的正则表达式:name = "(.+?)" value = "(.+?)"。
引用名称:MYREF
模板:$1$$2$
如下变量的值将会被设定:
MYREF_g0:name = "file"value = "readme.txt"
MYREF_g1:file
MYREF_g2:readme.txt
引用${MYREF_g1}
提取的JMeter的JSON响应数据
首先判断“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库
(7) jmeter断言
断言中可以添加多个断言一起判断,断言中也可以使用参数化方法,进行动态判断.
(8) Java请求-java工程中引入jmeter
JMeter可设定测试时的并发线程数、循环次数或测试时长等,模拟出巨大的负载后便可观察在不同压力下程序的强度和分析出整体性能。