分类
- 负载测试:验证性测试。验证预设负载条件下性能表现是否达到性能目标,在达到性能目标后不再继续增加负载。
- 稳定性测试:负载测试的子集,侧重于发现、验证经过长时间运行才会暴露的问题。比如内存泄露等问题。
- 压力测试:破坏性测试,尝试探测应用或者基础设施的极限能力。压力测试过程中会一直增加负载直到部分性能指标不再符合性能预期。压力测试能发现仅在高负载条件下出现的同步问题、内存泄露等。压力测试可以确定我们的应用服务在什么条件下会变的不可用,不可用的现象,以及可以通过哪些监控指标来监控即将发生的不可用。
- 容量测试:在保证用户体验不受影响(稳定性)的前提下,使有限的资源利用率最大化。也可以预估当未来用户量增长到某个量级的情况下,需要多少资源来支持。
测试指标
- TPS(Transaction Per Second):每秒事务数
- 事务:事务内第一个请求发送到最后一个请求的响应过程。
- QPS(Query Per Second):每秒查询次数,指服务器每秒能够响应的查询次数。
- 响应时间RT(Response Time):指用户从客户端发起一个请求后,客户端接收到从服务端返回的响应后结束,整个过程耗费的总时间。
- 并发用户数:在同一时刻与服务器进行了交互的在线用户数量。
- 最大并发量:指同时登录站点的最大人数或者服务器同时接收下载的最大数量。
- 吞吐率TPS(Throughput Per Second):某个并发用户数下,是单位时间内服务器处理的请求个数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
- 吞吐率和并发用户数有关
- 不同并发用户数,吞吐率一般不同
- 80%的系统性能瓶颈是由吞吐量引起的
- 通过不断增加并发用户数和吞吐量观察系统的性能瓶颈。然后,从网络、数据库、应用服务器和代码本身 4 个环节确定系统的性能瓶颈。
- 服务器性能指标:
Jmeter性能测试参数
- 线程数:并发数量,具体说就是一次存在多少用户同时访问。
- Rame-Up Period(in seconds):成长时间,设置虚拟用户需要多长时间全部启动。当访问网站时,并不是一次性的涌入大量数据进行访问,而是随着时间的推移,慢慢的涌入越来越多的用户进行访问。Rame-Up Period(in seconds)参数的设置旨在更好的模拟真实场景的并发情况。
- 循环次数:该请求参数指线程进行循环多少次请求。不会改变具体的并发量,但会影响总的请求数。总请求数 = 线程数 * 循环次数
- 延迟创建线程直到需要:延迟创建线程,直到该线程开始取样时才创建。即并不会一开始就创建线程,而是等需要发起请求时,才会开始创建线程。
- 调度器:对线程组进行限制设置
- 持续时间:脚本持续运行的时间长度
- 启动延迟:脚本延迟启动的时间
测试场景
根据测试接口的分类
- 单接口测试:保障接口测试的正确性和健壮性。测试接口是否能根据正确的输入给定正确的输出。测试接口是否能对违规数据进行处理。
- 多接口测试(业务流程测试):保障多个接口的串行操作能够正确的完成业务逻辑
根据测试目的分类
- 目标测试:根据系统的目标用户量设置虚拟线程进行测试,确定系统是否满足目标应用情况。
- 梯度测试:在测试启动或结束时,并发量逐步增加/减少的情况进行测试。旨在更好的模拟真实情况,更有梯度的获取不同条件下系统的性能情况。
- 极限测试:对系统的极限性能进行测试,却对系统高负载出现的条件,高负载下的异常行为。