版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο髮?shí)現(xiàn)程序設(shè)計(jì)語言程序設(shè)計(jì)風(fēng)格測試策略設(shè)計(jì)測試用例面向?qū)ο髮?shí)現(xiàn)程序設(shè)計(jì)語言1一、程序設(shè)計(jì)語言1、面向?qū)ο笳Z言的優(yōu)點(diǎn)⑴一致的表示方法(2)可重用性(3)可維護(hù)性一、程序設(shè)計(jì)語言1、面向?qū)ο笳Z言的優(yōu)點(diǎn)2
2、面向?qū)ο笳Z言的技術(shù)特點(diǎn)(1)支持類與對象概念的機(jī)制(2)實(shí)現(xiàn)整體-部分結(jié)構(gòu)的機(jī)制(3)實(shí)現(xiàn)一般-特殊結(jié)構(gòu)的機(jī)制(4)實(shí)現(xiàn)屬性和服務(wù)機(jī)制(5)類型檢查(6)類庫(7)效率(8)持久保存對象(9)參數(shù)化類(10)開發(fā)環(huán)境2、面向?qū)ο笳Z言的技術(shù)特點(diǎn)3
3、選擇面向?qū)ο笳Z言(1)將來能否占主導(dǎo)地位(2)可重用性(3)類庫和開發(fā)環(huán)境(4)其他因素3、選擇面向?qū)ο笳Z言4二程序設(shè)計(jì)風(fēng)格提高可重用性提高可擴(kuò)充性提高健壯性二程序設(shè)計(jì)風(fēng)格提高可重用性5三面向?qū)ο蟮能浖y試測試目標(biāo):在現(xiàn)實(shí)的時(shí)間跨度內(nèi)應(yīng)用可管理的工作量去發(fā)現(xiàn)最大可能數(shù)量的錯(cuò)誤基本目標(biāo)不變,但由于OO程序的性質(zhì)改變了測試策略和測試戰(zhàn)術(shù)更多的設(shè)計(jì)模式復(fù)用是否將減輕OO系統(tǒng)的繁重測試?Binder,R.V.在“Object-OrientedSoftwareTesting”中討論改問題:“每次復(fù)用是一個(gè)新的使用語境,并且重新測試是謹(jǐn)慎的.為了獲得面向?qū)ο笙到y(tǒng)的高可靠性,似乎可能需要更多而不是更少的測試.”三面向?qū)ο蟮能浖y試測試目標(biāo):在現(xiàn)實(shí)的時(shí)間跨61OOA和OOD的模型測試
每個(gè)階段的所有面向?qū)ο竽P投紤?yīng)被測試。OOA和OOD的模型不能被執(zhí)行,對它們不能進(jìn)行傳統(tǒng)意義上的測試??赏ㄟ^技術(shù)復(fù)審檢查OOA和OOD的模型的正確性和一致性。擴(kuò)大測試的視角1OOA和OOD的模型測試每個(gè)階段的所有面向?qū)ο?2面向?qū)ο鬁y試策略信息隱蔽對測試的影響封裝和繼承對測試的影響面向?qū)ο蟪绦虻奶攸c(diǎn)對軟件測試的影響:單元和集成測試策略必須有很大的改變測試用例的設(shè)計(jì)必須考慮OO軟件的特征2面向?qū)ο鬁y試策略信息隱蔽對測試的影響面向?qū)ο蟪绦虻奶攸c(diǎn)8
(1).OO的單元測試一個(gè)類可以包含一組不同的操作,而一個(gè)特定的操作也可能存在于一組不同的類中。不再孤立地測試單個(gè)操作(這是傳統(tǒng)單元測試的視角)OO軟件的類測試等價(jià)于傳統(tǒng)的單元測試.傳統(tǒng)軟件的單元測試關(guān)注算法細(xì)節(jié)和模塊接口間流動(dòng)的數(shù)據(jù)OO軟件的類測試是由封裝在類中的操作和類的狀態(tài)行為驅(qū)動(dòng)的單元概念的變化—封裝的類或?qū)ο笞鳛樽钚〉目蓽y試單位(1).OO的單元測試一個(gè)類可以包含一組不同的操作,而一9(2).OO的集成測試
OO軟件沒有層次的控制結(jié)構(gòu),傳統(tǒng)的自頂向下和自底向上的集成策略沒有意義.OO軟件的集成兩種策略:基于線程的測試(thread-basedtesting)
集成響應(yīng)系統(tǒng)的一個(gè)輸入或事件所需的一組類,每個(gè)線程被個(gè)體地集成和測試,通過回歸測試保證沒有副作用產(chǎn)生;基于使用的測試(use-basedtesting)通過測試幾乎不使用服務(wù)器的類(獨(dú)立類)來開始系統(tǒng)的構(gòu)造,測試完獨(dú)立類后,使用獨(dú)立類按層逐步完成依賴類的測試直至完整的系統(tǒng)被構(gòu)造;(2).OO的集成測試OO軟件沒有層次的10
(3).OO的確認(rèn)測試在確認(rèn)和系統(tǒng)測試層次,類連接的細(xì)節(jié)消失.和傳統(tǒng)的確認(rèn)測試一樣,OO軟件的確認(rèn)關(guān)注用戶可見的動(dòng)作和用戶可識別的系統(tǒng)輸出.為輔助確認(rèn)測試的導(dǎo)出,應(yīng)利用分析模型中的用例圖提供的場景來提高交互需求中發(fā)現(xiàn)錯(cuò)誤的可能性(3).OO的確認(rèn)測試在確認(rèn)和系統(tǒng)測試層次,類連接的細(xì)節(jié)113
OO軟件的測試用例設(shè)計(jì)每個(gè)測試用例應(yīng)被唯一標(biāo)識,并應(yīng)顯式地和與被測試類相關(guān)聯(lián)測試的目的應(yīng)被陳述對每個(gè)測試應(yīng)開發(fā)一組測試步驟,包括:將被測試對象的一組特定狀態(tài)將被作為測試的結(jié)果使用的一組消息和操作當(dāng)對象被測試時(shí)可能產(chǎn)生的一組異常一組外部條件(進(jìn)行測試必須的軟件外部環(huán)境的變化)將輔助理解或?qū)崿F(xiàn)測試的補(bǔ)充信息OO軟件的測試用例設(shè)計(jì)還處于成型期.Binder,R.V.在“EssaysonObject-OrientedSoftwareEngineering”中建議了對OO軟件的測試用例設(shè)計(jì)的整體方法:3OO軟件的測試用例設(shè)計(jì)每個(gè)測試用例應(yīng)被唯一標(biāo)識,并應(yīng)顯12(1).OO概念的測試用例設(shè)計(jì)的含義封裝可能會成為測試的障礙
測試需要報(bào)告對象的具體和抽象狀態(tài),而封裝使得對象的狀態(tài)快照難于獲得。繼承,特別是多繼承使測試復(fù)雜化(1).OO概念的測試用例設(shè)計(jì)的含義封裝可能會成為測試13子類繼承或重載的父類成員函數(shù)的測試問題繼承的成員函數(shù)是否都不需要測試?對父類中已經(jīng)測試過的成員函數(shù),兩種情況需要在子類中重新測試:繼承的成員函數(shù)在子類中做了改動(dòng);成員函數(shù)調(diào)用了改動(dòng)過的成員函數(shù)的部分;例如:
父類Base有兩個(gè)成員函數(shù)Inherited()和Redefined(),子類Derived只對Redefined()做了改動(dòng).Derived∷Redefined()—需要重新測試Derived∷Inherited()—如果它調(diào)用了Redefined()的語句,則需重新測試,否則不必子類繼承或重載的父類成員函數(shù)的測試問題繼承的成員函數(shù)是否都不14子類繼承或重載的父類成員函數(shù)的測試問題對父類的測試是否能夠照搬到子類?
上例中:
Base∷Redefined()和Derived∷Redefined()已是兩個(gè)不同的成員函數(shù),照理應(yīng)對Derived∷Redefined()重新進(jìn)行測試分析,設(shè)計(jì)測試用例,但由于它們的相似性,只需在Base∷Redefined()的測試要求和測試用例上添加對Derived∷Redefined()的新的測試要求和增補(bǔ)相應(yīng)的測試用例.子類繼承或重載的父類成員函數(shù)的測試問題對父類的測試是否能夠照15(2).傳統(tǒng)測試用例設(shè)計(jì)方法的可用性白盒測試方法可用于類定義的操作的測試對具有簡潔結(jié)構(gòu)的類,白盒測試最好用于類級別的測試黑盒測試方法也適合OO系統(tǒng)(2).傳統(tǒng)測試用例設(shè)計(jì)方法的可用性白盒測試方法可用于164測試單個(gè)類的方法(1)隨機(jī)測試?yán)?銀行系統(tǒng)的account(帳戶)類有下列操作:open(打開)setup(建立)deposit(存款)withdraw(取款)balance(余額)summarize(清單)creditLimit(透支限額)close(關(guān)閉)系統(tǒng)對操作的限制:必須在應(yīng)用其它操作之前先打開帳戶,在完成了全部操作之后才能關(guān)閉帳戶;……在限制下還是存在操作的許多排列4測試單個(gè)類的方法(1)隨機(jī)測試?yán)?銀行系統(tǒng)的accoun17一個(gè)account類實(shí)例的最小行為歷史包括下列操作:open.setup.deposit.withdraw.close
account類的最小測試序列大量的其它行為可能在下面序列中發(fā)生:open.setup.deposit.[deposit|withdraw|balance|summarize|creditLimit]n.withdraw.close
一系列不同的操作序列可以隨機(jī)地產(chǎn)生,例如:測試用例r1:open.setup.deposit.deposit.balance.
summarize.creditLimit.withdraw.close
測試用例r2:open.setup.deposit.withdraw.deposit.balance.creditLimit.withdraw.close這些和其它的隨機(jī)順序測試被進(jìn)行,以測試不同的類實(shí)例的生存歷史.一個(gè)account類實(shí)例的最小行為歷史包括下列操作:18測試單個(gè)類的方法(2)劃分測試(partitiontesting)
與測試傳統(tǒng)軟件時(shí)采用的等價(jià)類劃分方法類似.
劃分類別的方法:基于狀態(tài)的劃分基于屬性的劃分基于功能的劃分測試單個(gè)類的方法(2)劃分測試(partitiontest19基于狀態(tài)的劃分根據(jù)類操作改變類狀態(tài)的能力來劃分類操作.例:銀行系統(tǒng)的account(帳戶)類
狀態(tài)操作包括:deposit(存款)withdraw(取款)
非狀態(tài)操作包括:balance(余額)summarize(清單)creditLimit(透支限額)測試用例p1(測試改變狀態(tài)的操作):
open.setup.deposit.deposit..withdraw.close
測試用例p2(測試不改變狀態(tài)的操作,在最小測試序列中的操作除外):open.setup.deposit.summarize.creditLimit.withdraw.close基于狀態(tài)的劃分根據(jù)類操作改變類狀態(tài)的能力來劃分類操作.例20基于屬性的劃分根據(jù)類操作使用的屬性來劃分類操作.例:銀行系統(tǒng)的account(帳戶)類可根據(jù)balance屬性來定義劃分,把操作劃分為三個(gè)類別:使用balance的操作修改balance的操作不使用也不修改balance的操作
為上述每個(gè)類別設(shè)計(jì)測試序列基于屬性的劃分根據(jù)類操作使用的屬性來劃分類操作.例:銀行21基于功能的劃分根據(jù)類操作所完成的功能來劃分類操作.例:銀行系統(tǒng)的account(帳戶)類中的操作可劃分為三個(gè)類別:初始化操作(open,setup)計(jì)算操作(deposit,withdraw)查詢操作(balance,summarize,creditLimit)終止操作(close)
為上述每個(gè)類別設(shè)計(jì)測試序列基于功能的劃分根據(jù)類操作所完成的功能來劃分類操作.例:銀22測試類和方法(3)基于故障的測試(fault_basedtesting)與測試傳統(tǒng)軟件時(shí)采用的錯(cuò)誤推測法類似.測試類和方法(3)基于故障的測試(fault_basedt23
5面向?qū)ο蟮募蓽y試
(類間測試用例的設(shè)計(jì))在OO系統(tǒng)的集成開始時(shí),開始類間的協(xié)作測試.和單個(gè)類的測試一樣,類協(xié)作測試可通過隨機(jī)和劃分方法以及基于場景的測試和行為測試來完成.5面向?qū)ο蟮募蓽y試
(類間測試用例的設(shè)計(jì))24
ATMBank銀行系統(tǒng)的類協(xié)作圖ATMUserInterfaceAccountCashierverifyAcctverifyPINverifyPolicywithdrawReqdepositReqacctInfoReqcardInsertedpassworddepositwithdrawaccentStatusterminatevalidPINvalidAcctcreditLimitaccentTypebalancewithdrawdepositcloseopenAcctinitialDepositauthorizeCarddeuthorizecloseAcctValidationInfoverifyStatusdepositStatusdispenseCaseprintAccentStatreadCardInfogetCaseAmntATMBank銀行系統(tǒng)的類協(xié)作圖ATMAccoun25
OO集成測試方法(1)多個(gè)類測試Kirani,S.andW.T.Tsai,在“SpecificationandVerificationofObject-OrientedPrograms”中建議了下面的步驟序列以生成多個(gè)類隨機(jī)測試用例:1.對每個(gè)客戶類,使用類操作列表來生成一系列隨機(jī)測試序列,這些操作發(fā)送消息給服務(wù)器類;2.對生成的每個(gè)消息,確定在服務(wù)器對象中的協(xié)作者類和對應(yīng)的操作;3.對服務(wù)器對象中的每個(gè)操作(已經(jīng)被來自客戶對象的消息調(diào)用),確定傳遞的消息;4.對每個(gè)消息,確定下一層被調(diào)用的操作,并把這些操作結(jié)合進(jìn)測試序列中.OO集成測試方法(1)多個(gè)類測試26
ATMBank銀行系統(tǒng)的類協(xié)作圖ATMUserInterfaceAccountCashierverifyAcctverifyPINverifyPolicywithdrawReqdepositReqacctInfoReqcardInsertedpassworddepositwithdrawaccentStatusterminatevalidPINvalidAcctcreditLimitaccentTypebalancewithdrawdepositcloseopenAcctinitialDepositauthorizeCarddeuthorizecloseAcctValidationInfoverifyStatusdepositStatusdispenseCaseprintAccentStatreadCardInfogetCaseAmntATMBank銀行系統(tǒng)的類協(xié)作圖ATMAccoun27銀行系統(tǒng)中Bank類和ATM類的操作序列:verifyAcct?verifyPIN?[[verifyPolicy?withdrawReq]|depositReq|acctInfoReq]n對Bank類的隨機(jī)測試用例可能是:測試用例r3:verifyAcct?verifyPIN?depositReq為了考慮測試中涉及的協(xié)作者,需要考慮與測試用例r3中每個(gè)操作相關(guān)聯(lián)的消息:Bank必須和ValidationInfo協(xié)作以執(zhí)行verifyAcct和verifyPINBank還必須和Account協(xié)作以執(zhí)行depositReq因此,測試這些協(xié)作的新的測試用例是:測試用例r4:verifyAcctBank?[validAcctValidationInfo]?verifyPINBank
?[validPINValidationInfo]
?depositReq
?[depositAccount]銀行系統(tǒng)中Bank類和ATM類的操作序列:verifyAcc28
OO集成測試方法(2)從動(dòng)態(tài)模型導(dǎo)出測試用例
設(shè)計(jì)的測試用例應(yīng)達(dá)到完全的狀態(tài)覆蓋,即操作序列應(yīng)導(dǎo)致account類的變遷穿越所有允許的狀態(tài):測試用例s1:open?setupAccent?deposit(initial)?withdraw(final)?close(最小測試序列)
向最小序列中加入附加的測試序列,例如:測試用例s2:open?setupAccent?deposit(initial)?deposit?balance?credit?withdraw(final)?close測試用例s3:open?setupAccent?deposit(initial)?deposit?withdraw?accntInfo?withdraw(final)?close
……導(dǎo)出更多的測試用例以保證該類的所有行為都被適當(dāng)?shù)販y試OO集成測試方法(2)從動(dòng)態(tài)模型導(dǎo)出測試用例向最小序列中加29
setupacctaccount類的狀態(tài)轉(zhuǎn)換圖emptyacctdeadacctsetupAaccentbalancecreditacctInfoclosedeposit(initial)depositwithdrawemptyacctopenwithdrawal(final)nonworkingacctsetupaccount類的狀態(tài)轉(zhuǎn)換圖empty30面向?qū)ο髮?shí)現(xiàn)程序設(shè)計(jì)語言程序設(shè)計(jì)風(fēng)格測試策略設(shè)計(jì)測試用例面向?qū)ο髮?shí)現(xiàn)程序設(shè)計(jì)語言31一、程序設(shè)計(jì)語言1、面向?qū)ο笳Z言的優(yōu)點(diǎn)⑴一致的表示方法(2)可重用性(3)可維護(hù)性一、程序設(shè)計(jì)語言1、面向?qū)ο笳Z言的優(yōu)點(diǎn)32
2、面向?qū)ο笳Z言的技術(shù)特點(diǎn)(1)支持類與對象概念的機(jī)制(2)實(shí)現(xiàn)整體-部分結(jié)構(gòu)的機(jī)制(3)實(shí)現(xiàn)一般-特殊結(jié)構(gòu)的機(jī)制(4)實(shí)現(xiàn)屬性和服務(wù)機(jī)制(5)類型檢查(6)類庫(7)效率(8)持久保存對象(9)參數(shù)化類(10)開發(fā)環(huán)境2、面向?qū)ο笳Z言的技術(shù)特點(diǎn)33
3、選擇面向?qū)ο笳Z言(1)將來能否占主導(dǎo)地位(2)可重用性(3)類庫和開發(fā)環(huán)境(4)其他因素3、選擇面向?qū)ο笳Z言34二程序設(shè)計(jì)風(fēng)格提高可重用性提高可擴(kuò)充性提高健壯性二程序設(shè)計(jì)風(fēng)格提高可重用性35三面向?qū)ο蟮能浖y試測試目標(biāo):在現(xiàn)實(shí)的時(shí)間跨度內(nèi)應(yīng)用可管理的工作量去發(fā)現(xiàn)最大可能數(shù)量的錯(cuò)誤基本目標(biāo)不變,但由于OO程序的性質(zhì)改變了測試策略和測試戰(zhàn)術(shù)更多的設(shè)計(jì)模式復(fù)用是否將減輕OO系統(tǒng)的繁重測試?Binder,R.V.在“Object-OrientedSoftwareTesting”中討論改問題:“每次復(fù)用是一個(gè)新的使用語境,并且重新測試是謹(jǐn)慎的.為了獲得面向?qū)ο笙到y(tǒng)的高可靠性,似乎可能需要更多而不是更少的測試.”三面向?qū)ο蟮能浖y試測試目標(biāo):在現(xiàn)實(shí)的時(shí)間跨361OOA和OOD的模型測試
每個(gè)階段的所有面向?qū)ο竽P投紤?yīng)被測試。OOA和OOD的模型不能被執(zhí)行,對它們不能進(jìn)行傳統(tǒng)意義上的測試??赏ㄟ^技術(shù)復(fù)審檢查OOA和OOD的模型的正確性和一致性。擴(kuò)大測試的視角1OOA和OOD的模型測試每個(gè)階段的所有面向?qū)ο?72面向?qū)ο鬁y試策略信息隱蔽對測試的影響封裝和繼承對測試的影響面向?qū)ο蟪绦虻奶攸c(diǎn)對軟件測試的影響:單元和集成測試策略必須有很大的改變測試用例的設(shè)計(jì)必須考慮OO軟件的特征2面向?qū)ο鬁y試策略信息隱蔽對測試的影響面向?qū)ο蟪绦虻奶攸c(diǎn)38
(1).OO的單元測試一個(gè)類可以包含一組不同的操作,而一個(gè)特定的操作也可能存在于一組不同的類中。不再孤立地測試單個(gè)操作(這是傳統(tǒng)單元測試的視角)OO軟件的類測試等價(jià)于傳統(tǒng)的單元測試.傳統(tǒng)軟件的單元測試關(guān)注算法細(xì)節(jié)和模塊接口間流動(dòng)的數(shù)據(jù)OO軟件的類測試是由封裝在類中的操作和類的狀態(tài)行為驅(qū)動(dòng)的單元概念的變化—封裝的類或?qū)ο笞鳛樽钚〉目蓽y試單位(1).OO的單元測試一個(gè)類可以包含一組不同的操作,而一39(2).OO的集成測試
OO軟件沒有層次的控制結(jié)構(gòu),傳統(tǒng)的自頂向下和自底向上的集成策略沒有意義.OO軟件的集成兩種策略:基于線程的測試(thread-basedtesting)
集成響應(yīng)系統(tǒng)的一個(gè)輸入或事件所需的一組類,每個(gè)線程被個(gè)體地集成和測試,通過回歸測試保證沒有副作用產(chǎn)生;基于使用的測試(use-basedtesting)通過測試幾乎不使用服務(wù)器的類(獨(dú)立類)來開始系統(tǒng)的構(gòu)造,測試完獨(dú)立類后,使用獨(dú)立類按層逐步完成依賴類的測試直至完整的系統(tǒng)被構(gòu)造;(2).OO的集成測試OO軟件沒有層次的40
(3).OO的確認(rèn)測試在確認(rèn)和系統(tǒng)測試層次,類連接的細(xì)節(jié)消失.和傳統(tǒng)的確認(rèn)測試一樣,OO軟件的確認(rèn)關(guān)注用戶可見的動(dòng)作和用戶可識別的系統(tǒng)輸出.為輔助確認(rèn)測試的導(dǎo)出,應(yīng)利用分析模型中的用例圖提供的場景來提高交互需求中發(fā)現(xiàn)錯(cuò)誤的可能性(3).OO的確認(rèn)測試在確認(rèn)和系統(tǒng)測試層次,類連接的細(xì)節(jié)413
OO軟件的測試用例設(shè)計(jì)每個(gè)測試用例應(yīng)被唯一標(biāo)識,并應(yīng)顯式地和與被測試類相關(guān)聯(lián)測試的目的應(yīng)被陳述對每個(gè)測試應(yīng)開發(fā)一組測試步驟,包括:將被測試對象的一組特定狀態(tài)將被作為測試的結(jié)果使用的一組消息和操作當(dāng)對象被測試時(shí)可能產(chǎn)生的一組異常一組外部條件(進(jìn)行測試必須的軟件外部環(huán)境的變化)將輔助理解或?qū)崿F(xiàn)測試的補(bǔ)充信息OO軟件的測試用例設(shè)計(jì)還處于成型期.Binder,R.V.在“EssaysonObject-OrientedSoftwareEngineering”中建議了對OO軟件的測試用例設(shè)計(jì)的整體方法:3OO軟件的測試用例設(shè)計(jì)每個(gè)測試用例應(yīng)被唯一標(biāo)識,并應(yīng)顯42(1).OO概念的測試用例設(shè)計(jì)的含義封裝可能會成為測試的障礙
測試需要報(bào)告對象的具體和抽象狀態(tài),而封裝使得對象的狀態(tài)快照難于獲得。繼承,特別是多繼承使測試復(fù)雜化(1).OO概念的測試用例設(shè)計(jì)的含義封裝可能會成為測試43子類繼承或重載的父類成員函數(shù)的測試問題繼承的成員函數(shù)是否都不需要測試?對父類中已經(jīng)測試過的成員函數(shù),兩種情況需要在子類中重新測試:繼承的成員函數(shù)在子類中做了改動(dòng);成員函數(shù)調(diào)用了改動(dòng)過的成員函數(shù)的部分;例如:
父類Base有兩個(gè)成員函數(shù)Inherited()和Redefined(),子類Derived只對Redefined()做了改動(dòng).Derived∷Redefined()—需要重新測試Derived∷Inherited()—如果它調(diào)用了Redefined()的語句,則需重新測試,否則不必子類繼承或重載的父類成員函數(shù)的測試問題繼承的成員函數(shù)是否都不44子類繼承或重載的父類成員函數(shù)的測試問題對父類的測試是否能夠照搬到子類?
上例中:
Base∷Redefined()和Derived∷Redefined()已是兩個(gè)不同的成員函數(shù),照理應(yīng)對Derived∷Redefined()重新進(jìn)行測試分析,設(shè)計(jì)測試用例,但由于它們的相似性,只需在Base∷Redefined()的測試要求和測試用例上添加對Derived∷Redefined()的新的測試要求和增補(bǔ)相應(yīng)的測試用例.子類繼承或重載的父類成員函數(shù)的測試問題對父類的測試是否能夠照45(2).傳統(tǒng)測試用例設(shè)計(jì)方法的可用性白盒測試方法可用于類定義的操作的測試對具有簡潔結(jié)構(gòu)的類,白盒測試最好用于類級別的測試黑盒測試方法也適合OO系統(tǒng)(2).傳統(tǒng)測試用例設(shè)計(jì)方法的可用性白盒測試方法可用于464測試單個(gè)類的方法(1)隨機(jī)測試?yán)?銀行系統(tǒng)的account(帳戶)類有下列操作:open(打開)setup(建立)deposit(存款)withdraw(取款)balance(余額)summarize(清單)creditLimit(透支限額)close(關(guān)閉)系統(tǒng)對操作的限制:必須在應(yīng)用其它操作之前先打開帳戶,在完成了全部操作之后才能關(guān)閉帳戶;……在限制下還是存在操作的許多排列4測試單個(gè)類的方法(1)隨機(jī)測試?yán)?銀行系統(tǒng)的accoun47一個(gè)account類實(shí)例的最小行為歷史包括下列操作:open.setup.deposit.withdraw.close
account類的最小測試序列大量的其它行為可能在下面序列中發(fā)生:open.setup.deposit.[deposit|withdraw|balance|summarize|creditLimit]n.withdraw.close
一系列不同的操作序列可以隨機(jī)地產(chǎn)生,例如:測試用例r1:open.setup.deposit.deposit.balance.
summarize.creditLimit.withdraw.close
測試用例r2:open.setup.deposit.withdraw.deposit.balance.creditLimit.withdraw.close這些和其它的隨機(jī)順序測試被進(jìn)行,以測試不同的類實(shí)例的生存歷史.一個(gè)account類實(shí)例的最小行為歷史包括下列操作:48測試單個(gè)類的方法(2)劃分測試(partitiontesting)
與測試傳統(tǒng)軟件時(shí)采用的等價(jià)類劃分方法類似.
劃分類別的方法:基于狀態(tài)的劃分基于屬性的劃分基于功能的劃分測試單個(gè)類的方法(2)劃分測試(partitiontest49基于狀態(tài)的劃分根據(jù)類操作改變類狀態(tài)的能力來劃分類操作.例:銀行系統(tǒng)的account(帳戶)類
狀態(tài)操作包括:deposit(存款)withdraw(取款)
非狀態(tài)操作包括:balance(余額)summarize(清單)creditLimit(透支限額)測試用例p1(測試改變狀態(tài)的操作):
open.setup.deposit.deposit..withdraw.close
測試用例p2(測試不改變狀態(tài)的操作,在最小測試序列中的操作除外):open.setup.deposit.summarize.creditLimit.withdraw.close基于狀態(tài)的劃分根據(jù)類操作改變類狀態(tài)的能力來劃分類操作.例50基于屬性的劃分根據(jù)類操作使用的屬性來劃分類操作.例:銀行系統(tǒng)的account(帳戶)類可根據(jù)balance屬性來定義劃分,把操作劃分為三個(gè)類別:使用balance的操作修改balance的操作不使用也不修改balance的操作
為上述每個(gè)類別設(shè)計(jì)測試序列基于屬性的劃分根據(jù)類操作使用的屬性來劃分類操作.例:銀行51基于功能的劃分根據(jù)類操作所完成的功能來劃分類操作.例:銀行系統(tǒng)的account(帳戶)類中的操作可劃分為三個(gè)類別:初始化操作(open,setup)計(jì)算操作(deposit,withdraw)查詢操作(balance,summarize,creditLimit)終止操作(close)
為上述每個(gè)類別設(shè)計(jì)測試序列基于功能的劃分根據(jù)類操作所完成的功能來劃分類操作.例:銀52測試類和方法(3)基于故障的測試(fault_basedtesting)與測試傳統(tǒng)軟件時(shí)采用的錯(cuò)誤推測法類似.測試類和方法(3)基于故障的測試(fault_basedt53
5面向?qū)ο蟮募蓽y試
(類間測試用例的設(shè)計(jì))在OO系統(tǒng)的集成開始時(shí),開始類間的協(xié)作測試.和單個(gè)類的測試一樣,類協(xié)作測試可通過隨機(jī)和劃分方法以及基于場景的測試和行為測試來完成.5面向?qū)ο蟮募蓽y試
(類間測試用例的設(shè)計(jì))54
ATMBank銀行系統(tǒng)的類協(xié)作圖ATMUserInterfaceAccountCashierverifyAcctverifyPINverifyPolicywithdrawReqdepositReqacctInfoReqcardInsertedpassworddepositwithdrawaccentStatusterminatevalidPINvalidAcctcreditLimitaccentTypebalancewithdrawdepositcloseopenAcctinitialDepositauthorizeCarddeuthorizecloseAcctValidationInfoverifyStatusdepositStatusdispenseCaseprintAccentStatreadCardInfogetCaseAmntATMBank銀行系統(tǒng)的類協(xié)作圖ATMAccoun55
OO集成測試方法(1)多個(gè)類測試Kirani,S.andW.T.Tsai,在“SpecificationandVerificationofObject-OrientedPrograms”中建議了下面的步驟序列以生成多個(gè)類隨機(jī)測試用例:1.對每個(gè)客戶類,使用類操作列表來生成一系列隨機(jī)測試序列,這些操作發(fā)送消息給服務(wù)器類;2.對生成的每個(gè)消息,確定在服務(wù)器對象中的協(xié)作者類和對應(yīng)的操作;3.對服務(wù)器對象中的每個(gè)操作(已經(jīng)被來自客戶對象的消息調(diào)用),確定傳遞的消息;4.對每個(gè)消息,確定下一層被調(diào)用的操作,并把這些操作結(jié)合進(jìn)測試序列中.OO集成測試方法(1)多個(gè)類測試56
ATMBank銀行系統(tǒng)的類協(xié)作圖ATMUserInterfaceAccountCashierverifyAcctverifyPINverifyPolicywithdrawReqdepositReqacctInfoReqcardInsertedpassworddepositwithdrawaccentStatusterminatevalidPINvalidAcctcredi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)生心理健康教育與感恩教育教案范文
- 課時(shí)1 七年級 Unit 1 2025年中考英語(仁愛版)一輪復(fù)習(xí)基礎(chǔ)練(含答案)
- 課堂表揚(yáng)的藝術(shù)教師經(jīng)驗(yàn)分享
- 2024至2030年中國地軌行走式收放線裝置數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國疊氮化鈉數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國醫(yī)療垃圾焚燒爐數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國六開雙色雙面印刷機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024年重慶市初中學(xué)業(yè)水平暨高中招生考試語文試題(A卷)含答案
- 2024年中國立式管道式離心泵市場調(diào)查研究報(bào)告
- 2024年中國油炸牛排模型市場調(diào)查研究報(bào)告
- 世界文化史復(fù)習(xí)筆記
- 爐頭設(shè)備安全操作規(guī)定
- 小班社會我的老師ppt
- 隧道巖溶處治關(guān)鍵技術(shù)
- 隔代教育與親子教育課件
- 哺乳期保健與指導(dǎo)-哺乳期保?。笅氡=≌n件)
- 口腔頜面部損傷-口腔頜面部硬組織損傷(口腔頜面外科課件)
- 關(guān)于生活中物理的課件
- 2023數(shù)據(jù)安全專項(xiàng)考核試題及答案
- 麥克斯韋速率分布律的推導(dǎo)與驗(yàn)證
- 互聯(lián)網(wǎng)開放平臺解決方案
評論
0/150
提交評論