理由一:某些测试场景只适合手工来进行测试。
MarkusGartner——《ATDDbyExample》的作者,层对自动化测试和手工测试有一段很好的描述:“Whileautomatedtestsfocusoncodifyingknowledgewehavetoday,exploratorytestinghelpsusdiscoverandunderstandstuffwemightneedtomorrow.”在这里,MarkusGartner精辟地阐述了某些特殊的测试场景只适合手工测试实施。例如:有些EndUser的测试,其场景是感性的,无法被量化,例如:可用性测试;有些需要依赖于专业的业务经验和发散的思维方式,例如,探索性测试;而有些则需要非常随意使用,并不依赖于测试人员的技术能力和专业知识,例如,Ad-hoc测试。以上测试都直接来源于用户或者测试人员的自由思想,非自动化测试可以替代。
理由二:人所具有的创造性、分析能力、行业及专业经验是机器无法取代的。
人和机器最大的区别就在于人具有创造性。我们从几个层次来说明这个问题:
(1)第一层:自动化测试无法捕获人所能发现的问题。手工测试是基于人对于事物的理解、分析和观察,通过测试人员的理解和分析最后达到捕获问题的目的。到目前为止,自动化测试还只是做重复性的工,即使利用AI技术,基于大量的客户行为分析,暂时还无法完成完整的测试目标。或许我们可以期待未来的AI技术……。
(2)第二层:手工测试工程师具有终端用户的视角。真实的测试现在仍然是手工测试工程师完成的,他们能站在真实的终端客户的视角发现系统的缺陷,他们能了解客户想要什么、客户的喜好、流行的操作手法和技术实现,站在EndUser的角度去理解系统所提供的功能是否能满足客户要求。
(3)第三层:测试过程中最核心的“测试分析”必须由资深测试工程师来完成。
整个测试过程中,最核心的部分就是测试分析。测试分析的好坏直接关系到产品最终的交付结果。目前看来,测试分析还必须有测试工程师来完成,而好的完整的分析,经常是有专门资深的测试分析工程师来完成,我们的自动化测试暂时还没有能力完成这项任务。
理由三:自动化技术的局限性导致自动化无法执行所有的测试工作。
目前,自动化测试技术在诸如,动态元素识别、APP之间切换、媒体内容检查等很多特殊场景均存在技术壁垒,我们目前还没有能力对这些特殊的情况进行自动化执行,还只能依赖手工测试工程师实施。
理由四:对于小型的一次性交付项目,自动化成本过于高,不建议实施自动化测试。
实施自动化并非是一件容易的事情,成本很高的,收益慢,尤其在初期,业界在这方面有过很多的研究。研究表明自动化测试成本随着时间会逐步降低,而手工测试成本会随着功能逐步增加而逐步变高。一般项目初期,自动化测试成本远高于手工测试,而随着自动化架构的建设完成,被测功能逐步增加,自动化测试成本会逐步低于手工测试成本。因此,什么样的项目以及在什么情况下采用自动化是一个智慧,基于成本考虑,通常项目周期在一年以内,交付频率不高的项目不建议实施自动化测试。
在测试领域里,手工也好,自动化也罢,都是因为不同的原因和时机而产生的,没有哪一种测试是可以被忽视的,也没有哪一种测试方法是高人一等的,只是它们的侧重点不同,即所谓“上帝的归上帝,凯撒的归凯撒”。
最后,我也要告诫每一个在手工测试岗位上工作的同行。作为一名手工测试人员,并不能因为手工测试的不可替代性而忽视了技术的学习。什么事儿都不能走极端不是吗?就像对全栈开发的要求一样,作为手工测试人员,一个完整的测试周期除了分析需求、编写用例、执行测试、跟踪缺陷之外,切记不要忘记,你的最后一步是尽可能自动化你已经完成的测试,并确保它们都能工作,让它们成为未来工作中的好帮手。只有,当你具备了完整的技能和深厚的测试能力,你的前途就是无限光明的,谁还需要考虑35岁的问题呢?