shuguang's blog

环境决定基础,选择决定价值,努力决定方向。

自动化测试基础

  • 本文主要介绍软件测试、软件自动化测试相关概念和工具。

#软件测试分类

  • 根据项目流程划分

    • 单元测试(模块测试)

      • 子程序或具有独立功能代码块
    • 集成测试

      • 先组成系统或子系统再测试,重点检查模块间的接口
    • 系统测试

      • 整个产品系统(需求说明书)
    • 验收测试

      • 最终测试(完成系统和功能测试后,产品发布之前的测试)(验证功能和性能)

  • 按照对代码可见度来划分

    • 白盒测试
      • 关注内部动作
    • 黑盒测试
      • 关注外部输入输出
    • 灰盒测试
      • 既关注外部输入输出又关注内部动作。

  • 软件的不同测试面来划分

    • 功能测试
      • 逻辑功能测试,界面测试,易用性测试,安装测试,兼容性测试等。
    • 性能测试
      • 时间性能(具体环境)
    • 空间性能(带宽,CPU)

  • 按照自动化程度划分

    • 手工测试
    • 自动化测试
      • 功能自动化和性能自动化

  • 测试周期中的一些方法

    • 冒烟测试
      • 测试新版本之前,投入较少人力和时间验证软件主要功能。
    • 回归测试
      • 修改了旧代码后,重新进行测试以确定修改没有引入新错误或导致其他代码产生错误。(第二轮)
    • 随机测试
      • 测试输入数据随机生成,目的是模拟用户真实操作,发现边缘错误。
    • 探索性测试
      • 测试的思维技术,一种思维方式,强调测试人员主观能动性,遇到问题时改变测试策略
    • 安全测试
      • 生命周期中特别是开发基本完成到发布阶段,对产品验证符合产品安全需求定义质量标准的过程

#分层的自动化测试

  • 背景

    • 传统的自动化测试:
      • 基于产品的UI的自动化测试,将黑盒测试转化为通过程序或工具执行的一种自动化测试。
    • 传统的自动化测试缺点(黑盒测试环节尽可能全面覆盖,自动化)
      • 测试规模增大
      • 全面UI自动化测试(由于UI易变,使得UI维护成本相对高昂)

  • 分层自动化测试

    • 强调从黑盒(UI)单层到黑白盒多层的自动化测试体系

    • 从全面黑盒自动化测试到对系统的不同层次进行自动化测试

    • 单元自动化测试(10%)

      • 对软件中的最小可测试单元检查和验证。(类,函数,窗口)

    • 接口自动化测试(20%)

      • 模块接口测试和Web接口测试
        • 模块接口测试(单元测试基础 -> 单元结果验证)
          • 工具与单元自动化测试相同
        • Web接口测试
          • 服务器接口测试外部接口测试
      • 服务器接口测试
        • 浏览器与服务器的接口(通过HTTP协议实现前后端数据传递)
      • 外部接口测试(70%)
        • 第三方系统提供的接口(第三方登录接口)
      • 接口测试相应的类库和工具: HttpUnit 、Postman

    • UI自动化测试

      • 由于所有功能的展示都在这一层,所以测试工作大多集中在这一层。
      • 因此建议提倡半自动化开展测试工作。

#自动化测试应用场景

  • 一般满足以下三个条件就可开展自动化测试
    • 软件需求变动不频繁
    • 项目的周期长
    • 自动化测试脚本可重复利用
  • 任务测试明确,不会频繁变动(重要)
  • 每日构建后的测试验证
  • 比较频繁的回归测试
  • 软件系统界面稳定,变动少
  • 需要在多个平台上运行相同的测试案例、组合遍历型的测试、大量重复的任务。
  • 软件维护的周期长(重要
  • 项目的进度压力不大。
  • 被测软件系统开发较为规范,能够保证系统可测试性。
  • 具备大量自动化测试平台。
  • 测试人员具备较强的编程能力。
  • 自动化测试脚本可重复利用(重要

#自动化测试及其工具

  • 广义上的自动化测试:指的是借助工具来辅助进行软件测试的方式

  • 狭义上的自动化测试:指的是基于UI的功能测试

  • 自动化测试工具

    • UFT(QTP和ST合并)
    • Robot FrameWork(基于python)
    • Watir(基于ruby)
    • selenium

#Selenium工具介绍

  • Selenium工具介绍

    • 主要用于Web应用程序的自动化测试
  • Selenium IDE

    • 火狐插件,方便开发脚本
  • Selenium Grid

    • 自动化测试辅助工具可加快Web-App功能测试,很方便在对台机器和异构环境执行测试用例(不同计算机和系统的网络环境)
  • Selenium RC

    • Selenium家族核心部分,支持多种语言编写的自动化测试脚本。
  • Selenium2.0

    • Selenium1.0 = Selenium IDE+Selenium Grid+Selenium RC
    • Selenium2.0 = Selenium 1.0 +WebDirver
    • Selenium3.0
    • WebDriver是通过原生的浏览器支持或浏览器扩展来直接控制浏览器
    • WebDriver能利用操作系统级别调用,能够更好模拟用户输入。

#前端基础(补充)

  • 基础知识
    • HTMl 超文本标记语言
    • JavaScript 前端脚本语言(轻量级语言),是一种解释性的语言,不需要预编译
    • XML 可扩展标记语言 通用标记语言的一个子集。作为传输工具和存储数据。(数据内容)
  • 前端工具
    • Fire Bug 火狐开发类插件
    • FirePath XPath(XML的路径语言,用来确定XML文档中的部分位置)
    • Chrome开发人员工具