一. 定义
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
执行时间点:一般而言,只有在系统基础功能测试验证完成、系统趋于稳定的情况下,才会进行性能测试,否则性能测试是无意义的。
二. 类型
- 基准测试:比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能。
- 负载测试:是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。(模拟真实环境的使用)
- 压力测试:是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。
- 并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。目的主要体现在三个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能;
- 稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
三. 指标
1.响应时间
从用户发送一个请求到用户接收到服务器返回的响应数据这段时间就是响应时间。其中包括网络时间和程序处理时间。
响应时间=网络时间+请求处理时间
2.每秒事务处理数(TPS,TransactionPerSecond)
每秒钟系统能够处理的交易或事务的数量。它是衡量系统处理能力的重要指标。
3.并发量
某一时刻同时向系统发送请求的用户数
4.资源利用率
指的是对不同系统资源的使用程度,主要关注的是服务器资源的使用情况,如下:
(1)CPU使用率
CPU当前使用程度,是否处于饱和,是否达到瓶颈
(2)内存
内存使用情况
(3)磁盘IO
对磁盘的读写情况,当对磁盘读写过于频繁,会导致大量请求处于IO等待的状态。
(4)服务器负载
负载(load)是linux机器的一个重要指标,直观了反应了机器当前的状态。
在UNIX系统中,系统负载是对当前CPU工作量的度量,被定义为特定时间间隔内运行队列中的平均线程数。load average 表示机器一段时间内的平均load。这个值越低越好。负载过高会导致机器无法处理其他请求及操作,甚至导致死机。
Linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升。
具体的关于服务器负载分析和问题排查可以参考下面这篇博客
https://blog.csdn.net/wufaliang003/article/details/80400385
(5)网络带宽
当收发包的吞吐率即将到达网卡最大上限,网络数据报文有丢包和阻塞现象,考虑网络是否存在瓶颈。
四. 指标之间的关系
这张图中展示的是1个标准的软件性能模型。在图中有三条曲线,
绿色:表示资源的利用情况(Utilization,包括硬件资源和软件资源)
紫色:吞吐量(Throughput,这里是指每秒事务数)
蓝色:响应时间(Response Time)
横坐标:并发用户数(Number of Concurrent Users),左到右表现了并发用户数的不断增长
在这张图中我们可以看到,最开始,随着并发用户数的增长,资源占用率和吞吐量会相应的增长,但是响应时间的变化不大;不过当并发用户数增长到一定程度后,资源占用达到饱和,吞吐量增长明显放缓甚至停止增长,而响应时间却进一步延长。如果并发用户数继续增长,你会发现软硬件资源占用继续维持在饱和状态,但是吞吐量开始下降,响应时间明显的超出了用户可接受的范围,并且最终导致用户放弃了这次请求甚至离开。
根据这种性能表现,图中划分了三个区域,分别是Light Load(较轻的压力)、Heavy Load(较重的压力)和Buckle Zone(用户无法忍受并放弃请求)。在Light Load和Heavy Load 两个区域交界处的并发用户数,我们称为“最佳并发用户数(The Optimum Number of Concurrent Users)”,而Heavy Load和Buckle Zone两个区域交界处的并发用户数则称为“最大并发用户数(The Maximum Number of Concurrent Users)”。当系统的负载等于最佳并发用户数时,系统的整体效率最高,没有资源被浪费,用户也不需要等待;当系统负载处于最佳并发用户数和最大并发用户数之间时,系统可以继续工作,但是用户的等待时间延长,满意度开始降低,并且如果负载一直持续,将最终会导致有些用户无法忍受而放弃;而当系统负载大于最大并发用户数时,将注定会导致某些用户无法忍受超长的响应时间而放弃。
本文参考
1.http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html
2.https://www.cnblogs.com/puresoul/p/5456855.html
3.https://blog.csdn.net/wufaliang003/article/details/80400385