软件测试之单元测试

发布于 2021-05-10 11:26 ,所属分类:软件测试工程师学习资料

1

# 软件单元测试 #

测试对象

单元测试方法的测试对象是软件单元。

2

# 软件单元测试#

测试目的

检查每个软件单元能否正确的实现设计说明中的功能、性能、接口和其他设计约束等要求,发现单元内可能存在的各种错误。

3

# 软件单元测试#

技术要求

a)对软件设计文档规定的软件单元的功能、性能、接口等逐项进行测试;

b)每个软件特性应至少被一个正常测试用例和一个被认可的异常测试用例覆盖;

c)测试用例的输入应至少包括有效等价类值、无效等价类值和边界数据值;

d)在对软件单元进行动态测试之前,一般应对软件单元的源代码进行静态测试;

e)语句覆盖率达到100%;

f)分支覆盖率要达到100%;

g) 对输出数据及其格式进行测试。

对具体的软件单元,可根据软件测试任务书(合同或项目计划)及软件单元的重要性、安全性关键等级等要求对上述内容进行裁剪。

4

# 软件单元测试 #

测试内容

1)接口

a)调用被测单元时的实际参数与该单元的形式参数的个数、属性、量纲、顺序是否一致;

b)被测单元调用子模块时,传递给子模块的实际参数与子模块的形式参数的个数、属性、量纲、顺序是否一致;

c)是否修改了只作为输入值的形式参数;

d)调用内部函数的参数个数、属性、量纲、顺序是否正确;

e)被测单元在使用全局变量时是否与全局变量的定义一致;

f)在单元有多个入口的情况下,是否引用了与当前入口无关的参数;

g)常数是否当作变量来传递;

h)输入/输出文件属性的正确性;

i)Open语句的正确性;

j)Close语句的正确性;

k)固定的输入/输出格式说明与输入/输出语句是否匹配;

l) 缓冲区容量与记录长度是否匹配;

m)文件是否先打开后使用;

n)文件结束条件的判断和处理的正确性;

o)输入/输出错误是否检查并做了处理以及处理的正确性。

2)局部数据结构

a)不正确或不一致的数据类型说明;

b)错误的变量名,如变量名拼写错或缩写错;

c)使用尚未赋值或尚未初始化的变量;

d)错误的初始值或错误的缺省值;

e)不一致的数据类型;

f)下溢、上溢或是地址错误;

g)全局数据对软件单元的影响。

3)独立路径

独立路径是指在程序中至少引进一个新的处理语句集合或一个新条件的任一路径。在程序的控制流图中,一条独立路径是至少包含有一条在其他独立路径中从未有改过的边的路径。应设计适当的测试用例,对软件单元中的独立路径进行测试,特别是对独立路径中的基本路径进行测试。基本路径指在程序控制流图中,通过对控制构造的环路复杂性分析而导出的基本的、可执行的独立路径合集。

4)边界条件

应测试软件单元在边界处能否正常工作,如,测试处理n维数组的第n个元素;测试循环执行到最后一次执行循环体;测试取最大值或最小值;测试数据流、控制流中刚好等于、大于或小于确定的比较值,等等。

5)错误处理

测试软件单元在运行过程中发生错误时,其错误处理措施是否有效。

良好的单元设计要求能预见到程序投入运行后可能发生的错误,并给出相应的处理措施。这种错误也应当是软件单元功能的一部分。一般若出现下列情况之一,则表明软件单元的错误处理功能包含错误或缺陷:

a)错误的描述难以理解;

b)在对错误进行处理之前,错误条件已经引起系统的干预;

c) 所提供的错误描述信息不足以确定造成错误的位置或原因;

d)显示的错误描述信息不足以确定造成错误的位置或原因;

e)对错误条件处理不正确;

f)意外的处理不当;

g)联机条件处理(即交互处理等)不正确。

6)功能

应对软件设计文档规定的软件单元功能逐项进行测试 。

7)性能

按软件设计文档的要求,对软件单元的性能(如精度、时间、容量等)进行测试。

8)内存使用

检查内存的使用情况,特别是动态申请的内存在使用上的错误(如对空指针赋值、指针使用越界、内存泄露等)。

5

# 软件单元测试 #

测试环境

测试环境包括测试的运行环境和测试工具环境。运行环境一般应符合软件测试任务书(合同或项目计划)的要求,通常是开发环境或仿真环境。测试工具一般要求是经过认可的工具。

6

# 软件单元测试 #

测试方法

软件单元测试一般采用静态测试和动态测试方法,一般静态测试优先于动态测试。

7

# 软件单元测试 #

进入条件

a)具有测试任务书(合同或项目计划);

b)具有软件设计文档,包含接口设计文档;

c)所提交的被测软件单元受控;

