性能测试(Performance Test)
通过测试工具和测试手段,监测和收集测试过程中的软件系统运行数据,度量系统与预定义目标的差距。而预定义目标就是通过性能需求来表示。
监测和收集:
1. 收集,根据项目历史数据,或者根据经验
2. 分析,比如业务人员很多,底层到中层、再到高层。
可能存在的问题:
- 性能问题还存在可以细分一下是场景遗漏、还是数据遗漏。场景遗漏常常由于需求传递变味导致。
- 处理方法。 做好策略和设计,如果针对现在的问题:可以做一个checklist不断优化你的策略设计能力。
- 分析历史数据、竞品、业务。业务需要分析业务常见、业务高峰(大的时间和小的时间段)
负载测试(Load Test)
负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。通过逐步增加系统负载,确定在满足性能指标的情况下,系统所能承受的最大负载量。
压力测试(Stress Test)
压力测试是一种高负载下的负载测试,也就是说被系统处于一个负载的情况,再继续对他进行加压,形成双重负载,直到系统崩溃,并关注崩溃后系统的恢复能力,以前再加压的一个过程,看看系统到底是否已经被彻底破坏掉了。
持续压力:有个很形象的说法就是:你能够承担100千克的重量,而且也能走,但是你能否承担100千克的重量行走1个月。
外部的负载叫压力,内部的压力叫负载。负载注重关注内部的以及系统自身一些情况;而压力更关注系统外部的表象.
负载测试关注的是用户规则和需求,而压力测试关注的是系统本身
性能测试模型
性能测试的执行过程是由轻到重,逐渐对系统施压。通常用户最关心的性能指标包括:响应时间、吞吐量、资源利用率和最大用户数。我们可以将这张图分成3个区域,即:轻负载区域、重负载区域和负载失效区域。
-
轻负载区域
在这个区域您可以看到随着虚拟用户数量的增加,系统资源利用率和吞吐量也随之增加,而响应时间没有特别明显的变化; -
重负载区域
在这个区域您可以发现随着虚拟用户数量的增加,系统资源利用率随之缓慢增加,吞吐量开始也缓慢增加,随着虚拟用户数量的增长,资源利用率保持相对的稳定(满足系统资源利用率指标),吞吐量也基本保持平稳,后续则略有降低,但幅度不大,响应时间会有相对较大幅度的增长; -
负载失效区域
在这个区域系统资源利用率随之增加并达到饱和,如CPU利用率达到95%甚至100%,并长时间保持该状态,而吞吐量急剧下降和响应时间大幅度增长(即:出现拐点)。 -
两个交界点
在轻负载区域和重负载区域交界处的用户数,我们称为"最佳用户数"。而重负载区域和负载失效区域交界处的用户数则称为"最大用户数"。
总结:
- 当系统的负载等于最佳用户数时,系统的整体效率最高,系统资源利用率适中,用户请求能够得到快速响应;
- 当系统负载处于最佳用户数和最大用户数之间时,系统可以继续工作,但是响应时间开始变长,系统资源利用率较高,并持续保持该状态,如果负载一直持续,将最终会导致少量用户无法忍受而放弃;
- 而当系统负载大于最大用户数时,将会导致较多用户因无法忍受超长的等待而放弃使用系统,有时甚至会出现系统崩溃,而无法响应用户请求的情况发生。
并发
相对并发
即在线用户数,在一个时间段内,与服务器进行了交互、对服务器产生了压力的用户的数量。这个时间段,可以是一天,也可以是一个小时。
并发与并行是相关的概念,但是也有很多细节上的差异。并发意味着两个或更多的任务正在取得进展,即使它们不是同时执行的。例如,可以用时间片的方式实现这一点,每个任务在时间片内执行一小部分,并与其它任务的切片混合执行。如并发收集器。并行的出现使任务实现了真正的同时执行。
绝对并发
主要是针对某一个操作进行测试,即多个用户同一时刻发起相同请求