版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集成测试5集成测试--内容集成测试的必要性集成测试的方法基于分解的集成基于调用图的集成基于路径的集成案例研究面向对象软件的集成测试5集成测试--什么是集成测试集成测试亦称组装测试集成测试将经过单元测试的模块逐步进行组装和测试集成测试验证程序和概要设计说明的一致性集成测试在模块组装后查找模块间接口的错误5集成测试--集成测试的必要性良好的软件测试充分性准则应具有的基本性质非复合性:即使一个测试数据集对于软件所有的成分是充分的,也不能保证它对于整个软件是充分的非分解性:即使一个测试数据集对于整个软件是充分的,也不能保证它对于软件所有的成分是充分的5集成测试--集成测试的必要性(续)一个模块可能对另一个模块产生不利的影响可能会发现单元测试中未发现的接口方面的错误将子功能合成时不一定产生所期望的主功能独立可接受的误差,在组装后可能会超过可接受的误差限度在单元测试中无法发现时序问题(实时系统)在单元测试中无法发现资源竞争问题5集成测试--内容集成测试的必要性集成测试的方法基于分解的集成基于调用图的集成基于路径的集成案例研究面向对象软件的集成测试5集成测试--SATM系统:简单的自动柜员机SATM终端5集成测试--功能概述屏幕显示15个屏幕5集成测试--功能概述(续)功能键数字键盘(含“取消”键)打印凭条和插入ATM卡的槽存款和提现的通道(door)5集成测试--结构化分析方法该技术基于三种互补的模型:功能模型:使用数据流图数据模型:使用E/R模型控制模型:有限状态机示例SATM系统的语境图SATM系统的第1层数据流图5集成测试--SATM系统的语境图5集成测试--SATM系统的第1层数据流图5集成测试--E-R图5集成测试--Page179图12-11
上层SATM有限状态机5集成测试--Page180图12-12
PIN输入有限状态机5集成测试--SATM系统的功能分解1SATM(SATM系统) 1.1DeviceSense&control(设备传感与控制) 1.1.1Doorsenseandcontrol(通道传感与控制) 1.1.1.1Getdoorstatus 1.1.1.2Controldoor 1.1.1.3Dispensecash 1.1.2Slotsenseandcontrol(槽传感与控制) 1.1.2.1Watchcardslot 1.1.2.2Getdepositslotstatus 1.1.2.3ControlCardRoller 1.1.2.4ControlEnveloperoller 1.1.2.5Readcardstrip 1.2CentralbankComm.(中央银行通信) 1.2.1GetPINforPAN 1.2.2Getaccountstatus 1.2.3Postdailytransactions5集成测试-- 1.3Terminalsenseandcontrol(终端传感与控制) 1.3.1Screendriver(屏幕驱动器) 1.3.2Keysensor(键盘传感器) 1.4Managesession(管理会话) 1.4.1Validatecard(验证卡) 1.4.2ValidatePIN(验证PIN) 1.4.3Closesession(关闭会话) 1.4.3.1Newtransactionrequest 1.4.3.2Printreceipt 1.4.3.3Posttransactionlocal 1.4.4Managetransaction(管理事务/交易) 1.4.4.1Gettransactiontype 1.4.4.2Getaccounttype 1.4.4.3Reportbalance 1.4.4.4Processdeposit 1.4.4.5Processwithdrawal5集成测试--SATM系统的功能分解(续)编号方式可反映如图12-13所示的层次(见下页)5集成测试--Page180图12-13
SATM系统的一种分解树5集成测试--SATM系统的伪代码主程序描述符合如图12-11所示有限状态机的描述该框图中的状态采用CASE语句实现5集成测试--MainProgramState=AwaitcardCaseState Case1:Awaitcard ScreenDriver(1,null) WatchCardSlot(CardSlotStatus) DowhileCardSlotStatusisIdle WatchCardSlot(CardSlotStatus) Endwhile ControlCardRoller(accept) ValidateCard(CardOK,PAN) ifCardOK thenState=AwaitPIN ElseControlCardRoller(eject) Endif State=AwaitCard Case2:AwaitPIN ValidatePIN(PINok,PAN) ifPINok thenScreenDriver(5,null) State=AwaitTrans elseScreenDriver(4,null) Endif State=AwaitCard5集成测试--
Case3:AwaitTrans ManageTransaction State=Closesession Case4:Closesession ifNewTransactionRequest ThenState=AwaitTrans ElsePrintReceipt Endif PostTransactionLocal CloseSession ControlCardRoller(eject) State=AwaitCardEndCase(State)End.(MainprogramSATM)5集成测试--SATM系统的伪代码(续)过程ValidatePIN基于如图12-12所示的有限状态机其中的状态指尝试PIN输入的次数5集成测试--ProcedureValidatePIN(PINok,PAN) GetPINforPAN(PAN,ExpectedPIN) Try=first Casetryof case1:First ScreenDriver(2,null) GetPIN(EnteredPIN) IfEnteredPIN=expectedPIN thenPINok=true elseScreenDriver(3,null) endif Try=second case2:Second ScreenDriver(2,null) GetPIN(EnteredPIN) IfEnteredPIN=expectedPIN thenPINok=true elseScreenDriver(3,null) endif Try=third5集成测试--
case3:Third
ScreenDriver(2,null) GetPIN(EnteredPIN) IfEnteredPIN=expectedPIN thenPINok=true elseScreenDriver(4,null) PINok=false endif Try=secondEndCase(try)End.(ProcedureValidatePIN) 5集成测试--SATM系统的伪代码(续)过程GetPIN基于另一个有限状态机其中的状态指接收到的数字个数,在任何状态中,要么键入另一个能够键入的数字键,要么键入能够键入的取消键这些“状态”没有再使用CASE语句实现,而是压缩为while循环迭代处理5集成测试--ProcedureGetPIN(EnteredPIN,CancelHit)LocalData:DigitKeys={0,1,2,3,4,5,6,7,8,9} CancelHit=False EnteredPIN=nullstring DigitRcvd=0 DoWhilenot(DigitRcvd=4orCancelHit) keySensor(keyHit) ifkeyHitINDigitKeys thenEnteredPIN=EnteredPIN+keyhit INCREMENT(DigitRcvd) ifDigitRcvd=1thenScreenDriver(2,’X’) ifDigitRcvd=2thenScreenDriver(2,’XX--’) ifDigitRcvd=3thenScreenDriver(2,’XXX-’) ifDigitRcvd=1thenScreenDriver(2,’XXXX’) Else CancelHit=true endif endwhileEnd(procedureGetPIN)5集成测试--功能分解中模块之间的“使用”关系MODULE
USESModulesSATMMainWatchCardSlot ControlCardRoller ScreenDriver ValidateCard ValidatePIN ManageTransaction NewTransactionrequestValidatePIN GetPINforPAN GetPIN ScreenDriverGetPIN keySensor ScreenDriver5集成测试--表13-1SATM单元和缩写名称5集成测试--5集成测试--图13-1SATM功能分解树5集成测试--表13-2SATM调用图的邻接矩阵Page189有m个结点和n条边的图G=(V,E)的邻接矩阵是一种m*m矩阵,其中第i行第j列的元素是1,当且仅当结点i和结点j之间存在一条边,否则该元素是05集成测试--5集成测试--单元调用图随着软件设计逐步深入,所增加的信息能够用来将功能分解树细化为单元调用图单元调用图是一种有向图,结点表示程序单元,边表示程序调用如果单元A调用单元B,则从单元A到单元B有一条有向边5集成测试--图13-2
SATM
调用图5集成测试--内容集成测试的必要性集成测试的方法基于分解的集成基于调用图的集成基于路径的集成案例研究面向对象软件的集成测试5集成测试--模块间相互依赖关系分析相依性分析相依性是模块以各种方式相互依赖的关系关联(association)和聚集(aggregation)继承全局变量调用API服务器对象被用作消息参数的对象5集成测试--模块组装的策略非渐增式渐增式5集成测试--非渐增式集成测试:急于求成大爆炸集成测试(big-bangtesting)一下子把几十个甚至上百个模块莽撞地联接在一起“bigbang”描述了这种联接的声音效果“咣”目的:通过少数测试运行检测整个系统来论证系统的稳定性5集成测试--ThreeLevelCallHierarchyABCDHFELevelILevelIILevelIIIG405集成测试--Big-BangIntegrationTestingUnitTestHUnitTestDUnitTestCUnitTestBUnitTestASystem-WideTest………….Allcomponentsareassembledandtestedatonce.415集成测试--非渐增式集成测试的特点优点迅速完成集成测试测试用例较少缺点错误难以定位即使通过测试,许多接口错误也会隐藏应用小的、良构的系统,其模块已接受了充分的测试一个已经存在的系统,只是做了少量的修改通过复用可信赖的模块构造系统5集成测试--渐增式集成测试功能分解树自顶向下从树根结点开始向下自底向上从树叶结点开始向上三明治自顶向下与自底向上相结合5集成测试--两个概念驱动模块(driver):用以模拟被测模块的上级模块的一次性代码。桩模块(stub):也称存根程序,模拟被调用模块的一次性代码。5集成测试--自顶向下集成目的从顶层开始,以控制层次的顺序增加模块以论证系统的稳定性策略从主程序(树根)开始,所有主程序的下层单元都作为“桩”(stub,存根)继续在每一层按宽度优先进行,用完全的实现替代桩,并为下层设计桩直到所有模块被集成5集成测试--自顶向下集成(续)模块测试结合顺序:深度优先:A、B、E、C、D、F宽度优先:A、B、C、D、E、F5集成测试--自顶向下结合方式举例(深度优先)5集成测试--为SATM系统执行自顶向下集成测试第一步是要为被主程序调用的所有单元,即WatchCardSlot(检查ATM卡槽)、ControlCardRoller(控制ATM卡传送器)、ScreenDriver(屏幕驱动器)、ValidateCard(验证ATM卡)、ValidatePIN(验证PIN)、ManageTransaction(管理事务)和NewTransactionRequest(新事务请求)开发桩一旦提供了SATM主程序的所有桩之后,可开始测试主程序,就像它是一个独立单元一样。可以使用合适的功能性测试和结构性测试技术,并查找缺陷在确信主程序的逻辑正确之后,我们将逐渐采用实际代码取代这些桩5集成测试--桩的示例5集成测试--Page192
图13-3图13-1中SATM分解树的部分自顶向下集成测试序列5集成测试--自顶向下集成测试的特点优点测试和集成可以较早的开始减少了驱动(driver)的开发如果底层接口未定义或可能修改,则可以避免提交不稳定的接口缺点桩的开发代价较大在底层模块中一个无法预料的需求可能迫使顶层模块的修改要充分测试底层模块可能比较困难适用范围增量式开发并行软件开发框架开发5集成测试--自底向上集成目的从具有最少的相依性模块开始,按照相依性的次序将模块加入,以证实稳定性策略从功能分解树的叶结点开始,向根的方向移动编写叶结点的驱动器为上一级模块编码整个系统使用根一级的模块测试5集成测试--自底向上结合方式举例5集成测试--Page193
图13-4图13-1中SATM分解树的部分自底向上集成测试序列5集成测试--自底向上集成测试的优点优点自底向上方式虽然需要构造驱动模块,但是它不需要构造桩模块,而构造驱动模块比构造桩模块更容易,因为驱动模块具有某种统一性,而桩模块千差万别涉及复杂算法和真正输入、输出的模块一般在底层,它们是最容易出现问题的模块,而这些模块在自顶向下的组装测试的后期才遇到,如果此时才发现错误,那么改正它所需要花费的代价就更大采用自底向上的组装方式,随着测试层次的提高,剩下的被测模块越来越少,为测试一个模块只需为该模块构造唯一的一个驱动模块,而采用自顶向下方式,则可能要构造若干个桩模块,这无疑也增加了费用叶结点的测试和集成可以并行5集成测试--自底向上集成测试的缺点缺点驱动器的开发耗费量大高层模块的可操作性和互操作性测试得不充分适用范围重要需求的模块在底层5集成测试--自顶向下和自底向上比较5集成测试--改进的自顶向下集成测试自顶向下集成测试中的关键模块,是指一个复杂的模块,或者包含有新算法的模块,或者怀疑有错误倾向的模块尽早组装关键模块可以尽早发现关键错误自顶向下的集成测试的局限性之一是,涉及关键模块的一些问题不能立即被测试,必须等到控制结构完成之后5集成测试--改进的自顶向下集成测试(续)改进的自顶向下集成测试,基本使用自顶向下法,但在测试早期,使用自底向上法测试少数的关键模块。在进行控制结构的集成测试时,关键模块和测试驱动模块一起被执行关键模块和所有其它模块都要经过单元测试。对于一个特定的模块,很难区分单元测试和改进的自顶向下测试对于关键模块,在进行单元测试时,把注意力集中在单元的内部功能上在集成测试阶段,把重点放在这个模块和控制程序的通讯上5集成测试--三明治集成测试是自顶向下和自底向上集成的结合系统可看作是分三层中间一层为目标层测试的时候对目标层上面的一层采用自顶向下策略对下面的一层采用自底向上的策略最后测试在目标层会合Howdoyouselectthetargetlayeriftherearemorethan3layers?Heuristic:Trytominimizethenumberofstubsanddrivers5集成测试--SandwichTestingStrategyTestETestD,G,HTestB,E,FTestA,B,C,D,E,F,G,HTestFTestHTestABottomLevelTestsTopLevelTestsTestA,B,C,DABCDGFELevelILevelIILevelIIIHTestG615集成测试--三明治集成测试的优缺点优点兼有自顶向下和自底向上两者的优点缺点中间层在被集成前测试不充分5集成测试--内容集成测试的必要性集成测试的方法基于分解的集成基于调用图的集成基于路径的集成案例研究面向对象软件的集成测试5集成测试--基于调用图的集成基于分解集成的缺点之一,是以功能分解树为基础如果改用调用图,则可以减缓这种缺陷,并且也向结构性测试方向发展由于调用图是一种有向图,可以利用前面介绍过的图论知识,像使用程序图那样地使用调用图基于调用图的集成测试方法成对集成测试(Pair-wiseIntegrationTesting)相邻集成测试(NeighborhoodIntegrationTesting)5集成测试--成对集成测试成对集成测试背后的思想,是希望使我们可以减少开发桩/驱动器的工作量,能采用实际代码替换桩/驱动器。为了不使测试过程看上去像大爆炸集成测试一样,我们限制用一个测试过程仅去测试调用图中的一对单元。即调用图中的每条边对应有一个集成测试过程对于图13-2所示的SATM调用图,有40个集成测试过程5集成测试--图13-6成对集成举例5集成测试--相邻集成测试借用拓扑学中的邻接概念在有向图中,一个结点的邻居(neighborhood)包括该结点的所有直接前驱结点和所有直接后继结点这对应结点的桩和驱动器集合5集成测试--图13-7相邻集成举例5集成测试--表13-3SATM邻居5集成测试--给定调用图中的邻居数量每个内部结点有一个邻居(neighborhood);如果有叶结点直接连接到根结点,则还要加上一个邻居内部结点=结点-(源结点+汇结点)邻居=内部结点+源结点邻居=结点-汇结点相邻集成测试可大大降低集成测试过程数量(本例中从40降至11),且减少了桩和驱动器的开发工作量5集成测试--基于调用图的集成测试的优点优点减少了驱动器/桩的开发工作接口关系测试充分测试集中于衔接的功能性测试和集成可以并行开始5集成测试--基于调用图的集成测试的缺点缺点调用或协作的关系可能是错综复杂的参与者没有被单独测试,要充分测试底层模块较困难缺陷隔离问题,尤其是对有大量邻居的情况适用范围尽快论证一个可运行的调用或协作被测系统已清楚定义了模块的调用和协作关系5集成测试--内容集成测试的必要性集成测试的方法基于分解的集成基于调用图的集成基于路径的集成案例研究面向对象软件的集成测试5集成测试--新概念与扩展概念允许语句片段作为完整语句处理,语句片段是程序图中的结点源结点程序中的源结点是程序开始执行或恢复执行处的语句片段单元中的第一个可执行语句显然是源结点源结点还会出现在紧接转移控制到其他单元的结点之后5集成测试--新概念与扩展概念(续)汇结点程序执行结束处的语句片段程序中的最后一个可执行语句显然是汇结点转移控制到其他单元的结点也是汇结点模块执行路径模块执行路径是以源结点开始、以汇结点结束的一系列语句,中间没有插入汇结点5集成测试--新概念与扩展概念(续)消息一种程序设计语言机制,通过这种机制一个单元将控制转移给另一个单元子程序调用、过程调用、函数引用我们约定接收消息的单元(消息的目的地)总是最终将控制返回给消息源。消息可以向其他单元传递数据5集成测试--新概念与扩展概念(续)MM-路径穿插出现模块执行路径和消息的序列MM-路径的基本思想用来描述包含在不同单元之间转移控制的模块执行路径序列,这种转移是通过消息完成的MM-路径总是代表了可行的执行路径,并且这些路径要跨越单元边界在经过扩展的程序图中可以发现MM-路径,其中的结点表示模块执行路径,边表示消息5集成测试--图13-8跨三个单元的MM-路径5集成测试--上图中的源结点和汇结点模块A源结点:1,5汇结点:4,6模块B源结点:1,3汇结点:2,4模块C源结点:1汇结点:5入度为0的结点一定是源结点出度为0的结点一定是汇结点5集成测试--模块执行路径MEP(A,1)=<1,2,3,6>MEP(A,2)=<1,2,4>MEP(A,3)=<5,6>MEP(B,1)=<1,2>MEP(B,2)=<3,4>MEP(C,1)=<1,2,4,5>MEP(C,2)=<1,3,4,5>5集成测试--MM-路径图给定一组单元,其MM-路径图是一种有向图,其中的结点表示模块执行路径,边表示单元之间的消息和返回5集成测试--图13-9从图13-8中导出的MM-路径图5集成测试--MM-路径图的含义MM-路径实现了超出单元边界的功能考虑MM-路径与单元的“交集”这种交集中的模块执行路径,类似于一个(MM-路径)功能的程序切片这种交集中的模块执行路径,是将此功能限制在其所在单元的内部5集成测试--MM-路径的深度(长度)MM-路径末端点有两个可观察的行为准则,即消息静止和数据静止消息静止当到达一个不发送消息的结点时,消息静止发生例如图13-8中的模块C数据静止如果在一系列处理之后创建了一些存储数据,且这些数据并不会马上得到使用,那么此时,数据静止发生。5集成测试--5集成测试--SATM系统中的MM-路径见程序(202)写出第一次尝试正确PIN输入的MM-路径5集成测试--1MainProgram2State=Awaitcard3CaseState4 Case1:Awaitcard5 ScreenDriver(1,null)msg16 WatchCardSlot(CardSlotStatus)msg27 DowhileCardSlotStatusisIdle8 WatchCardSlot(CardSlotStatus)msg39 Endwhile10 ControlCardRoller(accept)msg411 ValidateCard(CardOK,PAN)msg512 ifCardOK13 thenState=AwaitPIN14 ElseControlCardRoller(eject)msg615 Endif16 State=AwaitCard17 Case2:AwaitPIN18 ValidatePIN(PINok,PAN)msg719 ifPINok20 thenScreenDriver(5,null)msg821 State=AwaitTrans22 elseScreenDriver(4,null)msg923 Endif24 State=AwaitCard5集成测试--
25 Case3:AwaitTrans26 ManageTransactionmsg1027 State=Closesession28 Case4:Closesession29 ifNewTransactionRequest30 ThenState=AwaitTrans31 ElsePrintReceiptmsg11 32 Endif33 PostTransactionLocalmsg1234 CloseSessionmsg1335 ControlCardRoller(eject)msg1436 State=AwaitCard37EndCase(State)38End.(MainprogramSATM)5集成测试--39ProcedureValidatePIN(PINok,PAN)40 GetPINforPAN(PAN,ExpectedPIN)msg1541 Try=first42 Casetryof43 case1:First44 ScreenDriver(2,null)msg1645 GetPIN(EnteredPIN)msg1746 IfEnteredPIN=expectedPIN47 thenPINok=true48 elseScreenDriver(3,null)msg18 Try=secondendif51 case2:Second52 ScreenDriver(2,null)msg1953 GetPIN(EnteredPIN)msg2054 IfEnteredPIN=expectedPIN55 thenPINok=true56 elseScreenDriver(3,null)msg2157 Try=third58endif
5集成测试--59 case3:Third60 ScreenDriver(2,null)msg2261 GetPIN(EnteredPIN)msg2362 IfEnteredPIN=expectedPIN63 thenPINok=true64 elseScreenDriver(4,null)msg2465 PINok=false 66 Endif67EndCase(try)68End.(ProcedureValidatePIN) 5集成测试--69ProcedureGetPIN(EnteredPIN,CancelHit)70LocalData:DigitKeys={0,1,2,3,4,5,6,7,8,9}71 CancelHit=False72 EnteredPIN=nullstring73 DigitRcvd=074 DoWhilenot(DigitRcvd=4orCancelHit)75 keySensor(keyHit)msg2576 ifkeyHitINDigitKeysthenEnteredPIN=EnteredPIN+keyhit79 INCREMENT(DigitRcvd)80 IfDigitRcvd=181thenScreenDriver(2,’X’)msg2682Endif83ifDigitRcvd=284thenScreenDriver(2,’XX--’)msg2785Endif86ifDigitRcvd=387thenScreenDriver(2,’XXX-’)msg2888Endif89ifDigitRcvd=190thenScreenDriver(2,’XXXX’)msg2991Endif92Else 93CancelHit=true94 endif95 endwhile96End(procedureGetPIN)5集成测试--SATM主程序有16个源节点1,6,7,9,11,12,15,19,21,23,27,30,32,34,35,36SATM主程序有16个汇节点5,6,8,10,11,14,17,18,20,22,26,31,33,34,35,385集成测试--5集成测试--示例MM-路径的UML顺序图5集成测试--MM-路径复杂度V(G)=e-n+2p其中,p是强连接区域的个数。对于结构化过程代码,永远有p=1。因此上述公式简化为V(G)=e-n+25集成测试--MM-路径复杂度(续)根据上面两个MM-路径有向图,套用公式计算得到复杂度分别为:V(G1)=4-3+2=3V(G2)=24-6+2=205集成测试--MM-路径图的特点优点MM-路径是功能性和结构性的一种混合表达上:功能性标识方式上:结构性它与实际系统行为密切匹配,而不是靠基于分解和调用图集成的结构性路径。因此这种基于路径的集成测试能与系统测试无缝连接缺点标识MM-路径的工作量很大5集成测试--内容集成测试的必要性集成测试的方法基于分解的集成基于调用图的集成基于路径的集成案例研究面向对象软件的集成测试5集成测试--次日程序将主程序的功能分解为过程和函数对月、日和年增加了(有限的)有效性检查5集成测试--Main5集成测试--FunctionisLeap5集成测试--FunctionLastDayofMonth5集成测试--GetDate5集成测试--FunctionIncrementDate5集成测试--FunctionPrintDate5集成测试--功能分解图5集成测试--调用图5集成测试--单元的程序图主程序和第一层单元5集成测试--单元的程序图(续)低层单元5集成测试--基于分解的集成图13-15所示的基于分解的成对集成是有问题的,函数isLeap和lastDayOfMonth从来都没有被主程序直接调用,因此这些集成过程是空的5集成测试--基于调用图的集成如图13-16所示的基于调用图的成对集成,是对基于分解的集成的改进很明显没有了空的集成过程,因为边引用的是实际单元5集成测试--基于调用图的集成(续)基于调用图的相邻集成可以通过ValidDate和lastDayOfMonth的邻居进行接下来可以集成GetDate和IncrementDate的邻居最后可以集成主程序这些邻居构成一种构建序列5集成测试--基于MM-路径的集成由于程序是数据驱动的,因此所有MM-路径都要从主程序开始,并回到主程序5集成测试--2002年5月27日的第一条MM-路径……5集成测试--内容集成测试的必要性集成测试的方法基于分解的集成基于调用图的集成基于路径的集成案例研究面向对象软件的集成测试5集成测试--面向对象软件的集成测试o-oCalendar程序的协作图(图18-1)协作图非常类似在“集成测试”中曾经使用过的单元调用图5集成测试--基于协作图的成对集成测试协作图既支持成对集成测试,也支持相邻集成测试对于成对集成,通过向被集成的类发送消息或接收消息的独立“相邻”类进行单元(类)测试就类向其他类发送/接收消息而言,其他类必须表示为桩。所有这类额外工作都使成对的类集成难以接受,这与过程单元的成对集成一样5集成测试--o-oCalendar程序的成对集成测试根据图18-1所示的协作图,可以得到以下要集成的类对:testIt和Date,为Year、Month和Day建立桩Date和Year,为testIt、Month和Day建立桩Date和Month,为testIt、Year和Day建立桩Date和Day,为testIt、Month和Year建立桩Year和Month,为Date和Day建立桩Month和Day,为Date和Year建立桩5集成测试--o-oCalen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《大学物理(上册)》课件-第1章
- 2025-2030全球车辆燃油油位计行业调研及趋势分析报告
- 2025-2030全球电积铜行业调研及趋势分析报告
- 2025年全球及中国直接空气捕获和储存(DACS)行业头部企业市场占有率及排名调研报告
- 2025-2030全球多层土壤传感器行业调研及趋势分析报告
- 2025年全球及中国阻燃塑料薄膜和片材行业头部企业市场占有率及排名调研报告
- 2025-2030全球医用手指康复训练仪行业调研及趋势分析报告
- 2025-2030全球化学谷物熏蒸剂行业调研及趋势分析报告
- 2025年全球及中国智慧教育公共服务平台行业头部企业市场占有率及排名调研报告
- 2025年全球及中国工业胶囊填充设备行业头部企业市场占有率及排名调研报告
- 2025年度院感管理工作计划(后附表格版)
- 励志课件-如何做好本职工作
- 化肥销售工作计划
- 2024浙江华数广电网络股份限公司招聘精英18人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年山东省济南市中考英语试题卷(含答案解析)
- 2024年社区警务规范考试题库
- 2025中考英语作文预测:19个热点话题及范文
- 第10讲 牛顿运动定律的综合应用(一)(讲义)(解析版)-2025年高考物理一轮复习讲练测(新教材新高考)
- 静脉治疗护理技术操作标准(2023版)解读 2
- 2024年全国各地中考试题分类汇编(一):现代文阅读含答案
- GB/T 30306-2024家用和类似用途饮用水处理滤芯
评论
0/150
提交评论