软件测试不是一个简单的流程,它特立独行,并贯穿于整个软件开发过程。我们常常听到这样的问题:“为什么软件的开发者们不适合测试他们自己开发的软件?”事实上,软件开发人员测试自己所开发软件的行为就如同学生在完成考试试卷后再对自己的成绩进行评估。这种做法毫无意义,为了加深此认识,让我们来深层次的分析这背后隐藏的问题。
开发人员对其所写代码有主观认同感
人们通常会对自己所犯错误视而不见或者拒绝承认。同样的,在软件开发领域,程序员们在耗费大量心血编写代码,完成工作之后,他们会固执的认为自己编写的代码会运行良好。他们对待其开发的应用程序就像对待自己的孩子一样,拒绝承认自己的孩子有什么不好的地方。这就是为什么软件开发人员难于发现和改正自己的错误。
开发人员对软件过于乐观的心态
开发人员进行开发的目标是将软件所需的功能完美的展现出来。当程序的功能运转正常的时候他们会自我感觉良好,因为他们的主要目标就是功能二字。而测试人员与他们想的却不一样。测试人员通常会从不同的角度切入进软件内部,打破程序员们惯有的思维方式。他们的目标是通过各种不同的测试用例把软件潜在的不足之处引发出来。
开发人员对需求易产生偏差与混淆
开发人员专注于程序的功能,并在现有需求目标的指引下开展工作,当新的需求目标出现之后,他们会与现有的需求目标混淆并产生业务逻辑层或者功能性上的bug。需求作为程序员考虑功能的唯一标准,因此如果当他们在需求的理解上出现了偏差的话,他们在测试应用程序上就会不得要领了。而软件测试人员会从业务的角度来看待需求,他们能够辨别哪些需要的东西完成了,而哪些还没有。
开发人员擅长修复但不擅长拆解
开发人员只擅长代码的功能测试和代码修复,如果程序运行正常,那么他们的测试就结束了。而事实上,测试人员的主要工作是将应用程序拆解,从每个小块之中找寻那些不易发现的bug,并帮助开发人员了解那些特定的功能应当是怎么样的。
开发人员缺乏对软件后续开发的展望
大多数开发人员专注于特定的任务或功能,他们从需求所选择的那个点来完成功能的设计,因此在测试的时候他们也只会从这个点来进行考量而不会考虑功能设计的灵活度。而测试人员会在功能设计方面考虑得更宽,在一个或者多个目标完成时,他们都会在大脑里呈现心目中应用程序的完整样子,这有助于在更早的时间更轻松的完成后续功能的设计。
开发人员缺乏测试经验和方法
软件测试人员通过平时接触的常见错误和应用程序逻辑积累了丰富的知识和经验。由于在测试上的长期锻炼,测试人员对于找寻bug和程序测试更加得心应手,而开发人员只擅长修复已拆解的应用程序而不擅长拆解。测试需要通过有专业的测试能力的软件测试人员才能完成,因为他们具备了掌握软件测试要领、思想的能力以及对软件测试工具、方法使用的理解,而这些是需要长时间实践才能熟悉的。
这就是为什么我们需要一个测试团队,我并不是说开发人员做测试会很糟糕,我只是为了说明对比真正的测试人员还不够熟练和有经验。术业有专攻,每个人都有自己擅长的领域。许多开发人员认为测试人员是在故意给他们找碴挑刺,而事实上,这些bug都是在开发过程中所遗留的不易察觉的问题。请记住,测试人员永远是开发人员身边最好的朋友!
本文翻译自c-sharpcorner.com,原文地址
相关推荐
通过软件测试的实践训练,深刻理解和掌握软件测试和软件测试过程的基本方法和基本技术,熟练掌握黑盒测试、白盒测试的测试用例的设计,同时进一步提高对于复杂程序的编写能力,为将来从事实际软件测试工作和进一步...
软件测试的前途不可估量的,学习掌握软件测试方法与测试技术并能应用到测试过程中是非常重要的,应用好的测试方法与测试技术进行测试对于一个测试人员来说是十分重要的,制定好的测试计划、测试大纲与测试用例同样 ...
单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。 单元测试工具: 白盒测试: 白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过...
测试工具:个人笔记本电脑 2 项目背景 软件系统名称:客户消费积分管理系统 项目任务提出者:1203BJ五组 项目开发者:1203BJ五组 测试概要 1 测试用例设计 本次测试用例设计主要采用黑盒测试方法,功能模块及集成...
事实上,在许多机构并不鼓励其程序员为代码编写文档,也不鼓励程序员将代码写得清晰和容易理解,相反他们认为少写文档可以更快的进行编码,无法理解的代码更易于工作的保密(“写得艰难必定读的痛苦”)。 ⑧、软件...
在开发大型软件系统的过程中,面对着极其错综复杂的问题,软件开发者的主观认识不可能完全符合客观事实,而且与工程密切相关的各类人员之间的沟通和配合也不可能完美无缺,因此,在软件生命周期的每个阶段不可避免地...
它是用户和开发者相互理解的基础,是软件设计和编码的依据,也是软件测试和系统综合的基准。 软件需求规格说明要从以下各方面规定软件产品的所有外部特性: —— 功能,即该软件产品能做什么; —— 外部接口,即该...
建立软件漏洞发掘环境2.1 虚拟机的安装2.1.1 虚拟机的概念2.1.2 为什么选择虚拟机2.1.3 VMware的基本使用2.2 IIS的安装2.3 用XAMPP建立网站环境2.4 软件漏洞发掘的基本步骤2.4.1 提供源代码的情况2.4.2 没有源代码的...
3380 测试机的软件编程手册,包括硬件配置信息,软件代码书写结构等信息
需求的编写是为了研究图书管理系统软件的开发途径和应用方法。同时它也是进行项目策划、概要设计和详细设计的基础,是维护人员进行内部维护,信息更新,验收和测试的依据。本需求的预期读者是与图书管理系统软件开发...
测试框架和工具则协助开发者编写和运行单元测试、集成测试及性能测试,确保软件质量。 版本控制与协作: 通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化...
功能测试通常使用某种自动化测试框架编写,这样开发者可以从自动化的功能测试中获得快速反馈,为下阶段新在软件测试中软件特征功能测试过程分析 功能测试之乐: 功能测试定义了产品的业务需求,通过它业务人员可以...
测试框架和工具则协助开发者编写和运行单元测试、集成测试及性能测试,确保软件质量。 版本控制与协作: 通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化...
用例一般是由软件开发者和最终 编写软件测试用例的一点小体会 软件测试 每个用例提供了一个或多个场景,该场景揭示了系统是如何同最终用户或其它系统交互的,从而获得一个明确的业务目标。用例要避免技术术语,...
单元测试是从开发者的角度来编写 单元测试与功能测试的形象比喻 软件测试 关键字:软件测试、单元测试、功能测试 单元测试好比房屋建筑现场的建筑监理员,他关心房屋的各个内部系统,如地基、构架、供电系统和...
用例一般是由软件开发者和最终用户共同创作的。 用例的编写过程: 1.定义系统范围和边界 (追踪带有输入/输出列表的初始语境图的变化) 2.集中讨论,并列出执行者 (在系统整个生命周期内,找出每个人或非人的...
测试框架和工具则协助开发者编写和运行单元测试、集成测试及性能测试,确保软件质量。 版本控制与协作: 通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化...
测试框架和工具则协助开发者编写和运行单元测试、集成测试及性能测试,确保软件质量。 版本控制与协作: 通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化...
LOGISCOPE 为开发者提供SEI/CMM在第2 级(Repeatable )所要求的软件质量跟踪等关键实践的要求,推进开发组织尽快达到SEI/SMM 的3 级。 1)LOGISCOPE 用于开发阶段 定义质量模型 RuleChecker 预定义了50 个的...
测试框架和工具则协助开发者编写和运行单元测试、集成测试及性能测试,确保软件质量。 版本控制与协作: 通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化...