- 性能测试是什么
基于协议模拟用户发出请求,对服务器形成一定负载,来测试服务器的性能指标是否满足要求
性能指标关注点:时间性能、空间性能
性能测试与页面无关
Jmeter的作用 -
接口测试 postman/jmeter
-
性能测试 jmeter
-
数据库测试
- Jmeter怎么用
Windows下Jmeter下载安装
登录 http://jmeter.apache.org/download_jmeter.cgi ,根据自己平台,下载对应文件
安装JDK,配置环境变量(具体步骤不做介绍
将下载Jmeter文件解压,打开/bin/jmeter.bat
Jmeter的目录结构
/bin 目录(常用文件介绍)
examples:目录下包含Jmeter使用实例
ApacheJMeter.jar:JMeter源码包
jmeter.bat:windows下启动文件
jmeter.sh:Linux下启动文件
jmeter.log:Jmeter运行日志文件
jmeter.properties:Jmeter配置文件
jmeter-server.bat:windows下启动负载生成器服务文件
jmeter-server:Linux下启动负载生成器文件
/docs目录——Jmeter帮助文档
/extras目录——提供了对Ant的支持文件,可也用于持续集成
/lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录
/licenses目录——软件许可文件,不用管
/printable_docs目录——Jmeter用户手册
创建线程组
3.1.2. 线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。
3.1.3. 线程数:虚拟用户数。一个虚拟用户占用一个线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
3.1.4. 准备时长(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。
3.1.5. 循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
3.1.6. . 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
3.1.7. 持续时间(秒):测试持续时间,会覆盖结束时间
3.1.8. 启动延迟(秒):测试延迟启动时间,会覆盖启动时间
3.1.9. 启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
3.1.10. 结束时间:测试结束时间,持续时间会覆盖它。
创建http请求
用表格查看结果
Sample:每个请求的序号Start Time:每个请求开始时间Thread Name:每个线程的名称Label:Http请求名称Sample Time:每个请求所花时间,单位毫秒Status:请求状态,如果为勾则表示成功,如果为叉表示失败。Bytes:请求的字节数样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数平均:每个线程请求的平均时间最新样本:表示服务器响应最后一个请求的时间偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
查看结果树
有请求参数和请求的信息
取样器的结果 有状态码
聚合报告参数说明
lable:对应每一个http请求,显示的是http请求的Name,如百度http请求name为baidu#Samples:表示这一次的测试中一共发出了多少请求,如上图所示,sougou和baidu的http请求每个都发出30个请求Average:平均响应时间,指的是所有的请求的平均响应时间,如上图的30个请求的总的响应时间除以30得出的平均响应时间,默认的情况下是单个请求的平均响应时间,但当使用了“事务控制器”时,则以事物为单位显示平均响应时间Median:中位数,也就是50%用户的响应时间90%Line:90%用户的响应时间Min:最小响应时间Max:最大的响应时间Error%:本次测试中出现错误的请求的数量/请求的总数,如上图所示,本次的测试中,sougou的http请求66.6%的请求出错,而baidu的请求则没有出错的请求Throughput:吞吐量,默认情况下表示每秒完成的请求数,如上图所示,每秒完成的请求数分别为6.6个每秒,6.2个每秒Recived KB/Sec:每秒从服务器端接收到的数据量,以kb为计算的单位
样本数目:总共发送到服务器的请求数。
最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
吞吐量:服务器每分钟处理的请求数。
平均值:总运行时间除以发送到服务器的请求数。
中间值:有一半的服务器响应时间低于该值而另一半高于该值。
偏离:表示服务器响应时间变化、离散程度测量值的大小。
Jmeter主要组件介绍
1.测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。2.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。可以在“测试计划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。3、取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP 、ftp请求等等。4、监听器:负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。6、断言:用于来判断请求响应的结果是否如用户所期望,是否正确。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。7、定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。5、逻辑控制器:允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。8. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。9. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
测试计划
-
测试计划就是一个完整的场景
-
“独立运行每个线程组” :勾选以后所有的线程组都是顺序执行的了。一般不勾选,让所有 的线程组并发启动。
-
“函数测试模式” :勾选后会有详细的请求记录,消耗资源,影响客户端性能。一般不勾选。
-
用户定义的变量:全局变量,测试计划上可以添加用户定义的变量。一般添加一些系统常用的配置。如果测试过程中想切换环境,切换配置,一般不建议在测试计划上添加变量
- 线程组
(1)、thread group(线程组)
这个就是我们通常添加运行的线程。通俗的讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。
(2)、setup thread group
一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行;类似LoadRunner的init,测试开始时进行初始化的工作。
(3)、teardown thread group
一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组;类似LoadRunnner的end,测试结束时进行回收工作。
监听器
监听器(Listener)负责收集测试结果,同时也被告知了结果显示的方式。我们常用的包括:聚合报告、查看结果树、用表格查看结果,都支持将结果数据写入文件。其他的添加上去看看就行。聚合报告前面我们介绍过,后面是查看结果树和用表格查看结果的截图
逻辑控制器
逻辑控制器
循环控制器
事务控制器
作用: 事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。
在线程组下创建事务控制器
参数:
· Generate parent sample:(选中这个参数结果展示如下图红框,否则显示为下图蓝框)
· Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间
两条请求合为一个亲求
断言—检查点
断言(Assertions)可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的
。