目录
一、概述
【强制】在整个开发过程中,测试类型按照先后顺序主要分为单元测试、集成测试、系统测试及验收测试,整个过程如图软件开发和测试W模型所示。
二、单元测试
【强制】单元测试由程序员自己来执行完成,只有经过了单元测试的代码才是已完成的代码,即正确实现设计文档说明的功能。
说明:单元测试主要目的是检查每个软件单元能否正确地实现设计说明中的功能、性能、接口和其它设计约束等要求,发现单元内可能存在的各种错误。
1. 过程阶段
关于启动条件,需按照以下规范进行:
【强制】《概要设计说明书》通过评审。
【强制】《详细设计说明书》通过评审。
【强制】单元代码编译已通过。
关于工作内容,需按照以下规范进行:
【建议】关于单元测试范围,尽可能争取完全地覆盖(原则上应该做到完全覆盖)。
【强制】新模块、新增代码比例超过20%、核心模块,通常必须进行单元测试。
【建议】基于资源和项目计划等方面的要求,确定单元测试活动的总体进度计划,包括:编写单元测试用例、执行单元测试用例、修改单元测试过程中发现的问题。
关于单元测试是否达到要求,需按照以下规范进行:
【强制】已按要求完成了合同或项目计划所规定的测试任务。
【强制】所有单元测试用例通过评审。
【强制】客观、详细地记录了单元测试过程中发现的所有问题。
【强制】单元测试中的问题或异常有正确有效的处理或合理解释。
【建议】关于单元测试的责任人主要包括设计人员,开发人员。参与人包括项目经理/研发经理。
2. 测试内容
当静态测试时,所测试的内容与选择的测试方法有关。如,采用代码审查方法,通常要对寄存器的使用、程序格式、入口和出口的连接、程序语言的使用、存储器的使用等内容进行检查;采用静态分析方法,通常要对软件单元的控制流、数据流、接口、表达式等内容进行分析。当动态测试时,通常对软件单元的功能、性能、接口、局部数据结构、独立路径、错误处理、边界条件和内存使用情况进行测试。通常对软件单元接口的测试优先于其它内容的测试。对具体的软件单元,应根据项目计划、软件设计文档的要求及选择的测试方法确定测试的具体内容。
- 接口
测试接口的规范内容如下:
【强制】调用被测单元时的实际参数与该单元的形式参数的个数、属性、顺序保持一致。
【强制】被测单元调用子模块时,传递给子模块的实际参数与子模块的形式参数的个数、属性、顺序保持一致。
【强制】修改只作为输入值的形式参数。
【强制】保证调用内部函数的参数个数、属性、顺序的正确性。
【强制】被测单元在使用全局变量时与全局变量的定义一致。
【强制】在单元有多个入口的情况下,不能引用与当前入口无关的参数。
【强制】常数不能当作变量来传递。
【强制】保证输入/输出文件属性的正确性。
【强制】规定的输入/输出格式说明与输入/输出语句匹配。
【强制】缓冲区容量与记录长度匹配。
【强制】文件保证先打开后使用。
【强制】文件结束条件的判断和处理需正确。
【强制】输入/输出错误必须检查并做了处理以及处理的正确性。
- 局部数据结构
测试软件单元内部的数据能否保持其完整性,包括内部数据内容、格式及相互关系。应设计测试用例检查以下错误:
【强制】不正确或不一致的数据类型说明。
【强制】错误的变量名,如变量名拼写错或缩写错。
【强制】使用尚未赋值或尚未初始化的变量。
【强制】错误的初始值或错误的缺省值。
【强制】不一致的数据类型。
【强制】下溢、上溢或是地址错误。
【强制】全局数据对软件单元的影响。
- 独立路径
独立路径是指在程序中至少引进一个新的处理语句集合或一个新条件的任一路径。在程序的控制流图中,一条独立路径是至少包含有一条在其他独立路径中从未有过的边的路径。应设计适当的测试用例,对软件单元中的独立路径进行测试,特别是对独立路径中的基本路径进行测试。基本路径指在程序控制流图中,通过对控制构造的环路复杂性分析而导出的基本的、可执行的独立路径集合。
- 边界条件
【强制】应测试软件单元在边界处能否正常工作。
例如:测试处理n维数组的第n个元素;测试循环执行到最后一次执行循环体;测试取最大值或最小值;测试数据流、控制流中刚好等于、大于或小于确定的比较值,等等。
- 错误处理
【强制】测试软件单元在运行过程中发生错误时,其错误处理措施是否有效。
良好的单元设计要求能预见到程序投入运行后可能发生的错误,并给出相应的处理措施。这种错误处理也应当是软件单元功能的一部分。一般若出现下列情况之一,则表明软件单元的错误处理功能包含错误或缺陷:
- 错误的描述难以理解;
- 在对错误进行处理之前,错误条件已经引起系统的干预;
- 所提供的错误描述信息不足以确定造成错误的位置或原因;
- 显示的错误提示与实际错误不符;
- 对错误条件的处理不正确;
- 意外的处理不当;
- 联机条件处理(即交互处理等)不正确。