自动化测试的优点:
- 减少测试工作量:缩短繁重的业务场景的测试时间,短时间内执行大量的业务场景
- 增加测试覆盖量:执行一些手工测试无法覆盖到的点,或者执行起来比较复杂的逻辑
- 执行测试一致性:自动化执行的内容和结果是可重复利用的,可以对单一逻辑进行多次验证
- 提供测试基础:可以为一些业务场景提供数据,拥有一定的造数能力,减少手工测试的依赖性
- 保障业务逻辑:在回归测试中大量减少原有逻辑的验证功能,减少回归测试覆盖不全的可能性
自动化测试的缺点:
- 无法取代手工测试:手工测试可以发现更多的BUG,并且依赖手工测试基础
- 用例设计限制较多:一些前置逻辑无法实现本次的自动化能力
- 维护成本高:需求中一些小逻辑改动可能造成多个关联的自动化需要维护并重新设计用例
为什么自动化测试必不可少?
- 时间成本:在一个需求迭代完成后,可能会影响到原有的业务逻辑,只靠code review并不能完全覆盖所有的测试场景,而人为的去回忆之前的业务逻辑/触发条件/前置会存在疏漏
- 持续集成:CI在每一次提交代码都执行自动化测试,使在开发测试阶段能够早期发现问题并解决问题,确保主线逻辑能够准确无误
- 衡量测试指标:自动化测试的扩展,多数自动化平台都有一定的质量指标能力(代码覆盖率),代码覆盖率不能100%保证产品质量,但是没有代码覆盖率的产品一定会在某个高度上爆发质量问题
如何进行自动化?
- 设计测试方案:根据程序的业务特点用户人群/用户量/并发时间段/数据交互等设计测试方案,从多方面权衡自动化测试的深度
- 测试用例设计:
- 数据驱动中不影响下一次的执行和判断,防止污染测试数据
- 用例之间尽量不存在依赖关系,尽可能地做到实例化适用绝大多数场景
- 做好充足的前置准备及过程中的断言
- 测试执行
- 自动化执行后恢复原来的业务数据、配置及环境,避免影响其他测试
- 组织测试集需要贴合实际业务,庞大的业务流程尽可能单独建立一个测试集,依赖外部系统的,提供第三方的都可以单独拎出来作为集合执行
- 执行的结果分门别类,那些容易出错,哪些是冷门业务,那些重点关注,做好执行记录