性能测试基础知识
一.软件质量模型中的效率特性(性能概述)
软件质量模型中的效率特性即为软件的性能,其中包含两个方面的特性:时间特性和资源特性。
-
时间特性:系统处理客户请求的响应时间;
-
资源特性:在进行性能测试过程中,系统资源消耗的情况,常见的系统资源主要包括处理器(cpu)、内存和磁盘的使用情况。
所以通常如果我们说到性能,不仅仅只包括响应时间,还应该包括系统资源消耗。
虽然性能包含了上述两个方面,但不同的人对性能的关注点是不一样的,比如客户爸爸一般提的时候,更关注的是时间特性。通常情况下,用户、系统管理员,性能测试工程师,以及开发都会关注软件的性能。
1.用户的关注
从用户的角度来说,软件性能是软件系统对用户提交请求所响应的时间。
2.系统管理员,性能测试工程师
响应时间+服务器资源的使用情况,系统硬件资源的可扩展性(性能规划),比如系统现在支持100并发,那将来是否能支持200并发?
3.开发
上述用户管理员和测试的关注点开发都需要关注,此外他们还会关注内存泄露,数据库死锁,中间件,应用服务器等
二.性能测试相关术语
1.响应时间
2.并发用户数
3.吞吐量
4.吞吐率
5.TPS
6.点击率
7.资源利用率
8.性能计数器
9.思考时间
三.性能测试划分
1.负载测试
通过对被测系统不断加压,直到超过预定的指标或者部分资源已经达到了一种饱和状态不能再加压为止。就想举重运动员,在举重过程中不断的增加杠铃重量,直到运动员无法举起
该方法主要是为了找到系统最大的负载能力,为性能调优提供数据。
负载测试有以下特点:
(1)目的:找到系统最大的负载能力
(2)环境:需要在特定的环境下进行测试
(3)手段:不断对系统进行加压,直到系统中部分资源达到极限。
2.压力测试
系统已经达到一定的饱和程度(如CPU,磁盘等已经处于饱和状态),此时系统处理业务的能力,系统是否会出现错误。
疲劳测试是压力测试的一种表现形式。比如一个人很累了,但还在持续不停的工作。
压力测试有以下特点:
(1)目的:测试在系统已经达到一定的饱和程度时,系统处理业务的能力。
(2)手段:使用模拟负载等方法,使系统资源达到一个较高的水平
(3)一般用于系统稳定性测试。
3.配置测试
通过调整系统软硬件环境,了解各种不同环境对系统性能的影响,从而找到系统的最优配置。
配置测试有以下特点:
(1)目的:通过调整环境了解不同因素对系统性能的影响情况,从而找到调优的方法。
(2)手段:通过调整系统软硬件环境,使系统在不同环境下进行性能测试。
(3)一般用于系统调优和规划能力。
4.并发测试
通过模拟用户并发访问,测试多用户同时访问同一应用、模块或者数据,观察系统是否存在死锁,系统处理速度是否明显下降等其他一些性能问题。
并发测试有以下特点:
(1)目的:当多用户并发访问时,系统是否存在一些可能的并发问题。
(2)手段:模拟多用户同时并发操作。
5.可靠性测试
当系统在一定的业务压力下,让系统持续运行一段时间,观察系统是否达到要求的稳定性,此处强调在一定业务压力下持续运行的能力,可靠性测试必须给出一个明确的要求,比如系统能够持续无故障运行多少天。
可靠性测试有以下特点:
(1)目的:测试系统在一定业务压力下系统可持续运行的时间。
(2)环境:系统在一定的业务压力环境下持续运行。
(3)测试过程中要关注系统运行的情况。
6.基准测试
在一定的软件硬件和网络环境下,模拟一定数量的虚拟用户运行一种或多种业务,将测试结果作为基线数据,在系统调优或系统评测过程中,通过运行相同的业务场景并比较测试结果确定调优是否达到效果或者为系统的选择提供决策数据。
基准测试主要包括以下2个目的:
(1)度量改善性能测试的情况。
(2)测试并且调优,保证系统达到性能要求或者服务协议要求,在这个测试过程中,基准测试与性能测试迭代配合,以确定调优的情况。
7.各类测试执行的阶段
上述的6种性能测试类型,我们应该安排什么阶段呢?一般情况下,在编码阶段进行并发测试、压力测试和配置测试,因为在编码阶段需要快速的发现性能问题,编码阶段结束后,系统进入测试阶段,此时更多的是测试系统的稳定性和对系统进行调优,使系统的性能最优化,所以测试阶段主要是进行负载测试、基准测试和配置测试。
四.性能测试应用领域
1.能力验证
“某系统能否在条件A下具备B性能”,重点在于验证系统是否具备某种能力。有以下几个特点:
(1)要求在一个已确定的环境下运行。
(2)需要根据典型场景来设置测试方案和测试用例。
2.规划能力
体现系统如何才能达到要求的性能指标。“系统如何才能支持未来用户增长的需求”,强调的是未来能力增长的一个需求,着眼于未来系统的规划。有以下几个特点:
(1)对系统能力的一种探索性的测试。
(2)可以了解系统的性能及系统性能的可扩展性。
3.性能调优
通过测试来调整系统的环境,最终使系统性能达到最优的状态。性能调优是一个持续的过程,主要的调优对象有数据参数,应用服务器,系统的硬件资源等
性能的调优过程如下:
(1)确定本次性能测试的基准环境,基准负载和基准性能指标,目的是将这些基准数据作为后期测试数据的参考对象。
(2)对系统进行调优(调优的对象包括代码、数据库、应用服务器、系统资源等),再调整系统运行环境和测试方案,重复进行性能测试并记录测试的结果。
(3)将调整后的测试结果与基准数据进行比较,以确定调优的效果,重复执行步骤2直到性能指标满足要求。
4.缺陷发现
性能测试应用领域的主要目标是通过性能测试的手段来发现系统存在的缺陷。很多系统在实验测试环境中没有发现任何问题,但交付给客户时就出现了很多莫名其妙的错误。如果交付后出现多人同时访问速度缓慢或者直接宕机的现象,那么很有可能是由于系统的性能问题引起的。