软件测试不是一个简单的流程,它特立独行,并贯穿于整个软件开发过程。我们常常听到这样的问题:“为什么软件的开发者们不适合测试他们自己开发的软件?”事实上,软件开发人员测试自己所开发软件的行为就如同学生在完成考试试卷后再对自己的成绩进行评估。这种做法毫无意义,为了加深此认识,让我们来深层次的分析这背后隐藏的问题。
开发人员对其所写代码有主观认同感
人们通常会对自己所犯错误视而不见或者拒绝承认。同样的,在软件开发领域,程序员们在耗费大量心血编写代码,完成工作之后,他们会固执的认为自己编写的代码会运行良好。他们对待其开发的应用程序就像对待自己的孩子一样,拒绝承认自己的孩子有什么不好的地方。这就是为什么软件开发人员难于发现和改正自己的错误。
开发人员对软件过于乐观的心态
开发人员进行开发的目标是将软件所需的功能完美的展现出来。当程序的功能运转正常的时候他们会自我感觉良好,因为他们的主要目标就是功能二字。而测试人员与他们想的却不一样。测试人员通常会从不同的角度切入进软件内部,打破程序员们惯有的思维方式。他们的目标是通过各种不同的测试用例把软件潜在的不足之处引发出来。
开发人员对需求易产生偏差与混淆
开发人员专注于程序的功能,并在现有需求目标的指引下开展工作,当新的需求目标出现之后,他们会与现有的需求目标混淆并产生业务逻辑层或者功能性上的bug。需求作为程序员考虑功能的唯一标准,因此如果当他们在需求的理解上出现了偏差的话,他们在测试应用程序上就会不得要领了。而软件测试人员会从业务的角度来看待需求,他们能够辨别哪些需要的东西完成了,而哪些还没有。
开发人员擅长修复但不擅长拆解
开发人员只擅长代码的功能测试和代码修复,如果程序运行正常,那么他们的测试就结束了。而事实上,测试人员的主要工作是将应用程序拆解,从每个小块之中找寻那些不易发现的bug,并帮助开发人员了解那些特定的功能应当是怎么样的。
开发人员缺乏对软件后续开发的展望
大多数开发人员专注于特定的任务或功能,他们从需求所选择的那个点来完成功能的设计,因此在测试的时候他们也只会从这个点来进行考量而不会考虑功能设计的灵活度。而测试人员会在功能设计方面考虑得更宽,在一个或者多个目标完成时,他们都会在大脑里呈现心目中应用程序的完整样子,这有助于在更早的时间更轻松的完成后续功能的设计。
开发人员缺乏测试经验和方法
软件测试人员通过平时接触的常见错误和应用程序逻辑积累了丰富的知识和经验。由于在测试上的长期锻炼,测试人员对于找寻bug和程序测试更加得心应手,而开发人员只擅长修复已拆解的应用程序而不擅长拆解。测试需要通过有专业的测试能力的软件测试人员才能完成,因为他们具备了掌握软件测试要领、思想的能力以及对软件测试工具、方法使用的理解,而这些是需要长时间实践才能熟悉的。
这就是为什么我们需要一个测试团队,我并不是说开发人员做测试会很糟糕,我只是为了说明对比真正的测试人员还不够熟练和有经验。术业有专攻,每个人都有自己擅长的领域。许多开发人员认为测试人员是在故意给他们找碴挑刺,而事实上,这些bug都是在开发过程中所遗留的不易察觉的问题。请记住,测试人员永远是开发人员身边最好的朋友!
本文翻译自c-sharpcorner.com,原文地址
相关推荐
"软件开发者测试练习题.zip" 文件集合提供了一系列针对软件测试的学习资源,旨在帮助开发者提升测试技能,为参与各类测试比赛做好准备。这些练习题涵盖了从基础到高级的各种测试知识,包括练习、预选赛、省赛和国赛...
这份"开发者测试省赛参考答案"压缩包文件,无疑为参赛者提供了宝贵的参考资料,帮助他们更好地理解和实践软件测试的理论与方法。 一、软件测试基础 软件测试的基本理念是通过执行软件来寻找错误,确保产品满足既定...
本篇文章将详细探讨软件开发的流程及其重要注意事项,旨在为开发者提供宝贵的指导。 首先,软件开发流程通常包括以下几个阶段: 1. 需求分析:这是软件开发的起点,开发者需要与客户或项目发起人沟通,明确软件的...
在这个特定的案例中,"自己编写的测试代码"可能涉及到多种测试方法和技术,如单元测试、集成测试和系统测试。下面将详细探讨这些测试类型以及它们的重要性。 1. 单元测试:这是最基础的测试层次,主要针对代码中的...
软件测试文档模板为软件测试提供了一个通用的编写模板,帮助开发者快速编写软件测试文档,提高软件测试的效率和质量。 2. 编写目的 软件测试文档的编写目的旨在确保软件的质量和可靠性,确保软件满足用户的需求和...
通过软件测试的实践训练,深刻理解和掌握软件测试和软件测试过程的基本方法和基本技术,熟练掌握黑盒测试、白盒测试的测试用例的设计,同时进一步提高对于复杂程序的编写能力,为将来从事实际软件测试工作和进一步...
报告目录中,引言部分对软件系统压力测试报告文档的编写目的和系统概述进行了介绍。其中,项目名称、总体目标和技术目标等信息对软件系统的整体理解和评价具有重要意义。 系统概述中,项目名称是软件系统的基本信息...
本资源是一个针对iOS 13.2 (17B5068e)的开发者测试版真机调试包,专为Xcode 11.2 Beta 2设计,旨在帮助开发者在该操作系统版本上进行软件开发和调试工作。 首先,我们来详细了解一下iOS 13.2。这是苹果公司为iPhone...
在软件开发过程中,单元测试是一项至关重要的质量保证活动,它能帮助开发者确保代码的正确性和稳定性。本资源“软件单元测试入门与实践”由周立功撰写,专注于C和C++编程语言,提供了对单元测试的基本理解及实际操作...
总之,软件开发者需要不断精进自己的编程语言技能,深入理解算法和数据结构,熟练掌握版本控制工具,以及培养高效的问题解决和调试技巧。同时,对特定领域的深入研究,如本例中的Lucene,将有助于开发者在特定领域内...
为什么需要单元测试 单元测试有三个重要的意义: * 单元测试是保证你写的代码是你想要的结果的最有效办法。 * 单元测试帮我们塑造设计。 * 单元测试是最好的文档之一。 单元测试描述了代码的预期行为,可以最有效...
《软件单元测试讲义》是一份深入探讨软件开发中单元测试...总结,《软件单元测试讲义》这份资料为开发者提供了一个全面了解和掌握单元测试的平台,通过学习和实践,我们可以更好地确保代码质量,提升软件项目的成功率。
这份指南由麒麟软件有限公司编写,旨在帮助开发者们更好地适应麒麟桌面V10的环境,将其应用程序转换为适合该平台的deb包格式。 1. 开发环境: 在开始软件打包工作之前,开发者需要准备必要的开发工具。这可能包括...
### 重要知识点解析 #### 1. 兼容性测试及其侧重方面 - **兼容性测试**是指在...以上内容涵盖了软件测试领域的多个核心知识点,从兼容性测试到具体的测试工具使用方法,为面试准备提供了丰富的理论基础和实践经验。
软件功能测试方案1主要涵盖了三个核心步骤:开发者测试、专业测试人员的测试以及真实用户的试用。下面将详细阐述这些步骤及其重要性。 一、软件开发者做功能测试 1. **依据设计文档测试**:在软件开发初期,开发者...
总的来说,《基于vs2010的软件测试》涵盖了VS2010测试工具的各个方面,为软件质量保证提供了有力的支持。通过学习,开发者和测试工程师可以提升测试效率,降低软件缺陷,确保产品的高质量交付。
在设计阶段,软件开发者需要编写设计文档,包括需求文档和数据库设计文档。然后,测试人员需要对设计文档进行审核,以确保设计文档符合要求。在设计阶段,测试人员还需要对单元白盒测试进行编码和审核,以确保单元...