首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 软件水平考试 > 复习资料 > 信息系统监理师 > 正文

从企业的运行价值链说起——我眼中的测试驱动开发(TDD)

  看了一期中央电视台的《对话》栏目,节目对三星CEO尹钟龙进行了访谈。其中,现场一位女士的一句话令我印象深刻。她提到一个企业的运行价值链,共分为三步:首先是发现价值,找到目标市场;第二步是生产价值,将高质量的产品生产出来;最后是保护价值或收获价值,做好品牌。

  怎么理解呢?这位女士以Nike作比喻。第一步是设计Nike鞋,这就是发现价值,可能获得100美元的价值;然后再拿到中国来生产,大约是10美元;最后再将生产好的鞋子,贴上Nike的商标送回到美国去卖,又可以收获90美元。一双鞋售价200美元,而生产价值所能收获的却只有10美元。这一步获取利益最低,我们中国的公司却做得最好。而怎么去发现价值,然后又怎样去巩固自己的品牌和知名度,中国的公司就做得不那么好了。

  据我的了解,国内的软件开发应用TDD相对较少,很多人认为:测试驱动开发是个好东东,但似乎不符合中国国情。说到原因,最多的一条就是项目时间紧,没有时间写测试代码。在项目中,到底该不该使用TDD,大多数人持怀疑或观望的态度。这种态度与观点,就让我想起了如上《对话》中的这一段话。

  再仔细分析企业运行价值链的三步走,我觉得和软件开发的TDD价值链很相似。第一步,是发现价值。应用到TDD中,就是测试先行,通过测试来驱动我们编写代码。第二步,生产价值。毋庸置疑,这正是编写代码的一个阶段。而第三步,就是收获价值,在TDD中,我们收获的不仅有开发后完整的产品,同时还收获了完整的测试套件。和Nike鞋的生产一样,我们在软件开发中,过度地重视了第二步生产价值阶段,而对于第一步和第三步,要么是忽略了,要么就是没有提高到相应的高度。

  一、发现价值与生产价值

  习惯了传统开发模式的程序员,非常不适应写代码之前,先写测试的方法,这其中也包括我。那么,我们一般是怎样去发现价值的呢?首先通过需求分析,然后进入设计阶段。在设计阶段期间,再围绕需求分析的结果,更多的是从实现的角度,而非从客户应用的角度出发。TDD颠覆了这种模式。因为需要测试先行,就驱动了程序员必须从功能出发、从应用出发。在写测试代码的过程中,我们需要考虑要实现那些功能,相应的类的名称、对象的创建方式,以及可能会应用到的模式和策略,如此种种,在这个过程中,如剥笋子一般逐渐地规定出来了。

  在这个过程中,我们要审慎地选择测试的步子。昂首阔步虽然显得气势轩昂,行进快速,但往往会忽略沿途的风景。在测试驱动开发中,我建议你小心的规划测试样例,从测试样例的逐步完善中,渐进地驱动出你更加完善的代码。例如,我需要开发一个智能的个人助理,它目前能提供的功能是:能够让用户定制自己感兴趣的类别,然后个人助理根据用户的定制进行搜索,并将搜索得到的结果按不同的类别进行存储。

  我们来尝试一下TDD的过程。根据对功能的分析,我们首先应该有一个智能助理对象,测试代码如下:
  [Test]
  public void TestSmartAssistor()
    {
       SmartAssistor assistor = new SmartAssistor();
       Assert.IsNotNull(assistor);
    }
  当然,这段代码是连编译都无法通过的,我们还需要创建SmartAssistor类型。然而,不要小瞧了这一步,它实际上促使你对项目进行初步的理解,至少,你需要想好这个将要创建的类型,它的名字是什么?这就是一种驱动力。(为了简便起见,在本文只列出测试代码)

更多软考资料请访问:考试吧软件水平考试栏目

希望与更多网友交流,请进入考试吧软件水平考试论坛

 

1 2 3 4 5 下一页
文章责编:yanruijie  
看了本文的网友还看了
文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。