面向黑盒测试的软件失效特征分析

时间:2022-08-18 07:03:47

面向黑盒测试的软件失效特征分析

摘要: 传统的软件黑盒测试方法主要依据软件的需求规格信息和使用模式信息设计测试用例,对软件的失效特征信息利用不足。论述了软件黑盒测试识别问题的层面,从黑盒测试的角度分析了软件失效的特征,并提出了相应的对策。

Abstract: The traditional software black—box testing method mainly relies on the information of software requirement specification and usage mode rather than the information of software failure features. The level of the software black box testing to identify problems was discussed, and software failure features is analyzed from the view of black—box testing, and the corresponding countermeasures was proposed.

关键词: 黑盒测试;软件失效特征;测试用例

Key words: black—box testing;software failure feature;test cases

中图分类号:TP31 文献标识码:A 文章编号:1006—4311(2012)27—0007—02

0 引言

软件黑盒测试是把系统或软件看成一个隐藏内部结构和实现细节的黑盒子,只根据软件的输入输出条件和测试场景,从用户的角度并以测试数据驱动的方式,通过观察软件执行时的外部行为,来验证软件产品所应该具有的功能或提供的服务是否正确实现[1]。

传统的黑盒测试方法主要依据软件的需求规格信息和使用模式信息在执行测试之前生成形式上完备的测试用例集,这种策略对软件的失效特征信息和执行时的行为信息利用不足,而且测试过程中缺少对不同测试用例的比较,测试用例检测失效的能力比较低,从而影响了测试的效果。

1 软件黑盒测试识别问题的层面

软件行为是分层次的,从底层的二进制指令到高层的程序语句、系统调用,再到软件功能的执行序列等都属于不同层次的软件行为[2],软件测试就是通过观察软件的各种行为来判定软件中是否存在问题,验证软件各项功能的适用性,确认软件质量的各种属性是否符合用户的预期要求。所以软件测试的类型既对应着软件质量的测度,也对应着软件行为的层次。有些类型的测试能看到错误或缺陷,而有些类型的测试则只能看到失效,需要在失效的基础上进行故障定位[3]。软件黑盒测试所观察到的只是软件的失效现象。

当软件的实际输出与预期输出不一致、或没有实现预定的功能和服务时,或出现了不期望的状态和现象时,即可认为软件发生了失效。从软件失效的机理来看,软件失效的过程可描述为:由于无法完全避免的人为失误等引入了软件错误,于是会在软件中产生一些缺陷,当软件执行时经过了包含缺陷的错误语句时,缺陷被激活,软件就产生了故障状态,如果没有容错措施,故障状态被传递到软件输出,即出现失效[4]。

这里需要指出的是,故障状态被传递到软件输出可以是实时的,即软件立刻失效;也可以是累积的,过一段时间后才发生失效,如时间累积误差引起的失效。软件输出是一种结果,既包括软件本身设计的预期输出,也包括弹出不合理的报错框或异常退出。

由此可见,软件失效是软件缺陷的外部表现结果,是软件的动态行为,而软件缺陷和软件故障是软件的内部行为或状态。所以在黑盒测试过程中,对于测试人员来说,能够观察到的只是失效,错误、缺陷和故障都是看不到的,只能通过失效现象推测故障或缺陷的位置、预测新的失效。并且,有的失效能立即被测试人员观察到,而有的则不能被立即观察到。

2 面向黑盒测试的软件失效特征分析及对策

虽然软件的失效机理非常复杂,从缺陷演变到失效可能要经历一个难以控制和预测的过程,然而软件工程的实践和已有的研究表明,软件失效存在着一些规律性的特征和表象,其中包含着丰富的测试信息。软件失效的特征有很多,本文结合前人的研究,将生成测试用例时可利用的软件失效特征总结为边界特征、聚集特征和关联特征,并提出了相应的对策。

2.1 边界特征 软件失效的边界特征是指触发失效的测试输入常常分布在输入域的边界上。该特征在传统的黑盒测试方法中得到了广泛的运用,边界值分析已成为一个业界普遍认同的测试方法。所以本文不对失效的边界特征进行详细论述。

2.2 聚集特征 软件失效在空间上的聚集特征根源于软件缺陷的聚集特征,失效只是缺陷的外部表现。软件工程界已对Pareto原理(二八定律)形成广泛的认同,即软件缺陷或失效在空间分布上常常表现出聚集特征,80%的软件缺陷存在于20%的软件空间中[5]。软件测试理论中有一条重要的原则就是在出现缺陷较多的软件模块中,通常还会存在更多的缺陷[6]。所以必须对出现失效的软件模块和功能点进行密集测试,以寻找更多的缺陷。

Dickinson W等人在研究基于观察的软件测试时也发现,触发失效的测试用例的距离通常较近,具有群集分布特征[7]。

聚集特征既包括同一个失效导致的聚集,也包括不同失效导致的聚集[8]。不同的输入可能导致相同的失效,也可能导致不同的失效。黑盒测试过程中,由于看不到软件的内部结构和程序的执行路径,所以有可能两个测试用例执行的是程序中的同一个语句,两者导致的失效现象可能是相同的。如果这样的测试用例过多,就会降低测试的效率,造成测试冗余。黑盒测试的目是为了发现更多不同的失效,因此在测试过程中必须进行严格的失效判别。当软件输入域中有一个或一组输入触发失效后,下一步是否应该深入测试。本文认为还应继续深入测试,理由如下:

上一篇:阴式与腹腔镜下两种子宫肌瘤剔除术式临床对照... 下一篇:介绍一种改进的组织蜡块封存方法