软件单元测试及测试用例设计
软件单元测试及测试用例设计 【摘要】单元测试是针对各功能模块的进行测试,进行 充分的单元测试,是提高软件质量,降低研发成本的必由之 路。文章对软件测试和单元测试相关概念做了简要说明,以 用户注册模块出生年月曰的检验为例,说明了用例设计的过 程。 【关键词】软件测试;单元测试;用例;等价类 1. 软件测试 软件测试是指利用相关测试工具,按照一定的测试方案 和流程对软件系统的功能和性能进行测试,对可能出现的问 题进行分析、评估,发现开发错误并跟踪,以确保所开发的 软件满足用户需求。软件测试是保证软件质量的主要手段, 是根据软件开发各阶段的规则说明和程序内部结构而精心 设计的一批测试用例,并利用这些测试用例运行程序以发现 软件是否存在错误的过程,软件测试的范围应当包括更广泛 些,除了考虑正确性外,还应关心程序的效率、健壮性等因 素。 软件测试过程包含单元测试、集成测试、确认测试和系 统测试四个步骤: (1) 单元测试:对每一个程序单元进行独立测试,检 查各程序模块是否正确地实现了预定的功能。 (2) 集成测试:把已通过测试的模块组装起来,对软 件体系构造的正确性进行测试。 (3) 确认测试:检查已完成的软件系统是否已满足了 需求规格说明中的各项需求,软件配置是否完全、正确。 (4) 系统测试:将经过确认的软件系统置入实际的运 行环境中,与其它系统成份结合在一起进行测试。 2. 单元测试 单元测试又称模块测试,是以软件系统设计的最小单位 程序模块为对象,进行正确性检验的测试工作。单元测 试常被看作编码的附属品,在代码被开发、编译调试、审查 后,单元测试用例设计便开始了。进行充分的单元测试,是 提高软件质量,降低研发成本的必由之路。几乎所有的开发 人员都会对每一段代码做一定程度的单元测试。如果一个模 块要完成多项功能,可以将该模块看成由几个小程序组成, 对每个小程序分别进行单元测试。如果是关键模块,往往还 要做性能测试。 单元测试以详细设计说明书和源程序清单为依据,常采 用白盒测试的用例,辅之以黑盒测试的用例,以寻找模块内 部可能存在的错误为目的,主要完成模块接口测试、局部数 据结构测试、路径测试、错误处理测试、边界测试等任务。 (1) 模块接口测试 单元测试开始时,要对通过被测模块的数据流进行测 试。包括调用该模块的输入参数的正确性、调用其子模块时 提供参数的正确性、全局变量的定义在各模块中是否一致 等。 (2) 局部数据结构测试 包括数据类型的一致性、变量名、变量赋值、全局数据 对模块影响的正确性等检验。 (3) 路径测试 对基本执行路径和循环进行测试,查找由于错误的计 算、不正确的比较或不正常的控制流而导致的错误。 (4) 错误处理测试 检测对错误条件的响应是否正确,错误描述是否与实际 的错误是否相符、是否能够对错误定位、是否易于理解等。 (5) 边界测试 通过设定边界值检测数据流、控制流中等于、大于或小 于比较值时出错的可能性。 在面向过程编程时代,单元测试所说的单元一般是指函 数,而在面向对象编程时代,单元测试所说的单元一般是指 类。以类作为测试单位,测试的复杂度相对较高,所以目前 通常采用的办法是为软件开发建立对应的测试工程,为每个 类建立对应的测试类,为每个函数建立测试函数测试结构化 的局部代码。 3. 单元测试用例的设计 测试用例是指对某特定的软件系统进行测试任务的描 述,它体现了测试的方案、方法和技术,包括测试目标、测 试环境、输入数据、测试步骤、预期结果、测试脚本等,并 形成文档。 测试用例的设计也就是测试需求细化的过程,测试需求 分析和测试用例设计是密不可分的,前者是后者的依据,后 者是前者的体现。测试用例的设计应与复审相结合,根据相 关设计信息设计测试数据,以增大发现错误的可能性。 单元测试用例可以选取正确输入、边缘数据和错误输入 作为测试数据。以系统用户注册模块中出生年、月、日的设 置为例,通过等价类划分法设计测试用例。 在划分等价类时,我们将其划分为两类:1、有效等价 类:是指输入完全满足程序输入的规范说明、合理的、有意 义的输入数据所构成的集合。利用有效等价类可以检验程序 是否满足规格说明书所规定的功能和性能。2、无效等价类: 是指完全不满足程序输入的规格说明、不合理的、无意义的 输入数据所构成的集合。使用无效等价类可以检验程序的容 错性能。 等价类划分好之后,按以下步骤设计测试用例:1、为 一个等价类规定一个唯一的编号。2、设计一个新的测试用 例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这 一步,直到所有的有效等价类都被测试用例覆盖为止,即将 有效等价类分割到最小。3、设计一个新的测试用例,使它 覆盖一个而且只能覆盖一个尚未被覆盖的无效等价类,重复 这一步,直到所有无效等价类都被覆盖为止。 根据软件需求说明书,设计出的等价类表如表1所示。