`

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

本文翻译自c-sharpcorner.com,原文地址

1
1
分享到:
评论
1 楼 windlike 2015-08-05  
所以才要有测试的说,可是目前国内软件测试人员的水平真是。。。哎。。。

相关推荐

    软件开发者面试百问

    该资源是面向软件开发者的面试题库,涵盖了软件开发的各个方面,包括需求管理、功能设计、技术设计、程序设计、算法、数据结构和测试等。该资源共有 100 多个问题,涵盖了软件开发的各个阶段和方面,是软件开发者...

    软件开发(开发者必看)

    本篇文章将详细探讨软件开发的流程及其重要注意事项,旨在为开发者提供宝贵的指导。 首先,软件开发流程通常包括以下几个阶段: 1. 需求分析:这是软件开发的起点,开发者需要与客户或项目发起人沟通,明确软件的...

    自己编写的测试代码

    在这个特定的案例中,"自己编写的测试代码"可能涉及到多种测试方法和技术,如单元测试、集成测试和系统测试。下面将详细探讨这些测试类型以及它们的重要性。 1. 单元测试:这是最基础的测试层次,主要针对代码中的...

    软件测试文档模板

    软件测试文档模板为软件测试提供了一个通用的编写模板,帮助开发者快速编写软件测试文档,提高软件测试的效率和质量。 2. 编写目的 软件测试文档的编写目的旨在确保软件的质量和可靠性,确保软件满足用户的需求和...

    C#编写测试软件程序

    综合以上分析,我们可以得出这款C#编写的测试软件是一个专门为普赛斯仪表设计的测试工具,它利用C#的强大功能实现了自动化和半自动化的测试流程,提高了生产测试的效率和准确性。对于开发和维护这样的软件,开发者...

    iOS 13.2 (17B5068e) 开发者测试版 真机调试包

    本资源是一个针对iOS 13.2 (17B5068e)的开发者测试版真机调试包,专为Xcode 11.2 Beta 2设计,旨在帮助开发者在该操作系统版本上进行软件开发和调试工作。 首先,我们来详细了解一下iOS 13.2。这是苹果公司为iPhone...

    网上商城软件系统—软件测试

    通过软件测试的实践训练,深刻理解和掌握软件测试和软件测试过程的基本方法和基本技术,熟练掌握黑盒测试、白盒测试的测试用例的设计,同时进一步提高对于复杂程序的编写能力,为将来从事实际软件测试工作和进一步...

    软件系统压力测试报告文档

    报告目录中,引言部分对软件系统压力测试报告文档的编写目的和系统概述进行了介绍。其中,项目名称、总体目标和技术目标等信息对软件系统的整体理解和评价具有重要意义。 系统概述中,项目名称是软件系统的基本信息...

    软件测试中如何编写单元测试用例(白盒测试)收集.pdf

    软件测试中如何编写单元测试用例(白盒测试) 单元测试是软件测试中的...编写单元测试用例是软件测试中的一种重要方法,它可以帮助开发者和测试人员更好地了解软件的功能和性能,并确保软件的每个单元都能正确地工作。

    MFC 编写的仪器测试软件

    总结来说,MFC在编写仪器测试软件时扮演了核心角色,负责界面构建和串口通信;Matlab则作为数据分析的工具,通过与C++的融合,增强了软件的处理能力和专业性。这样的组合展现了强大的技术集成能力,是现代科学仪器...

    软件开发者最重要的四大技能

    总之,软件开发者需要不断精进自己的编程语言技能,深入理解算法和数据结构,熟练掌握版本控制工具,以及培养高效的问题解决和调试技巧。同时,对特定领域的深入研究,如本例中的Lucene,将有助于开发者在特定领域内...

    藏经阁-阿里开发者手册-单元测试专题-115.pdf

    为什么需要单元测试 单元测试有三个重要的意义: * 单元测试是保证你写的代码是你想要的结果的最有效办法。 * 单元测试帮我们塑造设计。 * 单元测试是最好的文档之一。 单元测试描述了代码的预期行为,可以最有效...

    软件开发流程图.doc

    在测试阶段,软件开发者需要编写测试用例、执行测试、记录测试结果等。 部署是软件开发流程图的最后一个阶段。在这个阶段,软件开发者会将软件部署到生产环境中,使其能够被用户使用。在这个阶段,软件开发者需要...

    软件单元测试讲义ppt

    《软件单元测试讲义》是一份深入探讨软件开发中单元测试...总结,《软件单元测试讲义》这份资料为开发者提供了一个全面了解和掌握单元测试的平台,通过学习和实践,我们可以更好地确保代码质量,提升软件项目的成功率。

    软件单元测试——JUnit使用

    软件单元测试是软件开发过程中的一种测试方法,它可以帮助开发者及早发现软件中的缺陷,并提高软件的可靠性和质量。JUnit是一个流行的Java测试框架,广泛应用于软件单元测试中。在本实验中,我们使用Eclipse作为开发...

    软件测试资料打包

    对于初学者来说,这些知识将为他们构建坚实的软件测试基础;对于经验丰富的从业者,它们也能提供深入理解和改进现有工作流程的工具。通过深入学习和实践这些内容,你可以提高你的软件质量保证能力,从而在IT行业中...

    基于vs2010的软件测试

    总的来说,《基于vs2010的软件测试》涵盖了VS2010测试工具的各个方面,为软件质量保证提供了有力的支持。通过学习,开发者和测试工程师可以提升测试效率,降低软件缺陷,确保产品的高质量交付。

    软件测试流程图概要一览

    在设计阶段,软件开发者需要编写设计文档,包括需求文档和数据库设计文档。然后,测试人员需要对设计文档进行审核,以确保设计文档符合要求。在设计阶段,测试人员还需要对单元白盒测试进行编码和审核,以确保单元...

    软件文档编写指南(国家标准)

    同时,软件文档编写指南还为软件开发者提供了一个通用的文档模板,方便软件开发者编写高质量的软件文档。 软件文档编写指南是软件开发过程中的重要组成部分,它为软件开发者提供了一个通用的文档编写指南,确保软件...

    软件测试规范 软件工程 测试 Junit Eclipse

    在软件开发过程中,软件测试是不可或缺的一环,它确保了产品的质量和稳定性。本文将深入探讨“软件测试规范”、“软件工程”、“测试”以及“Junit”和“Eclipse”在其中的应用,这些都是构建高效、可靠的软件系统的...

Global site tag (gtag.js) - Google Analytics