为什么软件开发者不适合测试他们自己编写的软件

软件测试不是一个简单的流程,它特立独行,并贯穿于整个软件开发过程。我们常常听到这样的问题:“为什么软件的开发者们不适合测试他们自己开发的软件?”事实上,软件开发人员测试自己所开发软件的行为就如同学生在完成考试试卷后再对自己的成绩进行评估。这种做法毫无意义,为了加深此认识,让我们来深层次的分析这背后隐藏的问题。

开发人员对其所写代码有主观认同感

人们通常会对自己所犯错误视而不见或者拒绝承认。同样的,在软件开发领域,程序员们在耗费大量心血编写代码,完成工作之后,他们会固执的认为自己编写的代码会运行良好。他们对待其开发的应用程序就像对待自己的孩子一样,拒绝承认自己的孩子有什么不好的地方。这就是为什么软件开发人员难于发现和改正自己的错误。

开发人员对软件过于乐观的心态

开发人员进行开发的目标是将软件所需的功能完美的展现出来。当程序的功能运转正常的时候他们会自我感觉良好,因为他们的主要目标就是功能二字。而测试人员与他们想的却不一样。测试人员通常会从不同的角度切入进软件内部,打破程序员们惯有的思维方式。他们的目标是通过各种不同的测试用例把软件潜在的不足之处引发出来。

开发人员对需求易产生偏差与混淆

开发人员专注于程序的功能,并在现有需求目标的指引下开展工作,当新的需求目标出现之后,他们会与现有的需求目标混淆并产生业务逻辑层或者功能性上的bug。需求作为程序员考虑功能的唯一标准,因此如果当他们在需求的理解上出现了偏差的话,他们在测试应用程序上就会不得要领了。而软件测试人员会从业务的角度来看待需求,他们能够辨别哪些需要的东西完成了,而哪些还没有。

开发人员擅长修复但不擅长拆解

开发人员只擅长代码的功能测试和代码修复,如果程序运行正常,那么他们的测试就结束了。而事实上,测试人员的主要工作是将应用程序拆解,从每个小块之中找寻那些不易发现的bug,并帮助开发人员了解那些特定的功能应当是怎么样的。

开发人员缺乏对软件后续开发的展望

大多数开发人员专注于特定的任务或功能,他们从需求所选择的那个点来完成功能的设计,因此在测试的时候他们也只会从这个点来进行考量而不会考虑功能设计的灵活度。而测试人员会在功能设计方面考虑得更宽,在一个或者多个目标完成时,他们都会在大脑里呈现心目中应用程序的完整样子,这有助于在更早的时间更轻松的完成后续功能的设计。

开发人员缺乏测试经验和方法

软件测试人员通过平时接触的常见错误和应用程序逻辑积累了丰富的知识和经验。由于在测试上的长期锻炼,测试人员对于找寻bug和程序测试更加得心应手,而开发人员只擅长修复已拆解的应用程序而不擅长拆解。测试需要通过有专业的测试能力的软件测试人员才能完成,因为他们具备了掌握软件测试要领、思想的能力以及对软件测试工具、方法使用的理解,而这些是需要长时间实践才能熟悉的。

这就是为什么我们需要一个测试团队,我并不是说开发人员做测试会很糟糕,我只是为了说明对比真正的测试人员还不够熟练和有经验。术业有专攻,每个人都有自己擅长的领域。许多开发人员认为测试人员是在故意给他们找碴挑刺,而事实上,这些bug都是在开发过程中所遗留的不易察觉的问题。请记住,测试人员永远是开发人员身边最好的朋友!

余下全文(1/3)

本文最初发表在www.evget.com,文章内容属作者个人观点,不代表本站立场。

分享这篇文章:

请关注我们:

发表评论

邮箱地址不会被公开。 必填项已用*标注