软件实现与测试

1 软件实现概述

1.1 软件实现定义

软件实现:将设计转换为可执行程序的过程,包括编码、测试和调试等活动。

1.2 程序设计语言分类

类型说明示例
过程式语言以过程为中心C、Pascal
面向对象语言以对象为中心Java、C++、Python
函数式语言以函数为中心Haskell、Lisp
脚本语言解释执行JavaScript、Python、Ruby
查询语言数据库操作SQL

2 软件测试概述

2.1 测试定义

软件测试:在规定条件下对程序进行操作,以发现错误,衡量软件质量,并评估是否满足设计要求的过程。

2.2 测试目的

  1. 发现软件错误
  2. 验证软件功能
  3. 评估软件质量
  4. 为决策提供依据

2.3 测试原则

  1. 尽早和不断地测试
  2. 避免自测
  3. 关注测试用例的设计
  4. 注意群集现象
  5. 严格执行测试计划
  6. 全面检查测试结果
  7. 妥善保存测试文档

3 测试方法

3.1 黑盒测试

黑盒测试:不考虑程序内部结构,只根据需求规格说明书检查程序的功能。

黑盒测试方法

方法说明
等价类划分将输入数据划分为有效等价类和无效等价类
边界值分析测试边界值及其附近值
决策表列出所有可能的条件组合
因果图分析输入条件之间的因果关系
正交试验法使用正交表设计测试用例

3.2 白盒测试

白盒测试:考虑程序内部逻辑结构,测试内部路径和条件。

白盒测试方法

方法说明
语句覆盖每条语句至少执行一次
判定覆盖每个判定至少取真和假各一次
条件覆盖每个条件的所有可能取值至少出现一次
判定/条件覆盖同时满足判定覆盖和条件覆盖
条件组合覆盖所有条件的各种组合都至少出现一次
路径覆盖覆盖所有可能的执行路径

3.3 McCabe环路复杂度

McCabe环路复杂度:衡量程序复杂性的度量。

计算公式

V(G) = E - N + 2

其中:

  • E:控制流图的边数
  • N:控制流图的节点数

或:

V(G) = 判定节点数 + 1

4 测试策略

4.1 测试阶段

阶段说明
单元测试测试最小的软件单元
集成测试测试模块之间的接口
系统测试测试整个系统是否满足需求
验收测试用户测试系统是否满足验收标准

4.2 集成测试策略

策略说明
自顶向下从主模块开始,逐步向下集成
自底向上从底层模块开始,逐步向上集成
三明治集成自顶向下和自底向上相结合

4.3 验收测试类型

  1. α测试:用户在开发环境下测试
  2. β测试:用户在实际使用环境下测试

5 测试管理

5.1 测试计划

测试计划内容包括:

  • 测试范围
  • 测试策略
  • 测试资源
  • 测试进度
  • 测试风险

5.2 测试用例

测试用例要素

  • 测试用例ID
  • 测试项
  • 输入数据
  • 预期结果
  • 实际结果
  • 测试状态

5.3 缺陷管理

缺陷生命周期

  1. 发现缺陷
  2. 提交缺陷报告
  3. 分配缺陷
  4. 修复缺陷
  5. 验证缺陷
  6. 关闭缺陷

缺陷严重程度

  • 致命:系统崩溃、数据丢失
  • 严重:主要功能无法使用
  • 一般:次要功能问题
  • 轻微:界面问题、建议

参考资源

  • 系统分析师教材(第二版)相关章节
  • 文老师软考教育