系统测试

1. 什么是系统测试?

系统测试是在单元测试、集成测试完成之后,软件系统被构建起来的基础上,在系统层级上进行的测试。

系统测试可进一步分为:

  • 功能测试
  • 非功能测试

2. 系统功能测试测什么?

系统功能测试的范畴很广,包括但不局限于:

测试内容说明
功能 (Function)系统功能是否正确实现
逻辑 (Logic)业务逻辑是否正确
接口 (Interface)内部/外部接口是否正确
界面 (UI)用户界面是否符合需求
数据 (Data)数据处理是否正确
操作 (Operation)操作流程是否顺畅
平台 (Platform)平台兼容性

不同的应用系统其功能测试内容的差异很大,侧重点不同。

3. 系统功能测试的基本思路

  1. 需求分析 - 理解系统需求和业务规则
  2. 测试用例设计 - 根据需求设计测试用例
  3. 测试环境准备 - 搭建符合生产环境的测试环境
  4. 测试执行 - 执行测试用例,记录结果
  5. 缺陷跟踪 - 记录和跟踪发现的问题
  6. 测试报告 - 汇总测试结果,输出测试报告

4. 系统功能测试的具体方法

4.1 IDBT (Input Domain Based Testing)

基于输入域的测试 - 黑盒测试

常用方法:

  • 等价类划分
  • 边界值分析
  • 两两组合 (Pairwise)
  • 随机测试

4.2 CBT (Code-Based Testing)

基于代码的测试 - 白盒测试

常用方法:

  • 基于控制流的标准
  • 基于数据流的标准
  • CBT参考模型

4.3 FBT (Fault-Based Testing)

基于故障的测试

常用方法:

  • 故障模型
  • 错误猜测法
  • 变异测试

4.4 UBT (Usage-Based Testing)

基于使用的测试 - 黑盒测试

常用方法:

  • 操作配置 (Operational Profile)
  • 用户观察启发

4.5 MBT (Model-Based Testing)

基于模型的测试

常用方法:

  • 决策表
  • 有限状态机
  • 形式化验证
  • TTCN-3
  • 工作流模型

4.6 TBNA (Technology-Based Testing)

基于技术的测试 - 应用领域

适用领域:

  • OOS (面向对象软件)
  • Web应用
  • 实时系统 (Real-time)
  • SOA (面向服务架构)
  • 嵌入式系统 (Embedded)
  • 安全关键系统 (Safe-critical)

5. 系统测试与其他测试的区别

测试阶段测试重点测试人员
单元测试最小单位(函数/方法)开发人员
集成测试模块间的接口和交互开发人员/测试人员
系统测试整个系统的功能和业务测试人员
验收测试满足用户需求用户/测试人员

6. 系统测试的执行流程

需求评审 → 测试计划 → 测试用例设计 → 
用例评审 → 测试环境搭建 → 测试执行 → 
缺陷管理 → 测试报告 → 测试结束

7. 系统测试的关注点

  • 功能完整性 - 所有功能是否都已实现
  • 功能正确性 - 功能输出是否符合预期
  • 业务流程 - 业务流程是否正确
  • 数据处理 - 数据存取是否正确
  • 用户界面 - 界面是否符合用户习惯
  • 错误处理 - 异常情况处理是否合理
  • 兼容性 - 与其他系统的兼容性
  • 可追溯性 - 测试用例与需求的对应关系