与开发过程类似,测试过程必须分步进行,后一个步骤在逻辑上是前一个步骤的继续。软件从编码结束到交付到用户使用,需要经过单元测试、组装测试、验收测试和系统测试四个步骤。
一、单元测试
单元测试是软件测试的第一步,针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。通常,单元测试和编码属于软件工程工程的同一个阶段。在编写出源程序代码并通过编译程序的语法检查之后,就可以进行单元测试工作,目的在于发现模块内部可能存在的各种出错。多个模块可以进行平行地独立进行单元测试。
1)、单元测试的内容
(1)、模块接口测试
I、模块的形参和其驱动模块送来的参数的个数、类型、次序是否一致;
II、模块i传送给被调用模块的参数与其装模块的参数的个数、类型和次序是否一致;
III、模块传送给库函数的变量个数、类型次序是否正确;
IV、全局变量的定义和用法在各个模块中时候一致;
V、所使用的外部文件的属性是否正确,打开文件的语句是否正确,缓冲区大小是否与记录长度相匹配,文件结束判断处理是否一致。
(2)、局部数据结构测试
模块内部数据是否完整,内容、形式、相互关系是否有错常常是软件错误的主要来源。
I、错误或不相容的数据说明或使用了尚未初始化的变量;
II、错误的初始值或不正确的缺省值;
III、错误变量名或数据类型不相容;
IV、溢出(上溢或下溢)或地址异常;
V、全局数据对模块i测试的影响。
(3)、重要路径测试
由于通常不能进行穷尽测试,因此,在单元测试期间应选择最有代表性、最可能发现错误的执行路径进行测试。重要路径测试方案应重点测试由于错误计算、不正确的比较或不适当的控制流而造成的错误。常见错误如下:
I、运算的次序错误(误用了运算符的优先级);
II、混合运算对象的类型彼此不相容;
III、变量初始值不正确;
IV、精度不够,或由于精度问题两个量不可能相等时,程序中却期待着相等条件的出现;
V、错误地修改循环变量,错误的或不可能达到的循环终止条件;
VI、“差1”错(多循环1次或少循环1次)
VII、当遇到发散的循环迭代时循环不能制止。
(4)、错误处理测试
好的模块设计应能预见出错的条件,并设置相应的储蓄哦处理。这样,程序一旦发生错误就会按照预定的方法进行处理,保证逻辑上的正确性。这种错误处理应当是模块功能的一部分,也应是测试的内容之一。对错误处理进行测试时应重点考虑下列问题:
I、对可能出现错误的描述是否难以理解;
II、出错的描述不足以对错误定位,或足以确定出错的原因;
III、显示的错误与实际的错误不符;
IV、对错误的条件处理不正确;
V、在对错误进行处理之前,错误条件已经引起系统的干预。
(5)边界测试
边界测试是单元测试中最后的、也肯能是最重要的工作。程序常常在边界上出现错误。
例子:在一段程序内有一个n次循环,当达到第n次循环时就有可能出错。因此,要特别注意数据流、控制流中恰好等于、大于或下于确定的比较值时出错的可能性。要精心设计测试用例对这些地方进行测试。
2)、单元测试的步骤
当每个模块模块的代码编制完成,并经过评审和验证确认没有语法错误后,就可以进行单元测试。单元测试的步骤:
(1)、配置测试环境
模块是软件中的一个单独的编译单位,而不是一个单独的执行单位。因此,测试时要为模块设计两类附加模块——驱动模块和桩模块。构成测试环境。
(2)、编写测试数据
主要采用白盒测试用例,以路径覆盖为最佳测试准则,同时辅助以黑盒测试用例,使之对任何合理的输入和不合理的输入都能鉴别和相应。
(3)、进行多个模块的并行测试
二、集成测试
集成测试的主要目标是发现与接口有关的问题。例如:
穿越模块接口的数据可能丢失;
一个模块可能对另一个模块产生不利影响;
各个功能组合起来并未实现主功能;
全局数据可能有问题等等……
集成测试根据模块组装方式体现两种测试方式:非渐增式测试和渐增式测试。
1、非渐增式测试
非渐增式测试是把已经过测试的所有模块一次性组装起来,然后进行整体测试。对于大的工程,这样难度是很大的,所以使用较少。
2、非渐增式测试
1)、自顶向下集成
这种集成方式是从主控模块开始,沿着控制层次自顶向下进行组装。具体步骤可分为:
I、测试主控制模块
II、根据选定的添加策略每次用一个实际模块代替一个桩模块,再用相应的桩模块代替该实际模块的直接下属模块,与已测试的模块或子系统组装成新的系统。测试新加入模块
III、回归测试。
IV、重复上述I和II,知道所有模块均组装到系统中为止。
自顶向下集成方式的缺点是需要建立桩模块,并存在一个逻辑次序问题。
2)、自底向上集成
三、验收测试
集成测试消除了软件接口的错误,系统已成为完整的软件包。要收测试主要由用户参加测试,检验软件规格说明的技术标准的符合程度,是保证软件质量的最后关键环节。验收测试工作主要包括有效性测试和软件配置复查两方面。
有效性测试在开发环境下运行黑盒测试,验证软件是否满足需求规格说明书类列出的需求。对软件的可移植性、兼容性、出错自动回复、可维护性等进行测试。如果功能和性能与用户要求一致,则通过;如果有差距的话,就提交一份问题报告
软件配置复查保证软件配置的所有成分都齐全,各方面的质量都符合要求,文档内容与程序完全一致,具有软件维护阶段所必需的细节,而且全部文档到已经编号目录。除此职位,还要进行阿尔法测试或者贝塔测试。
四、系统测试
系统测试是将验收测试的软件,作为基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起进行的综合测试。包括恢复测试、安全测试、强度测试三个方面。