版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
集成測(cè)試5集成測(cè)試--內(nèi)容集成測(cè)試的必要性集成測(cè)試的方法基于分解的集成基于調(diào)用圖的集成基于路徑的集成案例研究面向?qū)ο筌浖募蓽y(cè)試5集成測(cè)試--什么是集成測(cè)試集成測(cè)試亦稱組裝測(cè)試集成測(cè)試將經(jīng)過(guò)單元測(cè)試的模塊逐步進(jìn)行組裝和測(cè)試集成測(cè)試驗(yàn)證程序和概要設(shè)計(jì)說(shuō)明的一致性集成測(cè)試在模塊組裝后查找模塊間接口的錯(cuò)誤5集成測(cè)試--集成測(cè)試的必要性良好的軟件測(cè)試充分性準(zhǔn)則應(yīng)具有的基本性質(zhì)非復(fù)合性:即使一個(gè)測(cè)試數(shù)據(jù)集對(duì)于軟件所有的成分是充分的,也不能保證它對(duì)于整個(gè)軟件是充分的非分解性:即使一個(gè)測(cè)試數(shù)據(jù)集對(duì)于整個(gè)軟件是充分的,也不能保證它對(duì)于軟件所有的成分是充分的5集成測(cè)試--集成測(cè)試的必要性(續(xù))一個(gè)模塊可能對(duì)另一個(gè)模塊產(chǎn)生不利的影響可能會(huì)發(fā)現(xiàn)單元測(cè)試中未發(fā)現(xiàn)的接口方面的錯(cuò)誤將子功能合成時(shí)不一定產(chǎn)生所期望的主功能獨(dú)立可接受的誤差,在組裝后可能會(huì)超過(guò)可接受的誤差限度在單元測(cè)試中無(wú)法發(fā)現(xiàn)時(shí)序問(wèn)題(實(shí)時(shí)系統(tǒng))在單元測(cè)試中無(wú)法發(fā)現(xiàn)資源競(jìng)爭(zhēng)問(wèn)題5集成測(cè)試--內(nèi)容集成測(cè)試的必要性集成測(cè)試的方法基于分解的集成基于調(diào)用圖的集成基于路徑的集成案例研究面向?qū)ο筌浖募蓽y(cè)試5集成測(cè)試--SATM系統(tǒng):簡(jiǎn)單的自動(dòng)柜員機(jī)SATM終端5集成測(cè)試--功能概述屏幕顯示15個(gè)屏幕5集成測(cè)試--功能概述(續(xù))功能鍵數(shù)字鍵盤(含“取消”鍵)打印憑條和插入ATM卡的槽存款和提現(xiàn)的通道(door)5集成測(cè)試--結(jié)構(gòu)化分析方法該技術(shù)基于三種互補(bǔ)的模型:功能模型:使用數(shù)據(jù)流圖數(shù)據(jù)模型:使用E/R模型控制模型:有限狀態(tài)機(jī)示例SATM系統(tǒng)的語(yǔ)境圖SATM系統(tǒng)的第1層數(shù)據(jù)流圖5集成測(cè)試--SATM系統(tǒng)的語(yǔ)境圖5集成測(cè)試--SATM系統(tǒng)的第1層數(shù)據(jù)流圖5集成測(cè)試--E-R圖5集成測(cè)試--Page179圖12-11
上層SATM有限狀態(tài)機(jī)5集成測(cè)試--Page180圖12-12
PIN輸入有限狀態(tài)機(jī)5集成測(cè)試--SATM系統(tǒng)的功能分解1SATM(SATM系統(tǒng)) 1.1DeviceSense&control(設(shè)備傳感與控制) 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集成測(cè)試-- 1.3Terminalsenseandcontrol(終端傳感與控制) 1.3.1Screendriver(屏幕驅(qū)動(dòng)器) 1.3.2Keysensor(鍵盤傳感器) 1.4Managesession(管理會(huì)話) 1.4.1Validatecard(驗(yàn)證卡) 1.4.2ValidatePIN(驗(yàn)證PIN) 1.4.3Closesession(關(guān)閉會(huì)話) 1.4.3.1Newtransactionrequest 1.4.3.2Printreceipt 1.4.3.3Posttransactionlocal 1.4.4Managetransaction(管理事務(wù)/交易) 1.4.4.1Gettransactiontype 1.4.4.2Getaccounttype 1.4.4.3Reportbalance 1.4.4.4Processdeposit 1.4.4.5Processwithdrawal5集成測(cè)試--SATM系統(tǒng)的功能分解(續(xù))編號(hào)方式可反映如圖12-13所示的層次(見下頁(yè))5集成測(cè)試--Page180圖12-13
SATM系統(tǒng)的一種分解樹5集成測(cè)試--SATM系統(tǒng)的偽代碼主程序描述符合如圖12-11所示有限狀態(tài)機(jī)的描述該框圖中的狀態(tài)采用CASE語(yǔ)句實(shí)現(xiàn)5集成測(cè)試--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集成測(cè)試--
Case3:AwaitTrans ManageTransaction State=Closesession Case4:Closesession ifNewTransactionRequest ThenState=AwaitTrans ElsePrintReceipt Endif PostTransactionLocal CloseSession ControlCardRoller(eject) State=AwaitCardEndCase(State)End.(MainprogramSATM)5集成測(cè)試--SATM系統(tǒng)的偽代碼(續(xù))過(guò)程ValidatePIN基于如圖12-12所示的有限狀態(tài)機(jī)其中的狀態(tài)指嘗試PIN輸入的次數(shù)5集成測(cè)試--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集成測(cè)試--
case3:Third
ScreenDriver(2,null) GetPIN(EnteredPIN) IfEnteredPIN=expectedPIN thenPINok=true elseScreenDriver(4,null) PINok=false endif Try=secondEndCase(try)End.(ProcedureValidatePIN) 5集成測(cè)試--SATM系統(tǒng)的偽代碼(續(xù))過(guò)程GetPIN基于另一個(gè)有限狀態(tài)機(jī)其中的狀態(tài)指接收到的數(shù)字個(gè)數(shù),在任何狀態(tài)中,要么鍵入另一個(gè)能夠鍵入的數(shù)字鍵,要么鍵入能夠鍵入的取消鍵這些“狀態(tài)”沒有再使用CASE語(yǔ)句實(shí)現(xiàn),而是壓縮為while循環(huán)迭代處理5集成測(cè)試--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集成測(cè)試--功能分解中模塊之間的“使用”關(guān)系MODULE
USESModulesSATMMainWatchCardSlot ControlCardRoller ScreenDriver ValidateCard ValidatePIN ManageTransaction NewTransactionrequestValidatePIN GetPINforPAN GetPIN ScreenDriverGetPIN keySensor ScreenDriver5集成測(cè)試--表13-1SATM單元和縮寫名稱5集成測(cè)試--5集成測(cè)試--圖13-1SATM功能分解樹5集成測(cè)試--表13-2SATM調(diào)用圖的鄰接矩陣Page189有m個(gè)結(jié)點(diǎn)和n條邊的圖G=(V,E)的鄰接矩陣是一種m*m矩陣,其中第i行第j列的元素是1,當(dāng)且僅當(dāng)結(jié)點(diǎn)i和結(jié)點(diǎn)j之間存在一條邊,否則該元素是05集成測(cè)試--5集成測(cè)試--單元調(diào)用圖隨著軟件設(shè)計(jì)逐步深入,所增加的信息能夠用來(lái)將功能分解樹細(xì)化為單元調(diào)用圖單元調(diào)用圖是一種有向圖,結(jié)點(diǎn)表示程序單元,邊表示程序調(diào)用如果單元A調(diào)用單元B,則從單元A到單元B有一條有向邊5集成測(cè)試--圖13-2
SATM
調(diào)用圖5集成測(cè)試--內(nèi)容集成測(cè)試的必要性集成測(cè)試的方法基于分解的集成基于調(diào)用圖的集成基于路徑的集成案例研究面向?qū)ο筌浖募蓽y(cè)試5集成測(cè)試--模塊間相互依賴關(guān)系分析相依性分析相依性是模塊以各種方式相互依賴的關(guān)系關(guān)聯(lián)(association)和聚集(aggregation)繼承全局變量調(diào)用API服務(wù)器對(duì)象被用作消息參數(shù)的對(duì)象5集成測(cè)試--模塊組裝的策略非漸增式漸增式5集成測(cè)試--非漸增式集成測(cè)試:急于求成大爆炸集成測(cè)試(big-bangtesting)一下子把幾十個(gè)甚至上百個(gè)模塊莽撞地聯(lián)接在一起“bigbang”描述了這種聯(lián)接的聲音效果“咣”目的:通過(guò)少數(shù)測(cè)試運(yùn)行檢測(cè)整個(gè)系統(tǒng)來(lái)論證系統(tǒng)的穩(wěn)定性5集成測(cè)試--ThreeLevelCallHierarchyABCDHFELevelILevelIILevelIIIG405集成測(cè)試--Big-BangIntegrationTestingUnitTestHUnitTestDUnitTestCUnitTestBUnitTestASystem-WideTest………….Allcomponentsareassembledandtestedatonce.415集成測(cè)試--非漸增式集成測(cè)試的特點(diǎn)優(yōu)點(diǎn)迅速完成集成測(cè)試測(cè)試用例較少缺點(diǎn)錯(cuò)誤難以定位即使通過(guò)測(cè)試,許多接口錯(cuò)誤也會(huì)隱藏應(yīng)用小的、良構(gòu)的系統(tǒng),其模塊已接受了充分的測(cè)試一個(gè)已經(jīng)存在的系統(tǒng),只是做了少量的修改通過(guò)復(fù)用可信賴的模塊構(gòu)造系統(tǒng)5集成測(cè)試--漸增式集成測(cè)試功能分解樹自頂向下從樹根結(jié)點(diǎn)開始向下自底向上從樹葉結(jié)點(diǎn)開始向上三明治自頂向下與自底向上相結(jié)合5集成測(cè)試--兩個(gè)概念驅(qū)動(dòng)模塊(driver):用以模擬被測(cè)模塊的上級(jí)模塊的一次性代碼。樁模塊(stub):也稱存根程序,模擬被調(diào)用模塊的一次性代碼。5集成測(cè)試--自頂向下集成目的從頂層開始,以控制層次的順序增加模塊以論證系統(tǒng)的穩(wěn)定性策略從主程序(樹根)開始,所有主程序的下層單元都作為“樁”(stub,存根)繼續(xù)在每一層按寬度優(yōu)先進(jìn)行,用完全的實(shí)現(xiàn)替代樁,并為下層設(shè)計(jì)樁直到所有模塊被集成5集成測(cè)試--自頂向下集成(續(xù))模塊測(cè)試結(jié)合順序:深度優(yōu)先:A、B、E、C、D、F寬度優(yōu)先:A、B、C、D、E、F5集成測(cè)試--自頂向下結(jié)合方式舉例(深度優(yōu)先)5集成測(cè)試--為SATM系統(tǒng)執(zhí)行自頂向下集成測(cè)試第一步是要為被主程序調(diào)用的所有單元,即WatchCardSlot(檢查ATM卡槽)、ControlCardRoller(控制ATM卡傳送器)、ScreenDriver(屏幕驅(qū)動(dòng)器)、ValidateCard(驗(yàn)證ATM卡)、ValidatePIN(驗(yàn)證PIN)、ManageTransaction(管理事務(wù))和NewTransactionRequest(新事務(wù)請(qǐng)求)開發(fā)樁一旦提供了SATM主程序的所有樁之后,可開始測(cè)試主程序,就像它是一個(gè)獨(dú)立單元一樣??梢允褂煤线m的功能性測(cè)試和結(jié)構(gòu)性測(cè)試技術(shù),并查找缺陷在確信主程序的邏輯正確之后,我們將逐漸采用實(shí)際代碼取代這些樁5集成測(cè)試--樁的示例5集成測(cè)試--Page192
圖13-3圖13-1中SATM分解樹的部分自頂向下集成測(cè)試序列5集成測(cè)試--自頂向下集成測(cè)試的特點(diǎn)優(yōu)點(diǎn)測(cè)試和集成可以較早的開始減少了驅(qū)動(dòng)(driver)的開發(fā)如果底層接口未定義或可能修改,則可以避免提交不穩(wěn)定的接口缺點(diǎn)樁的開發(fā)代價(jià)較大在底層模塊中一個(gè)無(wú)法預(yù)料的需求可能迫使頂層模塊的修改要充分測(cè)試底層模塊可能比較困難適用范圍增量式開發(fā)并行軟件開發(fā)框架開發(fā)5集成測(cè)試--自底向上集成目的從具有最少的相依性模塊開始,按照相依性的次序?qū)⒛K加入,以證實(shí)穩(wěn)定性策略從功能分解樹的葉結(jié)點(diǎn)開始,向根的方向移動(dòng)編寫葉結(jié)點(diǎn)的驅(qū)動(dòng)器為上一級(jí)模塊編碼整個(gè)系統(tǒng)使用根一級(jí)的模塊測(cè)試5集成測(cè)試--自底向上結(jié)合方式舉例5集成測(cè)試--Page193
圖13-4圖13-1中SATM分解樹的部分自底向上集成測(cè)試序列5集成測(cè)試--自底向上集成測(cè)試的優(yōu)點(diǎn)優(yōu)點(diǎn)自底向上方式雖然需要構(gòu)造驅(qū)動(dòng)模塊,但是它不需要構(gòu)造樁模塊,而構(gòu)造驅(qū)動(dòng)模塊比構(gòu)造樁模塊更容易,因?yàn)轵?qū)動(dòng)模塊具有某種統(tǒng)一性,而樁模塊千差萬(wàn)別涉及復(fù)雜算法和真正輸入、輸出的模塊一般在底層,它們是最容易出現(xiàn)問(wèn)題的模塊,而這些模塊在自頂向下的組裝測(cè)試的后期才遇到,如果此時(shí)才發(fā)現(xiàn)錯(cuò)誤,那么改正它所需要花費(fèi)的代價(jià)就更大采用自底向上的組裝方式,隨著測(cè)試層次的提高,剩下的被測(cè)模塊越來(lái)越少,為測(cè)試一個(gè)模塊只需為該模塊構(gòu)造唯一的一個(gè)驅(qū)動(dòng)模塊,而采用自頂向下方式,則可能要構(gòu)造若干個(gè)樁模塊,這無(wú)疑也增加了費(fèi)用葉結(jié)點(diǎn)的測(cè)試和集成可以并行5集成測(cè)試--自底向上集成測(cè)試的缺點(diǎn)缺點(diǎn)驅(qū)動(dòng)器的開發(fā)耗費(fèi)量大高層模塊的可操作性和互操作性測(cè)試得不充分適用范圍重要需求的模塊在底層5集成測(cè)試--自頂向下和自底向上比較5集成測(cè)試--改進(jìn)的自頂向下集成測(cè)試自頂向下集成測(cè)試中的關(guān)鍵模塊,是指一個(gè)復(fù)雜的模塊,或者包含有新算法的模塊,或者懷疑有錯(cuò)誤傾向的模塊盡早組裝關(guān)鍵模塊可以盡早發(fā)現(xiàn)關(guān)鍵錯(cuò)誤自頂向下的集成測(cè)試的局限性之一是,涉及關(guān)鍵模塊的一些問(wèn)題不能立即被測(cè)試,必須等到控制結(jié)構(gòu)完成之后5集成測(cè)試--改進(jìn)的自頂向下集成測(cè)試(續(xù))改進(jìn)的自頂向下集成測(cè)試,基本使用自頂向下法,但在測(cè)試早期,使用自底向上法測(cè)試少數(shù)的關(guān)鍵模塊。在進(jìn)行控制結(jié)構(gòu)的集成測(cè)試時(shí),關(guān)鍵模塊和測(cè)試驅(qū)動(dòng)模塊一起被執(zhí)行關(guān)鍵模塊和所有其它模塊都要經(jīng)過(guò)單元測(cè)試。對(duì)于一個(gè)特定的模塊,很難區(qū)分單元測(cè)試和改進(jìn)的自頂向下測(cè)試對(duì)于關(guān)鍵模塊,在進(jìn)行單元測(cè)試時(shí),把注意力集中在單元的內(nèi)部功能上在集成測(cè)試階段,把重點(diǎn)放在這個(gè)模塊和控制程序的通訊上5集成測(cè)試--三明治集成測(cè)試是自頂向下和自底向上集成的結(jié)合系統(tǒng)可看作是分三層中間一層為目標(biāo)層測(cè)試的時(shí)候?qū)δ繕?biāo)層上面的一層采用自頂向下策略對(duì)下面的一層采用自底向上的策略最后測(cè)試在目標(biāo)層會(huì)合Howdoyouselectthetargetlayeriftherearemorethan3layers?Heuristic:Trytominimizethenumberofstubsanddrivers5集成測(cè)試--SandwichTestingStrategyTestETestD,G,HTestB,E,FTestA,B,C,D,E,F,G,HTestFTestHTestABottomLevelTestsTopLevelTestsTestA,B,C,DABCDGFELevelILevelIILevelIIIHTestG615集成測(cè)試--三明治集成測(cè)試的優(yōu)缺點(diǎn)優(yōu)點(diǎn)兼有自頂向下和自底向上兩者的優(yōu)點(diǎn)缺點(diǎn)中間層在被集成前測(cè)試不充分5集成測(cè)試--內(nèi)容集成測(cè)試的必要性集成測(cè)試的方法基于分解的集成基于調(diào)用圖的集成基于路徑的集成案例研究面向?qū)ο筌浖募蓽y(cè)試5集成測(cè)試--基于調(diào)用圖的集成基于分解集成的缺點(diǎn)之一,是以功能分解樹為基礎(chǔ)如果改用調(diào)用圖,則可以減緩這種缺陷,并且也向結(jié)構(gòu)性測(cè)試方向發(fā)展由于調(diào)用圖是一種有向圖,可以利用前面介紹過(guò)的圖論知識(shí),像使用程序圖那樣地使用調(diào)用圖基于調(diào)用圖的集成測(cè)試方法成對(duì)集成測(cè)試(Pair-wiseIntegrationTesting)相鄰集成測(cè)試(NeighborhoodIntegrationTesting)5集成測(cè)試--成對(duì)集成測(cè)試成對(duì)集成測(cè)試背后的思想,是希望使我們可以減少開發(fā)樁/驅(qū)動(dòng)器的工作量,能采用實(shí)際代碼替換樁/驅(qū)動(dòng)器。為了不使測(cè)試過(guò)程看上去像大爆炸集成測(cè)試一樣,我們限制用一個(gè)測(cè)試過(guò)程僅去測(cè)試調(diào)用圖中的一對(duì)單元。即調(diào)用圖中的每條邊對(duì)應(yīng)有一個(gè)集成測(cè)試過(guò)程對(duì)于圖13-2所示的SATM調(diào)用圖,有40個(gè)集成測(cè)試過(guò)程5集成測(cè)試--圖13-6成對(duì)集成舉例5集成測(cè)試--相鄰集成測(cè)試借用拓?fù)鋵W(xué)中的鄰接概念在有向圖中,一個(gè)結(jié)點(diǎn)的鄰居(neighborhood)包括該結(jié)點(diǎn)的所有直接前驅(qū)結(jié)點(diǎn)和所有直接后繼結(jié)點(diǎn)這對(duì)應(yīng)結(jié)點(diǎn)的樁和驅(qū)動(dòng)器集合5集成測(cè)試--圖13-7相鄰集成舉例5集成測(cè)試--表13-3SATM鄰居5集成測(cè)試--給定調(diào)用圖中的鄰居數(shù)量每個(gè)內(nèi)部結(jié)點(diǎn)有一個(gè)鄰居(neighborhood);如果有葉結(jié)點(diǎn)直接連接到根結(jié)點(diǎn),則還要加上一個(gè)鄰居內(nèi)部結(jié)點(diǎn)=結(jié)點(diǎn)-(源結(jié)點(diǎn)+匯結(jié)點(diǎn))鄰居=內(nèi)部結(jié)點(diǎn)+源結(jié)點(diǎn)鄰居=結(jié)點(diǎn)-匯結(jié)點(diǎn)相鄰集成測(cè)試可大大降低集成測(cè)試過(guò)程數(shù)量(本例中從40降至11),且減少了樁和驅(qū)動(dòng)器的開發(fā)工作量5集成測(cè)試--基于調(diào)用圖的集成測(cè)試的優(yōu)點(diǎn)優(yōu)點(diǎn)減少了驅(qū)動(dòng)器/樁的開發(fā)工作接口關(guān)系測(cè)試充分測(cè)試集中于銜接的功能性測(cè)試和集成可以并行開始5集成測(cè)試--基于調(diào)用圖的集成測(cè)試的缺點(diǎn)缺點(diǎn)調(diào)用或協(xié)作的關(guān)系可能是錯(cuò)綜復(fù)雜的參與者沒有被單獨(dú)測(cè)試,要充分測(cè)試底層模塊較困難缺陷隔離問(wèn)題,尤其是對(duì)有大量鄰居的情況適用范圍盡快論證一個(gè)可運(yùn)行的調(diào)用或協(xié)作被測(cè)系統(tǒng)已清楚定義了模塊的調(diào)用和協(xié)作關(guān)系5集成測(cè)試--內(nèi)容集成測(cè)試的必要性集成測(cè)試的方法基于分解的集成基于調(diào)用圖的集成基于路徑的集成案例研究面向?qū)ο筌浖募蓽y(cè)試5集成測(cè)試--新概念與擴(kuò)展概念允許語(yǔ)句片段作為完整語(yǔ)句處理,語(yǔ)句片段是程序圖中的結(jié)點(diǎn)源結(jié)點(diǎn)程序中的源結(jié)點(diǎn)是程序開始執(zhí)行或恢復(fù)執(zhí)行處的語(yǔ)句片段單元中的第一個(gè)可執(zhí)行語(yǔ)句顯然是源結(jié)點(diǎn)源結(jié)點(diǎn)還會(huì)出現(xiàn)在緊接轉(zhuǎn)移控制到其他單元的結(jié)點(diǎn)之后5集成測(cè)試--新概念與擴(kuò)展概念(續(xù))匯結(jié)點(diǎn)程序執(zhí)行結(jié)束處的語(yǔ)句片段程序中的最后一個(gè)可執(zhí)行語(yǔ)句顯然是匯結(jié)點(diǎn)轉(zhuǎn)移控制到其他單元的結(jié)點(diǎn)也是匯結(jié)點(diǎn)模塊執(zhí)行路徑模塊執(zhí)行路徑是以源結(jié)點(diǎn)開始、以匯結(jié)點(diǎn)結(jié)束的一系列語(yǔ)句,中間沒有插入?yún)R結(jié)點(diǎn)5集成測(cè)試--新概念與擴(kuò)展概念(續(xù))消息一種程序設(shè)計(jì)語(yǔ)言機(jī)制,通過(guò)這種機(jī)制一個(gè)單元將控制轉(zhuǎn)移給另一個(gè)單元子程序調(diào)用、過(guò)程調(diào)用、函數(shù)引用我們約定接收消息的單元(消息的目的地)總是最終將控制返回給消息源。消息可以向其他單元傳遞數(shù)據(jù)5集成測(cè)試--新概念與擴(kuò)展概念(續(xù))MM-路徑穿插出現(xiàn)模塊執(zhí)行路徑和消息的序列MM-路徑的基本思想用來(lái)描述包含在不同單元之間轉(zhuǎn)移控制的模塊執(zhí)行路徑序列,這種轉(zhuǎn)移是通過(guò)消息完成的MM-路徑總是代表了可行的執(zhí)行路徑,并且這些路徑要跨越單元邊界在經(jīng)過(guò)擴(kuò)展的程序圖中可以發(fā)現(xiàn)MM-路徑,其中的結(jié)點(diǎn)表示模塊執(zhí)行路徑,邊表示消息5集成測(cè)試--圖13-8跨三個(gè)單元的MM-路徑5集成測(cè)試--上圖中的源結(jié)點(diǎn)和匯結(jié)點(diǎn)模塊A源結(jié)點(diǎn):1,5匯結(jié)點(diǎn):4,6模塊B源結(jié)點(diǎn):1,3匯結(jié)點(diǎn):2,4模塊C源結(jié)點(diǎn):1匯結(jié)點(diǎn):5入度為0的結(jié)點(diǎn)一定是源結(jié)點(diǎn)出度為0的結(jié)點(diǎn)一定是匯結(jié)點(diǎn)5集成測(cè)試--模塊執(zhí)行路徑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集成測(cè)試--MM-路徑圖給定一組單元,其MM-路徑圖是一種有向圖,其中的結(jié)點(diǎn)表示模塊執(zhí)行路徑,邊表示單元之間的消息和返回5集成測(cè)試--圖13-9從圖13-8中導(dǎo)出的MM-路徑圖5集成測(cè)試--MM-路徑圖的含義MM-路徑實(shí)現(xiàn)了超出單元邊界的功能考慮MM-路徑與單元的“交集”這種交集中的模塊執(zhí)行路徑,類似于一個(gè)(MM-路徑)功能的程序切片這種交集中的模塊執(zhí)行路徑,是將此功能限制在其所在單元的內(nèi)部5集成測(cè)試--MM-路徑的深度(長(zhǎng)度)MM-路徑末端點(diǎn)有兩個(gè)可觀察的行為準(zhǔn)則,即消息靜止和數(shù)據(jù)靜止消息靜止當(dāng)?shù)竭_(dá)一個(gè)不發(fā)送消息的結(jié)點(diǎn)時(shí),消息靜止發(fā)生例如圖13-8中的模塊C數(shù)據(jù)靜止如果在一系列處理之后創(chuàng)建了一些存儲(chǔ)數(shù)據(jù),且這些數(shù)據(jù)并不會(huì)馬上得到使用,那么此時(shí),數(shù)據(jù)靜止發(fā)生。5集成測(cè)試--5集成測(cè)試--SATM系統(tǒng)中的MM-路徑見程序(202)寫出第一次嘗試正確PIN輸入的MM-路徑5集成測(cè)試--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集成測(cè)試--
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集成測(cè)試--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集成測(cè)試--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集成測(cè)試--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集成測(cè)試--SATM主程序有16個(gè)源節(jié)點(diǎn)1,6,7,9,11,12,15,19,21,23,27,30,32,34,35,36SATM主程序有16個(gè)匯節(jié)點(diǎn)5,6,8,10,11,14,17,18,20,22,26,31,33,34,35,385集成測(cè)試--5集成測(cè)試--示例MM-路徑的UML順序圖5集成測(cè)試--MM-路徑復(fù)雜度V(G)=e-n+2p其中,p是強(qiáng)連接區(qū)域的個(gè)數(shù)。對(duì)于結(jié)構(gòu)化過(guò)程代碼,永遠(yuǎn)有p=1。因此上述公式簡(jiǎn)化為V(G)=e-n+25集成測(cè)試--MM-路徑復(fù)雜度(續(xù))根據(jù)上面兩個(gè)MM-路徑有向圖,套用公式計(jì)算得到復(fù)雜度分別為:V(G1)=4-3+2=3V(G2)=24-6+2=205集成測(cè)試--MM-路徑圖的特點(diǎn)優(yōu)點(diǎn)MM-路徑是功能性和結(jié)構(gòu)性的一種混合表達(dá)上:功能性標(biāo)識(shí)方式上:結(jié)構(gòu)性它與實(shí)際系統(tǒng)行為密切匹配,而不是靠基于分解和調(diào)用圖集成的結(jié)構(gòu)性路徑。因此這種基于路徑的集成測(cè)試能與系統(tǒng)測(cè)試無(wú)縫連接缺點(diǎn)標(biāo)識(shí)MM-路徑的工作量很大5集成測(cè)試--內(nèi)容集成測(cè)試的必要性集成測(cè)試的方法基于分解的集成基于調(diào)用圖的集成基于路徑的集成案例研究面向?qū)ο筌浖募蓽y(cè)試5集成測(cè)試--次日程序?qū)⒅鞒绦虻墓δ芊纸鉃檫^(guò)程和函數(shù)對(duì)月、日和年增加了(有限的)有效性檢查5集成測(cè)試--Main5集成測(cè)試--FunctionisLeap5集成測(cè)試--FunctionLastDayofMonth5集成測(cè)試--GetDate5集成測(cè)試--FunctionIncrementDate5集成測(cè)試--FunctionPrintDate5集成測(cè)試--功能分解圖5集成測(cè)試--調(diào)用圖5集成測(cè)試--單元的程序圖主程序和第一層單元5集成測(cè)試--單元的程序圖(續(xù))低層單元5集成測(cè)試--基于分解的集成圖13-15所示的基于分解的成對(duì)集成是有問(wèn)題的,函數(shù)isLeap和lastDayOfMonth從來(lái)都沒有被主程序直接調(diào)用,因此這些集成過(guò)程是空的5集成測(cè)試--基于調(diào)用圖的集成如圖13-16所示的基于調(diào)用圖的成對(duì)集成,是對(duì)基于分解的集成的改進(jìn)很明顯沒有了空的集成過(guò)程,因?yàn)檫呉玫氖菍?shí)際單元5集成測(cè)試--基于調(diào)用圖的集成(續(xù))基于調(diào)用圖的相鄰集成可以通過(guò)ValidDate和lastDayOfMonth的鄰居進(jìn)行接下來(lái)可以集成GetDate和IncrementDate的鄰居最后可以集成主程序這些鄰居構(gòu)成一種構(gòu)建序列5集成測(cè)試--基于MM-路徑的集成由于程序是數(shù)據(jù)驅(qū)動(dòng)的,因此所有MM-路徑都要從主程序開始,并回到主程序5集成測(cè)試--2002年5月27日的第一條MM-路徑……5集成測(cè)試--內(nèi)容集成測(cè)試的必要性集成測(cè)試的方法基于分解的集成基于調(diào)用圖的集成基于路徑的集成案例研究面向?qū)ο筌浖募蓽y(cè)試5集成測(cè)試--面向?qū)ο筌浖募蓽y(cè)試o-oCalendar程序的協(xié)作圖(圖18-1)協(xié)作圖非常類似在“集成測(cè)試”中曾經(jīng)使用過(guò)的單元調(diào)用圖5集成測(cè)試--基于協(xié)作圖的成對(duì)集成測(cè)試協(xié)作圖既支持成對(duì)集成測(cè)試,也支持相鄰集成測(cè)試對(duì)于成對(duì)集成,通過(guò)向被集成的類發(fā)送消息或接收消息的獨(dú)立“相鄰”類進(jìn)行單元(類)測(cè)試就類向其他類發(fā)送/接收消息而言,其他類必須表示為樁。所有這類額外工作都使成對(duì)的類集成難以接受,這與過(guò)程單元的成對(duì)集成一樣5集成測(cè)試--o-oCalendar程序的成對(duì)集成測(cè)試根據(jù)圖18-1所示的協(xié)作圖,可以得到以下要集成的類對(duì):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集成測(cè)試--o-oCalen
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)業(yè)現(xiàn)代化農(nóng)機(jī)租賃服務(wù)合同3篇
- 二零二五年度股東合作打造智能物流網(wǎng)絡(luò)合同3篇
- 二零二五年度環(huán)保材料墻繪施工合同3篇
- 2025年度新型廣告字生產(chǎn)、安裝及售后服務(wù)合同3篇
- 二零二五年度老年健身器材租賃合同2篇
- 2025年度租賃車輛環(huán)保排放檢測(cè)與治理合同3篇
- 2025年度公司定制婚禮用花采購(gòu)服務(wù)合同2篇
- 二零二五年度人工智能醫(yī)療設(shè)備研發(fā)團(tuán)隊(duì)勞動(dòng)合同終止補(bǔ)償協(xié)議2篇
- 2025年度養(yǎng)老院入住與醫(yī)療費(fèi)用結(jié)算合同2篇
- 二零二五年度口腔診所與口腔材料供應(yīng)商戰(zhàn)略合作合同3篇
- 2024江蘇省鐵路集團(tuán)限公司春季招聘24人高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 2024智能變電站新一代集控站設(shè)備監(jiān)控系統(tǒng)技術(shù)規(guī)范部分
- 企業(yè)反恐專項(xiàng)經(jīng)費(fèi)保障制度
- 電梯工程師在電梯設(shè)計(jì)中的工作內(nèi)容
- 《概率論與數(shù)理統(tǒng)計(jì)基礎(chǔ)》全套教學(xué)課件
- 2024國(guó)家開放大學(xué)電大本科《液壓氣動(dòng)技術(shù)》期末試題及答案
- 肥豬銷售合同模板
- 餐飲顧問(wèn)合作協(xié)議
- 新教材牛津譯林版高中英語(yǔ)必修第二冊(cè)全冊(cè)各單元重點(diǎn)語(yǔ)法精講
- 兩課 說(shuō)課 單相橋式整流電路分析(獲獎(jiǎng))
- 中國(guó)移動(dòng)《下一代全光骨干傳送網(wǎng)白皮書》
評(píng)論
0/150
提交評(píng)論