摘要:
笔者虽然擅长于做性能测试,对安全性测试和自动化测试都有颇多经验。但仍然要强调手工测试的必要性和重要性。同时,做好做深手工测试也是一个高难度的工作,而不是所想象的那么简单。
手工测试的必要性和重要性
提到手工测试的必要性和重要性,那首先有必要说下自动化测试。往往人们过度的滥用自动化测试,从而违背了自动化测试的初衷。
自动化测试的最终目的是让测试员从枯燥乏味的非创造性的重复工作中解放出来,从而把时间和精力放在更有创造性和价值的手工测试上。而往往一些测试团队过于的追捧自动化测试,从而陷入无止尽的脚本编写和维护窘境,导致了一些列不可预料的灾难性后果。
如测试时间跟不上开发节奏导致项目发布延期,非功能缺陷(如业务缺陷)不能及时指出,不能发现更多隐藏的非常规性操作bug,导致后期用户不停地发现“重大”bug,甚至导致整个项目团队对测试失去相信,也使得测试团队成员沮丧。这与自动化测试的初衷相违背。
所以做手工测试的人大可不必觉得非要用什么自动化工具才显得高人一等。
要做好测试,手工测试是至关重要的一环。比如软件的用户体验,复杂的业务逻辑实现,非常规性的用户操作,这些都要求我们手工去进行测试。
手工测试简单吗?
手工测试有人说很简单,导致每次在和朋友讨论测试所使用的工具,或者技术时非常尴尬,这时感觉自己的工作相当缺少技术含量。而且,一些自持掌握工具的测试人员往往鄙视手工测试人员,认为他们就如马戏团的小丑,完全跟自己不在一个档次。如果你是那一类人,那只能说明你对测试的无知和浅薄。
手工测试也是一种高难度的技术性和创造性的任务。
一个页面加载非常慢,是不是我们应该使用httpwatch或者firebug这样的工具来定位是什么原因导致。我们发现某个bug时而出现,是否应该利用一些方法和技巧去找出现bug出现的规律,并写入描述让开发人员更快的发现原因并解决问题?用户体验测试,我们是否需要深入了解用户的心理行为?及到网络通信方面的测试,我们要更好的定位问题,是否需要了解涉及到的通信协议知识?涉及到可适应测试,我们是否需要了解可适应设计的知识?涉及到业务性的测试,我们是否需要了解具体的行业知识(如财务、通信等)?
如果我们要深入发现一些bug,就必须要大胆的去假设,然后通过测试去一一印证。这就是探索性测试。这些都建立在我们相当丰富的测试经验,扎实的测试理论基础,以及发散性的思维上面。
对手工测试人员的一些建议
结合笔者多年的测试工作心得体会,我对从事手工测试的人员一些个人建议:
1、知识和经验的积累,能使我们更高效的发现更多更有用的缺陷。
2、不要盲目崇拜自动化测试,也不能完全脱离测试工具,需要适时的使用工具去解放我们繁重的工作压力,从而把更多的精力放在更具有创造性和价值的测试上。
3、了解项目所用到的开发技术和代码知识,这是我们精准定位bug,赢得项目其它团队成员认可的前提。
4、最大可能的学会“偷懒”,让我们的测试工作既轻松又高效。
5、尽可能全的知识面,往往让我们产生更多有意思的想法,从而对测试做出更多有创造性的东西。