从概念到流程,全面理解自动化测试是什么、为什么做、怎么做
软件测试是指使用人工或自动手段来运行或测试某个系统的过程, 其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 简单说就是:用各种方法找 Bug,保证软件质量。
开发过程的每个阶段,都有对应的测试活动
手动测试:测试人员亲自操作界面验证功能
自动化测试:用代码模拟操作,自动执行并生成报告
静态测试:不运行程序,代码走查、代码评审、语法检查
动态测试:运行程序,验证实际行为是否符合预期
白盒测试:看代码测,针对内部逻辑覆盖(路径覆盖、语句覆盖)
黑盒测试:不看代码,只测功能是否符合预期(等价类、边界值)
灰盒测试:介于两者之间,知道部分内部结构
① 单元测试:对最小可测试单元验证逻辑正确性
② 集成测试:模块组合后验证接口联通
③ 系统测试:完整系统验证功能/性能
④ 验收测试:用户验收,确认是否达到上线标准(UAT)
自动化测试是指通过编写测试脚本,由自动化测试工具(如 Selenium、Appium、JMeter 等) 自动执行测试用例、比较预期结果与实际结果、生成测试报告的过程。 核心思想是:把人对软件的操作行为,转化为机器能理解和执行的代码。
人不需要反复点同一个按钮、输入同一串数据,机器做这些事不会累、不会走神。
人测 1 小时的用例,机器可能 10 分钟就跑完了,还能 7×24 小时不休息。
每次发版前都要回归测一遍,人测容易漏、机器测可以 100% 覆盖。
自动化擅长重复性强、逻辑明确的用例;人工擅长探索性测试、UI 体验测试(机器不会审美疲劳,也不会发现页面看起来"怪怪的")。两者是互补关系,不是替代关系。
拿到产品需求文档,分析哪些功能适合自动化、哪些不适合。优先选核心业务、高频回归、稳定的功能做自动化。
确定技术栈:Python + Selenium + unittest;规划项目结构、PO 模式;明确环境(测试环境 / 预发布环境)。
将功能测试用例转化为自动化脚本的结构:准备(setUp)→ 执行(操作步骤)→ 断言(验证结果)→ 清理(tearDown)。
按 PO 模式分层写代码:BasePage 封装通用操作 → LoginPage/HomePage 等页面对象 → TestCase 组合业务流程。
本地运行脚本,排查定位问题、等待问题、环境问题;确保脚本稳定、可重复执行。
接入 Jenkins / GitLab CI,代码提交后自动跑回归;页面改版时及时更新 PO 中的定位器;持续迭代。
自动化测试不是写完脚本就完事了,持续维护才是关键。页面改了、接口变了、流程调整了,脚本也要跟着更新。一个没人维护的自动化测试体系,不如不要。
| 对比维度 | 人工测试 | 自动化测试 |
|---|---|---|
| 执行速度 | 慢,受限于测试人员操作速度 | 快 5-10 倍,机器执行无延迟 |
| 回归测试 | 重复劳动易疲劳,容易漏测 | 100% 覆盖,每次都能完整执行 |
| 成本 | 持续投入人力,长期成本高 | 前期投入大,边际成本趋近于零 |
| 7×24 运行 | 做不到,人要休息 | 可以,CI/CD 定时执行 |
| 执行准确率 | 受情绪/疲劳影响,可能出错 | 100% 准确,只要脚本对 |
| 探索性测试 | 擅长,人能发现奇怪的问题 | 做不到,只能按脚本执行 |
| UI 体验 | 能感受页面好不好看、流畅不流畅 | 不能,机器不会审美 |
| 需求变更响应 | 快,改测试思路就行 | 慢,要改代码重跑调试 |
| 上手门槛 | 低,会用软件就能测 | 高,要会写代码、懂定位 |
| 稳定 UI 验证 | 难,点点点容易忽略细节 | 擅长,截图对比一目了然 |
同一套用例反复执行,每次发版都要回归测一遍,自动化一次编写终身受益。
登录、下单、支付、退款……这些不能出问题的地方,用自动化守住底线。
边界值测试(手机号、邮箱、空值、超长字符串),人工填几百组数据不现实。
Chrome、Firefox、Edge 各跑一遍,人测要跑 3 次,自动化一次搞定。
1000 个用户同时登录、下单,人工不可能模拟,只能用工具。
每周/每两周发一版,回归测试越来越多,人工越来越扛不住。
今天一个样明天一个样,脚本刚写完功能就改了,改脚本的时间比重写测试还多。
页面好不好看、动画流不流畅、操作爽不爽——这些机器感知不到。
测试人员"乱点乱输"发现意外 Bug,自动化只能按脚本走,不会"乱来"。
iPhone 3D Touch、Android 滑动手势……自动化能做但成本很高,人工更直观。
当自动化脚本编写 + 维护的成本 < 人工重复执行的成本时,就值得自动化。反之,不如让人来测。
举个例子:一条用例人测 10 分钟,每月回归 20 次,那 1 个月就是 200 分钟(3.3 小时)。写脚本花 4 小时,之后每月维护 30 分钟,2 个月就能回本。