一、什么是软件性能?
软件性能应该是一种指标,通过这个指标可以衡量,系统或构件性能达到的程度。也是对软件性能需求的一个测试和评估,用来验收或评估软件达到的性能程度。
二、什么是性能测试?
使用自动化测试工具对产品按照一定的性能指标进行测试,解决性能瓶颈,给用户最好的体验。
三、性能测试基本流程
- 性能测试需求分析
- 性能测试计划
- 性能测试准备
- 开发脚本/执行测试
- 测试结果分析
- 系统调优
- 编写测试报告/调优报告
四、性能测试相关术语
-
响应时间:是用户提交一个请求,系统从开始呈现到将所有信息都呈现到客户端所需要的时间;
注:真正的响应时间应该包括三部分组成:网络传输时间+应用服务器时间+数据库时间 -
并发用户数:指同一时刻与服务器进行数据交互的所有用户数量;
注:并发用户数的计算没有精确的计算公式,只能以经验进行估算,根据行业的不同并发用户数也会有所不同,像电信行业一般取在线用户数的万分之一,OA系统一般是在线用户数的5%-20%左右平均并发用户数的计算(参考):
$$
C=nL / T
$$
其中C是平均的并发用户数,n是平均每天访问用户数(login session),L是一天内用户从登录到退出的平均时间(login session的平均时间),T是考察时间长度(一天内多长时间有用户使用系统)并发用户数峰值计算(参考):
$$
C^峰≈ 3*√C
$$
其中C峰是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论。再注:OA是Office Automation System的缩写 ,意为办公自动化系统。是面向企业组织日常运作和管理的应用系统,其目的在于优化提高员工及管理者的工作效率。简单来说,OA系统是一个企业用来日常办公的软件,主张无纸化办公,其主要功能有:流程审批、考勤、通知公告、投票管理、行政管理、人事管理、资产管理、项目管理、客户管理等;
-
吞吐量:吞吐量是指单位时间内系统处理客户请求的数量;
其直接体现系统的承载的能力,吞吐量一般用请求数/秒或页面数/秒来衡量,从网络角度来说,使用B/s(字节每秒)来考察网络的流量,从业务的角度来讲,吞吐量也可以用人数/天或者处理的业务数/时等单位来衡量。
注:当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算$$
F=VU * R /T
$$
其中F为吞吐量,VU表示虚拟用户个数,R表示每个虚拟用户发出的请求数,T表示性能测试所用的时间
-
吞吐率:是指单位时间内的数据传输量,即吞吐量/传输时间,也可以是单位时间内处理的客户请求数;
通常情况下吞吐量越大,吞吐率的值也就越大,吞吐率越大表示系统的负载能力越强
-
TPS:表示每秒钟系统处理的事物数,他是衡量系统处理能力的重要指标;
-
点击率:指每秒钟用户向Web服务器提交的HTTP的数量 ;
-
资源利用率:指的是系统资源被占用的情况,主要包括CPU利用率、内存利用率、磁盘利用率、网络等 ;
-
思考时间(Think Time) :也称为“休眠时间”,从业务层面来说,这个时间是指用户在进行操作时,每个请求之间的时间间隔 ;
$$
TS=T/R
$$
其中TS就是思考时间,T表示时间,R表示每个用户发出的请求数。
五、性能测试划分
-
负载测试(Load Testing):是通过对被测试系统不断的加压,直到超过预定的指标或者是部分资源已经达到了一种饱和状态不能再加压为止;
1) 目的:就是为了找到系统最大的负载能力
2) 环境:这种方法要在一个特定的环境下进行测试
3) 手段:不断对系统进行加压,直到系统达到极限 -
压力测试(stress Testing):指当系统已经达到一定的饱和程度(如CPU、磁盘等已经处于一种饱和状态),系统处理业务的能力,系统是否会出现崩溃等;
1) 目的:目的是测试系统在很强的压力下,持续运行是否报错,关注的是系统是否报错
2) 环境:这里一般是通过模拟负载等方法,是系统资源达到较高的一个水平
3) 手段:这种方法一般用于系统稳定性测试 -
配置测试 (Configuration Testing):是通过调整系统软/硬件环境,了解在不同环境下系统性能指标的情况,从而找到系统的最优配置;
1) 目的:目的是通过调整环境了解不同因素对于系统性能的影响情况,从而找到最优操作
2) 环境:通过调整系统软件/硬件环境,使系统在不同环境下进行性能测试
3) 手段:用于系统调优和规划能力 -
并发测试(Concurrency Testing):(各种测试方法都包括并发测试)是通过模拟用户并发访问,测试多用户同时访问同一应用、模块或数据,观察系统是否存在死锁、系统处理速度明显下降等其它的一些性能问题;
1) 目的:目的是找到当多用户并发访问时,系统是否存在可能的并发问题
2) 手段:模拟多用户同时并发操作 -
可靠性测试/稳定性测试:是当系统在一定的业务压力下,让系统持续运行一段时间,看系统是否达到我们要求的稳定性,这里强调在一定业务压力下持续运行的能力,一定都会有一个明确的要求,例如:持续运行多少天系统不能出现问题 ;
1) 目的:目的时测试系统在一定的业务压力下,系统可持续运行时间
2) 环境:指系统一定要在一定的业务压力环境下持续运行
3) 测试过程中要关注系统运行的情况
六、性能测试应用的领域
从应用领域来划分,性能测试分四大领域
-
能力验证:能力验证是性能测试最常用的一个领域。一般能力验证采用这样的描述方式:“某系统能否在条件A下具备B性能” ;
-
规划能力:规划能力与能力验证有相似之处,但还是有不一样的地方,能力验证强调的是在某个条件下具备什么样的能力,而规划能力体现在系统如何才能达到要求的性能指标 ;
-
性能调优:性能调优是通过测试来调整系统的环境,最终使系统性能达到最优的状态。这是一个持续调优的过程,主要调优的对象有数据参数、应用服务器、系统的硬件资源等;
调优过程如下图:
-
发现缺陷:性能测试应用领域的主要目标是通过性能测试的手段来发现系统存在的缺陷;