10.3 失效:缺陷与故障导致的结果
失效发生在软件操作的运行时。硬件、软件或人工操作中的缺陷导致失效。如果软件没有运行,则它不会遇到缺陷。尽管这是一个显而易见的陈述,但它对于理解测试阶段与异常处理阶段在职责和活动之间的区别非常重要。理想情况下,软件缺陷会在检测阶段去除,对硬件缺陷也是如此。对于人工操作中的缺陷,我们希望可通过培训和经验将它们去除,但说易行难。为简化问题,我们将主要讨论软件缺陷。
10.3.1 基本的测试类型
表10-3描述了在软件投入运行之前应当进行的7种基本测试类型。
表10-3
|
测 试 类 型< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
描 述 |
|
单元测试 |
要求每次针对一个组件或单元进行测试;
单元可能是指软件模块、模块集合、函数、
过程、对象、算法,或在某些情况下是指计算机程序 |
|
压力测试 |
被设计为将系统的组件推动到其极限,有时候甚
至超出其极限;压力测试包括边界条件测试;
边界条件测试的结果,有助于确定软件组件或系
统组成处于边界条件下时会发生什么事 |
|
集成测试 |
用来测试组件的组装;组件合并成逻辑组,每个
逻辑组作为一个单元进行测试;组可以进行的测
试类型与单元进行的测试类型相同;随着每个组件
被加入到组装中,必须测试的元素的数量成组合式增长 |
|
回归测试 |
用来重测已经改变的模块;回归测试确保对组件的改
动不会导致它失去任何功能性 |
|
运行测试 |
用来在系统全面运行的情况下对系统进行检测;这
个测试将软件组件放到完整系统负荷的现场环境下
进行测试;组件在单元测试、集成测试和压力测试
中经历的测试通常也可以用作运行测试;运行测试
还用来确定组件在一个完全陌生环境中的运行
情况将会怎样 |
|
规范测试 |
用作软件验证过程的一部分;针对最初的规范对组
件进行审计;这个规范指出系统中包含哪些组件以
及这些组件之间有怎样的关系 |
|
验收测试 |
被模块、组件、系统的终端用户用来确定执行情况;
验收测试是软件确认过程的一部分 |
当您对软件进行表10-3中的类型的测试时,您发现缺陷并将它们从软件中去除。在测试过程中发现并去除的缺陷越多,软件在运行时遇到的缺陷就越少。运行时遇到的缺陷会导致软件失效。软件失效将产生异常条件(软件在异常条件下运行)。异常条件要求异常处理。因此,需要在以下两者间采取平衡措施:
测试阶段期间的缺陷排除
异常处理期间的缺陷存活