您现在的位置: 中国IT实验室 >> 软件测试 >> 测试技术 >> 文章正文
单元测试的基本方法
来源:中国IT实验室整理 时间:2007-4-29 作者:佚名

    单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。

    单元测试任务单元测试任务包括:1 模块接口测试;2 模块局部数据结构测试;3 模块边界条件测试;4 模块中所有独立执行通路测试;5 模块的各条错误处理通路测试。

    模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑下列因素:1 输入的实际参数与形式参数的个数是否相同;2 输入的实际参数与形式参数的属性是否匹配;3 输入的实际参数与形式参数的量纲是否一致;4 调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;5 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;6调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;7 调用预定义函数时所用参数的个数、属性和次序是否正确;8 是否存在与当前入口点无关的参数引用;9 是否修改了只读型参数;10 对全程变量的定义各模块是否一致;11是否把某些约束作为参数传递。

    如果模块内包括外部输入输出,还应该考虑下列因素:1 文件属性是否正确;2 OPEN/CLOSE语句是否正确;3 格式说明与输入输出语句是否匹配;4缓冲区大小与记录长度是否匹配;5文件使用前是否已经打开;6是否处理了文件尾;7是否处理了输入/输出错误;8输出信息中是否有文字性错误;检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:1 不合适或不相容的类型说明;2变量无初值;3变量初始化或省缺值有错;4不正确的变量名(拼错或不正确地截断);5出现上溢、下溢和地址异常。

    除了局部数据结构外,如果可能,单元测试时还应该查清全局数据(例如FORTRAN的公用区)对模块的影响。

    在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:1 误解或用错了算符优先级;2混合类型运算;3变量初值错;4精度不够;5表达式符号错。

    比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:1不同数据类型的对象之间进行比较;2错误地使用逻辑运算符或优先级;3因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;4比较运算或变量出错;5循环终止条件或不可能出现;6迭代发散时不能退出;7错误地修改了循环变量。

    一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:1输出的出错信息难以理解;2记录的错误与实际遇到的错误不相符;3在程序自定义的出错处理段运行之前,系统已介入;4异常处理不当;5错误陈述中未能提供足够的定位出错信息。

    边界条件测试是单元测试中最后,也是最重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。



相关文章
TestNG使Java单元测试轻而易举
C语言单元测试框架-Check
自动进行团队构建和单元测试过程
java的单元自动化测试---jtest
使用NUnit在.Net编程中进行单元测试
防御性编码和单元测试“交通规则”
数据库程序的单元测试
为什么要进行单元测试?
单元测试和事先测试开发
单元测试------理论篇
推荐文章


测试技术 测试工具 测试管理 测试质量
·TestNG使Java单元测试轻而易举04-29
·C语言单元测试框架-Check04-29
·自动进行团队构建和单元测试过程04-29
·java的单元自动化测试---jtest04-29
·使用NUnit在.Net编程中进行单元测试04-29
·防御性编码和单元测试“交通规则”04-29
·数据库程序的单元测试04-29
·单元测试的基本方法04-29
·为什么要进行单元测试?04-28
·单元测试和事先测试开发04-28
·单元测试------理论篇04-28
·强大的Web开源测试工具—Selenium04-19
·测试工具:Pure Software vs Appliance04-12
·开源Web自动化测试框架——Watir试用手记04-12
·Java开源测试工具汇总04-12
·开源测试工具的完整解决方案04-12
·Logiscope测试机理04-12
·测试工具的选择04-12
·testview测试工具详介04-12
·用webload进行web application性能测试04-12
·Optimizeit Thread Debugger概览04-12
·开放源代码的软件测试工具04-12
·从CMM角度考虑需求管理计划04-17
·软件测试实践之测试环境的规划与管理04-12
·缺陷漏测分析:测试过程改进04-12
·软件测试的组织与管理04-12
·T-Plan 测试过程管理工具技术摘要04-12
·软件测试过程的监控方法04-12
·成功测试管理的九大原则04-12
·谈项目管理和软件测试过程04-12
·如何制定软件项目测试计划04-12
·软件测试需要一个怎样的过程?04-12
·软件测试应遵循的八条原则04-12
·CMMI混合型表达方式04-18
·以技术采用工具推进CMMI实施04-18
·CMMI-2级必需的和期望的模型要素04-18
·CMM/CMMI/SPCA业务介绍04-18
·过程“奥林匹克”——CMM的目的04-17
·软件市场的通行证——CMM04-17
·软件企业如何有效地推行CMM04-17
·CMM是解决软件出口壁垒的有效途径04-17
·CMM培训需要特别注意两大问题04-17
·源自美国的安全模型SSE-CMM04-17
·CMM软件过程改进—软件企业的BPR04-17
  培训中心
  ITLab技术交流平台: