(一)TDD简介:
许多书上都讨论了自动测试,但是只有很少的著作注意到这么一个问题,那就是怎样把这些测试组织起来。随着测试的增加,放置和调用这些测试却变得更加麻烦。这将成为一个重要问题,以至于出现了TDD,极限编程(XP)使TDD得以普及。另外,你可以这样理解TDD:通过测试来开发。
TDD(Test-Driven Development:测试驱动开发)本质和优势
测试驱动开发不是一种测试技术,它是一种分析技术、设计技术,更是一种组织所有开发活动的技术。相对于传统的结构化开发过程方法,它具有以下优势:
1) TDD根据客户需求编写测试用例,对功能的过程和接口都进行了设计,而且这种从使用者角度对代码进行的设计通常更符合后期开发的需求。因为关注用户反馈,可以及时响应需求变更,同时因为从使用者角度出发的简单设计,也可以更快地适应变化。
2) 出于易测试和测试独立性的要求,将促使我们实现松耦合的设计,并更多地依赖于接口而非具体的类,提高系统的可扩展性和抗变性。而且TDD明显地缩短了设计决策的反馈循环,是我们几秒或几分钟之内就能获得反馈。
3) 将测试工作提到编码之前,并频繁地运行所有测试,可以尽量地避免和尽早地发现错误,极大地降低了后续测试及修复的成本,提高了代码的质量。在测试的保护下,不断重构代码,以消除重复设计,优化设计结构,提高了代码的重用性,从而提高了软件产品的质量。
4) TDD提供了持续的回归测试,使我们拥有重构的勇气,因为代码的改动导致系统其他部分产生任何异常,测试都会立刻通知我们。完整的测试会帮助我们持续地跟踪整个系统的状态,因此我们就不需要担心会产生什么不可预知的副作用了。
5) TDD所产生的单元测试代码就是最完美的开发者文档,它们展示了所有的API该如何使用以及是如何运作的,而且它们与工作代码保持同步,永远是最新的。
6) TDD可以减轻压力、降低忧虑、提高我们对代码的信心、使我们拥有重构的勇气,这些都是快乐工作的重要前提。
TDD现状
由于发展时间不长,相关应用并不是很成熟。现今越来越多的公司都在尝试实践测试驱动开发,但由于测试驱动开发对开发人员要求比较高,更与开发人员的传统思维习惯相违背,因此实践起来有一定困难。
(二)Junit的简单介绍
简单的说,junit 是用来做单元测试的一个工具。用其主页上的话来说就是:“JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing work)。在www.junit.org上可以下载到最新版本的junit包。
单元测试是一种白箱测试。目的是验证一个或若干个类是否按所设计的那样正常工作。集成测试则是验证所有的类是否能互相配合,协同完成特定的任务。
需要强调的是:测试是一个持续的过程。也就是说测试贯穿与开发的整个过程中,单元测试尤其适合于迭代增量式(iterative and incremental)的开发过程。
因为我们是测试新手,我们也不理会那些复杂的测试原理,先说一说最简单的:测试就是比较预期的结果是否与实际执行的结果一致。如果一致则通过,否则失败。
(三)回归测试框架-JUnit
回归测试就是你不断地对所编写的代码进行测试:编写一些,测试一些,调试一些,然后循环这一过程,你会不断地重复先前的测试,哪怕你正编写其他的类,由于软件熵的存在,你可能在编写第五个类的时候发现,第五个类的某个操作会导致第二个类的测试失败。通过回归测试我们抓住了这条大Bug。
分享到:
相关推荐
#### 五、读者反馈摘录 - **Sharee L. Johnson**(项目负责人,应用程序开发):“这本书从一开始就很好地介绍了单元测试是什么以及为什么要进行单元测试。我喜欢书中穿插的各种趣事,它们很好地说明了为什么我们...
您可以像在Eclipse IDE上进行Junit测试一样在测试包中运行Private和Public测试文件(添加JUnit 4以构建路径之后,可以这样做:右键单击项目-> Build Path-> Configure Build Path-> select库选项卡->添加库...-> ...
此外,Eclipse还集成了CVS、JUnit和Ant等工具,方便开发者进行版本控制、单元测试和构建管理。 **4. Eclipse插件安装** Eclipse插件的安装非常简单,只需将下载的插件文件复制到Eclipse的plugins目录下即可。例如,...
图11展示了从JUnit恢复的GraphML文件的摘录,其中包含了96个类以及它们之间的335条边,揭示了这些类之间的关系。 - **垂直聚类结果**:根据Section 5.2.2中所述的原则,得到了平均的垂直聚类结果,96个类被分为了12...
12. **单元测试和集成测试**:JUnit 和 Mockito 等工具的使用,表明作者关注代码质量并进行了充分的测试。 综上所述,"Portfolio_Examples" 压缩包中的 Java 项目可能是对上述知识的实践应用,每个项目都可能涵盖了...
该书版权页信息表明,除非用于引用或评论中的简短摘录外,未经出版商事先书面许可,不能复制、存储在检索系统中或以任何形式或任何方式传输书中的任何部分。Packt Publishing努力提供了书中提及的所有公司和产品的...
使用Android Studio内置的测试框架JUnit和Espresso,可以编写针对各个组件和业务逻辑的测试用例。 最后,发布应用前,需进行性能优化,包括内存管理、电量优化和加载速度提升。使用Android Profiler工具可以帮助...
3. **书评与笔记**:提供平台让用户记录对书籍的感想、摘录或做笔记。 4. **搜索与分类**:方便用户按关键词、作者或类别快速找到所需书籍。 5. **电子书管理**:如果包含电子书功能,可能支持导入、存储和阅读...
### Maven使用指南核心知识点 ...以上内容仅为本书的部分摘录,深入学习Maven还需要结合实际项目实践和更多高级特性。Maven作为一款强大的构建工具,不仅简化了项目的构建流程,还提高了开发效率。
系统可能提供功能如摘录重要观点、添加个人评论、标记阅读进度、设置提醒和搜索功能,以帮助用户更好地管理知识和信息。 【可能涉及的知识点】: 1. **数据结构与算法**:为了高效地存储和检索笔记,系统可能使用...