单元测试的组织方法(一)

发表于:2008-10-30 15:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:译者:贾国莹    来源:51Testing投稿

原文:Organisational Approaches for Unit Testing

查看原文:http://bbs.51testing.com/thread-87914-1-1.html

  本文描述了三种单元测试的组织方法:自上而下法,自下而上法和分离法。组织方法是制定单元测试策略和拟制测试计划的关键因素;选择不适当的方法会对单元测试成本和软件维护开支造成不利影响。这里将推荐一种基于分离法的单元测试策略。

  版权说明:IPL是一个独立的软件公司, 它成立于1979年,总部设在英国的巴思(英国英格兰西南部城市,以其温泉著称)。在1988年IPL获得了ISO9001认证,在1991年获得了TickIT认证。Cantata和AdaTEST共同生成了这些标准。

  一、 介绍

  单元测试是对软件单个组件(单元)进行的测试。尽管它的编码是不同类型的,而且有两个不同的阶段,但单元测试通常被认为是一种组合代码以及软件生命周期单元测试阶段的一部分。

  在Ada,C和C++程序中最基本的设计和代码单元是单个的子程序(如过程,函数,成员函数)。Ada和C++提供将基本的单元群组成包(这里指Ada语言)和复合类(C++语言)的功能。而针对Ada和C++程序的单元测试就是要测试语境中所包含的包和类。

  当设计一个单元测试的策略时,可以采用三种基本的组织方法。它们分别是自上而下法、自下而上法和分离法。在接下来的第二、第三和第四部分将对上述三种方法的详细内容、各自的优点和缺点分别进行介绍。

  在文章中要一直用到测试驱动和桩模块这两个概念。所谓的测试驱动是指能使软件执行的软件,它的目的就是为了测试软件,提供一个能设置输入参数的框架,并执行这个框架单元以得到相应的输出参数。而桩模块是指一个模拟单元,用这个模拟单元来替代真实的单元完成测试。

  二、 自上而下和自下而上的测试

  自上而下法

  1. 详述

  在自上而下的测试过程中,每个单元是通过使用它们来进行测试的,这个过程是由调用这些被测单元的其他独立的单元完成的。

  首先测试最高层的单元,将所有的调用单元用桩模块替换。接着用实际的调用单元替换桩模块,而继续将较低层次的单元用桩模块替换。重复这个过程直到测试了最底层的单元。自上而下测试法需要测试桩,而不需要测试驱动。

  图2.1描述了使用测试桩和一些已测试单元来测试单元D的过程,假设单元A,B,C已经用自上而下法进行了测试。

  由图2.1得到的是一个使用基于自上而下组织方法的单元测试计划,其过程可以描述如下:
步骤1:测试A单元,使用B,C,D单元的桩模块。

  步骤2:测试B单元,通过已测试过的A单元来调用它,并且使用C,D单元的桩模块。

  步骤3:测试C单元,通过已测试过的A单元来调用它,并且使用已通过测试的B单元和D单元的桩模块。

  步骤4:测试D单元,从已测试过的A单元调用它,使用已测试过的B和C单元,并且将E,F和G单元用桩模块代替。(如图2.1所示)

  步骤5:测试E单元,通过已测试过的D单元调用它,而D单元是由已通过测试的A单元来调用的,使用已通过测试的B和C单元,并且将F,G,H,I和J单元用桩模块代替。

  步骤6:测试F单元,通过已测试过的D单元调用它,而D单元是由已通过测试的A单元来调用的,使用已通过测试的B,C和E单元,并且将G,H,I和J单元用桩模块代替。

  步骤7:测试G单元,通过已测试过的D单元调用它,而D单元是由已通过测试的A单元来调用的,使用已通过测试的B,C和F单元,并且将H,I和J单元用桩模块代替。

  步骤8:测试H单元,通过已测试过的E单元调用它,而E单元是由已通过测试的D单元来调用的,而D单元是由已通过测试的A单元来调用的,使用已通过测试的B,C,E,F,G和H单元,并且将J单元用桩模块代替。

  步骤9:测试J单元,通过已测试过的E单元调用它,而E单元是由已通过测试的D单元来调用的,而D单元是由已通过测试的A单元来调用的,使用已通过测试的B,C,E,F,G,H和I单元

图 2.1 自上而下法

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号