前言
软件测试应遵循尽早开始原则,通过早期测试发现和暴露潜在风险,降低测试成本,加快项目进度。缺陷雪崩现象表明缺陷若未及时修复,将引发更多问题。随着开发阶段推进,修复成本急剧上升。因此,测试应贯穿整个软件周期,与开发并行进行。根据《软件测试的目标》可知,软件测试不同阶段有不同的目标,早期测试是预防错误,开发阶段测试是发现并修复错误和缺陷。
1.1 尽早测试
尽早测试原则是在早期测试和开发测试阶段,通过对需求、架构、设计文档和代码的测试,尽早的发现和暴露软件系统潜在的质量风险,来达到降低测试成本、加快项目进度、改进和提高项目质量的目标。
尽早和高效地审视并识别出需求、架构和设计中的潜在缺陷:
(1)程序员对架构、设计、需求错误产生的bug进行修复并总结;
(2)测试员积极参与bug的根因定位分析并总结;
1.2 缺陷雪崩
NO | 阶段 | 描述 |
---|---|---|
1 | 需求 | 正确需求,错误需求 |
2 | 设计 | 正确设计、错误设计、错误需求 |
3 | 开发 | 正确实现、错误实现、错误设计、错误需求 |
4 | 测试 | 常见缺陷、难以修复缺陷、被隐藏的缺陷 |
5 | 交付 | 已发现、未发现、已修复、未修复、客户发现、客户遗漏 |
软件测试中的缺陷雪崩是指在软件开发和测试过程中,由于一个或多个初始缺陷(bug)未被及时发现和修复,导致后续产生更多相关问题或缺陷的连锁反应现象。这种现象类似于自然界中的雪崩,即一个小的触发因素能够引发大规模的崩溃。
比如,从需求开始就有错误,并且未被发现和修复,然后导致设计、开发、测试和交付出错。随着软件开发的进行,潜在的缺陷越积越多,出现缺陷雪崩现象,即缺陷的放大效应。
需求阶段:有正确和错误需求,错误需求引发缺陷;
设计阶段:有正确和错误设计,正确需求可能产生错误设计,错误需求导致错误设计,最终,错误设计引发缺陷;
开发阶段:有正确和错误实现,正确设计可能产生错误实现,错误设计导致错误实现,最终,错误实现引发缺陷;
测试阶段:发现常见缺陷、难修复的缺陷和未被发现的缺陷;
交付阶段:测试未发现、开发未修复、客户遗漏缺陷;
1.3 测试成本
NO | 阶段 | 修复1个缺陷的相对成本(倍) |
---|---|---|
1 | 需求分析 | 1 |
2 | 系统设计 | 3-6 |
3 | 编码实现 | 10 |
4 | 开发测试 | 15-40 |
5 | 系统测试 | 30-70 |
6 | 交付客户 | 40-1000 |
上表数据,假设需求分析发现的缺陷,修复1个的成本为1,后续阶段的成本相对于需求修复1个缺陷的成本。
测试成本,即缺陷发现和修复的成本随着软件开发阶段的逐步推进而迅速攀升。在早期的开发阶段,如代码审查(Code Review)和研发项目测试阶段,修复缺陷的成本相对较低,因为此时问题尚未扩散至整个系统,修复起来相对简单。然而,随着开发进入后期阶段,如测试人员测试阶段以及发布后的客户反馈阶段,修复缺陷的成本会急剧上升。这是因为此时缺陷可能已经影响到系统的多个部分,修复需要更多的时间和精力,甚至可能需要重构部分代码或重新设计系统架构。
1.4 使用原则
(1)软件测试应该尽早开始。
(2)软件测试应该与软件开发或维护工作并行,并持续进行,贯穿整个软件周期。