阅读更多

5顶
14踩

编程语言

原创新闻 开发人员的测试悖论

2011-05-16 09:26 by 见习编辑 jobbole 评论(7) 有8580人浏览

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

  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  文章推荐:关关  翻译:敏捷翻译 - 祝佳

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

     

来自: www.jobbole.com
5
14
评论 共 7 条 请登录后发表评论
7 楼 justrio 2011-05-16 13:52
广告文,勃了泥煤啊
6 楼 luogen33 2011-05-16 13:30
   
5 楼 mavlarn 2011-05-16 13:28
不会写有效测试的程序员不是好程序员。
4 楼 Leon.Wood 2011-05-16 11:05
果然又是 勃乐 javaeye上的topN文章都是这家伙发的吧
3 楼 徐风子 2011-05-16 10:57
你猜他们发文章要花钱吗?
2 楼 徐风子 2011-05-16 10:57
勃了在线在iteye上发了好多文章呀,你才他们发文章要花钱吗?
1 楼 fflame 2011-05-16 09:53
记得很久以前看过??

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • jquery-contextMenu右键(左键)菜单插件

    很实用的插件,在网页列表中可实现鼠标右键点击出现操作菜单,提高用户体验。

  • C#左键弹出菜单

      开发环境:   C# 2005    WINFORM有时候我们需要实现左键单击后弹出一个快捷菜单,如何实现?(本文有参考其他文章)1.在窗体上新建一个按钮button12.新建一个快捷菜单contextMenuStrip13.为button1添加单击事件 private void button1_Click(object sender, EventArgs e)       

  • 左键单击控件弹出快捷菜单(C# Winform)

    1、置入ContextMenuStrip控件,和一个普通的控件(如:button,label) 2、为需要弹出快捷菜单的普通控件设置一个click事件。 3、在代码中利用ContextMenuStrip控件的Show(Control control,Point position)方法完成快捷菜单的显示 代码举例: private void btnContextMenu_Clic...

  • YUI ContextMenu 控制MenuItem的显示情况(如disabled)

    大家好,老师来了,老师又来了……幸好不收稿费也不收学费。所以一个ContextMenu就可以写n篇,大家也没有什么意见,这次老师要说的是……控制MenuItem的属性。应用场景如下:针对目标,右键菜单可能启用一些菜单项,禁用一些菜单项。简单的例子是,选中图片文件可以用Acdsee打开,选中word文件就是用word打开了。这里的解决思路是从YUI 邮件组搜到的。所以邮件组是个好东西。但是还需要挖掘

  • C# 实现"左键"单击弹出式菜单

    C# 实现"左键"单击弹出式菜单

  • C# NotifyIcon 鼠标左键弹出托盘菜单的两个方法

    最近在做一个小程序,要求程序的图标显示在任务栏的通知区域,就和QQ的图标显示一样。NotifyIcon类提供了这类的实现方法。NotifyIcon控件的Icon属性定义显示在通知区域中的图标。图标的弹出菜单由 ContextMenu属性确定。Text属性分配工具提示文本。在默认情况下,在图标上单击鼠标右键,图标的弹出菜单才显示出来。如果想点击左键,图标的弹出菜单也显示的话,可以由如下两个方法实现:

  • 左键也能弹出菜单

    google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//<script type="text/javascript"

  • QT 写一个属于自己的消息弹窗MessageBox

    手把手教你写一个属于自己的MessageBox,让你在小伙伴面前被称之为大神!

  • WPF解决ContextMenu菜单的DataContext无法绑定,并实现按钮左键弹出菜单

    问题: 1、当为ContextMenu指定DataContext时,因为ContextMenu属于弹出层,在VisualTree中与所在的设计视图已经分离,所以无法将DataContext绑定到任何父级元素,即使整个视图已指定了DataContext,也无法设置MenuItem的Command,也就是说,一下几种方式都是无效的,均不能触发菜单项的Command: &lt;UserControl x:Class="....." x:Name="TestView"&gt;

  • WPF 左键单击弹出菜单 ContextMenu

    WPF 左键单击弹出菜单 ContextMenu 原文:WPF 左键单击弹出菜单 ContextMenuWPF中的ContextMenu在XAML中可直接做出来,但是仅限于右键弹出菜单,如果需要添加左键弹出功能,只需要在事件中添加Click事件 XMAL代码如下 &lt;Button x:Name="s" Content="Button...

  • vc++添加左键弹出菜单

    // CmfcDemo3View 消息处理程序void CmfcDemo3View::OnRButtonDown(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CMenu menu;//定义菜单对象 menu.LoadMenuW(IDR_MENU1);//加载菜单 CMenu* PM=men

  • C# ContextMenuStrip 点击右键不显示菜单,只点击左键显示菜单

    1.点击左键显示菜单

  • YUI ContextMenu 鼠标左键弹出

    不得不说,YUI的设计结构是蛮奇怪的。用惯了VCL就知道,操作PopupMenu是非常简单的事情,比如有popup(x.y)方法,直接可以指定弹出的目标。但是YUI有的信息,估计要狠看API和源码才能知道它设计在什么地方去了……所以现在还是一个例子。例子说明一切问题。没有例子寸步难行。古人有云:吃饱没事干,上网博客逛……原理:侦听目标DOM对象的单击事件 ,然后在鼠标位置弹出菜单。下面是来自YUI

Global site tag (gtag.js) - Google Analytics