软件工程

10 - 测试和质量保证

2019-12-19 10:00 CST
2019-12-18 23:02 CST
CC BY-NC 4.0

10.1 测试与质量保证简介

检测软件程序和中间文档中错误的技术:

  • 测试
  • 检查和审查
  • 形式化方法
  • 静态分析

产品质量的定义:

  • 符合规约
  • 为其目的服务

注意,产品可能符合规约但没有任何用处,两个定义是不等价的。

与两个质量概念相对应,有两项活动:

  • 验证(Verification):检查软件产品是否符合其需求或规约
  • 确认(Validation):检查最终完成的软件产品是否符合用户的需求和规约

失效、缺陷和错误:

  • 失效(Failure/Problem):系统不能按其规格说明执行某项功能,这是由系统中的缺陷导致的
  • 缺陷(Fault/Defect):可能导致系统失效的情况,这是由软件工程师所犯的错误引起的,也称为bug
  • 错误(Error):软件工程师或程序员所犯的过失

10.2 测试

测试是通过识别缺陷和问题来评估产品质量并进行改进的一项活动。

软件测试是指基于一组有限的测试用例,动态的验证程序的行为,并与预期行为进行对比。

测试的目的:

  • 找到软件中的缺陷,以便修正或减少缺陷
  • 提供质量的总体评估,为产品在大多数情况下正常运行提供一些保证,并对可能存在的缺陷进行估计

10.3 测试技术

由谁来测试?

  • 程序员:单元测试
  • 测试员:对测试结果进行统计分析,评估产品的质量水平,也协助制定产品发布决策
  • 用户:用户属于开发组织称为Alpha测试,用户不属于开发组织则为Beta测试

测试什么?

  • 单元测试:单个功能单元
  • 功能测试:多个独立单元组合在一起
  • 继承和系统测试:完整系统

为什么要测试?

  • 验收测试
  • 一致性测试
  • 配置测试
  • 性能测试
  • 压力测试
  • 用户界面测试

如何选择测试用例?

  • 直觉
  • 规约:黑盒测试
  • 代码:白盒测试
  • 现有的测试用例:回归测试
  • 缺陷:错误猜测或易错分析

常见测试方法:

  • 等价类划分
  • 边界值分析
  • (程序)路径分析
  • 条件组合
  • 自动化单元测试
  • 测试驱动开发

10.7 静态分析

  • 中间文档的完整性、可追溯性
  • 源代码
  • 可执行文件