性能测试分类:
1.负载测试(LoadTesting):为了验证系统设计符合正常业务负载情况下系统性能表现的测试。是站在用户的角度去观察一定条件下软件系统的性能表现。从而测试系统是否满足用户需求。
2.压力测试(Stress Test):也称强度测试。为了验证系统在极端负载情况下的性能表现的测试。压力测试是逐步增加,使系统某些资源达到饱和甚至失效的测试。从而找到系统的性能瓶颈。
3.可靠性测试(Reliability Test):也称稳定性测试。通过给系统加载一定的业务压力的情况下,长时间运行,检查系统是否稳定。因为运行时间较长,通常可以测试出系统是否存在内存泄漏等问题。
4.容量测试(Volume Test):测试系统能够处理的最大会话能力,确定系统可处理同时在线的最大用户数。从而判断是否需要扩容,横向扩展加服务器,从而支撑峰值流量。
性能指标:
平均响应时间(TTLB:Time to Laster byte):平均每个请求从发送到接收响应的时间。合理的平均响应时间符合2/5/8原则,在2秒内,用户体验不错。在5秒内,用户体验比较不错。在8秒内,用户体验比较糟糕。超过8秒,请求基本是失败的。
90%line:90%用户的平均响应时间。
并发用户数:所有用户在同一时间做同一事情或操作。
每秒事务数(TPS:transaction per second或QPS:每秒请求数):每秒钟系统能够处理的交易或者事务的数量.它是衡量系统处理能力的重要指标。其中:TPS= 并发用户数/平均响应时间
吞吐量:指的是在一次性能测试过程中网络上传输的数据量的总和。吞吐量/传输时间,就是吞吐率。
点击率:每秒钟用户向WEB服务器提交的HTTP请求数。
性能指标-系统资源类:
CPU:CPU的占用率。
内存:内存的占用率。
I/O:读写请求数,读写量。
带宽:进站出站带宽占用率。
Jmeter界面名词:
1.测试计划(Test Plan):测试计划是JMeter测试脚本中的根节点,关于整个测试脚本的一些基础设置,可以在测试计划中设定,例如用户定义变量。
1.1线程组(Thread Group):线程组定义一个虚拟用户池,其中每一个虚拟用户都使用相同的测试脚本。
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
准备时长: 设置的虚拟用户数需要多长时间全部启动。
循环次数:每个线程发送请求的次数。
1.1.1采样器:sampler:向服务器发送请求;记录服务器的响应信息。
1.1.2逻辑控制器(Logic Controller):用户通过逻辑控制器来控制JMeter测试脚本的执行顺序,一遍能够按照用户期望的顺序执行。
1.2测试片段:Test Fragment:测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。
1.3公用的
1.3.1配置元件(Config Element):被用来设置一些Jmeter测试脚本公用的信息
1.3.2定时器(Timer):用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于LoadRunner里面的“思考时间”。
1.3.3前置处理器(Per Processors):在前置处理器的作用范围内,任何采样器被执行前都要先执行前置处理器。用于在实际的请求发出之前对即将发出的请求进行特殊处理。
1.3.4后置处理器(Post Processors):在后置处理器的作用范围内,任何采样器被执行后,都要指向对应的后置处理器。用于对Sampler 发出请求后得到的服务器响应进行处理。
1.3.5断言(Assertions): 断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
1.3.6监听器(Listener):监听器被用来手机测试结果信息,并以用户指定的方式加以展示,如图形结果,查看结果树,聚合报告。
2.工作台(WorkBench):工作台被用来暂时不使用的测试元素,当测试人员保存测试计划时,工作台中的内容不会被一起保存。
聚合报告解析
Aggregate Report: JMeter 常用的一个 Listener,中文被翻译为“聚合报告”
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Note:关于 50% 和 90% 并发用户数的含义,请参考下文
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec