10)性能测试

性能测试内容如图23-16所示。

信息系统项目管理师:信息系统综合测试与管理-软件测试类型5-6_性能测试

检查系统是否满足需求规格说明书中规定的性能。特别是对于实时系统或嵌入式系 统,软件仅满足功能需求而达不到要求的性能是不行的,所以需要进行性能测试。在系统测试阶段,性能测试通常是和强度测试结合起来进行,并通常要求同时进行硬件和软件的检测。

通常,对软件性能的测试表现在以下几个方面。

● 对资源利用(如内存、处理机周期等)进行的精确度量。

● 对执行间隔。

● 日志事件(如中断)

● 响应时间。

● 吞吐量 (TPS)

● 辅助存储区(例如缓冲区、工作区的大小等)

● 处理精度等进行的监测。

当然,对性能表现的测试项的选择要以软件需求规格说明书的具体要求来确定。性 能测试执行时,注意观察资源使用率,如 CPU、 内存、磁盘 (I/O) 的占用情况,资源 率必须控制在50%以下,当大于50%以上时说明硬件或软件运行已占用空间太大,不符 合一般情况。

(1)负载测试。

负载测试,又叫强度测试,是通过逐步增加系统负载,测试系统性能的变化,并最 终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。负载测试也是检查在系统运行环境不正常到发生故障的情况下,系统可以运行到何种程度的测试。所以,负载测试总是在提供非正常数量、频率或总量资源的情况下运行系统的。例如:

● 在平均每秒产生1~2个中断的情况下,设计每秒产生10个中断的特殊用例进行 测试。

● 将输入数据的频率提高一个数量级,确定输入功能的响应。

● 设计需要占用最大存储量或其他资源的测试用例进行测试。

。设计出在虚拟存储管理机制中引起“颠簸”的测试用例进行测试。

。设计出会对磁盘常驻内存的数据过度访问的测试用例进行测试。

负载测试是测试一个应用在重负荷下的表现。例如测试一个 Web 站点在大量的负 荷下,何时系统的响应会退化或失败,以发现设计上的错误或验证系统的负载能力。在 这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条 件下的性能行为,以及持续正常运行的能力。

负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。

(2)压力测试。

对系统逐渐增加压力的测试,来获得系统能提供的最大的服务级别的测试或者不能接收用户请求的性能点。通俗地讲,压力测试是为了发现在什么条件下应用程序的性能会变得不可接受。

根据压力测试结果,通常分析随着压力的增加,系统的平均吞吐量、响应时间的变化趋势,确定系统的性能瓶颈,进而为优化系统提供参考依据。

压力测试包括并发测试和大数据量测试。

① 并发测试。

主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用等问题,几乎所有的性能测试都会涉及并发测试。

并发测试目的不是为了获得性能指标,而是为了发现并发引起的问题。在具体的性能测试工作中,并发用户往往都是借助工具来模拟的,例如在LoadRunner 性能测试工具 中叫作虚拟用户,因为实际情况中去实现同时多人并发的测试环境要求比较高,且测试 时间也是比较长的。

并发测试一般有随机并发测试、共享并发测试和同步并发测试。随机并发测试是在 两个或以上的客户端同时多次进入和退出被测试系统,检查系统是否正确无误;共享并 发测试是在两个或以上的客户端同时调用被测试系统做同样的工作,检查系统是否正确 无误;同步并发测试,就系统中使用到的同步机构,有针对性地组织数据进行测试,例 如,有关同步的命令包括对数据库表、文件的共享,互斥操作,文件系统或记录的加锁、解锁,对公共数据区域的操作等。

