单元测试与JUNIT(3)

发表于:2014-10-27来源:uml.org.cn作者:不详点击数: 标签:单元测试
(3)测试工作量与测试用例的数量成比例。根据全面且细化的测试用例,可以更准确地估计测试周期各连续阶段的时间安排。 (4)测试设计和开发的类型以及

  (3)测试工作量与测试用例的数量成比例。根据全面且细化的测试用例,可以更准确地估计测试周期各连续阶段的时间安排。

  (4)测试设计和开发的类型以及所需的资源主要都受控于测试用例。测试用例通常根据它们所关联关系的测试类型或测试需求来分类,而且将随类型和需求进行相应地改变。

  最佳方案是为每个测试需求至少编制两个测试用例:

  (1)一个测试用例用于证明该需求已经满足,通常称作正面测试用例。

  (2)另一个测试用例反映某个无法接受、反常或意外的条件或数据,用于论证只有在所需条件下才能够满足该需求,这个测试用例称作负面测试用例。

  单元测试既可以是白盒测试也可以是黑盒测试。白盒测试主要是检查程序的内部结构、逻辑、循环和路径。其常用测试用例设计方法有:逻辑覆盖和基本路径测试。根据覆盖测试的目标不同,逻辑覆盖又可分为:语句覆盖,判定覆盖,判定-条件覆盖,条件组合覆盖及路径覆盖等。白盒测试用例设计还可用到:状态转移测试、数据定义-使用测试、等价类划分、边界值分析等。黑盒测试注重对程序功能方面的要求,它只用到程序的规格说明,没有用到程序的内部结构。其常用测试用例方法有:规范(规格)导出、等价类划分、边界值分析法、错误推测法和因果图分析方法。下面将简要介绍各个方法,更详细的说明请读者自行参考相关的测试理论书籍。

  2.2.1. 语句覆盖

  语句覆盖就是设计若干个测试用例,运行所测程序,使得每一可执行语句至少执行一次。

  2.2.2. 判定覆盖

  判定覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的取TURE分支和取FALSE分支至少经历一次。

  2.2.3. 条件覆盖

  条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。

  2.2.4. 判定-条件覆盖

  判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次。也就是说要求各个判断的所有可能的条件取值组合至少执行一次。

  2.2.5. 条件组合覆盖

  条件组合覆盖就是设计足够的测试用例,运行所测程序,使得每个判断得所有可能得条件取值组合至少执行一次。

  2.2.6. 路径覆盖

  路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。

  2.2.7. 规范(规格)导出法

  规范导出法是根据相关的规范描述来设计测试用例。每一个测试用例用来测试一个或多个规范陈述语句。一个比较实际的方法是根据陈述规范所用语句的顺序来相应地为被测单元设计测试用例。

  2.2.8. 状态转移测试法

  对于那些以状态机作为模型或设计为状态机的软件,状态转移测试是合适的测试方法。测试用例通过能导致状态迁移的事件来测试状态之间的转换。

  2.2.9. 数据定义-使用测试法

  数据定义是指数据项被赋值的地方,数据使用是指数据项被读或使用的地方。目的是设计测试用例以驱动执行通过数据定义于使用之间的路径。

  3. 使用JUnit进行单元测试的一般步骤

  3.1. 获得Junit

  下载得到JUnit的安装软件包。

  3.2. 安装JUnit安装JUnit只需要很简单的两个步骤,下面是安装Junit的步骤:

  (1)解开DownLoad下来的junit.zip文件。

  (2)增加junit.jar到classpath中。例如,set classpath = %classpath%; INSTALL_DIR\Junit3.7\junit.jar经过这两步,就可以开始使用JUnit了。

  3.3. 使用JUnit编写测试代码的一般步骤

  使用JUnit编写测试代码的一般步骤是:

  (1)定义测试类名称,一般是将要测试的类名后附加Test。

  (2)引入JUnit框架包。import junit.framework.*。

  (3)测试类继承JUnit的TestCase类。

  (4)实现类的构造方法,可以在构造方法中简单的调用super(name)即可。

  (5)实现类的main()方法,在main()方法中简单调用junit.textui.TestRunner.run(DateUtilTest.class)来指定执行测试类。

  (6)重载setUp()和tearDown()方法,setUp()方法用于执行每个测试用例时进行环境的初始化工作(比如打开数据库连接),tearDown()方法用于执行每个测试用例后清除环境(比如关闭数据库连接)。

原文转自:http://www.uml.org.cn/Test/201405272.asp