第三章单元测试
第三章 单元测试
本章要点] 单元测试的定义; 单元测试同集成测试和系统测试的区别; 单元测试环境的组成; 单元测试的分析方法; 单元测试的用例设计方法; 单元测试的过程 单元测试举例
[本章要点] • 单元测试的定义; • 单元测试同集成测试和系统测试的区别; • 单元测试环境的组成; • 单元测试的分析方法; • 单元测试的用例设计方法; • 单元测试的过程; • 单元测试举例
本章目标] ◆掌握单元测试的概念; ◆了解单元测试的误区; ◆了解单元测试与集成测试和系统测试的区别 ◆掌握单元测试的策略; ◆掌握单元测试分析的方法; ◆掌握单元测试用例设计方法
[本章目标] ◆ 掌握单元测试的概念; ◆ 了解单元测试的误区; ◆ 了解单元测试与集成测试和系统测试的区别; ◆ 掌握单元测试的策略; ◆ 掌握单元测试分析的方法; ◆ 掌握单元测试用例设计方法
3.1单元测试概述 通常而言,单元测试是在软件开发过程中要 进行的最低级别的测试活动,或者说是针对软件 设计的最小单位—程序模块,进行正确性检验 的测试工作。其目的在于发现每个程序模块内部 可能存在的差错。 在单元测试活动中,软件的独立单元将在与 程序的其他部分相隔离的情况下进行测试,主要 工作分为两个步骤:人工静态检查和动态执行跟 踪 单元测试的分工大致如下:一般由开发组在 般由开发组在开发组组长监督下进行,保证使
3.1单元测试概述 通常而言,单元测试是在软件开发过程中要 进行的最低级别的测试活动,或者说是针对软件 设计的最小单位——程序模块,进行正确性检验 的测试工作。其目的在于发现每个程序模块内部 可能存在的差错。 在单元测试活动中,软件的独立单元将在与 程序的其他部分相隔离的情况下进行测试,主要 工作分为两个步骤:人工静态检查和动态执行跟 踪。 单元测试的分工大致如下:一般由开发组在 一般由开发组在开发组组长监督下进行,保证使
用合适的测试技术,根据单元测试计划和测试说 明文档中制定的要求,执行充分的测试;由编写 该单元的开发组中的成员设计所需要的测试用例, 测试该单元并修改缺陷 3.1.1单元测试误区 1、单元测试是一种浪费时间的工作 2、单元测试只能证明代码做了什么 3、我是个很棒的程序员,我是不是可以不进行 单元测试? 集成测试能捕捉到所有的Bug 5、单元测试的成本效率不高
用合适的测试技术,根据单元测试计划和测试说 明文档中制定的要求,执行充分的测试;由编写 该单元的开发组中的成员设计所需要的测试用例, 测试该单元并修改缺陷。 3.1.1单元测试误区 1、单元测试是一种浪费时间的工作 2、单元测试只能证明代码做了什么 3、我是个很棒的程序员, 我是不是可以不进行 单元测试? 4、集成测试能捕捉到所有的Bug 5、单元测试的成本效率不高
其实,在经过了单元测试之后,系统集成过程 将会大大地简化。 3.1.2单元测试与集成测试区别 单元测试与集成测试的主要区别在于测试的对 象不同。单元测试对象是实现具体功能的单元 般对应详细设计中所描述的设计单元。集成测试是 针对概要设计所包含的模块以及模块组合进行的测 试 单元测试所使用的主要测试方法是基于代码的 白盒测试。而集成测试所使用的主要测试方法是基 于功能的黑盒测试
其实,在经过了单元测试之后,系统集成过程 将会大大地简化。 3.1.2单元测试与集成测试区别 单元测试与集成测试的主要区别在于测试的对 象不同。单元测试对象是实现具体功能的单元,一 般对应详细设计中所描述的设计单元。集成测试是 针对概要设计所包含的模块以及模块组合进行的测 试。 单元测试所使用的主要测试方法是基于代码的 白盒测试。而集成测试所使用的主要测试方法是基 于功能的黑盒测试
因为集成测试要在所有要集成的模块都通过 了单元测试之后才能进行,也就是说在测试时间 上,集成测试要晚于单元测试,所以单元测试的 好坏直接影响着集成测试。 单元测试的工作内容包括模块内程序的逻辑、 功能、参数传递、变量引用、出错处理、需求和 设计中有具体的要求等方面测试。集成测试的工 作内容主要是验证各个接口、接口之间的数据传 递关系、模块组合后能否达到预期效果。 虽然单元测试和集成测试有一些区别,但是 者之间也有着千丝万缕的联系。目前集成测试 和单元测试的界限趋向模糊
因为集成测试要在所有要集成的模块都通过 了单元测试之后才能进行,也就是说在测试时间 上,集成测试要晚于单元测试,所以单元测试的 好坏直接影响着集成测试。 单元测试的工作内容包括模块内程序的逻辑、 功能、参数传递、变量引用、出错处理、需求和 设计中有具体的要求等方面测试。集成测试的工 作内容主要是验证各个接口、接口之间的数据传 递关系、模块组合后能否达到预期效果。 虽然单元测试和集成测试有一些区别,但是 二者之间也有着千丝万缕的联系。目前集成测试 和单元测试的界限趋向模糊
3.13单元测试与系统测试区别 单元测试与系统测试的区别不仅仅在于测试 的对象和测试的层次的不同,最重要的区别是测 试性质不同。在单元测试过程中,单元测试的执 行早于系统测试,测试的是软件单元的具体实现、 内部逻辑结构以及数据流向等。系统测试属于后 期测试,主要是根据需求规格说明书进行的,是 从用户角度来进行的功能测试和性能测试等等, 证明系统是否满足用户的需求。 单元测试中发现的错误容易进行定位,并且 多个单元测试可以并行进行;而系统测试发现的 错误比较难定位
3.1.3单元测试与系统测试区别 单元测试与系统测试的区别不仅仅在于测试 的对象和测试的层次的不同,最重要的区别是测 试性质不同。在单元测试过程中,单元测试的执 行早于系统测试,测试的是软件单元的具体实现、 内部逻辑结构以及数据流向等。系统测试属于后 期测试,主要是根据需求规格说明书进行的,是 从用户角度来进行的功能测试和性能测试等等, 证明系统是否满足用户的需求。 单元测试中发现的错误容易进行定位,并且 多个单元测试可以并行进行;而系统测试发现的 错误比较难定位
32单元测试环境 由于一个模块或一个方法( Method)并不是 个独立的程序,在考虑测试它时要同时考虑它 和外界的联系,因此要用到一些辅助模块,来模 拟与所测模块相联系的其他模块。一般把这些辅 助模块分为两种: 1、驱动模块( driver):相当于所测模块的主 程序 2、桩模块(stub):用于代替所测模块调用的 子模块。 那么,所测模块和与它相关的驱动模块及桩 模块共同构成了一个“测试环境”,如图3-2所 小
3.2单元测试环境 由于一个模块或一个方法(Method)并不是 一个独立的程序,在考虑测试它时要同时考虑它 和外界的联系,因此要用到一些辅助模块,来模 拟与所测模块相联系的其他模块。一般把这些辅 助模块分为两种: 1、驱动模块(driver):相当于所测模块的主 程序。 2、桩模块(stub):用于代替所测模块调用的 子模块。 那么,所测模块和与它相关的驱动模块及桩 模块共同构成了一个“测试环境”,如图3-2所 示
驱动模块 测试结果 测试用例 被测单元 桩模块 桩模块2 00 桩模块N 图3-2单元测试环境
被测单元 驱动模块 桩模块1 桩模块2 桩模块N 测试结果 …… 测试用例 图3-2 单元测试环境