单元测试、功能测试区别.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在过去的几年里,单元测试已成为我编写软件的核心环节,多亏了一种称为极限编程 (XP) 的简便编程方法(请参阅参考资源)。这种方法要求我为添加的每个函数编写单元测试,并且要维护这些测试。如果单元测试失败,我就无法整合任何代码。随着代码库的不断增大,这些测试将使开发人员能够很有把握地完成更改。 ??????? 起初,我认为有了单元测试,就没必要再进行功能测试。噢,又错了。功能测试与单元测试相差甚远。我花了很长一段时间理解二者的区别,以及如何结合使用两者来改进开发过程。 ??????? 本文探究单元测试与功能测试之间的区别。并概述了在日常开发中使用这两种测试的方法。 测试与开发过程 ??????? 测试对于开发人员极为重要,您必须在开发过程中不断进行测试。测试不应该只属于开发周期的某个特定阶段。它绝不应该是您将系统交给客户前要完成的最后一项任务。如何才能知道您何时就完成了所有任务呢?如何才能知道对一个小错误的修正是否破坏了系统的主要功能呢?目前想像中的系统如何才能演化为实实在在的系统呢?单元测试和功能测试都应该是开发过程中不可分割的一部分。 ??????? 单元测试应成为您编写代码的核心环节,当您所做的项目时限很紧并且您希望控制开发进度时尤其如此。由于单元测试是如此重要,所以您应该先编写测试,再编写代码。 ??????? 一套适当的单元测试具有以下功能: ??????? 说明可能的最实用设计? ??????? 提供类文档的最佳格式? ??????? 确定一个类何时完成? ??????? 增强开发人员对代码的信心? ??????? 作为快速重构的基础   ??????? 单元测试创建随系统自然发展的设计文档。再读一遍上一句话。文档随系统自然发展,这是软件开发的“圣杯”。有什么方法比通过提供一个用例编码集来记录一个类效果更好呢?那就是单元测试:一系列记录类所做工作的用例代码,提供输出控制。这样,由于单元测试必须通过,所以设计文档总是必威体育精装版的。 ??????? 您应该首先编写测试,然后再编写代码。这样就为要测试的类提供了一种设计,这种设计使您每一时刻都只需集中考虑一小块代码。这种做法也使设计变得不再复杂。您没有试图为以后着想而实现一些不必要的功能。先编写测试还使您知道该类何时完成。一旦通过所有测试,任务也就完成了。 ??????? 最后,单元测试可使您高度自信,这又会转化为开发人员的满意度。如果只要更改代码即运行单元测试,您立即就能发现您所做的更改是否对系统造成了破坏。 ??????? 功能测试比单元测试更重要,因为功能测试将验证系统是否可以发行了。功能测试以一种有用的方式对您的工作系统进行说明。一套适当的功能测试具有以下功能: 以有效方式捕获用户需求? ??????? 增强小组(用户和开发人员)在系统满足用户需求方面的信心   ??????? 功能测试以有效方式捕获用户需求。传统开发通过用例来捕获需求。通常,人们讨论用例并花很长时间对它们进行细化。他们最后所得到的只是一纸空文。功能测试就像自验证式用例。极限编程方法可解释这一概念。XP Stories 将成为未来用户与开发人员进行沟通的协议。功能测试便是这种沟通的结果。未经功能测试的 Stories 不可能很完善。 ??????? 功能测试填补单元测试留下的空白,并可增强小组对代码的信心。单元测试漏掉许多错误。尽管它可以提供您所需的全部代码,但它可能无法提供您所需的全部系统功能。功能测试将暴露单元测试遗漏的问题。一套适当的自动化功能测试也不可能捕捉到每个错误,但是它能比最好的单一单元测试捕捉更多的错误。 单元测试与功能测试 ??????? 单元测试向开发人员表明代码正确执行操作;而功能测试向开发人员表明代码执行正确的操作。 单元测试 ??????? 单元测试是从程序员的角度编写的。它确保类的某个特定方法成功执行一系列特定的任务。每个测试都确保只要给定输入,方法将输出预期的结果。 ??????? 如果没有测试框架,编写一套可维护的自动化单元测试几乎是不可能的。在开始编写测试之前,请选择一个小组公认的框架。您将经常性地使用这个框架,因此您最好对它有点好感。极限编程网站提供了几个单元测试框架(请参阅参考资源)。我最熟悉的框架是 JUnit,它专门用来测试 Java 代码。 功能测试 ??????? 功能测试是从用户的角度编写的。这种测试确保系统执行用户期望它执行的工作。 [NextPage] ??????? 很多时候,系统开发好比建筑房屋。尽管这种类比不很恰当,但为了理解单元测试与功能测试的区别,我们可以扩充这种类比。单元测试好比房屋建筑现场的建筑监理员。他关心房屋的各个内部系统,如地基、构架、供电系统和管道设备等。他确保(测试)房屋每一部分的工作都安全、正常,即符合建筑

文档评论(0)

3va3x66 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档