自动化测试概述

自动化测试适用场景:

  • 手工无法测试
  • 功能稳定不容易变动
  • 频繁回归

有些内容会涵盖在我写的系列记录。

设计

分层测试/金字塔模型

三层测试:

  • 单元测试:关注代码覆盖率,结合mock用
  • 接口测试:业务逻辑和持久数据验证。占比20%.
  • UI测试:显示相关,复杂业务场景。占比10%.

分层设计

  • 工具层
    • UI控件识别操作的功能完整性
    • 接口合理性
    • 编写自动化脚本的语言
  • 核心层:xUnit
    • 测试用例的组织
    • 测试执行
    • 反馈结果
  • 适配层:对常用方法封装以保证测试代码中尽可能少地重复代码,PageObject,BDD

工具层

负责测试执行的动作触发,同时分离测试部分和业务功能。

例如移动测试的Appium, 安卓官方支持的Espresso, Web测试的Selenium/WebDriver。

核心层

负责测试执行的驱动和结果监控并反馈。

通常使用xUnit框架和进一步的封装定制,并结合断言库的使用。

适配层

负责把重复使用的测试方法封装适配,方便快速地编写和维护用例。

比如数据驱动、关键字驱动的Robot Framework、行为驱动/BDD的 Cucumber。通常与实现语言、业务和具体测试无关。

流程优化

  • 环境
  • 数据
  • 测试用例生成
  • 数据比对
  • CI/持续集成

工具/框架

xUnit框架

  • TestNG: Java

断言库

报告

BDD

用类似自然语言书写用例,通常与DSL(Domain Specific Language)结合。

一些常用概念:

  • feature : 功能点具体描述
  • background 前置条件
  • scenario 测试场景
    • Given
    • When
    • Then
  • step

常用框架

  • Cucumber:基于Ruby和RSpec实现,支持常用语言集成
  • Behave: Python实现
  • Jasmine : JavaScript/Node.JS实现

跨平台E2E

  • Macaca: 阿里的基于Node.JS的全过程测试框架

Gauge/基于Contract

实例化需求的实现,活文档/可执行的文档。