自动化测试概述
自动化测试适用场景:
- 手工无法测试
- 功能稳定不容易变动
- 频繁回归
有些内容会涵盖在我写的系列记录。
设计
分层测试/金字塔模型
三层测试:
- 单元测试:关注代码覆盖率,结合mock用
- 接口测试:业务逻辑和持久数据验证。占比20%.
- UI测试:显示相关,复杂业务场景。占比10%.
分层设计
- 工具层
- UI控件识别操作的功能完整性
- 接口合理性
- 编写自动化脚本的语言
- 核心层:xUnit
- 测试用例的组织
- 测试执行
- 反馈结果
- 适配层:对常用方法封装以保证测试代码中尽可能少地重复代码,PageObject,BDD
工具层
负责测试执行的动作触发,同时分离测试部分和业务功能。
例如移动测试的Appium, 安卓官方支持的Espresso, Web测试的Selenium/WebDriver。
核心层
负责测试执行的驱动和结果监控并反馈。
通常使用xUnit框架和进一步的封装定制,并结合断言库的使用。
适配层
负责把重复使用的测试方法封装适配,方便快速地编写和维护用例。
比如数据驱动、关键字驱动的Robot Framework、行为驱动/BDD的 Cucumber。通常与实现语言、业务和具体测试无关。
流程优化
- 环境
- 数据
- 测试用例生成
- 数据比对
- CI/持续集成
工具/框架
xUnit框架
- TestNG: Java
断言库
- REST Assured: Java DSL for easy testing of REST services
报告
- Allure Report:丰富的报告框架,Java开发,支持多语言集成
- Allure官方文档
- Jenkins Allure Plugin
BDD
用类似自然语言书写用例,通常与DSL(Domain Specific Language)结合。
一些常用概念:
- feature : 功能点具体描述
- background 前置条件
- scenario 测试场景
- Given
- When
- Then
- step
常用框架
跨平台E2E
- Macaca: 阿里的基于Node.JS的全过程测试框架
Gauge/基于Contract
实例化需求的实现,活文档/可执行的文档。
- Gauge:Go实现,ThoughtWorks出品
- Gauge Python插件