自动化测试

自动化测试: 把人工对软件的测试转化为由机器执行测试行为的一种实践,可以把测试工程师从机械重复的测试工作中解脱出来,将更多的精力放在新功能的测试和更全面的测试用例设计上

发现自动化测试用例的维护成本高于其节省的测试成本时,自动化测试就失去了价值与意义

自动化测试的优势:

  1. 自动化测试可以替代大量的手工机械重复性操作,测试工程师可以把更多的时间花在更全面的用例设计和新功能的测试上;
  2. 自动化测试可以大幅提升回归测试的效率,非常适合敏捷开发过程;
  3. 自动化测试可以更好地利用无人值守时间,去更频繁地执行测试,特别适合现在非工作时间执行测试,工作时间分析失败用例的工作模式;
  4. 自动化测试可以高效实现某些手工测试无法完成或者代价巨大的测试类型,比如关键业务7×24小时持续运行的系统稳定性测试和高并发场景的压力测试等;
  5. 自动化测试还可以保证每次测试执行的操作以及验证的一致性和可重复性,避免人为的遗漏或疏忽。

自动化测试劣势:

  1. 自动化测试并不能取代手工测试,它只能替代手工测试中执行频率高、机械化的重复步骤。你千万不要奢望所有的测试都自动化,否则一定会得不偿失。
  2. 自动测试远比手动测试脆弱,无法应对被测系统的变化,业界一直有句玩笑话“开发手一抖,自动化测试忙一宿”,这也从侧面反映了自动化测试用例的维护成本一直居高不下的 事实。
    其根本原因在于自动化测试本身不具有任何“智能”,只是按部就班地执行事先定义好的测试步骤并验证测试结果。对于执行过程中出现的明显错误和意外事件,自动化测试没有 任何处理能力。
  3. 自动化测试用例的开发工作量远大于单次的手工测试,所以只有当开发完成的测试用例的有效执行次数大于等于5次时,才能收回自动化测试的成本。
  4. 手工测试发现的缺陷数量通常比自动化测试要更多,并且自动化测试仅仅能发现回归测试范围的缺陷。
  5. 测试的效率很大程度上依赖自动化测试用例的设计以及实现质量,不稳定的自动化测试用例实现比没有自动化更糟糕。
  6. 实行自动化测试的初期,用例开发效率通常都很低,大量初期开发的用例通常会在整个自动化测试体系成熟,和测试工程师全面掌握测试工具后,需要重构。
  7. 业务测试专家和自动化测试专家通常是两批人,前者懂业务不懂自动化技术,后者懂自动化技术但不懂业务,只有二者紧密合作,才能高效开展自动化测试。
  8. 自动化测试开发人员必须具备一定的编程能力,这对传统的手工测试工程师会是一个挑战。

什么样的项目适合自动化测试

  • 需求稳定,不会频繁变更
  • 研发和维护周期长,需要频繁执行回归测试,用20%的精力去覆盖80%的回归测试
  • 需要在多种平台上重复运行相同测试的场景
  • 某些测试项目通过手工测试无法实现,或者手工成本太高
  • 被测软件的开发较为规范,能够保证系统的可测试性
  • 测试人员已经具备一定的编程能力

单元测试自动化几个方向:

  1. 用例框架代码生成的自动化
  2. 部分测试输入数据的自动化生成
  3. 自动桩代码的生成
  4. 被测代码的自动化静态分析
  5. 测试覆盖率的自动统计与分析
  6. 测试用例执行的自动化

相关工具 idea testMe

Web Service测试的自动化技术: 主要是指SOAP API和REST API这两类API测试,最典型的是采用SoapUI或Postman等类似的工具

基于代码的API测试用例,通常包含三大步骤:

  1. 准备API调用时需要的测试数据
  2. 准备API的调用参数并发起API的调用
  3. 验证API调用的返回结果

API自动测试框架: REST Assured

文章链接 https://fangzongzhou.github.io/2020/12/15/计算机/软件测试/自动化测试/