1.9. 单元测试
1.9.1. 单元测试的考虑因素
单元测试可测试:
1、模块接口
2、局部数据结构
3、边界条件
4、独立路径
5、错误处理路径
针对以上测试一些建议检查列表:
模块接口
l 输入参数的数目是否等于形式参数的数目
l 输入参数和形式参数的属性是否匹配
l 单元模块的输入参数和形式参数是否匹配
l 参数是否以正确的顺序输入?
l 是否只输入变化了的参数?
l 全局变量在模块之间是否保持一致?
l 如果模块有输入/输出文件:
² 文件属性是否正确?
² 打开/关闭语句是否正确?
² 格式说明是否匹配输入/输出语句?
² 缓冲区的大小是否匹配记录的大小?
² 文件是否在使用之前已经打开?
² 是否是输入/输出错误处理措施?
² 在输入信息中是否存在文字错误?
局部数据结构(缺陷的一般源头)
l 错误或不一致的拼写
l 错误的初始化值或缺省值
l 错误的变量名
l 不一致的数据类型
l 上溢,下溢,寻址异常
边界条件-参考以上相关内容
独立路径-参考以上相关内容
错误处理
l 错误描述不清晰,难以理解
l 标记的错误与实际的错误不一致
l 错误在受错误机制控制之前,已经因超出系统预定运行时间而被自动处理
l 异常情况处理不正确
l 错误描述没有提供充足的信息,以帮助定位错误
1.10. 集成测试
可尝试非渐增式集成-一次性把所有的模块集合在一起,作为一个整体来测试,可这样方法通常都会存在着很大的隐患。
渐增式测试-由小模块开始集成和测试。
1.10.1. 自顶向下集成
沿着程序设计层次自顶向下集成模块。
采用深度优先或广度优先自顶向下集成方式
步骤:
1、主模块用作测试驱动模块,所有直属于主模块的下属模块用桩模块代替。
2、用深度优先或广度优先得到的实际模块代替桩模块。
3、一次只替换一个桩模块
4、在每次模块集成后进行测试
5、使用回归测试(重新执行先前所有的或一部分的测试),以确保已经通过测试的模块没有引入新的缺陷。
在设计早期核实主要的控制点和决策点。
最顶层结构被测试的次数最多。
深度优先的执行方法能保证一个功能被完整的执行,测试和验证。
可在早期实施关键功能的深度优先的执行方式。
自顶而下的集成(在某些程序上)由程序中的带图形用户界面的开发工具执行
1.10.2. 自底而上集成
从程序模块结构中的最底层的模块开始集成和测试。
使用驱动模块程序进行测试.
步骤:
1、把最底层模块组合成实现某一特定功能的簇。
2、使用驱动模块程序测试
3、测试簇
4、移去驱动模块程序,组合新的簇,如此沿着程序模块结构由底向上
1.10.3. 关于集成测试的说明
一般来说,倾向于使用自顶而下和自底而上的混合集成测试方式。
关键功能模块应该在早期就被集成和测试。
1.10.4. 集成测试相关文档
测试规格说明书描述整个软件的集成和测试计划
可能的纲要:
1、测试范围
2、测试计划
1.测试阶段和版本
2.时间表
3.软件开销
4.环境和资源
3、测试进程n(关于对版本n的测试的说明)
1.集成顺序
(1)目的
(2)被测试的模块
2.针对某一版本的模块m的单元测试
3.关于对模块n的测试的说明
4.模块的总体说明
5.期望的输出结果
6.测试环境
7.特定的工具或技术
8. 软件的总体说明
9.测试用例数据
10.版本n的期望输出结果
4、实际输出结果
5、参考文献
6、附录
测试范围是对软件具体功能,性能和要被测试的内部设计特性的概要。在测试范围中,要界定达到的测试效果,制定每个测试阶段的完成标准和时间表。
测试计划说明集成的策略。在测试计划中,测试按不同的阶段和版本划分,每个阶段和版本完成针对软件的特定功能和行为特征的测试。
例子:CAD软件的测试可划分以下阶段:
用户对话-选择命令,创造图形,显示效果,错误处理
数据处理和分析-创造图形,标注,转换,物理特性的计算
显示处理和生成-二维显示,三维显示,图形与图表。
数据库管理-存取,更新,完整性,性能。
每个阶段和子阶段详细说明一个功能类别,这个类别可与软件结构的特定部分相关联。
以下标准和测试适用于所有的测试阶段:
l 界面完整性:当每个模块(或一簇)被添加到软件结构中后的内部和外部接口测试。
l 功能正确性:查找功能错误
l 信息内容:测试局部的和全局的数据结构
l 性能:测试性能和与设计中界定的标准相比较。
测试计划还包括:
l 集成的时间表,每个阶段的开始和结束日期
l 软件的整体说明,侧重说明需要特别注意的部分。
l 测试环境的说明
测试计划应适合于局部需球,但也要包含集成策略(在测试计划里),并且测试细节是至关重要的,不可或缺。
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。