展开全部 +
首页 . 理学 . 计算机科学技术 . 软件工程 . 软件工程理论与方法 . 软件设计 . 软件测试

单元测试

/unit testing/
条目作者孙昌爱

孙昌爱

最后更新 2022-12-23
浏览 287
最后更新 2022-12-23
浏览 287
0 意见反馈 条目引用

对程序模块(软件设计的最小单元)进行测试,检查各个程序模块是否正确地实现了规定的功能。又称模块测试。

英文名称
unit testing
又称
模块测试
所属学科
计算机科学技术

最小单元就是人为规定的最小的可测试的功能模块。在结构化程序中最小单元通常是函数、过程;在面向对象程序中最小单元包括类或方法。单元测试是在软件开发过程中最低级别的测试活动,其目的在于发现模块内部可能存在的各种缺陷。

单元测试依据详细设计说明书和源程序清单,在了解模块的输入/输出条件和逻辑结构的基础上,采用白盒测试技术产生测试用例,对合理的输入和不合理的输入进行测试,观测并判定测试结果。单元测试应重点关注如下几个方面:①模块接口测试。调用本模块的输入参数(数目、次序、类型等)是否正确、本模块调用子模块时传递给子模块的参数是否正确、全局变量的定义和用法在各模块中是否一致等。②局部变量测试。测试程序中局部变量相关的常见错误,包括不正确或不一致的数据类型说明、使用尚未赋值或尚未初始化的变量、错误的初始值或缺省值、变量名拼写错或书写错、不一致的数据类型、全局变量对模块的影响等。③路径测试。对模块中重要路径进行测试。检测计算或比较错误、控制流错误,以及对基本路径和循环进行测试。④错误处理测试。模块应实现正常的功能,同时还应能够处理各种异常情况。测试时应考虑出错的描述是否难以理解、出错的描述能否有助于错误定位、显示的错误与实际的错误是否相符、对错误条件的处理是否正确、在对错误进行处理之前错误条件是否已经引起系统的干预等。⑤边界测试。设计人员与编程人员容易在处理循环与判定条件的边界时出错。测试时应注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。

在进行单元测试时,待测模块本身并不是完整的程序,因此需要开发驱动模块和桩模块(见图)。驱动模块是用来模拟待测试模块的上级模块,接受测试数据并将相关的数据传送给待测模块;桩模块也称为存根程序,用以模拟待测模块工作过程中所调用的模块,一般只进行很少的数据处理(如打印入口和返回)。

单元测试中驱动模块与桩模块示意图单元测试中驱动模块与桩模块示意图

单元测试可以采用人工或自动的方式实现。人工测试,可以由程序模块开发人员非正式地进行,也可以由质量保证小组正式进行,包括代码走查或代码审查。采用计算机自动测试某个模块时,需要开发驱动模块和桩模块。人工测试需要大量的人力投入,而且进度慢。计算机测试测试进度快,但存在开发驱动模块与桩模块的额外代价。因此,人工测试与自动测试各有所长,互为补充。

常见的单元测试工具:开源C/C++单元测试工具CppUnit;Parasoft公司C/C++单元测试工具C/C++test;支持Linux、Mac OS、Windows等操作系统的C++单元测试工具Google Test;Java单元测试工具JUnit;.NET单元测试工具NUnit;PHP单元测试工具PHPUnit;数据库存储过程的单元测试工具SQLUnit。

相关条目

阅读历史

    意见反馈

    提 交

    感谢您的反馈

    我们会尽快处理您的反馈!
    您可以进入个人中心的反馈栏目查看反馈详情。
    谢谢!