极客时间《性能测试实战》——性能测试基础
性能测试的概念
1.性能测试概念的传统解释:
压力测试压力测试是评估系统处于或超过预期负载时系统的运行情况。压力测试的关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。在压力级别逐渐增加时,系统性能应该按照预期缓慢下降,但是不应该崩溃。压力测试还可以发现系统崩溃的临界点,从而发现系统中的薄弱环节。
容量测试确定系统可处理同时在线的最大用户数,使系统承受超额的数据容量来发现它是否能够正确处理。
极限测试在过量用户下的负载测试。
2.作者给出的定义
性能测试针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,在场景条件之下执行性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满足既定值。
TPS和响应时间关系
1.性能测试示意图
在这个图中,定义了三条曲线、三个区域、两个点以及三个状态描述。
- 三条曲线:吞吐量的曲线(紫色)、使用率 / 用户数曲线(绿色)、响应时间曲线(深蓝色)。
- 三个区域:轻负载区(Light Load)、重负载区(Heavy Load)、塌陷区(Buckle Zone)。
- 两个点:最优并发用户数(The Optimum Number of Concurrent Users)、最大并发用户数(The Maximum Number of Concurrent Users)。
- 三个状态描述:资源饱和(Resource Saturated)、吞吐下降(Throughput Falling)、用户受影响(End Users Effected)。
这张图呢,本来只是一个示意,用以说明一些关系。
有些人将第一张图中的 Light load 对应为性能测试,Heavy Load 对应为负载测试,Buckle Zone 对应为压力测试……还有很多的对应关系。
事实上,这是不合理的。下面用场景的定义来替换这些混乱的概念。
2.场景定义
上图中蓝线表示 TPS,黄色表示响应时间。
在 TPS 增加的过程中,响应时间一开始会处在较低的状态,也就是在 A 点之前。接着响应时间开始有些增加,直到业务可以承受的时间点 B,这时 TPS 仍然有增长的空间。再接着增加压力,达到 C 点时,达到最大 TPS。我们再接着增加压力,响应时间接着增加,但 TPS 会有下降(请注意,这里并不是必然的,有些系统在队列上处理得很好,会保持稳定的 TPS,然后多出来的请求都被友好拒绝)。
最后,响应时间过长,达到了超时的程度。
怎么理解TPS、QPS、RT、吞吐量这些性能指标
1.性能指标
所有的技术指标都是在有业务场景的前提下制定的,而技术指标和业务指标之间也要有详细的换算过程。
看一下性能测试行业常用的性能指标表示法:
2.性能测试关键字
- 性能测试概念中:性能指标、性能模型、性能场景、性能监控、性能实施、性能报告。
- 性能场景中:基准场景、容量场景、稳定性场景、异常场景。
- 性能指标中:TPS、RT。 (记住 T 的定义是根据不同的目标来的)
工具使用
1.主要工具对比
主要是使用JMeter和LoadRunner。
2.性能团队绩效点体现
- 通过你的测试和分析优化之后,性能提升了多少?
- 通过你的测试和分析优化之后,节省了多少成本?
指标关系:并发用户数如何计算
什么是并发
如此描述:并发数是 16TPS,就是 1 秒内整个系统处理了 16 个事务。
在线用户数、并发用户数
性能分析思路
性能测试分析的能力阶梯视图
性能分析思路大纲
- 瓶颈的精准判断;
- 线程递增的策略;
- 性能衰减的过程;
- 响应时间的拆分;
- 构建分析决策树;
- 场景的比对。
性能衰减
只要每线程每秒的 TPS 开始变少,就意味着性能瓶颈已经出现了。但是瓶颈出现之后,并不是说服务器的处理能力(这里我们用 TPS 来描述)会下降,应该说 TPS 仍然会上升,在性能不断衰减的过程中,TPS 就会达到上限。
TODO
06讲的图