听完这些,原本困惑的我又多了份惊讶,一方面惊叹产述的这些状况与我之前的自动化测试的试行失败是相近的。另一方面又猜疑这自动化测试该不会像共产主义社会那般吧!随着培训内容的展开,我终于解开了困惑,何为理性的看待自动化测试。

  “如同不能指望原始社会拥有了汽车能进入现代社会一样,自动化测试工具永远都不能主导测试实现自动化”(出自国信培训文档)。我们错误的把自动化测试看成了一种测试工具或测试手段。自动化测试是一种理念,它要发挥它真正的作用需要这种理念转变为一种体系??自动化测试体系。

  “引入自动化测试的前提是已经建立了合适的自动化测试体系,如果没有这些,而片面的追求自动化,无异于缘木求鱼。自动化测试体系是指能够适用某种环境的测试工具、过程、人员结构、方法的综合,运用于整个项目团队” 。回到我之前的对QTP研究失败的原因,首先我开始觉得因为研发的设计、编码实现并没有考虑到自动化,而导致自动化脚本的编写非常吃力。比如产品页面项目的命名不规范,导致自动化测试工具很难捕捉这些页面对像。其次是测试脚本的方向迷失,我在研究QTP的时候发现了这个问题。随着我一点点的在编写着脚本,我不断的发现自己在的测试脚本的编写方向上出现了迷失。这段脚本我编写的目标本来是功能测试,但随着我的补充却接近于开发级的单元测试。而另一段本属于功能性测试的脚本,因为功能的重点需要,我又补充了部分脚本导致整个测试脚本测试目标变成了完整关联性测试。而做为单元测试的脚本却并没有在开发的角度上来设计,根本做不到函数、类等代码级的测试,根本不能达到要求。做为完整性测试的脚本也无法模拟接口功能中几何倍数级的各种条件输入对应的输出测试。而功能测试脚本算是硕果仅存,但随着开发对产品的代码大规模调整(这些调整当然不会考虑对已经实现的脚本的影响)而直接“报废”。如果需要脚本继续工作,那么要花时间来修改调整它。这些脚本的结局又再一次可想而知了。

  所以首先我们要理性的看待自动化测试,不要片面的去追求它。对不同的项目要开展不同自动化策略。参考如下

  (1) 评审项目中特定的部分作为应用自动化的候选对像。

  (2) 从项目中高度冗余的任务或场景重点考虑自动化。

  (3) 将乏味且人工容易出错的工作重点考虑自动化。

  (4) 将回归测试经常需要“照顾”到的部分重点考虑自动化。

  (5) 自动化开始时要首先关注开发成熟、理解透彻、相对稳定的且不易变的部分优先考虑自动化

  其次,自动化所实现的大价值目标是可不间断的、可重复的自动执行对需求、设计、代码全面覆盖的大量测试用例从而预防bug的产生的一套质量保障机制。所以自动化测试的重点在于测试自动化作为一个体系,要运用于整个项目团队。项目组要讨论它(策略、时间、成本等)、研发需要参与它(编码方向、自动化支撑、以及代码单元测试自动化的计划和执行等)、测试要引导及推进它(策略、方法、执行、跟进、维护等),各团队共同形成体系,才能让自动化测试工具真正的成为一种质量保证的有力武器。