(Version Beta 1.0)
Junit 工具用于单元测试的工具,是极限编程中必不可少的工具。Java开发人员必须掌握的工具。
首先,在开发软件的过程中,风险是无处不在,从根本上讲,我们无法消除这些风险,但可以通过进行测试来降低风险,从而提高开发的可靠性,以及最终软件的质量。
那么,我们所讲到的测试的职责又是什么呢?测试最为重要的一点就是为了确保各开发阶段的开发质量,发现软件中存在的缺陷;然后是为了验证开发的产品是否符合用户的需求,即通过对用户使用过程的一些样本数据在测试过程中的反应来确定软件功能的可用性,从而改善存在的一些缺陷。
这里的缺陷是指与“软件需求说明书”不一致的地方,由于存在不一致,因此不能够满足用户的需要。
对于测试本身来讲,分为静态测试,即不需要运行程序,通过评审和其它非运行的手段来进行检查,主要检查是否满足一些标准,一些规范。动态测试是运行程序,来根据运行的状态来测试各部分功能以及情况。
从另外的角度,测试还有其它的分类,例如根据顺序来分类:
单元测试(Unit Testing),最为基本和重要的测试方法,又称为模块测试,由开发人员在开发过程中完成,需要100%达标
集成测试,又称为组装测试,确保模块之间的通讯与协作之间的运行无问题。
系统测试,包括外围的运行环境一起来测试。
验收测试,由客户来根据前期文档来进行的总体的测试,主要以静态测试为主。
回归测试。
此外还有其它角度的分类,如:
功能测试、结构测试、黑盒测试、白盒测试等等,大部分测试相关书籍中有相关的论述。
一、下面我们详细的来讨论一下单元测试方面的内容。
1)关注范围,局限在单元模块之类(如,类,方法)
2)代码分析与测试
3)功能分析与测试
4)结构分析与测试
5)以错误为导向的分析与测试
单元测试是从模块或者类的内部来设计测试用例的,目的是为了发现模块内部可能存在的各种差错。主要根据详细设计说明书和程序清单来了解I/O条件和程序逻辑,采用白盒测试用例。能够对合理输入与不合理的都能够进行识别和处理。
从模块的角度来讲,一个完整的模块需要涵盖以下几个方面:模块接口、出错处理、局部数据结构、边界条件、独立路径等等。
A.模块接口的测试,在单元测试开始的时候就需要对模块进出的数据流进行检查,例如,调用模块的参数输入是否正确,本模块调用子模块时的传递的参数是否正确,全局变更在各模块是否一致等。
详细说明一下在做内外存交互时,需要考虑的问题主要有以下几方面:
<1>文件的属性是否正确(特别在Linux等系统 下)
<2>Open与Close语句是否正确
<3>缓冲区容量与记录长度是否匹配
<4>进行读写之前文件是否已经打开
<5>结束文件处理时,是否关闭了文件
<6>I/O错误的检查与处理
B.局部数据结构的测试
<1>数据类型说明是否正确以及一致
<2>是否存在使用未赋值或者未初始化的变量的情况
<3>初始值或者缺省值是否正确
<4>变更名称是否存在拼写错误
<5>数据类型是否一致
<6>全局数据对模块的影响
C.路径测试,这里说的路径是指程序的执行路径
<1>选择适当的测试用例,对重要的一些执行路径进行测试
<2>设计一些测试用例,用来查找一些由于错误的计算,不正确的比较或者不正常的控制流而导致的错误
<3>对基本执行路径和循环进行测试
D.错误处理测试
<1>出错描述是否难以理解
<2>出错描述是否能够定位错误
<3>错误提示与实际错误是否相符
<4>对错误的处理条件是否正确
<5>对错误处理之前,错误条件是否已经引起系统干预
E.边界测试
<1>仔细设计专门的测试用例来测试边界值附近的情况
<2>如果运行时间有要求,需要针对关键路径做专门测试,从而确定各种情况下对时间的影响
单元测试的步骤:
模块一般不是一个独立的程序,对模块进行测试时,同时需要考虑它与周围环境的联系,主要是用辅助模块模拟关连模块。即采用驱动模块,桩模块。
如果一个模块包涵有多个多能,测试时需要做划分,将其分为几个小的程序,对每一部分都进行单元测试,对关键模块还需要加上性能测试。
对支持标准规程的模块,需要进行互连测试。有将此称之为模块测试,区别单元测试。
二、回归测试
回归测试是将以前做过的测试再次运行的一个过程,它主要用以检查在后续开发中没有改变的那部分程序。主要是因为新开发的内容影响到了之前开发的模块的运行,目标是为了确保软件整体功能的正确性。只要新的程序有可能影响到老的功能时,就有必要做回归测试。
待续...
分享到:
相关推荐
总之,这个学习资源将带你深入理解JUnit的基本概念和高级特性,通过阅读`JUnit学习笔记.txt`并动手实践其中的示例,你将能熟练掌握如何利用JUnit3和JUnit4进行有效的单元测试,从而提升代码质量和项目稳定性。
JUnit是Java编程语言中最常用的单元测试框架...配合`javadoc.jar`和`sources.jar`,我们可以更高效地学习和使用JUnit,确保代码的质量和稳定性。同时,了解不同版本之间的差异也有助于理解JUnit的发展历程和最佳实践。
1. **JUnit简介**:JUnit是Java编程中用于编写和运行可重复的单元测试的开源框架。它是由Ernst Klimpert和Kent Beck开发的,遵循XUnit测试框架的设计模式。JUnit提供了一套API和注解,使得开发者能够快速创建和执行...
提供了每个版本的变更日志,这对于了解JUnit5的发展历程非常有帮助。 综上所述,JUnit5不仅在功能上进行了大量的改进和增强,而且在设计上也变得更加灵活和可扩展。无论是对于新手还是经验丰富的开发人员,JUnit5都...
学习这些版本的JUnit,开发者可以了解到测试框架的发展历程,理解不同版本间的改进和新特性,同时也能深入掌握如何利用JUnit进行单元测试,提高代码质量。在实际工作中,根据项目需求选择合适的JUnit版本,结合源码...
6. 测试框架的理解:学习如何使用JUnit、TestNG等测试框架,理解它们的运行机制和特性,有助于编写高效、可靠的测试用例。 7. 数据驱动测试和参数化测试:掌握数据驱动测试和参数化测试的方法,可以减少重复代码,...
尽管描述中说这些资料可能无用,但对于初学者或对Java编程感兴趣的人来说,这些学习历程和实践经验往往能提供宝贵的启示,帮助他们避免常见错误,理解编程思维,以及提升问题解决能力。因此,这些资料的价值不应被...
1. **JUnit 1 - get started**:这是JUnit的最初版本,介绍了如何设置基本的测试用例和断言,是学习单元测试的基础。 2. **JUnit 2 - best practice**:在JUnit 2中,开发者开始了解到编写可读性强、可维护的测试的...
Java课程设计报告之万年历程序设计报告,旨在通过编程实现一个可以显示任意年份的日历程序,这对于学习Java编程的学生来说,是一个很好的实践项目,能够深入理解和运用面向对象编程、控制流、日期时间处理等核心Java...
总结来说,阅读同一项目不同版本的源码可以帮助我们理解项目的发展历程,学习新版本的设计思想和改进,以及掌握如何在实际开发中应用这些知识。通过对比分析,我们可以更好地掌握框架的精髓,提高我们的编程技能。...
【Java万年历程序毕业设计】是一个典型的Java编程项目,主要目标是开发一个可以显示从公元1年至公元9999年所有日期的万年历应用程序。这个项目不仅涵盖了基本的日期处理,还涉及到GUI设计,事件处理以及可能的算法...
- **JUnit、Mockito**:掌握JUnit的使用方法,学习如何编写单元测试和集成测试;了解Mockito框架的基本用法,学习如何模拟对象的行为。 #### 第七阶段:实战项目 21. **实战项目开发** - **项目规划**:根据需求...
1. **Java基础知识**:首先,你需要了解Java的起源、发展历程和主要特性,例如面向对象编程(OOP)、平台独立性(Write Once, Run Anywhere,WORA)以及自动内存管理机制。 2. **环境配置**:学习Java前,需要安装...
本资料集合主要关注的是JDK 6版本的学习笔记和相关课件,这一版本在2006年发布,是Java发展历程中的一个重要里程碑。 1. **Java基础知识**:Java是一种面向对象的语言,它的核心特性包括平台无关性、自动内存管理...
JDK6是Java发展历程中的一个里程碑,引入了许多新特性和改进,对于初学者和有经验的开发者来说都是一个宝贵的学习资源。 首先,我们来探讨Java的基础知识。Java程序由类构成,这些类遵循严格的面向对象原则,包括...
【压缩包子文件的文件名称列表】只给出了“ahao5”,这是一个单一的文件名,通常可能是笔记的主文档,可能是PDF、Word或Markdown格式,其中详细记录了作者的学习历程和理解。文件名没有提供更多信息,但我们可以期待...
本文将详细介绍IntelliJ IDEA的发展历程和主要功能,帮助初级学习者掌握其使用技巧。 IntelliJ IDEA从2001年发布的1.0版本开始,不断迭代升级,每个新版本都带来了显著的功能改进和优化。2.0版本引入了重构、CVS...