自动化测试背景

什么是自动化测试

机器代替手工测试,自动验证结果是否符合预期

自动化测试优点

  1. 替代大量重复手工测试
  2. 提升回归测试效率,适合敏捷开发
  3. 在非工作时间自动执行,工作时间查看测试报告
  4. 保证每次测试执行的一致性与正确性,避免人为错误

自动化测试劣势

  1. 一般用于回归测试,项目开发初期不适合使用自动化
  2. 不能全部取代手工测试,只能替代手工测试中机械化,重复度高的操作,自动化测试极少能够达到100%覆盖率
  3. 自动化测试非常脆弱,特别是UI自动化
  4. 自动化测试工作量(框架设计+脚本开发)比单次手工测试大很多,当自动化多次执行时,性价比才会凸显

自动化测试实施流程

1.评估自动化测试实施可行性

想要开展自动化测试,应该遵循以下几个前提条件:

  1. 需求稳定,不会频繁变更
  2. 研发和维护周期长,需要频繁执行回归测试
  3. 项目资源足够「人力」

2.测试需求分析

自动化测试到底要做到什么程度

自动化测试覆盖范围:

  • 主业务流程
  • 历史BUG较多的模块
  • 基础重复的功能
  • 优先级

3.制定测试计划

测试工具/框架选型

  • 接口自动化:TestNG+HttpClient+Maven+Allure+Log4j
  • web自动化:TestNG+Selenium

框架设计,自动化测试脚本开发时间计划表

脚本执行的策略,冒烟测试/回归测试的频率

定义自动化测试的输出,测试框架,测试脚本,测试数据,发现的缺陷,测试报告

测试数据生成
  1. UI方法:人工方式造数据
  2. 接口方法:效率高 用的最多 有保证的
  3. 数据库:效率高 添加数据影响到其他的数据表 不能确保正确性

4.搭建自动化测试环境,设计框架

5.开发自动化测试脚本

手工测试用例转自动化测试用例的过程

6.执行自动化测试

本地执行:IDE调试/执行

持续集成平台:jenkins

7.分析自动化测试结果

自动化用例失败了

  • BUG
  • 脚本设计/稳定性问题

8.框架/脚本维护

周期最长

  • 框架优化
  • 需求变更

9.成功展示「落地」

  • 自动化测试用例覆盖,一般为20%的自动化测试,80%的手工测试
  • 节省的时间成本:手工测试花费的时间-自动化测试所花的时间
  • 自动化测试发现的缺陷数:保证质量,不能保证发现很多BUG
  • 自动化测试的投入产出ROI「越高越好」

(手工测试的成本-自动化测试成本)/自动化测试脚本

自动化测试可以达到100%覆盖率吗

有些用例场景无法被自动化

一些验证易用性,友好性,美观的用例不适合做自动化

有些边缘用例很少被重复执行,从ROI角度考虑不适合做自动化