




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 面向?qū)ο髮?shí)現(xiàn)主要包括兩項(xiàng)工作:第面向?qū)ο髮?shí)現(xiàn)主要包括兩項(xiàng)工作:第一項(xiàng)工作是把面向?qū)ο笤O(shè)計(jì)結(jié)果,翻譯成一項(xiàng)工作是把面向?qū)ο笤O(shè)計(jì)結(jié)果,翻譯成用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的面向?qū)ο蟪绦?;用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的面向?qū)ο蟪绦?;第二?xiàng)工作是測(cè)試并調(diào)試面向?qū)ο蟮某绦?。第二?xiàng)工作是測(cè)試并調(diào)試面向?qū)ο蟮某绦颉?面向?qū)ο蟪绦虻馁|(zhì)量基本上由面向?qū)γ嫦驅(qū)ο蟪绦虻馁|(zhì)量基本上由面向?qū)ο笤O(shè)計(jì)的質(zhì)量決定,但是,所采用的程序象設(shè)計(jì)的質(zhì)量決定,但是,所采用的程序設(shè)計(jì)語(yǔ)言的特點(diǎn)和程序設(shè)計(jì)風(fēng)格也將對(duì)程設(shè)計(jì)語(yǔ)言的特點(diǎn)和程序設(shè)計(jì)風(fēng)格也將對(duì)程序的可靠性、可重用性和可維護(hù)性產(chǎn)生深序的可靠性、可重用性和可維護(hù)性產(chǎn)生深遠(yuǎn)的影響。遠(yuǎn)的影響。 目前,
2、軟件測(cè)試仍然是保證軟件可靠目前,軟件測(cè)試仍然是保證軟件可靠性的主要措施,對(duì)于面向?qū)ο蟮能浖?lái)說(shuō),性的主要措施,對(duì)于面向?qū)ο蟮能浖?lái)說(shuō),情況也是如此。面向?qū)ο鬁y(cè)試的目標(biāo),也情況也是如此。面向?qū)ο鬁y(cè)試的目標(biāo),也是用盡可能低的測(cè)試成本和盡可能少的測(cè)是用盡可能低的測(cè)試成本和盡可能少的測(cè)試方案,發(fā)現(xiàn)盡可能多的錯(cuò)誤。試方案,發(fā)現(xiàn)盡可能多的錯(cuò)誤。 但是,面向?qū)ο蟪绦蛑刑赜械姆庋b、但是,面向?qū)ο蟪绦蛑刑赜械姆庋b、繼承和多態(tài)等機(jī)制,也給面向?qū)ο鬁y(cè)試帶繼承和多態(tài)等機(jī)制,也給面向?qū)ο鬁y(cè)試帶來(lái)一些新特點(diǎn),增加了測(cè)試和調(diào)試的難度。來(lái)一些新特點(diǎn),增加了測(cè)試和調(diào)試的難度。我們必須通過(guò)實(shí)踐,努力探索適合于面向我們必須通過(guò)實(shí)踐
3、,努力探索適合于面向?qū)ο筌浖母玫臏y(cè)試方法。對(duì)象軟件的更好的測(cè)試方法。 程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言9.1程序設(shè)計(jì)風(fēng)格程序設(shè)計(jì)風(fēng)格9.2測(cè)試策略測(cè)試策略9.3設(shè)計(jì)測(cè)試用例設(shè)計(jì)測(cè)試用例9.4小小 結(jié)結(jié)9.5 9.1.1 9.1.1 面向?qū)ο笳Z(yǔ)言的優(yōu)點(diǎn)面向?qū)ο笳Z(yǔ)言的優(yōu)點(diǎn) 選擇編程語(yǔ)言的關(guān)鍵因素,是語(yǔ)言的選擇編程語(yǔ)言的關(guān)鍵因素,是語(yǔ)言的一致的表達(dá)能力、可重用性及可維護(hù)性。一致的表達(dá)能力、可重用性及可維護(hù)性。從面向?qū)ο笥^點(diǎn)看來(lái),能夠更完整、更準(zhǔn)從面向?qū)ο笥^點(diǎn)看來(lái),能夠更完整、更準(zhǔn)確地表達(dá)問(wèn)題域語(yǔ)義的面向?qū)ο笳Z(yǔ)言的語(yǔ)確地表達(dá)問(wèn)題域語(yǔ)義的面向?qū)ο笳Z(yǔ)言的語(yǔ)法是非常重要的,因?yàn)檫@會(huì)帶來(lái)下述幾個(gè)法是非常重要的,因
4、為這會(huì)帶來(lái)下述幾個(gè)重要優(yōu)點(diǎn)。重要優(yōu)點(diǎn)。 1. 1. 一致的表示方法一致的表示方法 2. 2. 可重用性可重用性 3. 3. 可維護(hù)性可維護(hù)性 9.1.2 9.1.2 面向?qū)ο笳Z(yǔ)言的技術(shù)面向?qū)ο笳Z(yǔ)言的技術(shù)特點(diǎn)特點(diǎn) 一般說(shuō)來(lái),純面向?qū)ο笳Z(yǔ)言著重支持一般說(shuō)來(lái),純面向?qū)ο笳Z(yǔ)言著重支持面向?qū)ο蠓椒ㄑ芯亢涂焖僭偷膶?shí)現(xiàn),而面向?qū)ο蠓椒ㄑ芯亢涂焖僭偷膶?shí)現(xiàn),而混合型面向?qū)ο笳Z(yǔ)言的目標(biāo)則是提高運(yùn)行混合型面向?qū)ο笳Z(yǔ)言的目標(biāo)則是提高運(yùn)行速度和使傳統(tǒng)程序員容易接受面向?qū)ο笏妓俣群褪箓鹘y(tǒng)程序員容易接受面向?qū)ο笏枷?。想?成熟的面向?qū)ο笳Z(yǔ)文通常都提供豐富成熟的面向?qū)ο笳Z(yǔ)文通常都提供豐富的類(lèi)庫(kù)和強(qiáng)有力的開(kāi)發(fā)環(huán)境。的類(lèi)庫(kù)和
5、強(qiáng)有力的開(kāi)發(fā)環(huán)境。 下面介紹在選擇面向?qū)ο笳Z(yǔ)言時(shí)應(yīng)該下面介紹在選擇面向?qū)ο笳Z(yǔ)言時(shí)應(yīng)該著重考察的一些技術(shù)特點(diǎn)。著重考察的一些技術(shù)特點(diǎn)。 1. 1. 支持類(lèi)與對(duì)象概念的機(jī)制支持類(lèi)與對(duì)象概念的機(jī)制 2. 2. 實(shí)現(xiàn)整體實(shí)現(xiàn)整體部分結(jié)構(gòu)的機(jī)制部分結(jié)構(gòu)的機(jī)制 3. 3. 實(shí)現(xiàn)一般實(shí)現(xiàn)一般特殊結(jié)構(gòu)的機(jī)制特殊結(jié)構(gòu)的機(jī)制 4. 4. 實(shí)現(xiàn)屬性和服務(wù)的機(jī)制實(shí)現(xiàn)屬性和服務(wù)的機(jī)制 5. 5. 類(lèi)型檢查類(lèi)型檢查 6. 6. 類(lèi)庫(kù)類(lèi)庫(kù) 7. 7. 效率效率 8. 8. 持久保存對(duì)象持久保存對(duì)象 9. 9. 參數(shù)化類(lèi)參數(shù)化類(lèi) 10. 10. 開(kāi)發(fā)環(huán)境開(kāi)發(fā)環(huán)境 9.1.3 9.1.3 選擇面向?qū)ο笳Z(yǔ)言選擇面向?qū)ο笳Z(yǔ)言 開(kāi)發(fā)
6、人員在選擇面向?qū)ο笳Z(yǔ)言時(shí),還開(kāi)發(fā)人員在選擇面向?qū)ο笳Z(yǔ)言時(shí),還應(yīng)該著重考慮以下一些實(shí)際因素。應(yīng)該著重考慮以下一些實(shí)際因素。 1. 1. 將來(lái)能否占主導(dǎo)地位將來(lái)能否占主導(dǎo)地位 2. 2. 可重用性可重用性 3. 3. 類(lèi)庫(kù)和開(kāi)發(fā)環(huán)境類(lèi)庫(kù)和開(kāi)發(fā)環(huán)境 4. 4. 其他因素其他因素 良好的程序設(shè)計(jì)風(fēng)格對(duì)面向?qū)ο髮?shí)現(xiàn)良好的程序設(shè)計(jì)風(fēng)格對(duì)面向?qū)ο髮?shí)現(xiàn)來(lái)說(shuō)尤其重要,不僅能明顯減少維護(hù)或擴(kuò)來(lái)說(shuō)尤其重要,不僅能明顯減少維護(hù)或擴(kuò)充的開(kāi)銷(xiāo),而且有助于在新項(xiàng)目中重用已充的開(kāi)銷(xiāo),而且有助于在新項(xiàng)目中重用已有的程序代碼。有的程序代碼。 良好的面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格,既包良好的面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格,既包括傳統(tǒng)的程序設(shè)計(jì)風(fēng)格準(zhǔn)則
7、,也包括為適括傳統(tǒng)的程序設(shè)計(jì)風(fēng)格準(zhǔn)則,也包括為適應(yīng)面向?qū)ο蠓椒ㄋ赜械母拍顟?yīng)面向?qū)ο蠓椒ㄋ赜械母拍? (例如,繼承例如,繼承性性) )而必須遵循的一些新準(zhǔn)則。而必須遵循的一些新準(zhǔn)則。 9.2.1 9.2.1 提高可重用性提高可重用性 面向?qū)ο蠓椒ǖ囊粋€(gè)主要目標(biāo),就是面向?qū)ο蠓椒ǖ囊粋€(gè)主要目標(biāo),就是提高軟件的可重用性。軟件重用有多個(gè)層提高軟件的可重用性。軟件重用有多個(gè)層次,在編碼階段主要考慮代碼重用的問(wèn)題。次,在編碼階段主要考慮代碼重用的問(wèn)題。 一般說(shuō)來(lái),代碼重用有兩種:一種是一般說(shuō)來(lái),代碼重用有兩種:一種是本項(xiàng)目?jī)?nèi)的代碼重用,另一種是新項(xiàng)目重本項(xiàng)目?jī)?nèi)的代碼重用,另一種是新項(xiàng)目重用舊項(xiàng)目的代碼
8、。內(nèi)部重用主要是找出設(shè)用舊項(xiàng)目的代碼。內(nèi)部重用主要是找出設(shè)計(jì)中相同或相似的部分,然后利用繼承機(jī)計(jì)中相同或相似的部分,然后利用繼承機(jī)制共享它們。制共享它們。 為做到外部重用為做到外部重用( (即一個(gè)項(xiàng)目重用另一即一個(gè)項(xiàng)目重用另一項(xiàng)目的代碼項(xiàng)目的代碼) ),必須有長(zhǎng)遠(yuǎn)眼光,需要反復(fù),必須有長(zhǎng)遠(yuǎn)眼光,需要反復(fù)考慮精心設(shè)計(jì)。雖然為實(shí)現(xiàn)外部重用所需考慮精心設(shè)計(jì)。雖然為實(shí)現(xiàn)外部重用所需要考慮的面,比為實(shí)現(xiàn)內(nèi)部重用而需要考要考慮的面,比為實(shí)現(xiàn)內(nèi)部重用而需要考慮的面更廣,但是,有助于實(shí)現(xiàn)這兩類(lèi)重慮的面更廣,但是,有助于實(shí)現(xiàn)這兩類(lèi)重用的程序設(shè)計(jì)準(zhǔn)則卻是相同的。下面講述用的程序設(shè)計(jì)準(zhǔn)則卻是相同的。下面講述主要的準(zhǔn)
9、則。主要的準(zhǔn)則。 1. 1. 提高方法的內(nèi)聚提高方法的內(nèi)聚 2. 2. 減小方法的規(guī)模減小方法的規(guī)模 3. 3. 保持方法的一致性保持方法的一致性 4. 4. 把策略與實(shí)現(xiàn)分開(kāi)把策略與實(shí)現(xiàn)分開(kāi) 為提高可重用性,在編程時(shí)不要把策為提高可重用性,在編程時(shí)不要把策略和實(shí)現(xiàn)放在同一個(gè)方法中,應(yīng)該把算法略和實(shí)現(xiàn)放在同一個(gè)方法中,應(yīng)該把算法的核心部分放在一個(gè)單獨(dú)的具體實(shí)現(xiàn)方法的核心部分放在一個(gè)單獨(dú)的具體實(shí)現(xiàn)方法中。為此需要從策略方法中提取出具體參中。為此需要從策略方法中提取出具體參數(shù),作為調(diào)用實(shí)現(xiàn)方法的變?cè)?。?shù),作為調(diào)用實(shí)現(xiàn)方法的變?cè)?5.5.全面覆蓋全面覆蓋 6.6.盡量不使用全局信息盡量不使用全局信
10、息 7.7.利用繼承機(jī)制利用繼承機(jī)制 在面向?qū)ο蟪绦蛑?,使用繼承機(jī)制是在面向?qū)ο蟪绦蛑?,使用繼承機(jī)制是實(shí)現(xiàn)共享和提高重用程度的主要途徑。實(shí)現(xiàn)共享和提高重用程度的主要途徑。 (1) (1) 調(diào)用子過(guò)程調(diào)用子過(guò)程 (2) (2) 分解因子分解因子 (3) (3) 使用委托使用委托 (4) (4) 把代碼封裝在類(lèi)中把代碼封裝在類(lèi)中圖圖9.1 9.1 通過(guò)調(diào)用公用方通過(guò)調(diào)用公用方法法實(shí)現(xiàn)代碼重用實(shí)現(xiàn)代碼重用圖圖9.2 9.2 通過(guò)因子分解實(shí)現(xiàn)代碼重通過(guò)因子分解實(shí)現(xiàn)代碼重用用 9.2.2 9.2.2 提高可擴(kuò)充性提高可擴(kuò)充性 上一小節(jié)所述的提高可重用性的準(zhǔn)則,上一小節(jié)所述的提高可重用性的準(zhǔn)則,也能提高程
11、序的可擴(kuò)充性。此外,下列的也能提高程序的可擴(kuò)充性。此外,下列的面向?qū)ο蟪绦蛟O(shè)計(jì)準(zhǔn)則也有助于提高可擴(kuò)面向?qū)ο蟪绦蛟O(shè)計(jì)準(zhǔn)則也有助于提高可擴(kuò)充性。充性。 1. 1. 封裝實(shí)現(xiàn)策略封裝實(shí)現(xiàn)策略 2. 2. 不要用一個(gè)方法遍歷多條關(guān)聯(lián)鏈不要用一個(gè)方法遍歷多條關(guān)聯(lián)鏈 3. 3. 避免使用多分支語(yǔ)句避免使用多分支語(yǔ)句 4. 4. 精心確定公有方法精心確定公有方法 9.2.3 9.2.3 提高健壯性提高健壯性 程序員在編寫(xiě)實(shí)現(xiàn)方法的代碼時(shí),既程序員在編寫(xiě)實(shí)現(xiàn)方法的代碼時(shí),既應(yīng)該考慮效率,也應(yīng)該考慮健壯性。通常應(yīng)該考慮效率,也應(yīng)該考慮健壯性。通常需要在健壯性與效率之間做出適當(dāng)?shù)恼壑?。需要在健壯性與效率之間做出適
12、當(dāng)?shù)恼壑?。必須認(rèn)識(shí)到,對(duì)于任何一個(gè)實(shí)用軟件來(lái)說(shuō),必須認(rèn)識(shí)到,對(duì)于任何一個(gè)實(shí)用軟件來(lái)說(shuō),健壯性都是不可忽略的質(zhì)量指標(biāo)。為提高健壯性都是不可忽略的質(zhì)量指標(biāo)。為提高健壯性應(yīng)該遵守以下幾條準(zhǔn)則。健壯性應(yīng)該遵守以下幾條準(zhǔn)則。 1. 1. 預(yù)防用戶的操作錯(cuò)誤預(yù)防用戶的操作錯(cuò)誤 2. 2. 檢查參數(shù)的合法性檢查參數(shù)的合法性 3. 3. 不要預(yù)先確定限制條件不要預(yù)先確定限制條件 4. 4. 先測(cè)試后優(yōu)化先測(cè)試后優(yōu)化 測(cè)試計(jì)算機(jī)軟件的經(jīng)典策略是,從測(cè)試計(jì)算機(jī)軟件的經(jīng)典策略是,從“小型測(cè)試小型測(cè)試”開(kāi)始,逐步過(guò)渡到開(kāi)始,逐步過(guò)渡到“大型測(cè)大型測(cè)試試”,用軟件測(cè)試的專(zhuān)業(yè)術(shù)語(yǔ)來(lái)說(shuō),就是,用軟件測(cè)試的專(zhuān)業(yè)術(shù)語(yǔ)來(lái)說(shuō),就是
13、從單元測(cè)試開(kāi)始,逐步進(jìn)入集成測(cè)試,最從單元測(cè)試開(kāi)始,逐步進(jìn)入集成測(cè)試,最后進(jìn)行確認(rèn)測(cè)試和系統(tǒng)測(cè)試。后進(jìn)行確認(rèn)測(cè)試和系統(tǒng)測(cè)試。對(duì)于傳統(tǒng)的軟件系統(tǒng)來(lái)說(shuō),單元測(cè)試集中對(duì)于傳統(tǒng)的軟件系統(tǒng)來(lái)說(shuō),單元測(cè)試集中測(cè)試最小的可編譯的程序單元測(cè)試最小的可編譯的程序單元( (過(guò)程模塊過(guò)程模塊) ),一旦把這些單元都測(cè)試完之后,就把它們一旦把這些單元都測(cè)試完之后,就把它們集成到程序結(jié)構(gòu)中去,與此同時(shí)應(yīng)該進(jìn)行集成到程序結(jié)構(gòu)中去,與此同時(shí)應(yīng)該進(jìn)行一系列的回歸測(cè)試,以發(fā)現(xiàn)模塊接口錯(cuò)誤一系列的回歸測(cè)試,以發(fā)現(xiàn)模塊接口錯(cuò)誤和新單元加入到程序中所帶來(lái)的副作用,和新單元加入到程序中所帶來(lái)的副作用, 最后,把系統(tǒng)作為一個(gè)整體來(lái)測(cè)試,
14、最后,把系統(tǒng)作為一個(gè)整體來(lái)測(cè)試,以發(fā)現(xiàn)軟件需求中的錯(cuò)誤。測(cè)試面向?qū)ο笠园l(fā)現(xiàn)軟件需求中的錯(cuò)誤。測(cè)試面向?qū)ο筌浖牟呗?,與上述策略基本相同,但也軟件的策略,與上述策略基本相同,但也有許多新特點(diǎn)。有許多新特點(diǎn)。 9.3.1 9.3.1 面向?qū)ο蟮膯卧獪y(cè)試面向?qū)ο蟮膯卧獪y(cè)試 最小的可測(cè)試單元是封裝起來(lái)的類(lèi)和最小的可測(cè)試單元是封裝起來(lái)的類(lèi)和對(duì)象。一個(gè)類(lèi)可以包含一組不同的操作,對(duì)象。一個(gè)類(lèi)可以包含一組不同的操作,而一個(gè)特定的操作也可能存在于一組不同而一個(gè)特定的操作也可能存在于一組不同的類(lèi)中。因此,對(duì)于面向?qū)ο蟮能浖?lái)說(shuō),的類(lèi)中。因此,對(duì)于面向?qū)ο蟮能浖?lái)說(shuō),單元測(cè)試的含義發(fā)生了很大變化。單元測(cè)試的含義發(fā)生
15、了很大變化。 不能再孤立地測(cè)試單個(gè)操作,而應(yīng)該不能再孤立地測(cè)試單個(gè)操作,而應(yīng)該把操作作為類(lèi)的一部分來(lái)測(cè)試。把操作作為類(lèi)的一部分來(lái)測(cè)試。 9.3.2 9.3.2 面向?qū)ο蟮募蓽y(cè)試面向?qū)ο蟮募蓽y(cè)試 面向?qū)ο筌浖募蓽y(cè)試有兩種不同面向?qū)ο筌浖募蓽y(cè)試有兩種不同的策略。的策略。是基于線程的測(cè)試是基于線程的測(cè)試(thread-(thread-based testing)based testing),這種策略把響應(yīng)系統(tǒng)的,這種策略把響應(yīng)系統(tǒng)的一個(gè)輸入或一個(gè)事件所需要的一組類(lèi)集成一個(gè)輸入或一個(gè)事件所需要的一組類(lèi)集成起來(lái)。分別集成并測(cè)試每個(gè)線程,同時(shí)應(yīng)起來(lái)。分別集成并測(cè)試每個(gè)線程,同時(shí)應(yīng)用回歸測(cè)試以保
16、證沒(méi)有產(chǎn)生副作用。用回歸測(cè)試以保證沒(méi)有產(chǎn)生副作用。 是基于使用的測(cè)試是基于使用的測(cè)試(use-based (use-based testing)testing),這種方法首先測(cè)試幾乎不使用,這種方法首先測(cè)試幾乎不使用服務(wù)器類(lèi)的那些類(lèi)服務(wù)器類(lèi)的那些類(lèi)( (稱(chēng)為獨(dú)立類(lèi)稱(chēng)為獨(dú)立類(lèi)) ),把獨(dú)立,把獨(dú)立類(lèi)都測(cè)試完之后,接下來(lái)測(cè)試使用獨(dú)立類(lèi)類(lèi)都測(cè)試完之后,接下來(lái)測(cè)試使用獨(dú)立類(lèi)的下一個(gè)層次的類(lèi)的下一個(gè)層次的類(lèi)( (稱(chēng)為依賴(lài)類(lèi)稱(chēng)為依賴(lài)類(lèi)) )。對(duì)依賴(lài)。對(duì)依賴(lài)類(lèi)的測(cè)試一個(gè)層次一個(gè)層次地持續(xù)進(jìn)行下類(lèi)的測(cè)試一個(gè)層次一個(gè)層次地持續(xù)進(jìn)行下去,直至把整個(gè)軟件系統(tǒng)構(gòu)造完為止。去,直至把整個(gè)軟件系統(tǒng)構(gòu)造完為止。 集群測(cè)試集
17、群測(cè)試(cluster testing)(cluster testing)是面向?qū)κ敲嫦驅(qū)ο筌浖蓽y(cè)試的一個(gè)步驟。在這個(gè)測(cè)試象軟件集成測(cè)試的一個(gè)步驟。在這個(gè)測(cè)試步驟中,用精心設(shè)計(jì)的測(cè)試用例檢查一群步驟中,用精心設(shè)計(jì)的測(cè)試用例檢查一群相互協(xié)作的類(lèi)相互協(xié)作的類(lèi)( (通過(guò)研究對(duì)象模型可以確定通過(guò)研究對(duì)象模型可以確定協(xié)作類(lèi)協(xié)作類(lèi)) ),這些測(cè)試用例力圖發(fā)現(xiàn)協(xié)作錯(cuò)誤。,這些測(cè)試用例力圖發(fā)現(xiàn)協(xié)作錯(cuò)誤。 9.3.3 9.3.3 面向?qū)ο蟮拇_認(rèn)測(cè)試面向?qū)ο蟮拇_認(rèn)測(cè)試 在確認(rèn)測(cè)試或系統(tǒng)測(cè)試層次,不再考在確認(rèn)測(cè)試或系統(tǒng)測(cè)試層次,不再考慮類(lèi)之間相互連接的細(xì)節(jié)。和傳統(tǒng)的確認(rèn)慮類(lèi)之間相互連接的細(xì)節(jié)。和傳統(tǒng)的確認(rèn)測(cè)試一
18、樣,面向?qū)ο筌浖拇_認(rèn)測(cè)試也集測(cè)試一樣,面向?qū)ο筌浖拇_認(rèn)測(cè)試也集中檢查用戶可見(jiàn)的動(dòng)作和用戶可識(shí)別的輸中檢查用戶可見(jiàn)的動(dòng)作和用戶可識(shí)別的輸出。出。 為了導(dǎo)出確認(rèn)測(cè)試用例,測(cè)試人員應(yīng)為了導(dǎo)出確認(rèn)測(cè)試用例,測(cè)試人員應(yīng)該認(rèn)真研究動(dòng)態(tài)模型和描述系統(tǒng)行為的腳該認(rèn)真研究動(dòng)態(tài)模型和描述系統(tǒng)行為的腳本,以確定最可能發(fā)現(xiàn)用戶交互需求錯(cuò)誤本,以確定最可能發(fā)現(xiàn)用戶交互需求錯(cuò)誤的情景。的情景。 當(dāng)然,傳統(tǒng)的黑盒測(cè)試方法當(dāng)然,傳統(tǒng)的黑盒測(cè)試方法( (見(jiàn)本書(shū)第見(jiàn)本書(shū)第5 5章章) )也可用于設(shè)計(jì)確認(rèn)測(cè)試用例,但是,也可用于設(shè)計(jì)確認(rèn)測(cè)試用例,但是,對(duì)于面向?qū)ο蟮能浖?lái)說(shuō),主要還是根據(jù)對(duì)于面向?qū)ο蟮能浖?lái)說(shuō),主要還是根據(jù)動(dòng)態(tài)
19、模型和描述系統(tǒng)行為的腳本來(lái)設(shè)計(jì)確動(dòng)態(tài)模型和描述系統(tǒng)行為的腳本來(lái)設(shè)計(jì)確認(rèn)測(cè)試用例。認(rèn)測(cè)試用例。 為了導(dǎo)出確認(rèn)測(cè)試用例,測(cè)試人員應(yīng)為了導(dǎo)出確認(rèn)測(cè)試用例,測(cè)試人員應(yīng)該認(rèn)真研究動(dòng)態(tài)模型和描述系統(tǒng)行為的腳該認(rèn)真研究動(dòng)態(tài)模型和描述系統(tǒng)行為的腳本,以確定最可能發(fā)現(xiàn)用戶交互需求錯(cuò)誤本,以確定最可能發(fā)現(xiàn)用戶交互需求錯(cuò)誤的情景。的情景。 當(dāng)然,傳統(tǒng)的黑盒測(cè)試方法當(dāng)然,傳統(tǒng)的黑盒測(cè)試方法( (見(jiàn)本書(shū)第見(jiàn)本書(shū)第5 5章章) )也可用于設(shè)計(jì)確認(rèn)測(cè)試用例,但是,也可用于設(shè)計(jì)確認(rèn)測(cè)試用例,但是,對(duì)于面向?qū)ο蟮能浖?lái)說(shuō),主要還是根據(jù)對(duì)于面向?qū)ο蟮能浖?lái)說(shuō),主要還是根據(jù)動(dòng)態(tài)模型和描述系統(tǒng)行為的腳本來(lái)設(shè)計(jì)確動(dòng)態(tài)模型和描述系統(tǒng)行為
20、的腳本來(lái)設(shè)計(jì)確認(rèn)測(cè)試用例。認(rèn)測(cè)試用例。 9.4.1 9.4.1 測(cè)試類(lèi)的方法測(cè)試類(lèi)的方法 前面已經(jīng)講過(guò),軟件測(cè)試從前面已經(jīng)講過(guò),軟件測(cè)試從“小型小型”測(cè)試開(kāi)始,逐步過(guò)渡到測(cè)試開(kāi)始,逐步過(guò)渡到“大型大型”測(cè)試。對(duì)測(cè)試。對(duì)面向?qū)ο蟮能浖?lái)說(shuō),小型測(cè)試著重測(cè)試面向?qū)ο蟮能浖?lái)說(shuō),小型測(cè)試著重測(cè)試單個(gè)類(lèi)和類(lèi)中封裝的方法。單個(gè)類(lèi)和類(lèi)中封裝的方法。 測(cè)試單個(gè)類(lèi)的方法主要有,隨機(jī)測(cè)試、測(cè)試單個(gè)類(lèi)的方法主要有,隨機(jī)測(cè)試、劃分測(cè)試和基于故障的測(cè)試等三種。劃分測(cè)試和基于故障的測(cè)試等三種。 1. 1. 隨機(jī)測(cè)試隨機(jī)測(cè)試 下面通過(guò)銀行應(yīng)用系統(tǒng)的例子,簡(jiǎn)要下面通過(guò)銀行應(yīng)用系統(tǒng)的例子,簡(jiǎn)要地說(shuō)明這種測(cè)試方法。該系統(tǒng)的地說(shuō)
21、明這種測(cè)試方法。該系統(tǒng)的account(account(賬戶賬戶) )類(lèi)有下列操作:類(lèi)有下列操作:open(open(打開(kāi)打開(kāi)) ),setup(setup(建立建立) ),deposit(deposit(存款存款) ),withdraw(withdraw(取款取款) ),balance(balance(余額余額) ),summarize(summarize(清單清單) ),creditLimitcreditLimit( (透支限額透支限額) )和和close(close(關(guān)閉關(guān)閉) )。 上列每個(gè)操作都可以應(yīng)用于上列每個(gè)操作都可以應(yīng)用于accountaccount類(lèi)類(lèi)的實(shí)例,但是,該系統(tǒng)的性
22、質(zhì)也對(duì)操作的的實(shí)例,但是,該系統(tǒng)的性質(zhì)也對(duì)操作的應(yīng)用施加了一些限制,例如,必須在應(yīng)用應(yīng)用施加了一些限制,例如,必須在應(yīng)用其他操作之前先打開(kāi)賬戶,在完成了全部其他操作之前先打開(kāi)賬戶,在完成了全部操作之后才能關(guān)閉賬戶。操作之后才能關(guān)閉賬戶。 即使有這些限制,可做的操作也有許即使有這些限制,可做的操作也有許多種排列方法。一個(gè)多種排列方法。一個(gè)accountaccount類(lèi)實(shí)例的最小類(lèi)實(shí)例的最小行為歷史包括下列操作:行為歷史包括下列操作: opensetupdepositwithdrawcloseopensetupdepositwithdrawclose 這就是對(duì)這就是對(duì)accountaccount類(lèi)
23、的最小測(cè)試序列。類(lèi)的最小測(cè)試序列。但是,在下面的序列中可能發(fā)生許多其他但是,在下面的序列中可能發(fā)生許多其他行為:行為: opensetupdepositopensetupdepositdepositdeposit withdrewwithdrewbalancebalancesummarizesummarize creditLimitcreditLimitn nwithdrawclosewithdrawclose 從上列序列可以隨機(jī)地產(chǎn)生一系列不從上列序列可以隨機(jī)地產(chǎn)生一系列不同的操作序列,例如:同的操作序列,例如:#r1:open#r1:opensetupsetupdepositdeposit
24、depositdepositbalanbalancecesummarizesummarizewithdrawwithdrawcloseclose 測(cè)試用例測(cè)試用例#r2:open#r2:opensetupsetupdepositdepositwithdrawwithdrawdepodepositsitbalancebalancecreditLimitcreditLimitwithdrawwithdrawcloclosese 執(zhí)行上述這些及另外一些隨機(jī)產(chǎn)生的執(zhí)行上述這些及另外一些隨機(jī)產(chǎn)生的測(cè)試用例,可以測(cè)試類(lèi)實(shí)例的不同生存歷測(cè)試用例,可以測(cè)試類(lèi)實(shí)例的不同生存歷史。史。 2. 2. 劃分測(cè)試劃分測(cè)
25、試 與測(cè)試傳統(tǒng)軟件時(shí)采用等價(jià)劃分方法與測(cè)試傳統(tǒng)軟件時(shí)采用等價(jià)劃分方法類(lèi)似,采用劃分測(cè)試類(lèi)似,采用劃分測(cè)試(partition testing)(partition testing)方法可以減少測(cè)試類(lèi)時(shí)所需要的測(cè)試用例方法可以減少測(cè)試類(lèi)時(shí)所需要的測(cè)試用例的數(shù)量。的數(shù)量。 首先,把輸入和輸出分類(lèi),然后設(shè)計(jì)首先,把輸入和輸出分類(lèi),然后設(shè)計(jì)測(cè)試用例以測(cè)試劃分出的每個(gè)類(lèi)別。下面測(cè)試用例以測(cè)試劃分出的每個(gè)類(lèi)別。下面介紹劃分類(lèi)別的方法。介紹劃分類(lèi)別的方法。 (1) (1) 基于狀態(tài)的劃分基于狀態(tài)的劃分 這種方法根據(jù)類(lèi)操作改變類(lèi)狀態(tài)的能這種方法根據(jù)類(lèi)操作改變類(lèi)狀態(tài)的能力來(lái)劃分類(lèi)操作。讓我們?cè)僖淮慰紤]力來(lái)劃分類(lèi)
26、操作。讓我們?cè)僖淮慰紤]accountaccount類(lèi),狀態(tài)操作包括類(lèi),狀態(tài)操作包括depositdeposit和和withdrawwithdraw,而非狀態(tài)操作有,而非狀態(tài)操作有balancebalance,summarizesummarize和和creditLimitcreditLimit。 設(shè)計(jì)測(cè)試用例,以分別測(cè)試改變狀態(tài)設(shè)計(jì)測(cè)試用例,以分別測(cè)試改變狀態(tài)的操作和不改變狀態(tài)的操作。例如,用這的操作和不改變狀態(tài)的操作。例如,用這種方法可以設(shè)計(jì)出如下的測(cè)試用例:種方法可以設(shè)計(jì)出如下的測(cè)試用例: 測(cè)試用例測(cè)試用例#p1:open#p1:opensetupsetupdepositdepositdep
27、ositdepositwithdwithdrawrawwithdrawwithdrawcloseclose 測(cè)試用例測(cè)試用例#p2#p2:openopensetupsetupdepositdepositsummarizesummarizecreditLcreditLimitimitwithdrawwithdrawcloseclose 測(cè)試用例測(cè)試用例#P1#P1改變狀態(tài),而測(cè)試用例改變狀態(tài),而測(cè)試用例#P2#P2測(cè)試不改變狀態(tài)的操作測(cè)試不改變狀態(tài)的操作( (在最小測(cè)試序在最小測(cè)試序列中的操作除外列中的操作除外) )。 (2) (2) 基于屬性的劃分基于屬性的劃分 這種方法根據(jù)類(lèi)操作使用的屬性來(lái)
28、劃這種方法根據(jù)類(lèi)操作使用的屬性來(lái)劃分類(lèi)操作。對(duì)于分類(lèi)操作。對(duì)于accountaccount類(lèi)來(lái)說(shuō),可以使用類(lèi)來(lái)說(shuō),可以使用屬性屬性balancebalance來(lái)定義劃分,從而把操作劃分來(lái)定義劃分,從而把操作劃分成三個(gè)類(lèi)別:成三個(gè)類(lèi)別: 使用使用balancebalance的操作;的操作; 修改修改balancebalance的操作;的操作; 不使用也不修改不使用也不修改balancebalance的操作。的操作。 然后,為然后,為每個(gè)類(lèi)別設(shè)計(jì)測(cè)試序列。每個(gè)類(lèi)別設(shè)計(jì)測(cè)試序列。 3. 3. 基于故障的測(cè)試基于故障的測(cè)試 基于故障的測(cè)試基于故障的測(cè)試(fault_based (fault_based
29、 testing)testing)與傳統(tǒng)的錯(cuò)誤推測(cè)法類(lèi)似,也是與傳統(tǒng)的錯(cuò)誤推測(cè)法類(lèi)似,也是首先推測(cè)軟件中可能有的錯(cuò)誤,然后設(shè)計(jì)首先推測(cè)軟件中可能有的錯(cuò)誤,然后設(shè)計(jì)出最可能發(fā)現(xiàn)這些錯(cuò)誤的測(cè)試用例。出最可能發(fā)現(xiàn)這些錯(cuò)誤的測(cè)試用例。 例如,軟件工程師經(jīng)常在問(wèn)題的邊界例如,軟件工程師經(jīng)常在問(wèn)題的邊界處犯錯(cuò)誤,因此,在測(cè)試處犯錯(cuò)誤,因此,在測(cè)試SQRT(SQRT(計(jì)算平方根計(jì)算平方根) )操作操作( (該操作在輸入為負(fù)數(shù)時(shí)返回出錯(cuò)信息該操作在輸入為負(fù)數(shù)時(shí)返回出錯(cuò)信息) )時(shí),應(yīng)該著重檢查邊界情況:一個(gè)接近零時(shí),應(yīng)該著重檢查邊界情況:一個(gè)接近零的負(fù)數(shù)和零本身。其中的負(fù)數(shù)和零本身。其中“零本身零本身”用于檢
30、用于檢查程序員是否犯了如下錯(cuò)誤:查程序員是否犯了如下錯(cuò)誤: 把語(yǔ)句把語(yǔ)句if(xif(x0)calculate-0)calculate-square-root()square-root(); 誤寫(xiě)成誤寫(xiě)成if(xif(x0)calculate-square-0)calculate-square-root()root(); 為了推測(cè)出軟件中可能有的錯(cuò)誤,應(yīng)為了推測(cè)出軟件中可能有的錯(cuò)誤,應(yīng)該仔細(xì)研究分析模型和設(shè)計(jì)模型,而且在該仔細(xì)研究分析模型和設(shè)計(jì)模型,而且在很大程度上要依靠測(cè)試人員的經(jīng)驗(yàn)和直覺(jué)。很大程度上要依靠測(cè)試人員的經(jīng)驗(yàn)和直覺(jué)。 如果推測(cè)得比較準(zhǔn)確,則使用基于故如果推測(cè)得比較準(zhǔn)確,則使用基于
31、故障的測(cè)試方法能夠用相當(dāng)?shù)偷墓ぷ髁堪l(fā)現(xiàn)障的測(cè)試方法能夠用相當(dāng)?shù)偷墓ぷ髁堪l(fā)現(xiàn)大量錯(cuò)誤;反之,如果推測(cè)不準(zhǔn),則這種大量錯(cuò)誤;反之,如果推測(cè)不準(zhǔn),則這種方法的效果并不比隨機(jī)測(cè)試技術(shù)的效果好。方法的效果并不比隨機(jī)測(cè)試技術(shù)的效果好。 9.4.2 9.4.2 集成測(cè)試方法集成測(cè)試方法 開(kāi)始集成面向?qū)ο笙到y(tǒng)以后,測(cè)試用開(kāi)始集成面向?qū)ο笙到y(tǒng)以后,測(cè)試用例的設(shè)計(jì)變得更加復(fù)雜。在這個(gè)測(cè)試階段,例的設(shè)計(jì)變得更加復(fù)雜。在這個(gè)測(cè)試階段,必須對(duì)類(lèi)間協(xié)作進(jìn)行測(cè)試。必須對(duì)類(lèi)間協(xié)作進(jìn)行測(cè)試。 為了舉例說(shuō)明設(shè)計(jì)類(lèi)間測(cè)試用例的方為了舉例說(shuō)明設(shè)計(jì)類(lèi)間測(cè)試用例的方法,我們擴(kuò)充法,我們擴(kuò)充9.4.19.4.1小節(jié)引入的銀行系統(tǒng)的小節(jié)引入
32、的銀行系統(tǒng)的例子,使它包含圖例子,使它包含圖9.39.3所示的類(lèi)和協(xié)作。所示的類(lèi)和協(xié)作。 圖中箭頭方向代表消息的傳遞方向,圖中箭頭方向代表消息的傳遞方向,箭頭線上的標(biāo)注給出了作為由消息所蘊(yùn)含箭頭線上的標(biāo)注給出了作為由消息所蘊(yùn)含的協(xié)作的結(jié)果而調(diào)用的操作。的協(xié)作的結(jié)果而調(diào)用的操作。圖圖9.3 9.3 銀行系統(tǒng)的類(lèi)銀行系統(tǒng)的類(lèi)協(xié)作圖協(xié)作圖 和測(cè)試單個(gè)類(lèi)相似,測(cè)試類(lèi)協(xié)作可以和測(cè)試單個(gè)類(lèi)相似,測(cè)試類(lèi)協(xié)作可以使用隨機(jī)測(cè)試方法和劃分測(cè)試方法,以及使用隨機(jī)測(cè)試方法和劃分測(cè)試方法,以及基于情景的測(cè)試和行為測(cè)試來(lái)完成?;谇榫暗臏y(cè)試和行為測(cè)試來(lái)完成。 1. 1. 多類(lèi)測(cè)試多類(lèi)測(cè)試 KiraniKirani和和Ts
33、aiTsai建議使用下列步驟,以建議使用下列步驟,以生成多個(gè)類(lèi)的隨機(jī)測(cè)試用例。生成多個(gè)類(lèi)的隨機(jī)測(cè)試用例。 對(duì)對(duì)每個(gè)客戶類(lèi),使用類(lèi)操作符列表每個(gè)客戶類(lèi),使用類(lèi)操作符列表來(lái)生成一系列隨機(jī)測(cè)試序列。這些操作符來(lái)生成一系列隨機(jī)測(cè)試序列。這些操作符向服務(wù)器類(lèi)實(shí)例發(fā)送消息。向服務(wù)器類(lèi)實(shí)例發(fā)送消息。 對(duì)所對(duì)所生成的每個(gè)消息,確定協(xié)作類(lèi)生成的每個(gè)消息,確定協(xié)作類(lèi)和在服務(wù)器對(duì)象中的對(duì)應(yīng)操作符。和在服務(wù)器對(duì)象中的對(duì)應(yīng)操作符。 對(duì)服對(duì)服務(wù)器對(duì)象中的每個(gè)操作符務(wù)器對(duì)象中的每個(gè)操作符( (已已經(jīng)被來(lái)自客戶對(duì)象的消息調(diào)用經(jīng)被來(lái)自客戶對(duì)象的消息調(diào)用) ),確定傳遞,確定傳遞的消息。的消息。 對(duì)對(duì)每個(gè)消息,確定下一層被調(diào)用的
34、每個(gè)消息,確定下一層被調(diào)用的操作符,并把這些操作符結(jié)合進(jìn)測(cè)試序列操作符,并把這些操作符結(jié)合進(jìn)測(cè)試序列中。中。 為了說(shuō)明怎樣用上述步驟生成多個(gè)類(lèi)為了說(shuō)明怎樣用上述步驟生成多個(gè)類(lèi)的隨機(jī)測(cè)試用例,考慮的隨機(jī)測(cè)試用例,考慮BankBank類(lèi)相對(duì)于類(lèi)相對(duì)于ATMATM類(lèi)類(lèi)( (見(jiàn)圖見(jiàn)圖9.3)9.3)的操作序列:的操作序列: verifyAcctverifyAcctverifyPIverifyPIN NverifyPolicyverifyPolicywithdrawReqwithdrawReqdepositReqacctInfoREQdepositReqacctInfoREQn n 對(duì)對(duì)BankBank
35、類(lèi)的隨機(jī)測(cè)試用例可能是:類(lèi)的隨機(jī)測(cè)試用例可能是: 測(cè)試用例測(cè)試用例#r3:verifyAcct#r3:verifyAcctverifyPINverifyPINdepositReqdepositReq 為了考慮在上述這個(gè)測(cè)試中涉及的協(xié)為了考慮在上述這個(gè)測(cè)試中涉及的協(xié)作者,需要考慮與測(cè)試用例作者,需要考慮與測(cè)試用例#r3#r3中的每個(gè)操中的每個(gè)操作相關(guān)聯(lián)的消息。作相關(guān)聯(lián)的消息。 Bank Bank必須和必須和ValidationInfoValidationInfo協(xié)作以執(zhí)協(xié)作以執(zhí)行行verifyAcctverifyAcct和和verifyPINverifyPIN,BankBank還必須和還必須和A
36、ccountAccount協(xié)作以執(zhí)行協(xié)作以執(zhí)行depositReqdepositReq。因此,測(cè)。因此,測(cè)試上面提到的協(xié)作的新測(cè)試用例是:試上面提到的協(xié)作的新測(cè)試用例是: 測(cè)試用例測(cè)試用例#r4:verifyAcct#r4:verifyAcctBankBank validAcctvalidAcctValidationInfoValidationInfo verifyPINverifyPINBankBank validPINvalidPINvalidationInfovalidationInfo deposiReqdeposiReqdepositdepositaccountaccount 多個(gè)類(lèi)
37、的劃分測(cè)試方法類(lèi)似于單個(gè)類(lèi)多個(gè)類(lèi)的劃分測(cè)試方法類(lèi)似于單個(gè)類(lèi)的劃分測(cè)試方法的劃分測(cè)試方法( (見(jiàn)見(jiàn)9.4.19.4.1節(jié)節(jié)) )。但是,對(duì)于。但是,對(duì)于多類(lèi)測(cè)試來(lái)說(shuō),應(yīng)該擴(kuò)充測(cè)試序列以包括多類(lèi)測(cè)試來(lái)說(shuō),應(yīng)該擴(kuò)充測(cè)試序列以包括那些通過(guò)發(fā)送給協(xié)作類(lèi)的消息而被調(diào)用的那些通過(guò)發(fā)送給協(xié)作類(lèi)的消息而被調(diào)用的操作。操作。 另一種劃分測(cè)試方法,根據(jù)與特定類(lèi)另一種劃分測(cè)試方法,根據(jù)與特定類(lèi)的接口來(lái)劃分類(lèi)操作。如圖的接口來(lái)劃分類(lèi)操作。如圖9 93 3所示,所示,BankBank類(lèi)接收來(lái)自類(lèi)接收來(lái)自ATMATM類(lèi)和類(lèi)和CashierCashier類(lèi)的消息,類(lèi)的消息,因此,可以通過(guò)把因此,可以通過(guò)把BankBank類(lèi)中
38、的方法劃分成類(lèi)中的方法劃分成服務(wù)于服務(wù)于ATMATM的和服務(wù)于的和服務(wù)于CashierCashier的兩類(lèi)來(lái)測(cè)的兩類(lèi)來(lái)測(cè)試它們。還可以用基于狀態(tài)的劃分試它們。還可以用基于狀態(tài)的劃分( (見(jiàn)見(jiàn)9 94 41 1節(jié)節(jié)) ),進(jìn)一步精化劃分。,進(jìn)一步精化劃分。 2. 2. 從動(dòng)態(tài)模型導(dǎo)出測(cè)試用例從動(dòng)態(tài)模型導(dǎo)出測(cè)試用例 在本書(shū)第在本書(shū)第6 6章中已經(jīng)講過(guò),怎樣用狀態(tài)章中已經(jīng)講過(guò),怎樣用狀態(tài)轉(zhuǎn)換圖作為表示類(lèi)的動(dòng)態(tài)行為模型。類(lèi)的轉(zhuǎn)換圖作為表示類(lèi)的動(dòng)態(tài)行為模型。類(lèi)的狀態(tài)圖可以幫助我們導(dǎo)出測(cè)試該類(lèi)狀態(tài)圖可以幫助我們導(dǎo)出測(cè)試該類(lèi)( (及與其及與其協(xié)作的那些類(lèi)協(xié)作的那些類(lèi)) )的動(dòng)態(tài)行為的測(cè)試用例。的動(dòng)態(tài)行為的測(cè)
39、試用例。 圖圖9.49.4給出了前面討論過(guò)的給出了前面討論過(guò)的accountaccount類(lèi)類(lèi)的狀態(tài)圖,從圖可見(jiàn),初始轉(zhuǎn)換經(jīng)過(guò)了的狀態(tài)圖,從圖可見(jiàn),初始轉(zhuǎn)換經(jīng)過(guò)了empty acctempty acct和和setup acctsetup acct這兩個(gè)狀態(tài),而這兩個(gè)狀態(tài),而類(lèi)實(shí)例的大多數(shù)行為發(fā)生在類(lèi)實(shí)例的大多數(shù)行為發(fā)生在working acctworking acct狀態(tài)中,最終的狀態(tài)中,最終的withdrawwithdraw和和closeclose使得使得accountaccount類(lèi)分別向類(lèi)分別向nonworking acctnonworking acct狀態(tài)和狀態(tài)和dead acctde
40、ad acct狀態(tài)轉(zhuǎn)換。狀態(tài)轉(zhuǎn)換。圖圖9.4 account9.4 account類(lèi)的狀態(tài)轉(zhuǎn)換圖類(lèi)的狀態(tài)轉(zhuǎn)換圖 設(shè)計(jì)出的測(cè)試用例應(yīng)該覆蓋所有狀態(tài),設(shè)計(jì)出的測(cè)試用例應(yīng)該覆蓋所有狀態(tài),也就是說(shuō),操作序列應(yīng)該使得也就是說(shuō),操作序列應(yīng)該使得accountaccount類(lèi)實(shí)類(lèi)實(shí)例遍歷所有允許的狀態(tài)轉(zhuǎn)換:例遍歷所有允許的狀態(tài)轉(zhuǎn)換: 測(cè)試用例測(cè)試用例# #s1:opens1:opensetupAccntsetupAccntdeposit(initiadeposit(initial)l)withdraw(final)withdraw(final)closeclose 應(yīng)該注意,上面列出的序列與應(yīng)該注意,上面列
41、出的序列與9.4.19.4.1節(jié)節(jié)討論的最小測(cè)試序列相同。向最小序列中討論的最小測(cè)試序列相同。向最小序列中加入附加的測(cè)試序列,可以得出其他測(cè)試加入附加的測(cè)試序列,可以得出其他測(cè)試用例:用例: 測(cè)試用例測(cè)試用例# #s2:opens2:opensetupAccntsetupAccntdeposit(initiadeposit(initial)l)depositdepositbalancebalancecreditcreditwithdrwithdrawaw(final)(final)closeclose 測(cè)試用例測(cè)試用例#s3:open#s3:opensetupAccntsetupAccntde
42、posit(initiadeposit(initial)l)depositdepositwithdrawwithdrawaccntInfoaccntInfowiwithdraw(final)thdraw(final)closeclose 還可以導(dǎo)出更多測(cè)試用例,以保證該還可以導(dǎo)出更多測(cè)試用例,以保證該類(lèi)的所有行為都被適當(dāng)?shù)販y(cè)試了。在類(lèi)的類(lèi)的所有行為都被適當(dāng)?shù)販y(cè)試了。在類(lèi)的行為導(dǎo)致與一個(gè)或多個(gè)類(lèi)協(xié)作的情況下,行為導(dǎo)致與一個(gè)或多個(gè)類(lèi)協(xié)作的情況下,使用多個(gè)狀態(tài)圖去跟蹤系統(tǒng)的行為流。使用多個(gè)狀態(tài)圖去跟蹤系統(tǒng)的行為流。 面向?qū)ο蠓椒▽W(xué)把分析、設(shè)計(jì)和實(shí)現(xiàn)面向?qū)ο蠓椒▽W(xué)把分析、設(shè)計(jì)和實(shí)現(xiàn)很自然地聯(lián)系在一起了。雖然面向?qū)ο笤O(shè)很自然地聯(lián)系在一起了。雖然面向?qū)ο笤O(shè)計(jì)原則上不依賴(lài)于特定的實(shí)現(xiàn)環(huán)境,但是計(jì)原則上不依賴(lài)于特定的實(shí)現(xiàn)環(huán)境,但是實(shí)現(xiàn)結(jié)果和實(shí)現(xiàn)成本卻在很大程度上取決實(shí)現(xiàn)結(jié)果和實(shí)現(xiàn)成本卻在很大程度上取決于實(shí)現(xiàn)環(huán)境。于實(shí)現(xiàn)環(huán)境。 因此,直接支持面向?qū)ο笤O(shè)計(jì)范型的因此,直接支持面向?qū)ο笤O(shè)計(jì)范型的面向?qū)ο蟪绦蛘Z(yǔ)言、開(kāi)發(fā)環(huán)境及類(lèi)庫(kù),對(duì)面向?qū)ο蟪绦蛘Z(yǔ)
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 茶葉購(gòu)銷(xiāo)合作合同模板
- 家族遺產(chǎn)合同樣本
- 天津市實(shí)習(xí)學(xué)生勞動(dòng)合同細(xì)則
- 電梯加裝項(xiàng)目合同模板
- 施工隊(duì)勞動(dòng)合同簡(jiǎn)明合同模板
- 農(nóng)村地區(qū)私人租地合同樣本協(xié)議
- 新版團(tuán)體人身意外傷害保險(xiǎn)合同條款解析
- 房地產(chǎn)公司合同審核與管理制度
- 信息系統(tǒng)的測(cè)試與質(zhì)量保證考核試卷
- 孤殘兒童心理關(guān)愛(ài)與支持體系構(gòu)建方法研究考核試卷
- 《行政倫理學(xué)教程(第四版)》課件 第1、2章 行政倫理的基本觀念、行政倫理學(xué)的思想資源
- 拆除工程施工拆除進(jìn)度安排
- 絕緣技術(shù)監(jiān)督上崗員:廠用電設(shè)備技術(shù)監(jiān)督考試資料一
- 衛(wèi)生監(jiān)督村醫(yī)培訓(xùn)課件
- 動(dòng)物的感覺(jué)器官
- 獵頭項(xiàng)目方案
- 2024年家庭教育指導(dǎo)師考試(重點(diǎn))題庫(kù)及答案(含各題型)
- 直腸癌術(shù)后的康復(fù)護(hù)理
- 性商老師課程培訓(xùn)課件
- 拆除鍋爐可行性報(bào)告
- 全套ISO45001職業(yè)健康安全管理體系文件(手冊(cè)及程序文件)
評(píng)論
0/150
提交評(píng)論