软件测试:原理、方法与管理策略
1. 测试的重要性与挑战
测试是分析系统或系统组件,以检测指定行为与观察到的实际行为之间差异的过程。然而,要完全测试一个非平凡系统是不可能的。一方面,测试本身具有不可判定性;另一方面,测试必须在时间和预算的限制下进行。这就导致系统常常在未经过全面测试的情况下部署,最终由终端用户发现其中的故障。
以1981年哥伦比亚号航天飞机的首次发射为例,发射因开发过程中未检测到的问题而取消。问题追溯到两年前一名程序员的错误修改,他将延迟因子从50毫秒错误地重置为80毫秒,这使得航天飞机发射失败的概率增加了1/67。尽管在修改后进行了数千小时的测试,但该故障在测试阶段并未被发现。在实际发射时,该故障导致航天飞机上五台计算机的同步问题,最终决定取消发射。
通常,对于发动机等系统的测试有两种常见方法。一种是自下而上的组件测试方法,先深入了解所用材料的特性和局限性,然后对较大的组件进行单独设计和测试,逐步完善整个发动机的设计。这种方法能在早期发现并解决大部分严重问题,后续修改相对容易。另一种是自上而下的方法,如航天飞机主发动机的测试,先整体设计和组装发动机,再处理发现的问题。但这种方法在发现故障原因和进行修改时成本更高、难度更大。例如,高压氧气涡轮泵的涡轮叶片出现裂纹,很难确定是材料缺陷、氧气环境影响、热应力、振动应力还是共振等原因导致的。
测试常常被认为是新手就能完成的工作,管理者会将新成员分配到测试团队。然而,要有效地测试一个系统,测试人员需要对整个系统有详细的了解,包括需求、系统设计决策和实现问题等。同时,测试人员还需掌握各种测试技术,并能在时间、预算和质量的约束下有效应用这些技术。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



