Apache JMeter基本概念

本篇博客并非讲述如何使用Apache JMeter,而是关于Apache JMeter相关的一些知识点及概念,不了解这些知识当然也可以跟着网上的教程走一遍,达到初步的测试目的:使用Apache JMeter成功发送一次请求到被测试接口中。但是了解这些基本的知识可以让你在使用功能该工具时更加的得心应手。

首先了解一下什么是Apache JMeter?
Apache JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如:静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能回归测试,通过创建带有断言的脚本来验证你的程序是否返回了期望的结果,为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
回归测试:回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

JMeter元素
1、Test Plan:测试计划,用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就说本次性能测试的所有内容都是基于一个计划的。
2、Threads(Users):线程(用户)
(1)setup thread group:可用于执行预测试操作。这些类型的线程执行测试前进行定期线程组的执行。
(2)teardown thread group:可用于执行测试后动作。这些类型的线程执行测试结束后执行定期的线程组。
(3)thread group(线程组):测试时运行的线程。通俗的讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。
线程属性
Numbers of Threads(users):线程数量(模拟用户数量)。
Ramp-Up Period(in seconds):指定了启动所有线程所花费的时间,单位是秒,默认时间是1秒。如果你需要Jmeter立即启动所有线程,将此设定为0即可。
Loop Count:循环次数,表示每个线程执行多少次请求。 Forever表示永远循环,除非手动停止。
3、Sampler:取样器,是每一个测试计划的基本要素,一切都围绕这些采样器而工作:采样器执行请求(基于配置的请求),这些请求产生一个或多个响应,后续将被分析。
4、Listeners:监听器,负责收集测试结果(对取样器的请求结果显示、统计一些数据:吞吐量、KB/S……等),同时也被告知了结果显示的方式。监听器以报表、树型结构、或简明的日志文件的形式分析结果。
5、Assertions:断言,保证性能测试过程中的数据交互与预期保持一致。
6、Timers:定时器,负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。如果不指定,JMeter会一个请求(线程)完成后立即执行下一个请求(线程),没有任何等待时间。
7、Logic Controllers:逻辑控制器允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
8、PreProcessor/PostProcessor:前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
9、Config Element:使用配置元素你可以将不同的参数传递给取样器请求。他们提供了创建变量的一种方式,这些参数之后被采样器所使用。在采样器被执行前,参数所属节点启动时,这些参数被执行;这就是为什么采样器可以依赖这些变量。

测试计划元素执行顺序
1–Config Element 配置节点
2–Pre-Processors 前置处理器
3–Timers 定时器
4–Sampler 取样器
5–Post-Processors 后置处理器(只在有结果可用情况下执行)
6–Assertions 断言(只在有结果可用情况下执行)
7–Listeners 监听器(只在有结果可用情况下执行)

取样器之聚合报告
一般情况下我们在压测时使用的取样器为聚合报告(Aggregate Report)
Label:每个Jmeter的element(例如HTTP request)都有一个name属性,这里显示的就是name属性的值
#Samples:表示本次测试中共发出了多少次请求,如果模拟10个用户,每个用户循环10次,那么这里显示100
Average:平均响应时间————默认情况下是单个Request的平均响应时间。(当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间)
Median:中位数,也就是50%用户的响应时间
90%line、95%line、99%line:先明确一下xx%line的含义,即百分位,如果100个请求按时间升序排列,我是第90个,那么我请求的时间就是90%,翻译过来就是有90%的数据花费的时间比我的少(也就是90%请求响应时间不会超过多少秒),这个指标代表了高并发情况下大部分用户的体验值
Min、Max:最短耗时和最长耗时,以上时间均以毫秒位单位
Error%:本次测试过程中出现的错误请求数量/请求的总数
Throughput(TPS):吞吐量,每秒钟处理请求的次数。也就是指服务器处理能力,tps越高说明服务器处理能力越好
Recieved KB/sec:获得的数据量
Send KB/sec:发送的数据量
比较重要的是90% line、Error%、Throughput。我们在做压力测试的时候要根据服务器和网页的实际情况,不只根据数据还要根据服务器的性能来做出各种调整,需要注意的是不是TPS越高越好,也不是90% line越快越好,因为这无法代表你服务器的最佳状态,参数需要多次调式之后才能获得正确的聚合报告。

90%Line引发的问题?
百分位数:统计学术语,如果将一组数据从大到小排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列如,处于p%位置的值称第p百分位数。

一个?:
高等院校的入学考试成绩经常以百分位数的形式报告。比如,假设某个考生在入学考试中的语文部分的原始分数为54分。相对于参加同一考试的其他学生来说,他的成绩如何并不容易知道。但是如果原始分数54分恰好对应的是第70百分位数,我们就能知道大约70%的学生的考分比他低,而约30%的学生考分比他高。
假如:
有10个数:1、2、3、4、5、6、7、8、9、10 按由大到小将其排列,求它的第90%百分位,也就是第9个数刚好是9 ,那么他的90%Line 就是9 。
另一组数:
2、2.1、2.5、3、3.4、3.4、4、4、4、4、5、5、5、5.9、5.91、6.8、8、12、24、24.1 按由大到小将其排列,求它的第90%百分位,第18个数是12,他的90%Line 就是12。
再来解释90%Line :一组数由小到大进行排列,找到他的第90%个数(假如是12),那么这个数组中有90%的数将小于等于12。用在性能测试的响应时间也将非常有意义,也就是90%请求响应时间不会超过12 秒。

发布了40 篇原创文章 · 获赞 10 · 访问量 4053

猜你喜欢

转载自blog.csdn.net/qq_41693150/article/details/98949419