一、自动化的核心概念
- 定义:通过自动方式替代人工操作完成任务,生活中常见案例(自动洒水机、自动洗手液、超市闸机)体现了'减少人力消耗、提升效率/质量'的特点。
- 软件自动化测试的核心目的:
- 用于回归测试:软件迭代新版本时,验证新增功能是否影响历史功能的正常运行。
- 常见面试题解析:
- 自动化测试不能完全取代人工测试:需人工编写脚本,且功能变更后需维护更新,可靠性未必优于人工。
- 自动化测试不能'大幅度降低工作量':仅能'一定程度'减少重复工作,需注意表述的严谨性。
二、自动化测试的分类
自动化是统称,包含多种类型,核心分类及说明如下:
| 分类 | 说明 |
|---|---|
| 接口自动化 | 针对软件接口的测试,目的是验证接口的功能、性能、稳定性等。 |
| UI 自动化 | 针对软件界面的测试,包含: |
- 移动端自动化:通过模拟器在电脑上编写脚本,测试手机应用;稳定性较差(受设备、系统版本等环境因素影响)。
- Web 自动化:模拟浏览器操作(如自动打开百度、执行搜索),替代人工完成网页操作与验证。 |
以'百度搜索'为例,Web 自动化的执行逻辑是:自动打开浏览器→访问百度首页→在搜索框输入内容→执行搜索→验证结果,以此替代人工的重复操作,提升测试效率。
三、自动化测试金字塔
1. 理想的自动化测试金字塔
- 结构与逻辑:
- 从下到上依次为:单元测试 → API/集成/组件测试 → UI 自动化测试 → 手动/探索性测试。
- 核心特点:投入产出比从下到上递减——底层的单元测试消耗更少时间/精力,却能发现更多问题,投资回报率更高;上层的 UI 自动化、手动测试则需更多资源,但回报更低。
- 设计目的:倡导企业优先在底层(单元测试、接口测试)投入自动化,以更低成本保障软件质量。
2. 企业实际的'冰淇淋蛋筒模式'
- 结构与逻辑:与理想模型倒置:从下到上依次为:单元测试 → API/集成/组件测试 → UI 自动化测试 → 手动/探索性测试。
- 核心特点:投入产出比从下到上递增——企业实际中常将更多资源投入上层(UI 自动化、手动测试),但这些环节的投资回报率更低;底层的单元测试投入较少。
- 现实原因:自动化需大量初始投入(如脚本开发、框架搭建),企业往往优先选择'看得见效果'的上层测试,但长期来看,底层自动化的成本收益更优。
3. 核心结论
自动化测试与手动测试并非互斥,而是互补:
- 底层自动化(单元、接口)适合长期降本,保障基础质量;
- 上层测试(UI、手动)适合覆盖复杂场景、探索性验证,提供短期保障。
四、Web 自动化测试
1. 驱动的核心作用
- 类比理解:驱动类似于'汽车的发动机''电脑的设备驱动程序'——程序要操作浏览器(如打开、输入、点击),需要通过**WebDriver(浏览器驱动)**建立程序与浏览器的通信,实现自动化操作。
- Web 自动化中的定位:手动测试需人工操作浏览器,而自动化程序需通过 WebDriver 作为'桥梁',让代码能控制浏览器执行预设流程。
计算机有了驱动程序就可以与设备(耳机、摄像头、麦克风、键盘、显示器等设备)进行通信。


