`
llyzq
  • 浏览: 585220 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

开发人员的测试悖论

阅读更多

转自http://www.iteye.com/news/21261

  多年来,我在软件开发过程中看到了许多不同的测试方式。每一种测试都有它的独特性,一些开发人员认定他们自己有不只一种方式。在本文中,我试着列举所有不同种类的测试,并说一说它们在项目上反映出的效果。

  1. “我不是QA”(I’m not QA)

  我提交代码,其他人验证其是否能正常运作。我的工作就是写代码,而不是测试。因为是我写的代码,所以,我不能测试出代码什么地方出错了。我需要让其他 人看应用程序,并且学会如何使用,如何崩溃。通常,这种方式也说明缺乏说明文档,同样原因,这应该是其他人的工作。通常这种测试方式意味着,质量是其他人 该负责任的事。


  2. “我没时间”(I don’t have time)

  我必须在3周时间内完成项目,再没有时间去写测试了。我想测试可以保证应用程序的质量,但是因为我必须三周内完成任务,所以我必须跳过开发中的这一部 分, 直接做工作上的事情。一旦事情完成,我会做些手工检查,然后直接投产。这种方式通常和那些只用1或2个月来开发,并且4年内不用维护的小项目相关,他们只 需要短时间内得到一个产品。这种案例没有说明文档,因为你没有时间去做。(编注:关于这种类型,可参见伯乐在线职场博客《每位开发人员都应铭记的10句编程谚语》一文中的“欲速则不达”。)


  3. “管理故障”(Management fault)

  许多大公司的雇员都遵循这种开发方式。他们有过失败或项目推迟的经历,因此,他们排斥一切不能给高层管理带来直接利益的事。通常情况下,在持续快速地 开发一个功能性强大的项目时, 在开始阶段无需测试。随着时间的推移,应用程序的增多,添加了越来越多复杂的程序,并且开发进程越来越困难。每一个新的部署就意味着大量的新错误和新任 务。短短几年,应用程序失去可信度,通常有人想在新技术下重新写程序。不幸的是,如果开发过程没有改变,几年后他们会在不同的技术中以同样的方式结束。


  4. “测试只是一个工具”(Testing is just a tool)
  
  这种情形下,由开发人员编写测试,但仅限于某些对他们编码有帮助的地方。测试是用来作为创造新功能的工具,而非在代码中增加可信度的方式。如果任何新 功能的添加破坏了已存在的测试,开发员会假定测试错误,测试需要更改、取消或删除。虽然是对应用程序的测试,但是这些测试并不可信。如果这些测试不可信, 应用程序也就毫无价值可言了。


  5. “热衷测试覆盖率”(Test coverage maniac)

  所有的一切都是关于代码的覆盖率。使代码的覆盖率达到100%是最终目标。查看测试的覆盖率以及查看测试未能通过的地方,为那些路径添加测试成了一项 重复的工作。我的意思是,增加毫无意义的测试只是增加覆盖率。测试将变得复杂,新开发人员通常要花很长时间才能明白这个代码是做什么的。在这种情况下,我 们就比其他人处于更有利的位置,测试不仅是和覆盖率有关,还有可信度。


  6. “可信度测试”(Test to trust)

  这是终极方式。软件开发的测试有许多目的,但是最重要的是在代码中建立可信度。如果队员对测试有信心,他们会很自如地改进或更改代码。使其效率更高,质量更佳,周转更快。

  测试中有可信度并不是和代码覆盖率有关,而是相信团队成员,他们会为重要的事物增加测试。如果你做了更改或者破坏(break)测试,你就需要认真考虑你的更改,而不是仅仅移出错误测试。我们要做的是能提高代码和测试可信度,而非仅仅解决一个新问题。

  这些年我了解到,测试是开发过程中至关重要的一部分。每次代码修改后,都应该进行测试。用于提高测试可信度的每一秒钟,就是你每次运行测试都会成功的时候。在软件开发上,取得最大效率的唯一方式不是不写测试,而是相信你的测试。

  你是一位开发人员吗?你为你的应用程序写测试吗?你每次提交都在提高测试中的可信度吗?每次提交都需要提高可信度,否则你就是增加了一个有问题的代码,最后终将导致你重写整个程序。



  译文出处:伯乐在线 - 职场博客 - 程序员
  译文链接:http://www.jobbole.com/entry.php/794

  原文:Ramiro Rinaudo  文章推荐:关关  翻译:敏捷翻译 - 祝佳

  如需转载,但请注明原文/译文出处、译文超链接和译者等信息,否则视为侵权,谢谢合作!

分享到:
评论

相关推荐

    ISTQB 测试人员认证

    理解这一点对测试人员来说非常重要,因为测试不应该只在开发完成后进行,而应该贯穿软件开发的整个生命周期。 ISTQB测试人员认证初级大纲的版权信息表明了文档的使用条件。根据规定,个人或培训公司如果要使用这个...

    软件测试理论与实践 .pptx

    本PPT主要涵盖了软件测试的一些基本理论和实践,旨在增进开发人员对测试的理解。 首先,我们要纠正一些关于软件测试的误区。很多人认为测试是在开发后期才进行的,或者错误都是测试人员的责任。实际上,测试应该是...

    软件测试基础 软件测试的原则.docx

    5、**杀虫剂悖论**:反复使用相同的测试用例可能会导致发现新缺陷的能力下降。因此,测试用例需要不断更新和扩展,以保持其有效性。 6、**测试活动依赖于测试内容**:测试策略和方法应根据软件的特性、环境和风险...

    测试理论与方法.docx

    此外,测试人员和质量保证(QA)人员的角色有所不同。测试工程师专注于发现和报告缺陷,而QA负责制定和监督质量标准,确保开发过程符合规范,预防缺陷的产生。两者共同协作,确保软件产品的质量和用户体验。

    软件测试基础11软件工程期末考试A卷及答案.pdf

    4. 单元测试:针对软件最小可测试部分进行检查和验证,通常由开发人员编写和执行,使用断言来检查代码的正确性。 5. 集成测试:是在单元测试之后,对软件模块的组合进行测试的过程,目标是发现不同模块间交互时可能...

    软件结构化测试方法与技术

    4. **开发可以做测试,测试不能开发,为什么拿同样的工资?** - 开发与测试虽职责不同,但都是软件开发过程不可或缺的部分。测试不仅仅是找bug,还包括需求验证、风险评估等工作,对软件质量有着至关重要的作用。 5...

    软件测试-整理.pdf

    8. **测试的心理因素**:测试人员和开发人员的心态会影响测试效果。开发人员可能对自身错误有所忽视,而独立的测试团队能更客观地评估软件。测试人员需要具备批判性思维,以找出潜在问题。 总的来说,软件测试是一...

    第1章软件测试基础

    测试人员需要具备一定的心理学知识,以便更好地理解被测试软件的用户,以及与开发人员和其他项目团队成员进行有效沟通。 ISTQB(International Software Testing Qualifications Board)是一个国际性的软件测试资格...

    5.2 软件测试1

    其中,单元测试专注于单个代码模块,由开发人员进行;集成测试则是在单元测试基础上组装模块,有整体集成和渐增式集成两种方式;系统测试是在实际或模拟环境中对整个系统进行的功能和非功能测试,如性能、压力、恢复...

    软件测试的潜规则

    2. 测试周期可压缩:即使开发延期,测试仍需按期完成,有时甚至依赖非专业人员进行。 3. 测试前期工作被视为学习阶段:测试活动被推迟到后期,忽视了前期参与的重要性。 4. 依赖“三板斧”找Bug:过分依赖特定测试...

    考前回顾1

    白盒测试的实施者通常是开发人员,而在静态测试中,除了开发人员,还需要包括主持人、作者、评论员和记录员组成的代码审查小组。黑盒测试则更关注软件的功能、界面、数据访问、性能等方面,即使没有源代码也能进行。...

    软件测试基本原则.docx

    软件测试基本原则是软件测试领域中非常重要的概念,这些原则指导测试管理人员和测试人员进行高质量的测试,尽早发现软件中的缺陷,并负责跟踪和分析问题。软件测试基本原则有助于测试人员进行高质量的测试,尽早尽...

    软件测试-整理知识.pdf

    测试实现和执行,开发测试用例,执行测试规程,记录和分析结果;测试出口准则的评估和报告,基于测试结果判断是否达到继续或结束测试的标准;最后是测试结束活动,如提交交付物,关闭事件,归档测试材料,并进行经验...

    ISTQB学习笔记.docx

    测试的独立性有不同的级别,从低到高分别是开发人员自我测试、其他开发人员测试、组织内独立团队测试,直到专业的测试专家参与。这种独立性有助于确保测试的客观性和有效性。总的来说,ISTQB的学习笔记为我们提供了...

    软件测试的基本步骤简介

    - 杀虫剂悖论:如果长期使用相同的测试用例,可能会逐渐失去发现问题的能力,因此需要定期更新测试用例。 #### 三、软件测试分类 1. **功能测试** - **定义**:验证软件的各项功能是否按照需求文档的要求正确...

    软件测试从这里开始

    - 杀虫剂悖论:长期使用相同的测试方法可能会使某些类型的缺陷难以被发现。 3. **测试人员应具备的素质**: - 基本素质:良好的沟通技巧、耐心细致、责任心强等。 - 专业素质:掌握一定的编程知识、了解软件工程...

    ISTQB Sample Exam

    根据给定的信息,我们可以...综上所述,ISTQB认证测试员基础级考试是一项重要的专业认证,旨在提升软件测试人员的专业技能。通过模拟实践考题集的练习,考生可以更好地准备实际考试,并加深对软件测试核心概念的理解。

Global site tag (gtag.js) - Google Analytics