2. 自动化测试基础回顾:自动化测试金字塔、常见自动化测试框架简介

在进入特征回放评审自动化之前,有必要先回顾自动化测试的核心分层模型与主流工具。这能帮助你理解特征回放评审在整个测试体系中的位置,以及它与其他自动化测试类型的协作关系。

2.1 自动化测试金字塔

自动化测试金字塔由 Mike Cohn 提出,用于指导团队合理分配不同层级的自动化测试投入比例。金字塔从下到上分为三层:

  • 单元测试(Unit Tests):测试函数、方法或类的最小逻辑单元,运行速度快,维护成本低,是金字塔的基石。
  • 服务/接口测试(Service/API Tests):测试模块间或系统间的接口协议与数据交互,覆盖业务逻辑的集成点。
  • 端到端测试(E2E Tests):模拟真实用户操作,验证完整业务流程,运行速度慢,维护成本高,位于金字塔顶端。

特征回放评审自动化属于服务/接口测试与端到端测试之间的交叉领域——它通过回放录制流量来验证系统行为,兼具接口测试的精准性与 E2E 测试的场景覆盖能力。

关键原则:金字塔越往下,测试数量越多、执行速度越快、维护成本越低;越往上,测试数量越少、执行速度越慢、维护成本越高。特征回放评审应优先覆盖金字塔中上层的关键业务场景。
自动化测试金字塔 端到端测试 E2E Tests 服务/接口测试 Service / API Tests 单元测试 Unit Tests 特征回放评审 定位区域 接口 + E2E 交叉覆盖

2.2 常见自动化测试框架简介

不同层级的测试需要不同的框架支撑。以下是三种最常用的自动化测试框架,它们分别对应金字塔的不同层级:

框架名称 适用层级 核心能力 语言支持 典型场景
Selenium 端到端测试 浏览器自动化,模拟用户点击、输入、导航等操作 Java, Python, C#, Ruby, JS Web UI 回归测试、跨浏览器兼容性验证
Appium 端到端测试 移动端原生/混合/Web 应用自动化 Java, Python, C#, Ruby, JS iOS/Android App 功能测试、手势操作验证
Requests 服务/接口测试 HTTP 请求发送与响应解析,支持 Session、Cookie、认证 Python RESTful API 测试、接口回归、数据 mock 验证
选型建议:特征回放评审自动化通常以 Requests 作为核心工具来发送回放请求并校验响应,同时可结合 Selenium 或 Appium 验证前端展示效果。本课程后续章节将重点使用 Requests + pytest 构建回放引擎。

2.3 框架核心概念速览

2.3.1 Selenium WebDriver

Selenium 通过 WebDriver 协议与浏览器通信,支持 Chrome、Firefox、Edge 等主流浏览器。核心操作包括元素定位、页面导航、事件触发和断言验证。

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com")
element = driver.find_element(By.ID, "search-input")
element.send_keys("特征回放")
driver.find_element(By.ID, "search-btn").click()
assert "结果" in driver.title
driver.quit()

2.3.2 Appium

Appium 基于 WebDriver 协议扩展了移动端自动化能力,支持 iOS 的 XCUITest 和 Android 的 UiAutomator2。它通过 Session 管理设备连接,使用 MobileBy 定位原生控件。

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

desired_caps = {
    "platformName": "Android",
    "deviceName": "emulator-5554",
    "appPackage": "com.example.app",
    "appActivity": ".MainActivity"
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
element = driver.find_element(AppiumBy.ID, "com.example.app:id/btn_start")
element.click()
driver.quit()

2.3.3 Requests

Requests 是 Python 生态中最流行的 HTTP 库,支持 GET/POST/PUT/DELETE 等方法,内置 Session 管理、Cookie 持久化和 SSL 验证。特征回放评审中,它用于发送录制流量并比对响应。

import requests

session = requests.Session()
# 模拟登录
login_resp = session.post("https://api.example.com/login",
                          json={"user": "admin", "pass": "123456"})
assert login_resp.status_code == 200

# 回放业务请求
playback_resp = session.get("https://api.example.com/order/list",
                            params={"page": 1, "size": 20})
data = playback_resp.json()
assert data["code"] == 0
assert len(data["data"]["items"]) > 0

2.4 框架对比与特征回放适配

下表从特征回放评审自动化的视角,对比三个框架的适配程度:

评估维度 Selenium Appium Requests
录制流量回放能力 弱(需额外录制工具) 弱(需额外录制工具) 强(天然支持 HTTP 请求回放)
响应校验粒度 页面元素级 控件属性级 全响应体(JSON/XML/Header)
执行速度 慢(浏览器渲染) 慢(设备渲染) 快(毫秒级)
环境依赖 浏览器驱动 移动设备/模拟器 + Appium Server 无(纯 Python 库)
特征回放评审适用性 前端展示验证 移动端展示验证 核心引擎
注意:特征回放评审自动化以 Requests 作为主力框架,但并非完全替代 Selenium/Appium。当需要验证前端渲染结果(如页面布局、控件状态)时,仍需结合 Selenium 或 Appium 进行补充验证。本课程后续将讲解如何将 Requests 回放结果与前端截图比对相结合。
自动化测试框架与金字塔层级对应关系 端到端测试层 服务/接口测试层 单元测试层 Selenium Web UI 自动化 Appium 移动端自动化 Requests HTTP 接口测试 特征回放核心区

2.5 小结