软件质量保障:缺陷追踪、静态检查、同行评审与测试策略
1. 缺陷与问题追踪
1.1 缺陷定义与追踪的重要性
缺陷是软件开发结果中导致软件无法按预期运行的问题,我们常将“bug”和“defect”互换使用,同时使用更通用的“issue”来指代所有需要追踪的事项。缺陷可能源于需求、架构、设计和实现等多个方面。追踪问题至关重要,它不仅能提供待修复的问题清单,还能通过缺陷追踪数据库识别出系统中问题集中的“bug 农场”,即那些导致系统出现大量问题的代码小段,从而明确需要重新设计的部分。
1.2 问题追踪不足的症状
- 没有待修复 bug 的单一列表。
- 没有标注根本原因的已修复 bug 列表。
- 未对 bug 原因进行分析,至少应按代码模块分析,最好能包含缺陷来源(如需求、设计、编码等)。
- 没有针对软件当前或未来版本需要解决的非缺陷问题的单一来源。
1.3 不追踪问题的风险
- 重要 bug 未得到修复,可能是因为遗忘了哪些 bug 尚未解决,或者错误地对 bug 修复进行了优先级排序。
- 浪费资源逐个修复“bug 农场”中的缺陷,而不是对整个有缺陷的模块进行重新设计。
- 试图通过修改实现或使用无法解决根本问题的变通方法来修复由需求或架构问题导致的 bug。
2. 静态检查与编译器警告
2.1 静态检查概述
编译器在遇到源代码中不喜欢的内容时会生成警告和错误两种消息。错误是由源代码中的缺陷导致