打桩与驱动.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
打桩与驱动

先说下概念: 单元本身不是一个独立的程序,一个完整的可运行的软件系统并没有构成,所以必须为每个单元测试开发驱动单元和桩单元. 驱动单元(Driver):所测函数的主程序,他接受测试数据,并把数据传送给所测试单元,最后再输出实测结果.当被测试单元能完成相关功能时,也可以不要驱动单元. 桩单元(Stub):用来代替所测单元的子单元. 以下是我个人的理解: 驱动单元:当测试一个孤立的单元时,其本身是不能运行的,因此,就要用驱动将数据传给被测单元,然后再把被测单元运算所输出的数据传给驱动单元,比较实际输出和预期输出是否一致. 例子:测试一个加法函数 void driber() {?? ? ???int sum=0; ? ???sum=add(1,1); ? ???if(2==sum) ? ?? ???printf(test case CAL_ST_SRS001_001 OK!\n); ? ???else ? ?? ???printf(test case CAL_ST_SRS001_001 fail!\n); } 桩单元:测试一个被测单元是,,该单元要调用一个函数,而在被调用函数不是100%正确时,我们可以从测试的角度模拟被调用的单元.(是在测试角度) 例子:模拟加法函数的桩 int stub_add(int a,int b) { ? ???if((a==1)(b==1)) ? ?? ?? ???return 2; ? ???if((a==2)(b==-1)) ? ?? ?? ???return 1; ? ???if((a==3)(b==0)) ? ?? ?? ???return 3; ? ???if((a==4)(b==1)) ? ?? ?? ? return??5; ? ???............. ? ? } 在我们进行单元测试的时候,单元本身无法构成一个切实可运行的程序系统,所以我们需要为单元测试来开发桩模块和驱动模块,从而完成我们的单元测试目的,这是桩模块和驱动模块的作用。 ? ?如果需要解释清除桩模块和驱动模块,首先您需要理解渐增式和非渐增式联调 。 ??将若干个模块连接成一个可运行的系统通常有两种方式:一种是“非渐增式”,即先独立地测试每一模块,然后将所有这些模块连接到一起运行;另一种是“渐增式”,即在已测试过的N个模块的基础上再增加一个模块,再对N十1个模块进行测试。? ? ? ? ?[img]?[/img] ??非渐增式是先分别测试6个模块A、B、C、D、E、F,然后将 6个模块连接到一起再进行测试。?   若用这种方式,在测试某个模块X时,需要为它设计一个驱动模块和若干个桩模块(图 6.12)。驱动模块的作用是模拟X的调用模块,桩模块的作用是模拟X的下层模块。例如测试图 6.11的模块B时,要为它设计一个驱动模块,其作用是将测试数据传送给模块B,并显示B产生的结果,另外,由于模块B要调用模块E,所以还需设计一个名字为E的模块,它将接受B的控制并模拟E的功能。?   另一种方式是渐增式,它不是分别测试每个模块,而是逐步将要测试的模块同已测试的模块连接起来。若用渐增方式,模块测试和联合测试这两步是结合起来进行的。?   渐增式又有“由顶向下”、“由底向上”等多种。对图6.11的程序若采用“由底向上”的方式,则是先顺序地或并行地 测试模块 E、C、F,此时需为每个模块准备一个驱动模块,但不必准备桩模块,然后为B准备一个驱动模块将B与E连接起来测试,又为D准备一个驱动模块将D和F连接起来测试,这过程将继续至测试最后一个模块A。?   渐增式与非渐增式的比较?   1) 非渐增式需要较多的人工,以图 6.11为例,采用非渐增式共需准备5个驱动模块和5个桩模块(假定A不需要驱动模块, C,E,F不需要桩模块)。而用渐增式,如果是“由顶向下”则可利用前面已测试过的模块,而不必另外准备驱动模块,如果是“由底向上”,也可利用已测式过的模块,不必再准备桩模块。对图 6.11来说,如用“由顶向下”方式则只需要5个桩模块而不要驱动模块,如用“由底向上”方式则只要5个驱动模块而不需要桩模块。?   2) 渐增式可以较早地发现模块界面之间的错误,非渐增式则要到最后将所有模块连接起来时才能发现这类错误。?   3) 渐增式有利于排错。如果模块界面间有错,如果用非渐增式,这类错误要到最后联合测试时才能发现,此时很难判断错误发生在程序的哪一部分,但如果用渐增式,这类错误就较容易定位,它通常与最新加上去的那个模块有关。?   4) 渐增式比较彻底。对图6.14的例子采用渐增式测试,在测试模块B时,模块A(由顶向下方式)或模块E(由底向上方式)也要再次执行,虽然A或E前面已测试过,但与模块B连接起来也许又会产生一个新的条

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档