软件测试概念

我认为概念是推理的基础,认识概念才能正确的运用相关技术

软件测试是什么

一种发现软件缺陷的的活动

评估软件的特性或能力,确定其是否达到预期

为什么要软件测试

为了保证软件质量

关于软件测试的两种观点

  1. 测试是为了证伪(Myers)

    假设程序是错误的,证明其正确

  2. 测试是为了证明软件是正确的(Bill Hetzel)

    假设程序是正确的

什么是软件质量

即产品所满足的特性

这些特性可能是用户的需求,产品固有的性质或者是行业标准所规定的

内部质量

主要是代码,极其相关的特性

外部质量

主要是产品的功能

使用质量

从场景和用户的角度出发分析质量

软件缺陷

从内部看: 软件设计,开发,维护的不合理

从外部看: 软件功能的失效或违背

软件测试分类

按阶段分:

  1. 需求评审: 需求 SRS 是否完整,正确,清晰
  2. 设计评审: 设计结果是否符合需求
  3. 单元测试: 函数,类,模块
  4. 集成测试: 几个完成的单元作为系统一起测试
  5. 系统测试: 测试整个系统(软件,硬件)
  6. 验收测试: 用户参与,在用户环境,使用用户数据作测试
  7. alpha测试: 开放外部用户参与测试
  8. beta测试: 如果不出问题就是正式版

按测试目标分:

  1. 功能测试: 测试功能是否按预定的方式工作
  2. 负载(压力)测试: 测试系统在高负载情况下的表现
  3. 性能测试: 测试不同负载情况下的各种指标
  4. 安全性测试: 测试系统的访问控制和攻击防呼能力
  5. 恢复测试: 系统发生灾难后恢复到灾难前的能力
  6. 安装测试: 在多种用户环境下,测试能否正常安装
  7. 兼容性测试: 测试软件在不同运行环境(硬件,软件)下的表现
  8. 可用性测试: 测试服务正常运行的时间百分比
  9. 可靠性测试: 测试用户访问服务时,服务按预期运行的可能性

按测试对象分:

  1. 单元测试
  2. 接口测试
  3. 系统测试
  4. 数据测试
  5. 界面测试
  6. 文档测试

测试的 动 静 黑 白

动 | 静 : 软件是否运行

黑 | 白 : 源代码是否可见

百盒 黑盒
静态 源程序语法检查,评审 评审非技术文档
动态 调试 输入输出测试