8.2 软件缺陷
8.2.1 定义
软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。IEEE729-1983对缺陷的定义为:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。
缺陷的表现形式不仅体现在功能的失效方面,还体现在其他方面,例如性能,界面,兼容性等。
8.2.2 缺陷的评价标准,提单依据
软件没有实现产品规格说明所要求的功能模块;
软件没有实现虽然产品规格说明没有明确提及,但应该实现的目标;
软件中出现了产品规格说明指明不应该出现的错误;
软件实现了产品规格说明没有提到的功能模块;
软件难以理解,不容易使用,运行缓慢,或从测试员的角度看,最终用户会认为不好。
8.2.3 产生缺陷的原因
- 人员之间的沟通交流不够,交流上有误解或者根本不进行交流;
- 文档不完善;
- 需求不断的变化;
- 参与人员的过度自信;
- 软件模型拟定不正确;
- 程序设计本身有错误;
- 软件复杂性,缺陷很难避免;
- 工期短,任务重,时间压力大;
- 软件开发工具与系统软硬件的支持;
- 第三方软件的错误;
- 人为因素等等。
8.2.4 再现和优化缺陷
找到缺陷后,一般需要重现一下缺陷以便确定缺陷的存在和必须的步骤。优化缺陷则是尽可能准确,精简的确定步骤。
必要性
首先,用简洁、通用和准确的语言描述缺陷的重现过程,可以有效地报告软件缺陷。其次,再现与优化软件缺陷可以充分发挥测试人员的才能和智慧。成功找出收缩包围问题的具体步骤,能够准确反映一个测试人员的测试水平。
方法
- 不要想当然地接受任何假设。记下所做的每一件事情、每一个操作步骤、每一次停顿及每一件工作。
- 查找时间依赖和竞争条件问题。
- 检查系统日志(log),看有没有异常(Exception)出现。因为有的时侯即使无法再现出错的场景,系统也可能会产生一些Exception。
- 借助于别的工具,如debug工具或dump工具去分析。
- 检查软件测试环境,是否有异于开发环境。
- 检查网络配置是否与客户环境一致。
- 检查被测对象的版本信息,确认测试版本的正确性。
- 状态缺陷是否在特定的软件状态中暴露。