一、 软件错误类型分析
(一)程序正确性的差异
- 程序编写得无语法错误
- 程序执行中未发现明显的运行错误
- 程序中无不适当的语句
- 程序运行时,能通过典型的有效测试数据,而得到正确的预期结果
- 程序运行时,能通过典型的无效测试数据,而得到正确的结果
- 程序运行时,能通过任何可能的数据,并给出正确的结果
(二)软件错误的分类
- 软件需求错误
- 功能和性能错误
- 软件结构错误
- 数据错误
- 软件实现和编码错误
- 软件集成错误
- 软件系统结构错误
- 测试定义与测试执行错误
软件错误分类统计.png
(三)软件错误后果
- 较小错误:对输出结果有非实质性影像。
- 中等错误:对系统运行有局部的影响。
- 较严重错误:系统的行为由于错误的干扰而出现明显不合情理的现象。
- 严重错误:系统运行不可跟踪,一时不能掌握其规律,时好时坏。
- 非常严重错误:系统运行中突然停机,其原因不明,且无法软启动。
- 最严重错误:运行被测软件导致环境遭到破坏,或是造成事故。
二、 程序中隐藏错误数量估计
(一)撒播模型(Seeding Models)
(二)回归模型
三、 软件质量因素和质量特性
(一)把握软件质量
- 软件需求是衡量软件质量的基础
- 规定了的标准是软件开发必须遵循的准则
- 软件通常有着一些不做明文规定的隐含需求
软件质量因素.png
(二)质量因素与质量特性的关系
质量因素可以分解成一些独立的质量特性(Quality Characteristics)。
质量因素与质量特性的关系.png
四、 软件质量保证的任务
(一)软件质量保证(SQA-Software quality assurance)
- 采用技术手段
- 组织正式技术评审
- 软件测试
- 推行软件工程标准
- 对软件的变更进行控制
- 对软件质量进行度量
- 对软件质量情况及时记录和报告
软件评审(Review)是软件质量保证的一个重要手段。
贯穿开发过程中的评审.png
开发过程中错误模型.png
未经软件评审的错误扩展.png
经过软件评审的错误扩展.png
五、 程序排错
(一)排错工作概述
-
什么是程序排错
测试是一种检验。测试以后进行的这些工作称为排错。
排错过程.png - 排错中遇到的困难
- 心里因素
- 改正一个错误时,有时可能引进两个或多个更多的错误
- 错误本身一些特点也增加了排错的困难
(二)排错方法
- 内存信息转储(core dumps)
- 跟踪
- 打印语句
- 使用排错程序
(三)排错策略
- 试错法(Trial and error)
- 回溯法(Backtracking)
- 向前追踪(Forwardtracking)
- 二分查找(Binary-Search)逼近法
- 归纳法(Induction)
归纳法排错过程.png
- 演绎法(Deduction)
演绎法排错过程.png