文章目录
4 单元测试
4.1 单元测试概述
4.1.1 单元测试的定义
单元的定义:
- 具有明确的功能
- 具有明确的规格定义
- 具有与其他部分明确的接口定义
- 能够与程序的其他部分清晰的区分
单元测试的定义:依据详细设计规格说明书
,对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。多用白盒测试
。
单元测试的对象:在结构化程序时代,单元测试所说的单元是指函数
,在面向对象编程中,单元测试的单元一般是指类
。
单元测试的时间:越早越好,通常在编码阶段
进行。
单元测试的人员:绝大部分情况下,由开发人员
承担单元测试的设计和执行的工作。
4.1.2 单元测试的内容
主要采用白盒测试方法设计的测试用例,辅之以黑盒测试方法设计的测试用例,是之对任何合理和不合理的输入都能鉴别和响应。
主要对以下五个方面案进行测试:
- 模块接口测试
- 模块局部数据结构测试
- 模块边界条件测试
- 模块中所有独立执行通路测试
- 模块的各条错误处理通路测试
4.2 单元测试的过程
单元测试可分为计划、设计、执行和评估。
4.2.1 计划单元测试
- 确定测试需求
- 确定单元测试的策略
- 单元测试的输入
- 单元的是的输出
4.2.2 设计单元测试
-
单元测试的模型
① 驱动模块:所测模块的主程序。
② 桩模块:用来代替所测模块调用的子模块。
-
单元测试方案
① 声明测试
② 路径测试
③ 基本路径测试
④ 循环测试
⑤ 边界值测试
⑥ 接口测试
⑦ 确认测试
⑧ 事务测试
-
测试用例的设计
测试用例应由测试输入数据和与之对应的预期输出结构两部分组成。
4.2.3 执行单元测试
执行单元测试应遵循以下步骤:
- 设置测试环境
- 将测试环境初始化
- 执行测试过程
单元测试何时终止?
- 正常:所有测试过程按预期执行;
- 异常或提前结束:测试过程没有按预期方式执行或没有完全执行;
4.2.4 评估单元测试
- 测试完备性评估。
- 代码覆盖率评估。
- 从覆盖的角度看。测试应做到:功能覆盖、输入域覆盖、输出域覆盖、函数交互覆盖、代码执行覆盖。
4.3 常用测试框架汇总
JUnit
是一个开放源代码的Java测试框架,用于编写和运行可重复的测试,是接口测试技术中最基本的利器。四个重要类:TestCase(测试用例)、TestSuite(测试集合)、TestResult、TestRunner(测试运行器)。HtmlUnit
是JUnit的扩展测试框架之一,能够模拟浏览器的行为,开发者可以使用其提供的应用程序接口对页面的元素进行操作。HttpUnit
是基于JUnit构建的一个开源测试框架,专门针对Web应用的测试,用于解决使用JUnit框架无法对远程Web内容进行测试的问题。