测试--自动化测试概念
一.什么是自动化测试?
自动化测试是指:
用程序自动代替人工操作完成测试流程,以减少人力消耗、提高测试质量和效率。
它的主要用途是进行回归测试:
当软件版本不断更新时,需要重复验证历史功能是否受影响;
自动化测试可以高效完成这些重复性的验证工作。
注意点:
自动化测试不能完全替代人工测试;
自动化脚本也需要维护和更新;
自动化测试“可以一定程度降低工作量”,不是绝对节省。
二.⾃动化分类
按测试对象分类
类型 说明
✅ 单元测试自动化 对单个函数、模块进行测试(如使用 GoogleTest、JUnit、pytest 等) ✅ 接口自动化测试
针对后端接口(如HTTP API、RPC接口)进行请求响应验证、逻辑校验 ✅ UI自动化测试 模拟用户在网页或App上的点击、输入、跳转等操作,验证前端行为是否正常 ✅ 功能/业务流程自动化 自动执行复杂业务流程,验证端到端功能是否符合预期 ✅ 性能/压力测试自动化 使用工具(如JMeter、Locust)自动模拟高并发请求,测试系统稳定性 ✅ 安全测试自动化 自动扫描常见安全漏洞(如SQL注入、XSS)
单元测试 接口测试 UI测试
对比项 单元测试自动化 接口自动化测试 UI自动化测试 测试对象 函数、类、模块内部逻辑 后端接口(如RESTful API) 前端页面操作(按钮、输入框、跳转) 依赖环境 无需部署,直接运行测试代码 需部署后端服务,或接口模拟环境 需部署前端页面、浏览器/模拟器环境 执行速度 非常快(毫秒级) 快(秒级) 慢(秒~分钟) 稳定性 极高(只测试代码逻辑) 较高(不依赖UI) 低(易受样式、定位、渲染变化影响) 维护成本 低 中 高 适用场景 开发初期验证逻辑,敏捷开发/持续集成 服务层逻辑验证、接口兼容性、接口回归测试 整体流程验证、冒烟测试、用户行为自动化 编写难度 初级 中级 中~高级(需熟悉定位、操作等) 假设你有一个“用户登录”功能:
单元测试:
测试
checkPassword(input, real)
函数是否返回正确布尔值;接口测试:
向
/api/login
提交账号密码,验证响应结构、状态码、登录是否成功;UI测试:
打开网页,模拟输入用户名密码,点击登录按钮,验证页面跳转是否正确。
接口自动化
接口自动化测试是指:
使用程序模拟客户端向后端服务接口(如HTTP、RESTful、RPC)发起请求,并自动校验返回数据是否符合预期。
它不依赖于用户界面,直接对服务层进行测试。
目的:
替代手动请求接口(如用Postman)进行大量重复验证;
验证后端接口的功能正确性、数据准确性、业务逻辑完整性;
提高测试效率和覆盖率,减少回归测试人力成本;
支撑CI/CD流水线,实现自动构建 → 自动部署 → 自动测试。
问题类别 示例 ✅ 功能验证 登录接口是否正确校验账号密码,返回token是否正确 ✅ 参数验证 缺少字段、字段类型错误、越界值时接口是否报错 ✅ 逻辑回归问题 修改后端代码后是否影响了旧接口 ✅ 性能瓶颈定位 大量并发时响应是否超时,能否支撑业务压力 ✅ 安全性验证 接口是否能防止未授权访问、参数注入等
接口自动化的核心流程
以HTTP API为例,接口自动化主要包括以下步骤:
定义测试用例
请求方式(GET/POST/PUT/DELETE)
URL、Headers、请求参数、期望响应
发送请求
使用代码工具(如 Python + requests 或 Java + RestAssured)构造HTTP请求
断言响应
校验状态码(200、400、401、500…)
校验响应内容(字段存在、值是否正确)
生成报告
自动输出测试通过/失败统计、错误详情(如allure报告)
集成CI/CD
每次代码提交后,自动触发接口测试,回归验证
UI自动化
UI测试也称为界⾯测试,常⻅的UI⾃动化测试包含web⾃动化测试、移动端⾃动化测试等等。
类型 | 简介 |
---|---|
Web自动化测试 | 针对网页应用(浏览器)中的界面进行自动化测试 |
移动端自动化测试 | 针对移动设备(安卓/iOS)上的 App 界面进行自动化测试 |
移动端测试:
移动端测试通常不是将程序部署在移动端上进⾏测试,⽽是需要安装模拟器,在电脑上编写⾃动化测试脚本代码对模拟器上的软件进⾏操作
移动端测试难度相对较⼤,移动端测试的稳定性要⽐接⼝⾃动化测试和web⾃动化测试的稳定性要差很多,原因主要是移动端测试收到的环境影响⽐较多
Web自动化测试
一、什么是 Web 自动化测试?
Web自动化测试是指使用编程脚本模拟人在浏览器中的操作,自动执行对网页应用的功能验证流程。
目标:
-
自动完成登录、搜索、下单、表单提交、跳转等常规网页操作;
-
验证页面行为、内容是否符合预期;
-
提高测试效率,减少手工点击与重复验证。
二、为什么要做 Web 自动化测试?
目的 | 说明 |
---|---|
✅ 提升效率 | 执行一遍自动化脚本可节省大量人工测试时间 |
✅ 支持持续集成(CI/CD) | 每次部署后可自动测试核心流程,防止回归 Bug |
✅ 减少人为遗漏与误操作 | 模拟流程标准稳定,不会漏点 |
✅ 高频业务稳定验证 | 登录、下单等常用功能更新频繁,需要反复验证 |
三、Web自动化测试的核心流程
[脚本编写] → [执行操作] → [查找元素] → [断言结果] → [生成报告]
示例场景:自动测试“百度搜索”
-
打开浏览器 → 访问百度首页;
-
输入关键词“迪丽热巴”;
-
点击“百度一下”;
-
断言页面是否跳转、是否有搜索结果;
-
关闭浏览器。
四、常用工具
工具 | 说明 |
---|---|
Selenium | 最主流、跨语言(Python/Java/C#等) |
WebDriver | 浏览器驱动程序(如ChromeDriver 打开浏览器) |
WebDriver Manager | 自动安装匹配浏览器驱动(解决浏览器驱动和浏览器不匹配的问题) |
Pytest + Allure | Python中常用的自动化测试框架 + 报告系统 |
六、工作原理(Selenium + WebDriver)
Selenium 脚本 → 浏览器驱动(WebDriver) → 浏览器执行操作 → 返回结果 → 脚本判断 → 报告输出
说明:
-
Selenium 脚本通过 WebDriver 发起 HTTP 请求;
-
浏览器驱动解析这些请求并在浏览器中执行点击、输入等动作;
-
执行结果再返回给脚本进行断言处理。
七、一个完整示例(Python + Selenium)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager# 初始化驱动
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))# 打开百度
driver.get("https://www.baidu.com")# 输入关键词
driver.find_element(By.ID, "kw").send_keys("迪丽热巴")# 点击按钮
driver.find_element(By.ID, "su").click()# 断言页面包含关键词
assert "迪丽热巴" in driver.page_source# 关闭浏览器
driver.quit()
八、优缺点总结
优点 | 缺点 |
---|---|
自动化重复性高、回归效率高 | 对页面结构改动较敏感,脚本易失效 |
真实模拟用户行为,发现界面Bug | 浏览器环境依赖强,占用资源 |
可与CI工具集成(Jenkins) | 执行速度相对接口测试慢 |