【转】手工测试不能被取代的13个原因
目前,很多开发团队开始采用自动化测试,在一定程度上,自动化测试就像他们的圣杯。自动化测试对于回归测试和检查冗余组件是一个很好的安全保障。但我们仍然十分支持人工以及探索性测试,即使自动化测试目前已经十分先进,但他们仍然需要人力驱动。实际上,自动化测试通常是从最初的手动工作转化而来的,这就是无论外包还是内部使用,开发者仍然需要手动测试人员的原因。
1必须存在手动的全套测试
人工测试显得重要的一个最大的原因就是用户的经验,我们(甚至开发者)可以时不时的提出一些有价值的批评。当提及系统功能或第一印象时,人眼是无法被取代的。尽管烟雾测试可以自动化进行,但它们更适合手动测试的形式。一个测试人员可以随意的使用你的应用程序,看看它是否准备好进行核心测试,这比写一个有同样功能的脚本要快得多。而且早期的脚本肯定不能一直使用。另外,只有人可以仔细检查一个针对多个地区的产品的语言使用以及其他关键的本地化因素。
2自动化测试使人工测试变得可能
就像紧急情况下为你而开的车,当你离开时,自动化测试也一直在忙碌着。自动的软件测试可以节省重复工作的时间,从而使人工测试可以围绕更加富有创造力的测试用例展开。自动化测试最成功的地方不在于试图使它的行为像人类一样,而是过创建新的、独特的脚本来提高整体产品的覆盖率。
3Bugs总是出现在最不可能的地方
即使在测试特定的用例时,测试人员仍可以找到很多他们并不需要找的bug,这是一个很大的问题。对于一些项目来说,大多数bug实际上是由寻找其他内容的测试人员发现的。自动化测试不能发现没有编程的错误。
4人具有创造力和分析能力
尽管我们总是想到人类的缺陷(比如我们为什么不会飞),但是我们确实有我们自己的优点。测试人员所带来的技能和经验,可以帮助他们在每次开始一个新阶段时制定策略。在这一点上,我们的快速处理速度以及分析无可替代。
5测试脚本必须在敏捷中重写
在敏捷环境中使用不断的反馈意味着对于产品流程、UI甚至功能的不固定的更改。而且几乎每一次更改,都意味着你在下一次的冲刺中需要重写你的自动化脚本。新的更改也会影响到回归测试的脚本,所以即使是经典的自动化测试示例,也需要在敏捷中进行大量的更新。当开发团队试图思考如何投入资源的时候,这个的工作量是值得考虑进去的。
6自动化对于小项目太过于昂贵
你不仅需要购买自动化软件,同时由于脚本的编写和重写以及设置和处理的时间,你还得支付更高的相关维护和管理成本。对于长期项目和大型工程,高成本是值得的。但是对于短期的,较小的项目来说,这是对于时间和金钱的巨大浪费。当在计算购买自动化软件的潜在投资回报率时,你也必须考虑到因此所增加的工时。
7除非经过严格的管理,否则自动化将趋于落后
我们希望技术可以为我们做的事情,和实际上我们能用技术做的事情是不同的。通过持续的脚本更新,使冲刺保持自动化测试是非常难的。测试不再是最新的补丁是毫无意义的。成功的自动化测试很早就开始了,并且从来没有落后过任何一次冲刺。如果一个开发团队没有资源来实现这一点,最好一开始就不要尝试(除非团队正在进行长期的投资,并且计划改进整个流程)。
8人工测试者更了解用户视角
人类整日都在学习。你肯定不愿意浪费这些知识。因为人工测试人员通常以用户的方式进行操作,所以他们所能提供的价值远超对于产品目前表现的了解。测试人员还可以通过提交问题和建议来帮助产品寻找新方向。
9自动化测试无法捕获人类意识不到的问题
这就回到了第3点,bugs通常出现在人们意识不到的地方。但除此之外,还有一些我们不会立即注意到的用例和巨大的风险。这种天生的无知可以通过探索性测试或者开发新脚本的探索性测试来缓解。无论团队的测试形式如何,预先的策略总是必须的。但是我们永远不能期待在最刚开始时就考虑到所有问题。对于我们忽略的大多数问题,人工测试有更快的速度。
10优秀的测试是可重复的,也是可变的
大多数成功的测试都是两个因素的结合:可重复性和可变性。自动化测试对于持续的检查非常有用,但这还不够。你还想要变化,以及一些通配符用例。综合来看,这两个因素可以使产品有更高的机会实现全面的覆盖。
11移动设备有更复杂的用例
自动化测试脚本无法覆盖设备的兼容性以及交互。像断开和重新连接WIFI,同时运行其他应用程序,设备权限,接收电话和短信,都可能对应用程序造成严重的破坏。更改滑动方向和点击屏幕的手指的数量也可能会影响移动应用。显然,如果你希望你的应用有更少的怪事发生,你需要一个人工测试人员。
12人工测试胜过 ” 通过 / 失败 ”
“通过/失败”测试非常酷,我们要求我们的Testlions一直使用设定了输出的测试用例。但是对于大多数项目来说,有更复杂的场景。Web表单是一个很好的例子。尽管自动化脚本可以轻松地在web页面中填入值,但是如果用户离开了页面然后返回回来,脚本就无法值是否被保存了。另外,提交速度如何呢?人们一定会注意到,当其他网站全速加载时,web表单是否会提交变得异常缓慢。但是速度并不适合“通过/失败”测试。
13人工测试可以快速重现客户发现的错误
尽管你期待在部署之前可以发现所有bug,但也希望你的客户能够让你知道任何发生的错误。对于基于云的产品,热修复是必须的。一个人工测试人员可以用客户提交的信息,提交一个对开发者有帮助的bug报告。通过人工测试,客户反馈问题和问题被修复之间的时间会大大缩短。如果你喜欢,那么人工测试是非常棒的。但是,人工测试是一个不能被自动化的服务。