【使用JMeter 对Web服务器压力测试】

时间:2022-03-10 04:47:37

自己使用JMeter测试百度心得:

主要用到了
1.添加线程组(一个测试的线程容器,可设置线程个数,循环次数,所有线程启动一次的周期时间)
2.在线程组 中添加sample --> http-request  (一个请求的范式,可以设置请求的url和参数)
3. 在http-reqeust 中添加 timer,用于设置线程组工作一次后休眠时间,可以用于拷机测试。
4. 在http-reqeust 中添加 listener --> view result in table(用表格查看) 可以显示每个线程的请求时间和返回状态
5. 在http-reqeust 中添加 listener --> view result tree(查看结果树) 可以查看每一次请求返回的http报头和回复内容
6. 在http-request 中添加 listener --> Graph result(图形结果) 可以查看描点图,包括数据,平均,中值和吞吐量,比较直观看到每次请求的结果,和整体情况。


以下 转自:http://www.cnblogs.com/TankXiao/p/4045439.html

概述

JMeter 最早是为了测试 Tomcat 的前身 JServ 的执行效率而诞生的。到目前为止,它的最新版本是2.1.1,它的测试能力也不再仅仅只局限于对于Web服务器的测试,而是涵盖了数据库、JMS、Web Service、LDAP等多种对象的测试能力。在最新的 2.1.1 中,它还提供了对于 JUNIT 的测试。

JMeter 的安装非常简单,从官方网站上下载,解压之后即可使用。运行命令在%JMETER_HOME%/bin 下,对于 Windows 用户来说,命令是 jmeter.bat。运行前请检查JMeter 的文档,查看是否具备相关的运行条件。对于最新版(即2.1.1),需要JDK的版本要求是JDK 1.4。

JMeter 的主要测试组件总结如下:

1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。

2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。

3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。

4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。

6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。

7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

8. 定时器负责定义请求之间的延迟间隔。

阅读目录 

  1. Jmeter介绍
  2. 如何学好Jmeter
  3. Jmeter下载和运行
  4. 实际测试的例子
  5. 第一步: 新建Thread Group
  6. 第二步: 新建HTTP Request
  7. 第三步: 新建HTTP Header Manager
  8. 第四步: 新建 View Results Tree
  9. 第五步: 运行测试,查看结果
  10. 第六步: 添加Assertion和Assertion Results
  11. 第七步: 使用用户自定义变量
  12. 第八步: 关联
  13. 源代码下载

 

Jmeter 介绍

Jmeter  是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试). 

而且用Jmeter 来测试 Restful API, 非常好用。

 

 

如何学好Jmeter

如果你用Jmeter去对Web进行功能测试,或者性能测试。 你必须熟练HTTP协议,才能学好Jmeter。 否则你很难理解Jmeter中得概念。

不熟悉HTTP协议的话, 可以参考我的 【小坦克:HTTP 协议教程】

 

Jmeter  下载和运行

官方网站:http://jmeter.apache.org/

解压后, 运行  “bin/jmeter.bat”   

Jmeter 是支持中文的, 启动Jmeter 后, 点击 Options -> Choose Language  来选择语言

 

实际测试的例子

目标: 获取城市的天气数据:

 

第一步: 发送request 获取城市的城市代号
http://toy1.weather.com.cn/search?cityname=上海 

从这个请求的response 中获取到上海的城市代码. 比如:

上海的地区代码是101020100

上海动物园的地区代码是:  10102010016A

 

第二步:  发送request 到: http://www.weather.com.cn/weather2d/101020100.html   可以得到该城市的天气数据

 

第一步: 新建一个Thread Group

必须新建一个Thread Group,  jmeter的所有任务都必须由线程处理,所有任务都必须在线程组下面创建。

【使用JMeter 对Web服务器压力测试】

 

第二步:新建一个 HTTP Request

【使用JMeter 对Web服务器压力测试】

 

比如我要发送一个Get 方法的http 请求: http://toy1.weather.com.cn/search?cityname=上海 

可以按照下图这么填

【使用JMeter 对Web服务器压力测试】

 

第三步 添加HTTP Head Manager

选中上一步新建的HTTP request. 右键,新建一个Http Header manager. 添加一个header

【使用JMeter 对Web服务器压力测试】

【使用JMeter 对Web服务器压力测试】

 

第四步: 添加View Results Tree

View Results Tree 是用来看运行的结果的

【使用JMeter 对Web服务器压力测试】

 

第五步:运行测试,查看结果

【使用JMeter 对Web服务器压力测试】

【使用JMeter 对Web服务器压力测试】

到这里。 我们已经成功运行起来了。

 

第六步:添加Assertion和Assert Results

 选择HTTP Request, 右键 Add-> Assertions -> Response Assertion.  添加 Patterns To Test

【使用JMeter 对Web服务器压力测试】

 

然后添加一个Assetion Results 用来查看Assertion执行的结果. 

选中Thread Group 右键  Add -> Listener -> Assertion Results. 

运行后, 如果HTTP Response中没有包含期待的字符串。 那么test 就会Fail. 

【使用JMeter 对Web服务器压力测试】

【使用JMeter 对Web服务器压力测试】

 

第7步: 使用用户自定义变量

我们还可以在Jmeter中定义变量。 比如我定义一个变量叫 city.    使用它的时候用  ${city}

添加一个 User Defined Variables.  选中Thread Group: 右键 Add -> Config Element -> User Defined Variables.

我们添加一个变量: city

【使用JMeter 对Web服务器压力测试】

 

然后在Http Request中使用这个变量

【使用JMeter 对Web服务器压力测试】

 

第八步:关联

所谓关联, 就是第二个Requst, 使用第一个Request中的数据

我们需要在第一个Http Requst 中新建一个正则表达式,把Response的值提取到变量中,提供给别的Http Request 使用

选择第一个Http Request, 右键 Add -> Post Processors -> Regular Expresstion Extractor

【使用JMeter 对Web服务器压力测试】

 

现在新建第二个Http Request,     发送到: http://www.weather.com.cn/weather2d/${citycode}.html 

${citycode} 中的数据, 是从Regular Expression Extractor 中取来的

【使用JMeter 对Web服务器压力测试】

 

到这, 脚本就全部写好了, 运行下,看下最终结果

【使用JMeter 对Web服务器压力测试】 

 转自:http://www.cnblogs.com/TankXiao/p/4045439.html