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