有些开发团队十分推崇自动化测试,不可否认,自动化测试在回归测试和检查冗余组件方面不失为安全有效的方法。但是我们更应该坚信探索性的手动测试。虽然自动化测试变得越来越复杂,但这始终需要人工驱动。实际上,自动化测试通常是从最初的手工工作中转换过来的。这就是为什么开发团队需要手动测试人员,不管是外包还是内部测试。
1.许多测试必须是手动的
用户体验可说是进行手动测试非常重要的原因。我们可以通过用户得反馈得到宝贵的意见,即便是批评。因为在产品推出的时候,用户不仅关注功能性,界面UI的第一印象也非常重要,任何一个细节都逃不过用户的眼睛。虽然烟雾测试可以实现自动化,人们还是倾向于人工测试。显然,由测试人员在你的应用程序中搜索查看是否已经准备好进行核心测试要比编写脚本来进行自动测试要快得多。况且早期阶段的测试脚本不会持续太久,只有人工才能在针对多个区域的产品中重复检查语言使用和其他关键本地化因素。
2.自动化测试授权人员
就像驾车有时需要急刹车一样,自动化测试同样不能缺少人的监管。自动化测试软件节省了重复工作的时间,而手工测试工作可以围绕创造性的实例展开。自动化测试最成功的用途并不是试图使其行为像人类一样,而是通过创建新的、独特的脚本来提高整体产品覆盖率。
3.bug总出现在你最不经意的地方
即使在测试特定的产品案例时,测试人员依然可以找到他们没有预料到的bug。这可不是一项小工程!在很多项目中,大多数bug的发现其实是在测试人员寻找其他问题的时候发现的。自动化测试无法发现没有编程的错误。
4.人工测试具有创造力和分析能力
虽然我们总在抱怨人类能力的不足,比如为什么我们不能飞?但人工作业确实有自己的优点。测试人员带着自己的技术和经验来制定策略,开始每一个新工程。在这个层面上,人类的分析能力和速度是无法言喻的。
5.测试脚本的快速重写
在不断的反馈、快速反应的环境下使用测试脚本意味着对产品流、UI甚至特性的更改。几乎每次更改都要重新编写一个Sprint自动化脚本。新的更改也会影响回归测试的脚本,因此即使是典型的自动化测试也需要进行大量快速的更新。这之中大量的工作需要开发团队考量应该在何处投放更多资源。
6.自动化对于小型项目来说过于昂贵
自动化软件需要你花钱来支付,而且由于脚本编写和重写以及设置和处理时间,你的维护和管理成本会更高。对于长期项目或大型产品来说,高成本的付出是值得的。但对于短平快的小项目来说,实施自动化测试是对时间和金钱的巨大浪费。在计算自动化采购的潜在投资回报率时,还必须考虑增加工时的因素。
7.自动测试更适合用于最后冲刺
我们希望技术能为我们做什么和我们实际能用它做什么是有区别的。随着脚步不断的更新,很难保证自动化测试的准确性。用原脚本测试修补后的程序是毫无意义的。成功的自动化测试很早就开始了,而且从来没有在更新环节上落后过。如果开发团队没有资源来实现这一目标,最好不要尝试(除非团队正在进行长期投资以改进流程)。
8.人工测试人员更了解用户习惯
测试人员在漫长的工作过程中积累了丰富的经验,谁也不想浪费这些经验和知识。因为人类测试人员通常像一个用户,他们能提供的价值远远超过了产品当前性能的所及。测试人员还可以在交付产品和反馈建议中引导产品朝新的方向改进。
9.自动化无法捕捉人类没有意识到的问题
这个问题和我们谈到的第3点有些关联,bug往往出现在我们意想不到的地方。除此之外,在整个项目中还可能存在其他我们没有意识到的风险。而探索性的测试可能会降低这些风险的发生。无论测试团队依赖何种形式,做到运筹帷幄永远是必要的。简单的一次性测试通过是不可能的,对于那些细枝末节,手动测试的速度反而更快。
10.好的测试是可重复的,也是可变的
成功的测试有两个因素:重复和变化。自动化测试对于持续检查过程非常有用,但这还不够。你还需要演进,还有一些未知的变化。结合看来,这两个因素会使产品覆盖率提高的机会更大。
11.移动设备的测试更为复杂
设备兼容性和交互不能用自动脚本覆盖。像在离开wifi环境和再次连接时,同时运行几个app时,设备的限制、接收电话和消息都会潜在破坏应用程序的性能。更改滑动方向和用手指轻敲的次数也会影响移动应用程序。如果你想让触摸屏手机减少宕机的次数,进行手动测试是非常重要的。
12.手动测试的通过率更高
在测试中通过与否是需要考量的,我们要求自动测试软件一边模拟使用,一边呈现所有的测试结果。但对于大多数项目来说,可能发生更复杂的情况。Web表单就是这方面的一个主要例子。一个自动化脚本可以很容易地输入到一个网页,但它不能实现两重检测,如果一个用户定位离开再返回,测试的数据将被保存。至于提交的速度,在人工测试时,测试员会注意到Web表单提交的速度是否过慢,特别是当其他网站高速加载的时候。但速度并不能说明测试的通过与否。
13.手动测试可以快速重现客户发现的错误
虽然你希望在部署之前捕捉到所有bug,但你一定也希望客户能把一些错误和问题直接反馈到你。手动测试人员可以使用客户提交的信息提交错误报告,这对工程师是有帮助的。通过手动测试,可以缩短从客户提出问题到修复之间的时间。自动测试虽然很强大,但手动测试能提供的服务和优势也是不可取代的。
本文作者:刘妮娜译
来源:51CTO