性能测试--初识Jmeter
初识Jmeter
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
一、安装Jmeter、jmeter使用小技巧
1、下载jdk、配置环境变量
2、下载jmeter、配置环境变量
3、离线文档的使用:jmeter安装目录下的printable_docs 目录下index.html文件中的Using JMeter选项
4、对jmeter左侧的节点树中的某个节点有疑问:直接在选择该节点的情况下,点击帮助文档,便会跳转至该节点的详细说明页面
二、jmeter测试示例
1、需求场景
- 模拟5个用户同时访问百度首页
- 每秒钟增加1个用户去访问百度首页,这样5个用户一共需要5秒种的时间去加载完毕
- 循环2次,这个一共会产生
5 * 2 = 10
个请求的负载
"""
步骤一:选择Web Test Plan模版
1、点击templates按钮
2、选择Building a Web Test Plan
3、最后点击create,完成创建。 步骤二:修改参数
1、修改测试计划名称为hello jmeter
2、修改线程组名称为:5个虚拟用户访问百度首页,线程数:5,ramp-up period:5, 循环次数:2。
3、修改HTTP Request Defaults的名称为百度站点的默认配置,并将web服务器名称修改为www.baidu.com
4、将Home Page HTTP请求的名称修改为百度首页,注释掉百度首页下的断言
5、删除Page Returing 404节点 步骤三:运行
1、点击运行按钮(快捷键ctrl+r)
"""
步骤详情
注:
从上面脚本中可以看到下面几种类型的jmeter组件。
配置元件。图标是扳手和起子。配置元件是用来存放配置信息的,jmeter提供了丰富的配置元件来帮助我们构建我们的测试脚本。常用的配置元件有用户自定义变量元件,HTTP请求默认值元件等;
取样器。取样器的图标是滴管,跟图像处理软件中的取色器图标类似。取样器(Samplers)是jmeter真正产生请求的组件。常用的取样器是HTTP请求取样器;
逻辑控制器。逻辑控制器用来控制取样器的执行顺序,比如Ramdom Controller(暂且称为是随机控制器吧),能够产生让取样器随机执行的效果;比如事务控制器可以用来组织一些事务型的请求;
监听器。可以通俗的理解为测试报告。
三、对jmeter示例中的组件释疑
用jmeter开发性能测试脚本有点像是搭积木。jmeter给我们提供了很多组件,通过合理的组合这些组件,可以开发出符合自己测试场景jmeter脚本。
1、测试计划(Test Plan)
Test Plan是所有取样器和控制器的父组件,可以通过右键单击Test Plan组件的方式往里面其中添加其它组件。
2、线程组(Thread Group)
我们可以简单把线程组理解成虚拟用户配置的组件。线程组里比较重要的一些配置项是
- 线程数(Number Of Threads)。配置几个就代表有几个虚拟用户
- Ramp-Up Period(in seconds)。表示从第一个虚拟用户开始生成直到最后一个虚拟用户开始生成的时间。假如配置了5个虚拟用户,Ramp-Up配置成10s,那么jmeter会每隔2s生成1个虚拟用户。这个选项主要的作用是控制并发的强度,不让虚拟用户在同一时间产生从而对系统造成过大的复杂。Ramp-Up设置成0,那么所有的用户将会同时立即产生
- 循环数(Loop Count)。很好理解,要么是N次,要么是永远
- 调度器(Scheduler)。就是定时执行的设置方式。我们可以设置在未来的某个时间开始执行也可以设置多少秒后开始执行。注意只有在按下执行按钮后,调度器才生效
3、HTTP请求默认配置(HTTP Request Defaults)
这是jmeter中最常用的取样器。该组件的作用很容易理解,就是配置http请求,可以配置的项目很多
- 名称(Name)。给这个请求取个名字,好的名字可以让报告便于阅读;
- Web服务器(Server)。可以配置请求的目的服务器的域名或IP及端口号,比如服务器名称是
localhost
,端口号是8080
; - HTTP请求协议(Protocol)。支持3种协议:HTTP,HTTPS,FILE。 默认是: HTTP
HTTP请求Implementation。选择实现方式。有下面几个选项:
- 空。也就是不选。这时候jmeter就回去找jmeter全局属性的
jmeter.httpsampler
的值,如果没设置的话就用HttpClient4
。一般情况下,jmeter.httpsampler
的值是没有配置的,所以选空基本上就等于选HttpClient4
- HttpClient3.1。jmeter 3.0后就废弃了,千万不要选
- HttpClient4。基本上是系统默认值了,不知道怎么选的时候就选这个
- java。jvm的标准实现,不支持很多扩展的http方法,所以不清楚的适合就不要选这个
- 空。也就是不选。这时候jmeter就回去找jmeter全局属性的
HTTP请求方法。默认是GET。注意,如果你选java作为http请求的实现方式的话,那么java实现只支持GET , POST , HEAD , TRACE , OPTIONS , PUT , DELETE方法
- 路径(Path)。略
- 同请求一起发送的参数(Send Parameters With the Request)。参数是HTTP请求取样器的难点。一般来说我们都是通过录制的方式获取请求参数,然后再在脚本取样器里对参数进行一些修改——比如参数化等
4、HTTPCookie管理器(HTTP Cookie Manager)
- Cookie 管理器就像一个 web 浏览器那样存储并发送 cookie。
- 接收到的 cookie 数据可以作为 JMeter 线程的参数进行存储(JMeter 2.3.2 之后的版本默认不再打开这个功能)。
- 手工添加一个 cookie 到 Cookie 管理器。
5、HTTP信息头管理器(HTTP Header Manager)
这是一个配置元件。在录制脚本的时候,每一个HTTP请求取样器下面都挂着一个HTTP信息头管理器。这个组件的作用就是以key-value的格式设置http请求的header,一般来说我们通过录制的方式http请求的header。另外每一个请求下面挂一个header信息配置器不利于我们统一的控制线程组中的所有请求,我们可以只在线程组下面挂一个header管理器,这样线程组下的所有http请求都具有同样的header了。
6、录制控制器(Recoding Controller)
这个控制器就是个容器,录制脚本时自动生成的请求都在这个控制器下面
7、事务控制器(Transaction Controller)结果树
假如我们正在测试1个工单系统,提交工单共需要3个步骤,暂且认为是step1,step2,step3,每一步都需要发送一个请求到服务器。1个工单提交的总耗时应该等于step1的耗时+step2的耗时+step3的耗时,在jmeter报告中可以很容易的获取每个请求的响应时间,但是如何获取3个请求的总时间呢?答案是使用事务控制器将这3个请求聚合,把3个请求作为事务控制器的子组件就可以了。
所以事务控制器可以为我们聚合逻辑上应该合并在一起度量的N个请求的总响应时间。
8、工作台
该组建可以理解成为临时工作区,我们可以把一些临时性质或是调试性质的组件放在里面。当我们保存测试计划时,WorkBench组建默认是不保存的,另外下面3种组件只能存在于WorkBench中
- HTTP(S) Test Script Recorder
- HTTP Mirror Server
- Property Display
四、聚合报告中的指标
图形结果里出现了一些性能测试中经常用到的指标:
样本数量(samples)。在这里,我们可以把样本数量简单理解成是jmeter一共向服务器发起了多少次请求;
平均(average)。所有请求响应时间的平均值。单位是毫秒;
- 中值。就是响应时间的中间值,学术一点中值指的是有50%的值大于这个值,另外50%的值小于这个值。蒙圈了吧?实际上中值指的是如果有9个数,那么我们从小到大排列这些数,排在第5个的数就是这一组数的中值。那么如果有10个数呢?10个数的话第5个和第6个数的平均值就是这组数字的中值;
- 90%Line 。90%请求响应时间不会超过XXX毫秒
- 95%Line。与上同理
- 99%Line。与上同理
- Min。最小响应时间
- Max。最大响应时间
Error%.请求响应失败率
吞吐量(throughput)。被测系统每分钟能处理的请求个数,这是判断服务器性能好坏的重要指标(也可以说是最重要的指标)。在上面的图形结果报表里我们可以看到系统的吞吐量是138.985每分钟,这就代表着系统每分钟可以处理138.985个请求;
- Received KB/sec 平均每秒接受多少KB的数据
- Sent KB/sec 平均每秒发送多少KB的数据
性能测试--初识Jmeter的更多相关文章
- 初识Jmeter
初识Jmeter 测试计划是根节点,其下可以有多个Thread Group,起始可配setUp Thread Group和tearDown Group.在每个Group下可创建其它节点,模拟各类实际行 ...
- 性能测试工具JMeter
JMeter介绍 Apache JMeter是Apache组织的开放源代码项目,具有极高的可扩展性,是一个100%纯Java桌面应用,用于压力/性能测试.JMeter可以用于测试静态或者动态资 ...
- 1 认识开源性能测试工具jmeter
典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具jmeter. 1.jmeter是什么? A ...
- 性能测试—认识JMeter(一)
性能测试—认识JMeter(一) <零成本web性能测试>第二章 JMeter基础知识总结和自己的理解 一.JMeter百度词条概念 Apache JMeter是Apache组织开发的基 ...
- 性能测试工具 jmeter 分布式压力测试实操
性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...
- 转 1 认识开源性能测试工具jmeter
1 认识开源性能测试工具jmeter 典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具j ...
- 性能测试工具JMeter 基础(六)—— 测试元件: 线程组
线程组的定义: 线程组是测试计划执行的入口,所有的逻辑控制器和取样器都必须在线程组下,其他的元件根据位置的不同作用域是不同的. 线程组是每个线程都是独立运行测试脚本,一个线程组就等于一个用户,通过多个 ...
- 基于webdriver的jmeter性能测试-通过jmeter实现jar录制脚本的性能测试
续接--基于webdriver的jmeter性能测试-Eclipse+Selenium+JUnit生成jar包 在进行测试前先将用于支持selenium录制脚本运行所需的类包jar文件放到jmeter ...
- Web性能测试工具JMeter
做Web方面的黑盒测试,也就是功能测试,基本不需要什么测试工具,都是直接打开浏览器访问,点一点界面就行. 现在流行的移动互联网应用,客户端和服务端的开发是分离的,两者开发进度肯定不一样,可能存在服务端 ...
随机推荐
- 洛谷——P1996 约瑟夫问题
P1996 约瑟夫问题 (什么?!要给学弟学妹讲约瑟夫问题?!难道就不怕我给他们讲错了吗?! 啊啊啊,为了不给学弟学妹们讲错,蒟蒻表示要临阵磨一下刀...) 题目背景 约瑟夫是一个无聊的人!!! 题目 ...
- Network | HTTP protocol
版本 HTTP/1.0这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中. HTTP/1.1当前版本.持久连接被默认采用,并能很好地配合代理服务器工作.还支持以管道 ...
- python在程序中通过Windows打开文件
import os os.startfile(r'D:\test_input.html')
- ural 1519 fomular 1 既插头DP学习笔记
直接看CDQ在2008年的论文吧. 个人认为她的论文有两个不明确的地方, 这里补充一下: 首先是轮廓的概念. 我们在进行插头DP时, 是从上往下, 从左往右逐个格子进行的, 已经处理的格子与未经处理的 ...
- 【IntelliJ IDEA】1.安装使用IntelliJ IDEA
IntelliJ IDEA,初次接触,被赞许的收费版IDE环境. =================================================================== ...
- mysql----乐观锁总结和实践
悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性.如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这 ...
- xshell登录到CentOS7上时出现“The remote SSH server rejected X11 forwarding request.
其原因是肯能对openssh版本进行了升级. 解决方法为: yum install xorg-x11-font* xorg-x11-xauth /etc/ssh/sshd ...
- Qt编程简介与基本知识
1. 什么是Qt? Qt是一个基于C++的跨平台应用程序和UI开发框架.它包含一个类库,和用于跨平台开发及国际化的工具. 由挪威Trolltech公司开发,后被Nokia收购,目前被Digia公司收购 ...
- 关于异步请求AJAX的具体解释
1,异步请求的方法步骤: 1,推断当前用户支持的浏览器类型 XMLHttpRequest:推断是否支持非IE浏览器,相应的创建方法:xmlhttp = new XMLHttpRequest(); wi ...
- Windows下批处理命令启动项目bat脚本
文件env.cfg #server name SERVER_NAME=ActivitiService #JDK Home JDK_HOME= #Main MAIN_CLASS=com.nbtv.com ...