在并发测试中如何确定并发用户数?想确定用户并发数,必须知道系统所承载的在 线用户数,我们可以关注用户的总量、用户平均在线数值、用户最高峰在线数值,通过 这些用户数来推算出并发用户数。例如,公司OA 系统账号或者总用户有2000人,最 高峰在线500人,但是这500人并不是作为并发用户存在的概念,即并不表示服务器实 际承载的压力。有可能40%的用户关注的是首页新闻公告板之类(注意看新闻这个阶段是不能造成服务器的压力),20%的用户在查询资料或者操作表格,20%用户在发呆,20% 在页面之间跳转。在这种情况下,只有真正20%用户的查询或操作表格才会对服务器造 成实质的影响,我们将这个查询、操作表格作为一个业务范畴来说,直接将这部分业务 并发用户称为并发用户数。

计算并发用户数公式如下。

信息系统项目管理师:信息系统综合测试与管理-软件测试类型5-6_并发测试_02

公式(1)中, C 是平均的并发用户数, N login session的数量, L login session 的平均长度, T 指考察的时间段长度。

公式(2)则给出了并发用户数峰值的计算方式,其中, C 指并发用户数的峰值, C

就是公式(1)中得到的平均的并发用户数。该公式的得出是假设用户的 login session 产 生符合泊松分布而估算得到的。

假设有一个OA 系统,该系统有3000个用户,(可以看注册信息)平均每天大约有 400个用户要访问该系统,(日志文件查看)对一个典型用户来说, 一天之内用户从登录 到退出该系统的平均时间为4小时,在一天的时间内,用户只在8小时内使用该系统。 则根据公式(1)和公式(2),可以得到:

信息系统项目管理师:信息系统综合测试与管理-软件测试类型5-6_性能测试_03

但是一般的做法是把每天访问系统用户数的10%作为平均的并发用户数。最大的并 发用户数乘上一个值,2或者3。假如说用户要求系统每秒最大可以处理100个登录请求, 10/25/50/75/100 个并发用户来执行登录操作,然后观察系统在不同负载下的响应时间和 每秒事务数。如果用户数在100的时候,响应时间还在允许范围,就要加大用户数,例 如120等。

② 大数据量测试。

大数据量测试包括独立的数据量测试和综合数据量测试两类。独立的数据量测试指 针对某些系统存储、传输、统计、查询等业务进行的大数据量测试。综合数据量测试指和压力性能测试、负载性能测试、稳定性性能测试相结合的综合测试。

大数据量测试主要是针对数据库有特殊要求的系统进行的测试,主要分为三种:

● 实时大数据量。模拟用户工作时的实时大数据量,主要目的是测试用户较多或者 某些业务产生较大数据量时,系统能否稳定地运行。

● 极限状态下的测试。主要是测试系统使用一段时间即系统累积一定量的数据时, 能否正常地运行业务。

。前面两种的结合。测试系统已经累积较大数据量时,一些实时产生较大数据量的模块能否稳定地工作。

大数据量测试用例的设计主要从两个方面来考虑,历史数据引起的大数据量测试和运行时大数据量测试。首先确定系统数据的最长迁移周期,和选择一些前面的核心模块,或者组合模块的并发用户测试用例作为其主要内容即可。

大数据量测试的关键是测试数据的准备,可以依靠工具准备测试数据。

(3)稳定性测试。

稳定性测试,也叫疲劳强度测试。通常是采用系统稳定运行情况下的并发用户数,或者日常运行用户数,持续运行较长一段时间,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量强度性能的过程。一般情况下,利用稳定性测试来模拟系统日常业务操作。进行稳定性测试的环境中必须要存有一定的数据。

稳定性测试是概率性的测试,也就是说即使稳定性测试通过,也不能保证系统实际运行的时候不出问题。所以要尽可能提高测试的可靠性。可以通过多次测试,延长测试时间,增大测试压力来提高测试的可靠性。稳定性测试的测试时间和压力存在一定的关系。在测试时间不能保证的情况下,可以通过增强压力在一定程度上来挽救。

稳定性测试可以反映出系统的性能问题,例如内存泄漏等问题。在执行稳定性测试时,可以观察系统的各种监控指标曲线,预测系统的发展状况;响应时间是否有增长,可用内存是否在减少, CPU 利用率是否在上升等等都可以说明系统是否存在问题。