软件测试基础

  • 测试定义
    1. 通过人工或自动的手段,对被测对象进行检测活动,目的在于发现被猜测对象是否实现用户的需求,或者弄清实际结果与预期结果之间的差异
    2. 需要理解什么软件(1.源代码2.用户手册3.配置数据)
  • 测试目的
    1. 发现被测对象与用户需求之间的差异–找BUG
    2. 通过测试活动发现并解决缺陷,增加人们对被测对象的质量信心
    3. 通过测试活动,获取被测对象的质量信息,为决策提供数依据
    4. 通过测试活动,预防缺陷,从而减低项目或产品的风险
  • 测试原则
    1. 测试证明软件存在缺陷
    2. 不可能执行穷尽测试
    3. 测试应尽早启动,尽早介入
    4. 缺陷存在群集现象
    5. 杀虫剂悖论
    6. 不同的测试活动以来不同的测试背景
    7. 不存在缺陷的悖论
  • 测试对象
    1. 软甲源代码
    2. 与软件源代码匹配的文档
    3. 支撑软件源代码运行的配置数据
    4. 需求阶段
      • 需求文档
      • 测试需求文档是否正确实现了用户的需求
    5. 系统设计阶段
      • 概要设计文档
      • 详细设计文档
      • 是否有设计或逻辑上的错误
    6. 编码阶段
      • 测试源代码
      • 发现编程上的错误
    7. 系统测试阶段
      • 被测对象是否满足用户需求

测试级别

  • 单元测试(针对被测系统最小的组成单元实施的测试活动,一般是类或函数,也可能是最小的功能单元)
  • 集成测试(针对组件/单元与组件/单元之间的接口实施的测试活动,验证接口是否与设计相符)
    • 分三种集成(1.函数间集成2.模块间集成3.子系统间集成)
  • 系统测试(将通过集成测试的软件,部署在真实的用户环境下执行测试)
  • 验收测试(以用户为主的测试,验收组应该由项目组成员、用户代表组成)
    • α测试
      1. 由用户在开发环境下执行的测试活动,开发者在测试人员身边,发现问题及时沟通解决
      2. 在受控环境下执行测试
    • β测试
      1. 开发者不在测试人员身边,发现问题由专人统一收集,再由研发人员进行修改
      2. 在不受控环境下执行测试
    • UAT测试
      1. 用户接受度测试
      2. 一般商业用户验证系统可用性进行的测试

系统测试类型

  • 功能性测试(在指定使用条件下,使用被测对象,验证其是否满足用户显性或隐性需求)
    • 测试关注点
      1. 是否有不正确或遗漏或多余的功能
      2. 满足系统显性或隐性需求
      3. 是否对输入输出做出了正确的响应,输出结果能否正确的显示
  • 性能测试
    • 通过模拟被测对象运行业务压力或使用场景,验证被测对象是否满足预先设定的性能指标
    • 验证系统是否具有宣称的能力
    • 了解测试系统典型场景,并具有确定的性能目标
    • 要求在真实环境下实施
  • 安全测试
    • 测试被测对象的安全保护机制保护系统不受非法侵入,能够接受正确授权的操作
  • 兼容性测试
    • 验证被测对象在不同的操作系统、硬件信息等环境下的运行情况

软件测试方法

  • 黑盒测试(不关注被测对象内部结构,仅从用户需求考虑,是否满足用户显性或隐性需求)
  • 白盒测试(结构测试、逻辑驱动测试)
  • 灰盒测试(机关注被测对象的外部特性,又关注其内部设计)
  • 静态测试(不执行被测对象程序,不运行被测对象的测试方法)
  • 动态测试(执行被测对象,进行的检测活动)
  • 手工测试(通过测试工程师试用,验证被测对象是否满足用户需求)
  • 自动化测试(通过自动化测试工具,或脚本语言自动化完成测试过程)

软件质量

软件质量定义

软件产品满足用户或规定显性或隐性需求的程度

  • 内部质量
  • 过程质量
  • 外部质量
  • 使用质量

质量特性

  • 功能性
    • 定义
      • 软件在指定条件下使用时,满足用户明确和隐含需求的功能的能力
    • 适合性:软件为指定的任务和用户目标提供一组合适功能的能力
    • 准确性:软件提供具有所需精确度的正确或相符的结果或效果的能力
    • 互操作性:软件与一个或更多的规定系统进行交互的能力
    • 保密安全性:软件保护信息和数据的能力,以使未授杈的人员或系统不能阅读或修改这些信息和数据,而不拒绝授杈人员或系统对它们的访问
    • 功能性依从性:软件遵循与功能性相关的标准、约定或法规以及类似规定的能力。这些标准要考虑国际标准、国家标准、行业标准、企业内部规范等
  • 可靠性
    • 定义:软件在指定条件下使用时,维持规定的性能级别的能力
    • 成熟性:软件为避免由软件中错误而导致失效的能力。
    • 容错性:在软件岀现故障或者违反指定接口的情况下,软件维持规定的性能级别的能力。
    • 易恢复性:在失效发生的情况下,软件重建规定的性能级别并恢复受直接影响的数据的能力。
    • 可靠性依从性:软件遵循与可靠性相关的标准、约定或法规的能力
  • 易用性
  • 效率
  • 可移植
  • 可维护