性能测试-Jmeter

时间:2023-03-09 03:21:49
性能测试-Jmeter

缘由

很多情况下我们写程序过程中只会对固定模块采取并发限制,而且asp.net对于多线程也有他自己的处理机制,尤其对于注重业务,结果导向的团队可能更注重一定时间节点给出满意的产品,但是你的模块到底是否健壮,你心理有谱吗? 大声的告诉我 are you sure? 下面我们通过一个工具来窥探一下.He is Jmeter!

(最后的测试发现博客园的访问有些问题,具体希望广大园友给予指点)

基本简介

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

环境准备

(1)Jmeter是建立在java环境下的,所以你的机器需要安装java环境,我像java组的同事要了一个简要的安装包,安装之后需要配置下环境变量.

(2)Jmeter安装包  http://jmeter.apache.org/

因为博客园对上传文件有大小限制,所以...

java环境:下载地址

Jmeter: 下载地址

基本概念了解

性能测试-Jmeter 测试计划

性能测试-Jmeter线程组

测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。

性能测试-Jmeter逻辑控制单元

多种不同的实现,可以决定每个sample的执行顺序。

性能测试-Jmeter采样器

可以认为所有的测试任务都由取样器承担,有很种,如:HTTP 请求。

性能测试-Jmeter定时器

定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。

性能测试-Jmeter断言

对取样器返回的请求结果给出判断,是否正确。

性能测试-Jmeter配置元件

配置元件(config element)用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池(Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则可以修改Sampler的默认数据。(例如,HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的cookie 进行管理)

性能测试-Jmeter监听器

它的功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。

Getting Started

下面我们通过例子来体会一下Jmeter

测试地址:http://www.cnblogs.com/mongo/p/4623560.html

场景:模拟用户并发请求查看网站负载等参数

(1)运行Jmeter,在安装好JAVA环境的前提下,打开Jmeter安装目录,运行\apache-jmeter-2.13\bin\jmeter.bat

性能测试-Jmeter

(2)添加线程组

性能测试-Jmeter

性能测试-Jmeter

说明:

线程数:我们配置开启了500个线程

Ramp-up Period:设置为0表示在0秒内500线程同时启动完毕

循环次数:总体执行一次

(3)设置控制器

性能测试-Jmeter

这里我们设置循环控制器,每个线程循环5次Sampler操作

 (4)设置采样器Sampler

我们这里用一个博客园的文章地址做测试,简单的请求页面

性能测试-Jmeter

性能测试-Jmeter

(5)添加监听listener

为了更好的看到我们的测试结果,需要合适的图形化展示,这里我们添加图形结果和观察结果树

性能测试-Jmeter

性能测试-Jmeter

(6)运行结果

(6.1)summary report

性能测试-Jmeter

请求数量 2500

平均响应时间1185

吞吐量:175.8/s

(6.2)图形结果

性能测试-Jmeter

(6.3)观察结果树
性能测试-Jmeter
性能测试-Jmeter性能测试-Jmeter性能测试-Jmeter

这里貌似存在一个问题,我访问博客园指定的页面,前几次请求可以,然后请求一直是time out 状态,过一段时间 请求又可以了,目前有2个猜想

(1)博客园做了限制,某一个地址频繁发送请求会限制一段时间?

(2)但是明显开始请求成功次数和一段时间后请求次数有明显的不同,难道真的程序有问题?

这只是猜想,具体大家也可以考虑考虑 交流指导,这篇文章主要让大家能方便测试某一个部分的负载,介绍了Jmeter的基本使用方式,以便大家对自己的模块有一个量化的认识,在写程序的时候也会多一些思考。