1. 什么是软件的性能
一般来说,性能是一种指标,表明软件系统或构件对其及时性要求的符合程度;其次,性能是软件产品的一种特性,可以用时间来进行度量。
性能的及时性用相应时间或吞吐量来衡量。相应时间是指服务器对其请求作出响应所需要的时间。对于单个事物,响应时间指完成事物所需要的时间;对于用户任务,响应时间提现为端到端的时间。对于交互应用(如WEB应用)来说,一般以用户感受到的响应时间来描述系统的性能,而对非交互应用(如嵌入式系统或银行等业务处理)而言,响应时间是指系统时间产生响应所需的时间。从三个层面来说明软件的性能:
a. 用户:从用户角度来说,软件性能是软件对用户操作的响应时间。但用户体会到的“响应时间”,既有主观成分,也有客观成分,从提交业务到系统开始返回信息的时间被用户认为是系统的响应时间,而真正的响应时间应该是系统将全部数据呈现出来的时间。
b. 系统管理员:从系统管理员的角度来说,软件性能在响应时间方面与用户的视角是一样的,但管理员除关注一般用户体验外,还关注与系统状态的相关信息。如系统资源的使用情况,包括CPU的使用情况、内存的使用情况、磁盘I/O等,还有数据交互的情况。另外,管理员还关注系统硬件资源的可扩展性即规划性能部分。比如。系统现在支持100个并发用户,那么将来支持200个用户并发时是否会出现性能问题?
c. 软件开发工程师:从软件开发工程师的角度来说,他们关注用户和管理员关注的所有问题,另外还关注内容泄露、数据库是否出现死锁、中间件以及应用服务器等问题。
2. 性能测试相关术语
a. 响应时间
响应时间是指应用系统从发出请求开始到客户端接收到所有数据所消耗的时间。
b. 并发用户数
并发用户数是指同一时刻与服务器进行数据交互的所有用户数量。
此概念的两个误区:一是认为系统所有的用户都叫并发用户;二是认为所有在线的用户都是并发用户。在线用户不一定是并发用户,原因是在线用户不一定就与系统进行了数据的交互。
目前没有一个精确的计算公式来计算并发用户数,都是根据以往的经验进行估算的。行业不同,并发用户数也会有所不同,像电信行业并发用户数为在线用户的万分之一,如果有1000万在线用户,那么需要测试1000个并发用户即可。OA系统的并发用户数一般是在线用户的5%~20%左右。
c. 吞吐量
吞吐量是指单位时间内服务器处理客户请求的数量,常用请求数/秒来衡量,其直接体现服务器的承载能力。
吞吐量为性能测试过程中主要关注的指标之一,与虚拟用户数之间攒在一定的联系,当系统没有遇到性能瓶颈时,可采用下面这个公式来计算:
F=NVU*R/T,F表示吞吐量,NVU表示VU的个数,R表示每个VU发出的请求数量,T表示性能测试所用的时间。但系统若遇到性能瓶颈,这个公式就不再使用。
d. 吞吐率
吞吐率(Throughout)是指单位时间内从服务器返回的字节数,也可以指单位时间内容服务器处理客户提交的请求书。
它是衡量网络性能的一个重要指标。吞吐率=吞吐量/测试时间,通常情况下吞吐量的值越大,吞吐率的值也越大,吞吐率的值越大系统的负载能力越墙。
e. TPS(Transaction Rer Second)
TPS表示服务器每秒处理的事物数,是衡量系统处理能力的重要指标。
f. 点击率(Hit Per Second)
点击率是指每秒用户想服务器提交的HTTP数量。需要注意的是,点击一次并不代表客户端指向服务器端发用一个HTTP请求,客户每点击一次都刽想服务器端发送多个HTTP请求。
g. 资源利用率
资源利用率是指服务器系统中不同硬件资源被使用的程度,资源使用率=资源实际用量/总的可用资源。主要包括CPU利用率、内存利用率、磁盘利用率、网络等。资源利用率是分析系统性能指标进而改善性能的主要依据,在配置调优测试的过程中,通过比较配置调优前后系统资源的利用率来判断调优的效果。
h. 性能计数器(Counter)
性能计数器是描述服务器或操作系统性能的一些数据指标。主要是通过添加计数器来观察系统资源的使用情况。性能计数器包括操作系统性能计数器、数据库计数器、应用服务器计数器等。
i. 思考时间(Think Time)
思考时间也成为“休眠时间”,是指用户在进行操作时,每个请求之间的时间间隔。
3. 性能测试划分
性能测试的划分没有绝对的界限,常用的有以下几种:
a. 负载测试(Load Testing)
指通过对被测试系统不断加压,直到超过预定的指标或者部分资源已经达到了一种饱和状态不能再加压为止。
该方法主要是为了找到系统最大的负载能力,为性能调优提供数据。该测试方法有以下几个特点:
1) 目的:找到系统最大的负载能力;
2) 环境:该方法需要在特定的环境下进行测试;
3) 手段:不断对系统进行加压,直到系统中部分资源达到极限。
b. 压力测试(Stress Testing)
指系统已经达到一定的饱和程度(如CPU、磁盘等已经处于饱和状态),此时系统处理业务的能力,系统是否会出现错误。
疲劳测试是压力测试的一种表现形式。
该方法有以下几个特点:
1) 目的:测试在系统已经达到一定的饱和程度时,系统处理业务的能力;
2) 手段:使用模拟负载等方法,使系统资源达到一个较高的水平;
3) 该方法一般用于系统稳定性测试。
c. 配置测试(Configuration Testing)
指通过调整系统软/硬件环境,了解各种不同环境对系统性能的影响,从而找到系统的最高配置。
该测试方法有以下几个特点:
1) 目的:通过调整环境了解不同因素对系统性能情况的影响,从而找到调优的方法;
2) 手段:通过调整系统软/硬件环境,是系统在不同环境下进行性能测试;
3) 该方法一般用于系统调优和规划能力。
d. 并发测试(Concurrency Testing)
指通过模拟用户并发访问,测试多用户同时访问同一应用、模块或数据,观察系统是否存在死锁、系统处理速度是否明显下降等其他的一些性能问题。
该测试方法有以下几个特点:
1) 目的:当多用户并发访问时,系统是否存在一些可能的并发问题;
2) 手段:模拟多用户同时并发操作;
e. 可靠性测试(Reliability Testing)
指当系统在一定的业务压力下,让系统持续运行一段时间,观察系统是否达到要求的稳定性,此处强调在一定业务压力下持续运行的能力,可靠性测试必须给出一个明确的要求,如系统能够持续无故障运行多少天。
该测试服方法有以下几个特点:
1) 目的:测试系统在一定的业务压力下,系统可持续运行的时间;
2) 环境:指明系统在一定的业务压力环境下持续运行;
3) 测试过程中要关注系统的运行情况。