d)软件单元代码通过编译或汇编。

8

# 软件单元测试 #

结束条件

a)已按要求完成了任务书(合同或项目计划)所规定的测试任务;

b)实际测试过程遵循了原定的软件单元测试计划和软件单元测试说明;

c)客观、详细地记录了测试过程和测试中发现的所有问题;

d)测试文档齐全,符合要求;

e)测试的全过程自始至终在控制下进行;

f)测试中的问题或异常有合理解释或正确有效的处理;

g)测试工作通过了软件单元测试评审;

h)全部测试文档、被测软件、测试支持软件和评审结果已纳入配置管理。

9

# 软件单元测试 #

测试过程

1)测试策划

测试分析人员一般根据测试任务书(合同或项目计划)和被测软件的设计文档对被测软件单元进行分析,确定测试的充分性要求、终止要求、资源要求、软件特性、需要的技术和方法、测试结束的条件、测试的进度等方面。

测试应根据分析结果,编写软件单元测试计划,同时应对单元测试计划进行评审,依据评审结果,开展后续工作。

2)测试设计和实现

软件单元的设计和实现工作由测试设计人员和测试程序员完成,一般根据软件单元测试计划完成设计测试用例、获取测试数据、确定测试顺序、获取测试资源、编写测试程序、建立和校准测试环境、编写软件单元测试说明等工作。

对软件单元测试说明进行评审,审查测试用例是否正确、可行、充分,测试环境是否正确、合理;测试文档是否符合规范等。依据软件测试说明评审结果,开展后续工作。

3)测试执行

执行测试的工作由测试人员和测试分析员完成。

软件测试员的主要工作是按照软件单元测试计划和软件单元测试说明的内容和要求执行测试,在测试过程中,测试员认真观察并如实记录测试过程、测试结果和发现的错误,认真填写测试记录。

测试分析员的工作主要有两方面:

一是根据测试用例的期望测试结果、实际测试结果和评价准则判定该测试用例是否通过,并将结果记录在软件测试记录中。如果测试用例不通过,测试分析员应认真分析情况,并对以下情况采取相应措施:

a)软件单元测试说明和测试数据的错误,采取的措施是:改正错误,将改正错误信息详细记录,然后重新运行该测试;

b)执行测试步骤时的错误,采取的措施是:重新运行未正确执行的测试步骤;

c)测试环境中的错误,采取的措施是:修正测试环境,将环境修正情况详细记录,重新运行该测试;如果不能修正环境,记录理由,再核对终止情况;

d)软件单元的实现错误,采取的措施是:填写软件问题报告单,可提出软件修改建议,然后继续进行测试;或者把错误与异常终止情况进行比较,核对终止情况。软件更改完毕后,应根据情况对其进行回归测试。

e)软件单元的设计错误,采取的措施是:填写软件问题报告单,可提出软件修改建议,然后继续进行测试;或者把错误与异常终止情况进行比较,核对终止情况。软件更改完毕后,应根据情况对其进行回归测试或重新组织测试,回归测试中需要相应地修改测试设计和数据。

二是当所有的测试用例都执行完毕,测试分析人员要根据测试的充分性要求和失效记录,确定测试工作是否充分,是否需要增加新的测试。当测试过程正常终止时,如果发现测试工作不足,应对软件单元进行补充测试,直到测试达到预期要求,并将附加的内容记录在软件单元测试报告中。如果不需要补充测试,则将正常终止情况记录在软件单元测试报告中。当测试过程异常终止时,应记录导致终止的条件、未完成的测试和被修正的错误。

3)测试总结

测试分析人员应根据被测试软件设计文档、软件单元测试计划、软件单元测试说明、测试记录和软件问题报告单,对测试工作进行总结。一般包括以下几个方面:

a)总结软件单元测试计划和软件单元测试说明的变化情况及其原因,并记录在软件单元测试报告中;

b)对测试异常终止情况,确定未能被测试活动充分覆盖的范围,并将理由记录在测试报告中;

c)确定未能解决的软件测试事件以及不能解决的理由,并将理由记录在测试报告中;

d)总结测试所反映的软件单元与软件设计文档之间的差异,记录在测试报告中;

e)将测试结果连同发现的错误情况同软件设计文档对照,评价软件单元的设计与实现,提出软件改进建议,记录在报告中;

f)编写软件单元测试报告,应包括:测试结果分析、对软件单元的评估和建议。

g)根据测试记录和软件问题报告单编写测试问题报告。

10

# 软件单元测试 #

文档

a)软件单元测试计划;

b)软件单元测试说明;

c)软件单元测试报告;

d)软件单元测试记录;

e)软件单元测试问题报告。

参考文件

《GJBZ141-2004军用软件测试指南》

质行千里

号|质行千里

相关资源