性能测试-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: 下载地址

基本概念了解

 测试计划 

线程组

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

逻辑控制单元

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

采样器

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

定时器

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

断言

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

配置元件

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

监听器

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

Getting Started

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

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

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

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

(2)添加线程组

 

说明:

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

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

 循环次数:总体执行一次

(3)设置控制器

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

 (4)设置采样器Sampler

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

(5)添加监听listener 

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

(6)运行结果

(6.1)summary report

请求数量 2500

平均响应时间1185

吞吐量:175.8/s

(6.2)图形结果

 

(6.3)观察结果树
 

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

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

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

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

原文地址:https://www.cnblogs.com/mongo/p/4881408.html