有些开发团队十分推崇自动化测试,不可否认,自动化测试在回归测试和检查冗余组件方面不失为安全有效的方法。但是我们更应该坚信探索性的手动测试。虽然自动化测试变得越来越复杂,但这始终需要人工驱动。实际上,自动化测试通常是从最初的手工工作中转换过来的。这就是为什么开发团队需要手动测试人员,不管是外包还是内部测试。人工测试是由测试人员手工逐步执行所有的活动,并观察每一步是否成功完成。在自动化测试过程中,可以节省人力、时间或硬件资源,提高测试效率,所以自动化测试越来越流行。
1、bug总是出现在你意料不到的地方
即使在测试特定的产品案例时,测试人员依然可以找到他们没有预料到的bug。这可不是一项小工程!对于一些项目,大多数bug其实是测试人员在寻找其他问题的时候发现的,自动测试无法注意到程序没有找到的错误。
2、相当一部分测试工作必须要人工进行用户体验应该算是进行人工测试很重要的原因。
我们可以通过用户的反馈得到宝贵的意见,即便是批评,也是有价值的。因为在产品推出的时候,用户不仅会关注其功能,对UI界面的第一印象也很重要。
3、因为任何一个细节都逃不过用户的眼睛。
虽然冒烟测试(冒烟测试是微软公司在《微软项目求生法则》一书中提出的一种功能测试,目的是对一个新编译需要正式测试的软件版本,确认软件的基本功能是正常的,可以进行后续的测试工作。)可以实现自动化,但人工测试始终是无法代替的。对于测试人员来说,查看应用程序是否适合 进行自动化测试,比编写同样的脚本进行自动化测试要快得多。而且早期的脚本也不会持续太久。此外,只有人工才能 针对多个区域的产品中的语言使用和其他关键本地化因素进行双重检查。
4、对于小型项目来说,自动化测试成本太高
自动化软件是需要付费的,而且由于脚本编写和重写,以及设置和处理时间,需要更高的相关维护和管理成本。对于长 期项目或大型产品来说,高成本的付出是值得的,但对于周期较短,比较小的项目来说,实施自动化测试是对时间和金 钱的巨大浪费。在计算自动化采购的潜在投资回报率时,还必须考虑额外增加的工时的因素
5、人工测试人员对用户习惯更加了解
测试人员在漫长的工作过程中积累了丰富的经验,谁也不想浪费这些经验和知识。因为测试人员经常像用户一样工作, 他们提供的价值远远超过了产品的测试文档所描述的。测试人员还可以通过交付问题和建议帮助和引导产品走向新的方向。
6、自动化测试需要测试人员监督
就像开车在紧急情况下需要急刹车一样,自动化测试同样需要人的监管。虽然自动化软件测试节省了重复工作的时间, 但手工测试工作可以围绕创造性的用例展开。自动化测试最成功的用途并不是试图使其行为像人一样工作,而是通过创建性的,独特的脚本来提高整体产品的覆盖率。
7、人工测试的通过率更高
在测试中产品是否通过测试是很重要的一件事,我们要求自动测试软件一边模拟使用,一边呈现所有的测试结果。但对 于大多数项目来说,可能发生更复杂的情况。
8、自动化测试无法捕捉到测试人员没有意识到的问题
跟第1点类似,bug经常出现在我们意想不到的地方。除此之外,在整个项目中还可能存在其他我们没有意识到的风险, 而探索性的测试可能会降低这些风险的发生。无论测试团队依赖什么形式,预先制定策略总是必要的。简单的一次性测试通过是不可能的,对于那些细枝末节,人工测试的速度反而更快。
9、人工测试具有创造力和分析能力
虽然我们总在抱怨人类能力的不足,但我们也有自己的优点。测试人员带来的技能和经验可以帮助他们在每次开始新会话时制定策略。在这一点上,没有什么可以替代我们快速的思维处理速度和分析能力!
10、自动化测试更适合用于最后冲刺
我们希望技术能为我们做什么,与我们实际能用它做什么是有区别的。随着脚本的不断更新,要持续保证自动化测试的 准确性是很困难的,测试不再流行的补丁也没有价值。成功的自动化测试很早就开始了,而且从来没有在更新环节上落 后过。如果开发团队没有资源来实现这一目标,最好不要尝试(除非团队正在进行长期投资以改进流程)。
好的测试是可重复的,也是可变的 成功的测试有两个因素:重复和变化。自动化测试对于持续的检查过程非常有用,但这还不够。你还需要演进,还有一些未知的变化。综合考虑这两个因素,可以最大程度地实现产品的全面覆盖。
11、测试脚本的快速重写
在不断的反馈、快速反应的环境下使用测试脚本意味着对产品流、UI甚至特性的更改。几乎每次更改都要重新编写一个Sprint自动化脚本。新的更改也会影响回归测试的脚本,因此即使是典型的自动化测试也需要进行大量快速的更新。这之中大量的工作需要开发团队考量应该在何处投放更多资源。
12、手工发现的缺陷远远比自动化测试得多
在目前如果不采用基于AI的自动化测试下,有机构做过统计,估计80%的缺陷是由人工测试发现的,自动化测试发现的缺陷仅占20%。在ISTQB初级大纲中,软件测试目的被概括为四点,其两点为“发现程序缺陷”和“对程序树立质量信心”。所以手工测试主要针对于新开发出来的特性,其目的主要在于“发现程序缺陷”;而自动化测试化测试主要在于对老特性的回归测试,其目的主要在于“对程序树立质量信心。把软件测试分为“测”与“试”两部分:“测”即验证软件是否满足用户提出的需求,主要通过自动化测试来实现;而“试”即试图找出软件中存在的缺陷,主要通过手工测试来实现。
如上所述,自动化测试完全不可能取代手工测试。现在有些书籍、论坛、社群把自动化测试谈得神乎其神,无所不能、无所不可,这是对自动化测试的曲解,是一种不负责任的表现。什么样的产品用什么样的方式这个是最重要的。(咨询测试报价)