性能测试理论基础
一、性能测试基础
1、什么是性能测试?
(1)测试软件的性能表现,考量软件运行的如何。
(2)一般关注时间/效率、资源占用等情况。
既要马儿快点跑,又要马儿少吃草
2、什么时候进行性能测试?
(1)已通过系统测试,功能比较稳定。
3、谁关注性能?
(1)用户
用户体会到的性能是软件对用户操作的响应时间,是用户从提交或输入一个url地址到系统将全部数据呈现出来的时间。
(2)系统管理员和性能测试工程师
除与用户的视角一样外,还关注与系统状态相关的信息,如系统资源的使用情况,包括CPU的使用、内存的使用情况、磁盘I/O、数据交互等。
还关注硬件资源的可扩展性即规划性能部分,如系统支持100个用户并发没问题,支持200个呢?
(3)软件开发工程师
关注以上所有问题,还关注内存泄露、数据库是否死锁、中间件以及和应用程序服务器等问题。
二、主流性能测试工具
三、性能测试术语
1、响应时间
(1)应用系统从用户发出请求开始,到客户端接收到所有数据所消耗的时间。
2、网页响应时间细分
(1)网络传输时间:N1+N2+N3+N4。
(2)应用服务器处理数据:A1+A3。
(3)数据库处理时间:A2。
3、并发用户数
(1)指同一时刻与服务器进行数据交互的所有用户数量。
(2)在线用户未必是并发用户。
(3)计算并发用户数
a、一般都根据以往经验和行业标准进行估算。如电信业并发用户数常为在线用户的万分之一;OA软件并发用户数一般在在线用户数的5%-20%。
b、参考其他同类产品。
c、分析历史数据(一年或半年内的每天需要处理的交易业务量)。
d、试上线运行。
4、吞吐量
(1)指一段时间内服务器处理的字节数,直接体现服务器的承载能力。
(2)从吞吐量和VU关联图可看出,吞吐量在VU增长到一定数量时,软件系统出现性能瓶颈,此时吞吐量不再随VU增多而增大,而是趋于平衡。
(3)实际测试时,吞吐量在测试前是不知道的,必须通过不断添加虚拟用户来测试,以找到吞吐量的拐点,即吞吐量的最大值。
5、吞吐率(Throughout)
(1)指单位时间内从服务器返回的字节数,即吞吐量/测试时间,也可以是单位时间内处理的客户请求数。
(2)它是衡量网络性能一个重要指标。通常情况下吞吐量越大,吞吐率的值也越大,吞吐率越大表示系统的负载能力越强。
6、TPS(Transaction Per Second)每秒事务数
(1)表示每秒系统处理的事务数,是衡量系统处理能力的重要指标。
(2)如果每个事务对应一笔业务,那么TPS即表示服务器每秒处理的业务笔数。
7、点击率(Hit Per Second)
(1)指每秒钟用户向服务器提交的HTTP的数量。
(2)点击一次可能会向服务器发出多个HTTP请求。
(3)通常服务器都具有防刷新机制,以防刷新导致的巨大压力。
(4)点击率仅仅反映客户端提交的请求数,不能表现服务器当前承受的压力,因为服务器不能处理全部请求时可以拒绝客户端的部分请求。
(5)若把每次点击作为一次提交事务来对待,则点击率与TPS同义。
8、思考时间(Think Time)
(1)也称"休眠时间",指用户在进行操作时,每个请求之间的时间间隔。
(2)负载测试一般忽略思考时间,压力或可靠性测试根基实际情况设置一个思考时间。通常思考时间设置为3-5s。
9、资源利用率
(1)指服务器系统中不同硬件资源被占用的程度,主要包括CPU利用率、内存利用率、磁盘利用率、网络等。
(2)性能测试中常用资源利用率进行横向对比,如CPU使用率很高,而其他资源较低,可知CPU是系统瓶颈。
(3)配置调优测试中,通过比较配置调优前后的系统资源利用率来判断调优效果。
10、性能计数器(Counter)
(1)是描述服务器或操作系统性能的一些数据指标。主要是通过添加计数器来观察系统资源的使用情况。
(2)计数器在性能测试中发挥着“监控和分析”的关键作用,尤其是分析系统可扩展性和定位性能瓶颈时。
(3)性能测试中分析测试结果时,必须基于多个不同的计数器进行分析。
11、负载测试(Load Testing)
(1)通过对被测试系统不断的加压,直到超过预定的指标或者部分资源已经达到了一种饱和状态不能再加压为止。
(2)此方法主要是为了寻找系统最大的负载能力,为性能调优提供依据。
12、压力测试(Stress Testing)
(1)当系统已经达到一定的饱和程度(如CPU、磁盘等已经处于一种饱和状态)时,测试系统处理业务的能力,测试系统是否会出现崩溃等。
(2)一般通过模拟负载等方法,使系统资源达到一个较高水平。
(3)此方法一般用于系统稳定性测试。
13、并发测试(Concurrency Testing)
(1)通过模拟用户并发访问,测试多用户同时访问同一应用、模块或数据,观察系统是否存在死锁、系统处理速度明显下降等性能问题。
14、容量测试(Volume Testing)
(1)寻找软件系统某项指标的极限值(如最大并发用户数、数据库记录数、最大负载、工作量等)的测试。是一种测试目标。
15、可靠性测试(Reliability Testing)
(1)或称稳定性测试,健壮性测试。当系统在一定的业务压力下,让系统持续运行一段时间,观察系统是否达到要求的稳定性。可靠性测试一般必须给出一个明确的要求,如系统能够持续无故障运行多少天。
16、配置测试(Configuration Testing)
(1)通过调整系统软/硬件环境,了解不同环境对系统性能的影响,从而找到系统的最优配置。
(2)此方法一般用于系统调优和规划。
17、基准测试
(1)在一定的软硬件及网络环境下,模拟一定数量的虚拟用户运行一种或多种业务,将测试结果作为基线数据,在系统调优或系统评测过程中,通过运行相同的业务场景来比较测试结果确定调优是否达到效果或为系统的选择提供决策依据。
四、性能测试流程
性能测试过程分为四个阶段
(1)设计阶段
a.定义待测试的业务流程、业务的平均处理量、业务处理量的最高峰值、组合业务流程、系统的整体用户和响应时间目标。
(2)构建阶段
b.设计设置和配置测试系统及基础设施、使用自动化性能测试解决方案构建测试脚本和负载方案。
c.具体包括:编写脚本、增强脚本、设计场景。
(3)执行阶段
a.包括运行负载方案和测量系统性能。
(4)分析、诊断和调节阶段
a.主要测量系统性能并使负载测试进入下一级别,重点查找问题原因以帮助开发工程师迅速解决问题,并实时调节系统参数以提高性能。