自动化测试:用代码 / 工具代替人工执行测试用例,校验程序行为、输出是否符合预期,回归、迭代项目中减少重复手工测试,提升版本交付质量与速度。自动化不能完全替代手工测试,适合重复、稳定、大量回归场景;探索性、UI 主观体验、复杂业务场景仍需要手工测试。
一、自动化测试分层(金字塔模型)
自上而下:UI 层 → 接口层 → 单元层,投入重心越往下,收益越高、维护成本越低
实践原则:多写单元、接口,少写 UI 自动化。很多团队过度投入 UI 自动化,后期脚本大量失效,维护负担很重。
1. 单元测试
执行者:开发人员,开发阶段完成
核心:隔离外部依赖(数据库、MQ、第三方接口),使用 Mock 打桩,只测自身业务逻辑
Java 常用:JUnit5、AssertJ、Mockito
// JUnit5简单示例
@Test
void testCalc() {
assertEquals(10, calcService.add(3,7));
}
Python:pytest + unittest.mock
Go:testing 标准库
指标参考:代码覆盖率,追求行覆盖率≠质量高;重点看分支、条件覆盖率,核心业务模块尽量 80%+,非核心不用盲目追求 100%。
2. 接口自动化测试
执行者:测试 / 开发,覆盖:正常场景、边界值、异常入参、权限控制、超时、错误码
工具选型
代码实现:Java RestAssured;Python requests+pytest;Go resty
无代码脚本:Postman/Newman、Apifox,适合快速搭建,适合中小团队
开源平台:MeterSphere,接口管理 + 自动化 + 报告一体化
最佳实践
环境隔离:独立测试环境,数据可预置、执行后清理数据
参数化:用例数据与脚本分离,csv/yaml 管理测试数据
依赖处理:接口之间有上下游依赖,提取 token、id 传递给下一个接口
校验:不仅校验 http 状态码,校验返回体字段、业务状态码、数据结构
异常用例:非法参数、越权访问、空值、超长字符串
3. UI 自动化测试
模拟真实用户点击、输入、跳转,测试页面流程
Web:Selenium、Playwright(现代首选,稳定性强,等待机制优秀)、Cypress
App:Appium
痛点:前端页面改版、元素 ID 变更,脚本大面积失效。 使用建议:只覆盖核心主流程,不要把所有页面都做自动化。优先用稳定定位器,尽量避免使用 xpath 绝对路径。

二、自动化测试完整流程
选择适合自动化的用例 ✅适合自动化:重复回归用例、核心业务流程、大量数据输入、高频迭代模块 ❌不适合:新功能不稳定、UI 频繁变动、一次性测试、主观体验类
设计测试用例 用例独立:每条用例尽量独立,不要强依赖上一条用例执行结果;预置测试数据,执行完成清理脏数据。
编写自动化脚本
分层封装:公共工具、请求封装、页面元素封装,不要复制粘贴代码
配置环境区分:dev/test/pre 环境配置分离
本地调试运行 本地跑通,修复脚本,生成测试报告。
接入 CI/CD 流水线(关键!自动化落地核心) 把自动化嵌入研发流水线,代码提交自动触发执行。
提交代码:执行单元测试;单元测试失败阻断合并
构建部署测试环境完成:自动执行接口自动化
定时任务:夜间全量回归自动化套件
工具:Jenkins、GitLab CI、GitHub Actions、Tekton
结果分析、告警
生成可视化报告:失败用例截图、日志、请求响应记录
失败告警:企业微信 / 钉钉推送失败信息
区分问题:业务 BUG / 脚本本身 bug / 环境不稳定,及时维护脚本。
持续维护脚本 产品迭代,业务变更必须同步更新自动化脚本;长期不维护的自动化套件会变成一堆永远跑不通的僵尸脚本。
三、性能测试(广义自动化)
属于专项自动化,压测服务并发、吞吐量、响应时间 工具:JMeter、Locust、k6
一般不放在 CI 做全量压测,轻量基准压测可接入流水线。
四、常见踩坑点
自动化覆盖率崇拜:盲目追求高覆盖率,写大量无价值脚本,维护成本爆炸
用例强依赖顺序:A 用例失败,后面全部失败,定位困难
测试环境不稳定:网络、数据库脏数据,导致大量随机失败(flaky test)
UI 自动化写太多:页面频繁改动,脚本天天修,投入产出比很低
自动化写完就不管:版本迭代不同步更新脚本,套件逐渐废弃
不做数据清理:测试环境堆积大量脏数据,影响后续执行

五、中小团队落地建议(落地路线)
第一步:推动开发写单元测试,核心业务模块优先,接入 CI,提交代码自动跑单测
第二步:做接口自动化,覆盖核心业务流程,部署测试环境后自动执行接口套件
第三步:少量 UI 自动化,只覆盖核心主链路
第四步:定时回归,配置告警,持续迭代维护脚本
六、简单示例技术栈组合
Java 后端项目:JUnit5 + Mockito + RestAssured + GitLab CI + MeterSphere
Web 前后端:Playwright + pytest + GitLab CI
轻量化不写代码:Apifox + Newman + Jenkins
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