手工测试(manual testing),顾名思义是需要由人来动手进行测试。测试人员需要手脑并用,充分发挥聪明才智,才能设计出那些可以导致软件失效或是符合软件设计效果的真实场景。由人来进行手工测试,可以大程度地发挥人的主观能动积极性,设计出真实的用户情况,在真实的用户环境中使用真实的用户数据,同时可以识别出那些显而易见的缺陷和那些比较难以察觉的缺陷。

  如果想发现与应用程序业务逻辑相关的缺陷,手工测试是理想的选择。业务逻辑指的是实现用户需求的代码,换句话说,即用户为它才购买软件的代码。业务逻辑往往非常复杂,需要真人检测来确定是否正确,这里如果使用自动化测试,一般不能获得理想的效果。

  如果未来开发技术大幅进步,也许会有,测试人员不再是必需的了。这当然是软件厂商和软件用户的福音,但是在可预见的未来,检测软件缺陷的好方法还是使用测试技术,而不是开发技术。原因很简单,太多的不确定因素,太多的场景,可能导致自动化测试失效的情况太多,无法一一跟踪。这一切都需要“人脑”的介入。现在如此,下一个十年不会变,再过几十年可能还是一样。

  如果简单地使用手工测试可以彻底解决问题,那太好了,可惜过去的经验告诉我们,事情并没有那么简单,一直以来,软件产业中手工测试都没有很好地发展。手工测试很慢,没有规律,不可反复使用,发现问题后也不能重现,又不能移植,而且没有很多可借鉴的经验教训来帮助测试人员做得更好。在开发过程中,这些事情让手工测试像后娘养的小三子一样背上了很多骂名。很不幸,前面提到的问题都没说错,我们面对的现实是这么严峻。

  现在是时候应该让我们在手工测试领域里使用目前好的技术了!这是本书中所要阐述的主题--“探索式测试”。我希望软件产业可以跨过从前那种没有规律的手工测试作坊,迈步进入一个使用具有明确目的、非常规范的探索式测试过程的新时代。这里所说的过程要求手工测试必须通过精心策划,以防万一,同时又要预留一定的发挥空间,让测试人员在测试时可以随机应变。手工测试实在是太重要了,不可轻视啊!

  展望未来,如果在那时可以做到让软件不需要经过测试,自然而然可以正确运行的话,也要归功于现在这些孜孜不倦的手工测试人员,正是他们的辛勤工作才让我们的梦想成真。