《軟件質(zhì)量與測試》課件第七章面向?qū)ο鬁y試_第1頁
《軟件質(zhì)量與測試》課件第七章面向?qū)ο鬁y試_第2頁
《軟件質(zhì)量與測試》課件第七章面向?qū)ο鬁y試_第3頁
《軟件質(zhì)量與測試》課件第七章面向?qū)ο鬁y試_第4頁
《軟件質(zhì)量與測試》課件第七章面向?qū)ο鬁y試_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

本章內(nèi)容7.1面向?qū)ο鬁y試概述7.2面向?qū)ο蠓治鰷y試7.3面向?qū)ο笤O(shè)計(jì)測試7.4面向?qū)ο髥卧獪y試7.5面向?qū)ο蟮募蓽y試沈陽師范大學(xué)軟件學(xué)院1本節(jié)內(nèi)容7.1面向?qū)ο鬁y試的概述7.1.1傳統(tǒng)的軟件開發(fā)存在的問題7.1.2面向?qū)ο蠹夹g(shù)7.1.3面向?qū)ο筌浖_發(fā)和測試沈陽師范大學(xué)軟件學(xué)院27.1.1傳統(tǒng)的軟件開發(fā)存在的問題7.1.1傳統(tǒng)的軟件開發(fā)存在的問題(1)軟件重用性差(2)軟件可維護(hù)性差(3)開發(fā)出的軟件不易滿足用戶需求沈陽師范大學(xué)軟件學(xué)院37.1.2面向?qū)ο蠹夹g(shù)7.1.2.1基本概念(1)對象(2)對象的狀態(tài)和行為(3)類(4)類的結(jié)構(gòu)(類間關(guān)系)(5)消息和方法沈陽師范大學(xué)軟件學(xué)院47.1.2面向?qū)ο蠹夹g(shù)7.1.2.2面向?qū)ο筇卣鞣庋b繼承多態(tài)沈陽師范大學(xué)軟件學(xué)院57.1.2面向?qū)ο蠹夹g(shù)7.1.2.3面向?qū)ο筌浖_發(fā)方法與傳統(tǒng)的軟件開發(fā)方法的區(qū)別:(1)調(diào)查、分析系統(tǒng)需求,建立一個(gè)全面、合理、統(tǒng)一的模型。(2)對象設(shè)計(jì)。(3)程序?qū)崿F(xiàn)。沈陽師范大學(xué)軟件學(xué)院67.1.3面向?qū)ο筌浖_發(fā)和測試技術(shù)7.1.3面向?qū)ο筌浖_發(fā)和測試:

面向?qū)ο蟮拈_發(fā)模型突破了傳統(tǒng)的瀑布模型,將開發(fā)分為面向?qū)ο蠓治觯∣OA),面向?qū)ο笤O(shè)計(jì)(OOD),和面向?qū)ο缶幊蹋∣OP)三個(gè)階段。針對這種開發(fā)模型,結(jié)合傳統(tǒng)的測試步驟的劃分,我們把面向?qū)ο蟮能浖y試分為:面向?qū)ο蠓治龅臏y試,面向?qū)ο笤O(shè)計(jì)的測試,面向?qū)ο缶幊痰臏y試,面向?qū)ο髥卧獪y試,面向?qū)ο蠹蓽y試,面向?qū)ο笙到y(tǒng)測試。沈陽師范大學(xué)軟件學(xué)院77.1.3面向?qū)ο筌浖_發(fā)和測試技術(shù)7.1.3面向?qū)ο筌浖_發(fā)和測試:在傳統(tǒng)的面向過程程序中,對于函數(shù) y=Function(x);

只需要考慮一個(gè)函數(shù)(Function())的行為特點(diǎn),在面向?qū)ο蟪绦蛑校悴坏貌煌瑫r(shí)考慮基類函數(shù)(Base::Function())的行為和繼承類函數(shù)(Derived::Function())的行為。面向?qū)ο蟪绦虻慕Y(jié)構(gòu)不再是傳統(tǒng)的功能模塊結(jié)構(gòu),作為一個(gè)整體,原有集成測試所要求的逐步將開發(fā)的模塊搭建在一起進(jìn)行測試的方法已不可能。沈陽師范大學(xué)軟件學(xué)院87.1.3面向?qū)ο筌浖_發(fā)和測試技術(shù)7.1.3面向?qū)ο筌浖_發(fā)和測試:面向?qū)ο筌浖y試是根據(jù)面向?qū)ο蟮能浖_發(fā)過程結(jié)合面向?qū)ο蟮奶攸c(diǎn)提出的。它包括分析與設(shè)計(jì)模型測試技術(shù)、類測試技術(shù)、對象交互測試技術(shù)、類層次結(jié)構(gòu)測試技術(shù)、面向?qū)ο笙到y(tǒng)測試技術(shù)5大部分。沈陽師范大學(xué)軟件學(xué)院97.1.3面向?qū)ο筌浖_發(fā)和測試技術(shù)7.1.3面向?qū)ο筌浖_發(fā)和測試:面向?qū)ο筌浖γ總€(gè)開發(fā)階段都有不同以往的要求和結(jié)果,已經(jīng)不可能用功能細(xì)化的觀點(diǎn)來檢測面向?qū)ο蠓治龊驮O(shè)計(jì)的結(jié)果。針對面向?qū)ο筌浖拈_發(fā)特點(diǎn),應(yīng)該有一種新的測試模型。沈陽師范大學(xué)軟件學(xué)院107.1.3面向?qū)ο筌浖_發(fā)和測試技術(shù)7.1.3面向?qū)ο筌浖_發(fā)和測試:面向?qū)ο筌浖γ總€(gè)開發(fā)階段都有不同以往的要求和結(jié)果,已經(jīng)不可能用功能細(xì)化的觀點(diǎn)來檢測面向?qū)ο蠓治龊驮O(shè)計(jì)的結(jié)果。針對面向?qū)ο筌浖拈_發(fā)特點(diǎn),應(yīng)該有一種新的測試模型。沈陽師范大學(xué)軟件學(xué)院11本節(jié)內(nèi)容7.2面向?qū)ο蠓治鰷y試7.2.1面向?qū)ο竽P?.2.2對類和對象范圍的測試7.2.3對結(jié)構(gòu)范圍的測試7.2.4對結(jié)構(gòu)范圍的測試7.2.5對主題的測試7.2.6對定義的屬性和實(shí)例關(guān)聯(lián)的測試7.2.7對定義的服務(wù)和消息關(guān)聯(lián)的測試沈陽師范大學(xué)軟件學(xué)院127.2.1面向?qū)ο竽P?.2.1面向?qū)ο竽P蜕蜿枎煼洞髮W(xué)軟件學(xué)院13OOAOODOOPOOATestOODTestOOPTestOOUnitTestOOIntegrateTestOOSystemTest7.2.1面向?qū)ο竽P?.2.1面向?qū)ο竽P蚈OA:將問題空間中實(shí)現(xiàn)的功能進(jìn)行抽象,問題空間中的實(shí)例抽象為對象,用對象的結(jié)構(gòu)反映問題空間的復(fù)雜關(guān)系,用屬性和服務(wù)表示實(shí)例的特殊性和行為OOD:建立類結(jié)構(gòu)或進(jìn)一步構(gòu)造類庫,實(shí)現(xiàn)分析結(jié)果對問題空間的抽象。OOP:軟件的計(jì)算機(jī)實(shí)現(xiàn)。沈陽師范大學(xué)軟件學(xué)院147.2.1面向?qū)ο竽P?.2.1面向?qū)ο竽P蚈OA:將問題空間中實(shí)現(xiàn)的功能進(jìn)行抽象,問題空間中的實(shí)例抽象為對象,用對象的結(jié)構(gòu)反映問題空間的復(fù)雜關(guān)系,用屬性和服務(wù)表示實(shí)例的特殊性和行為OOD:建立類結(jié)構(gòu)或進(jìn)一步構(gòu)造類庫,實(shí)現(xiàn)分析結(jié)果對問題空間的抽象。OOP:軟件的計(jì)算機(jī)實(shí)現(xiàn)。沈陽師范大學(xué)軟件學(xué)院157.2.2對類和對象范圍的測試7.2.2對類和對象范圍的測試OOA直接映射問題空間,全面地在問題空間中實(shí)現(xiàn)功能的現(xiàn)實(shí)抽象化。OOA必須回答:(1)為完成用戶要求,系統(tǒng)應(yīng)提供哪些功能(2)系統(tǒng)應(yīng)由哪些對象構(gòu)成(3)每個(gè)對象應(yīng)有哪些屬性和服務(wù)(4)對象間應(yīng)有怎樣的聯(lián)系沈陽師范大學(xué)軟件學(xué)院167.2.2對類和對象范圍的測試7.2.2對類和對象范圍的測試OOA中認(rèn)定的對象是對問題空間中的結(jié)構(gòu),其他系統(tǒng),設(shè)備,被記憶的事件,系統(tǒng)涉及的人員等實(shí)際實(shí)例的抽象。對它的測試可以從如下方面考慮:(1)抽象的對象是否全面,是否問題空間中所有涉及到的實(shí)例都反映在認(rèn)定的抽象對象中。(2)認(rèn)定的對象是否具有多個(gè)屬性。只有一個(gè)屬性的對象通常應(yīng)看成其他對象的屬性,而不是抽象為獨(dú)立的對象。沈陽師范大學(xué)軟件學(xué)院177.2.2對類和對象范圍的測試7.2.2對類和對象范圍的測試

(3)對認(rèn)定為同一對象的實(shí)例是否有共同的,區(qū)別于其他實(shí)例的共同屬性。(4)對認(rèn)定為同一對象的實(shí)例是否提供或需要相同的服務(wù),如果服務(wù)隨著不同的實(shí)例而變化,認(rèn)定的對象就需要分解或利用繼承性來分類表示。(5)認(rèn)定的對象的名稱應(yīng)該盡量準(zhǔn)確,適用。OA中認(rèn)定的對象是對問題空間中的結(jié)構(gòu),其他系統(tǒng),設(shè)備,被記憶的事件,系統(tǒng)涉及的人員等實(shí)際實(shí)例的抽象。對它的測試可以從如下方面考慮:沈陽師范大學(xué)軟件學(xué)院187.2.2對類和對象范圍的測試7.2.2對類和對象范圍的測試如何在眾多調(diào)查資料中進(jìn)行確定類與對象呢?解決這一問題的方法一般包含以下幾個(gè)方面(1)基礎(chǔ)素材(2)潛在的對象(3)確定對象(4)圖形表示,用圖形化描述類和對象沈陽師范大學(xué)軟件學(xué)院197.2.3對結(jié)構(gòu)范圍的測試7.2.3對結(jié)構(gòu)范圍的測試結(jié)構(gòu)表示問題空間的復(fù)雜程度。標(biāo)識結(jié)構(gòu)的目的在于管理問題域模型。在OOA中,結(jié)構(gòu)是指泛化—特化結(jié)構(gòu)(isa)和整體—部分結(jié)構(gòu)(hasa)兩部分的總和。沈陽師范大學(xué)軟件學(xué)院207.2.3對結(jié)構(gòu)范圍的測試7.2.3對結(jié)構(gòu)范圍的測試1、確定泛化—特化結(jié)構(gòu)(分類結(jié)構(gòu))對于結(jié)構(gòu)中的一種對象,尤其是處于高層的對象,是否在問題空間中含有不同于下一層對象的特殊性可能,即是否能派生出下一層對象對于結(jié)構(gòu)中的一種對象,尤其是處于同一低層的對象,是否能抽象出現(xiàn)實(shí)中有有意義的更一般的上層對象對所有認(rèn)定的對象,是否能在問題空間內(nèi)向上層抽象出在現(xiàn)實(shí)中有意義的對象高層的對象的特性是否完全體現(xiàn)下層的共性低層的對象是否有高層特性基礎(chǔ)上的特殊性沈陽師范大學(xué)軟件學(xué)院217.2.3對結(jié)構(gòu)范圍的測試7.2.3對結(jié)構(gòu)范圍的測試2、確定整體—部分結(jié)構(gòu)(組裝結(jié)構(gòu))整體(對象)和部分(對象)的組裝關(guān)系是否符合現(xiàn)實(shí)的關(guān)系整體(對象)和部分(對象)是否在考慮的問題空間中的有實(shí)際應(yīng)用整體(對象)是否遺漏了反映在問題空間中有用的部件部分(對象)是否能夠在問題空間中組裝新的有現(xiàn)實(shí)意義的整體(對象)沈陽師范大學(xué)軟件學(xué)院227.2.4對主題的測試7.2.4對主題的測試

主題是一種知道研究和處理大型復(fù)雜模型的機(jī)制。有助于分解系統(tǒng),區(qū)分結(jié)構(gòu),避免過多的信息量同時(shí)出現(xiàn)所帶來的麻煩。主題的確定可以幫助人們從一個(gè)更高的層次上觀察和表達(dá)系統(tǒng)的總體模型。主題如同文章對個(gè)部分內(nèi)容的概要。沈陽師范大學(xué)軟件學(xué)院237.2.4對主題的測試7.2.4對主題的測試對主題層的測試應(yīng)該考慮以下方面:依據(jù)GeorgeMiler的“7+2”原則,如果主題個(gè)數(shù)超過7個(gè),就要求對有較密切屬性和服務(wù)的主題進(jìn)行歸并。主題所反映的一組對象和結(jié)構(gòu)是否具有相同和相近的屬性和服務(wù)。認(rèn)定的主題是否是對象和結(jié)構(gòu)更高層的抽象,是否便于理解OOA結(jié)果的概括。主題間的消息聯(lián)系(抽象)是否代表了主題所反映的對象和結(jié)構(gòu)之間的所有關(guān)聯(lián)。沈陽師范大學(xué)軟件學(xué)院247.2.5對定義的屬性和實(shí)例關(guān)聯(lián)的測試7.2.5對定義的屬性和實(shí)例關(guān)聯(lián)的測試屬性是用來描述對象或結(jié)構(gòu)所反映的實(shí)例的特性。而實(shí)例關(guān)聯(lián)是反映實(shí)例集合間的映射關(guān)系。對屬性和實(shí)例關(guān)聯(lián)的測試從如下方面考慮:定義的屬性是否對相應(yīng)的對象和分類結(jié)構(gòu)的每個(gè)現(xiàn)實(shí)實(shí)例都適用。定義的屬性在現(xiàn)實(shí)世界是否與這種實(shí)例關(guān)系密切。定義的屬性在問題空間是否與這種實(shí)例關(guān)系密切。定義的屬性是否能夠不依賴于其他屬性被獨(dú)立理解。定義的屬性在分類結(jié)構(gòu)中的位置是否恰當(dāng),低層對象的共有屬性是否在上層對象屬性體現(xiàn)。在問題空間中每個(gè)對象的屬性是否定義完整。定義的實(shí)例關(guān)聯(lián)是否符合現(xiàn)實(shí)。在問題空間中實(shí)例關(guān)聯(lián)是否定義完整,特別需要注意1-多和多-多的實(shí)例關(guān)聯(lián)。沈陽師范大學(xué)軟件學(xué)院257.2.5對定義的屬性和實(shí)例關(guān)聯(lián)的測試7.2.5對定義的屬性和實(shí)例關(guān)聯(lián)的測試具體步驟如下:1、確定屬性的范圍2、實(shí)例連接3、詳細(xì)說明屬性和實(shí)例連接的約束沈陽師范大學(xué)軟件學(xué)院267.2.5對定義的服務(wù)和消息關(guān)聯(lián)的測試7.2.5對定義的服務(wù)和消息關(guān)聯(lián)的測試對象接到消息后所執(zhí)行的操作稱為為它提供的服務(wù)。描述了系統(tǒng)需要執(zhí)行的處理和功能。定義服務(wù)的目的在于定義對象的行為和對象間的通信(消息連接)。事實(shí)上,兩個(gè)對象之間可能存在著由于通信需要而形成的關(guān)系,即消息連接。消息連接表示從一個(gè)對象發(fā)送消息到另一個(gè)對象,由那個(gè)對象完成某些處理。沈陽師范大學(xué)軟件學(xué)院277.2.5對定義的服務(wù)和消息關(guān)聯(lián)的測試7.2.5對定義的服務(wù)和消息關(guān)聯(lián)的測試

確定服務(wù)的具體解決方法包括四個(gè)基本步驟:1、識別對象狀態(tài)2、識別所要請求的服務(wù)3、識別消息連接4、定義服務(wù)沈陽師范大學(xué)軟件學(xué)院287.2.5對定義的服務(wù)和消息關(guān)聯(lián)的測試7.2.5對定義的服務(wù)和消息關(guān)聯(lián)的測試對定義的服務(wù)和消息關(guān)聯(lián)的測試從以下方面進(jìn)行:對象和結(jié)構(gòu)在問題空間的不同狀態(tài)是否定義了相應(yīng)的服務(wù)。對象或結(jié)構(gòu)所需要的服務(wù)是否都定義了相應(yīng)的消息關(guān)聯(lián)。定義的消息關(guān)聯(lián)所指引的服務(wù)提供是否正確。沿著消息關(guān)聯(lián)執(zhí)行的線程是否合理,是否符合現(xiàn)實(shí)過程。定義的服務(wù)是否重復(fù),是否定義了能夠得到的服務(wù)。沈陽師范大學(xué)軟件學(xué)院297.2.5對定義的服務(wù)和消息關(guān)聯(lián)的測試7.2.5對定義的服務(wù)和消息關(guān)聯(lián)的測試對定義的服務(wù)和消息關(guān)聯(lián)的測試從以下方面進(jìn)行:對象和結(jié)構(gòu)在問題空間的不同狀態(tài)是否定義了相應(yīng)的服務(wù)。對象或結(jié)構(gòu)所需要的服務(wù)是否都定義了相應(yīng)的消息關(guān)聯(lián)。定義的消息關(guān)聯(lián)所指引的服務(wù)提供是否正確。沿著消息關(guān)聯(lián)執(zhí)行的線程是否合理,是否符合現(xiàn)實(shí)過程。定義的服務(wù)是否重復(fù),是否定義了能夠得到的服務(wù)。沈陽師范大學(xué)軟件學(xué)院30本節(jié)內(nèi)容7.3面向?qū)ο笤O(shè)計(jì)的測試7.3.1面向?qū)ο笤O(shè)計(jì)概述7.3.2確定測試的問題域7.3.3人機(jī)交互部件設(shè)計(jì)的測試沈陽師范大學(xué)軟件學(xué)院317.3.1面向?qū)ο笤O(shè)計(jì)概述7.3.1面向?qū)ο笤O(shè)計(jì)概述面向?qū)ο笤O(shè)計(jì)(OOD)采用“造型的觀點(diǎn)”,以O(shè)OA為基礎(chǔ)歸納出類,并建立類結(jié)構(gòu)或進(jìn)一步構(gòu)造成類庫,實(shí)現(xiàn)分析結(jié)果對問題空間的抽象。OOD歸納的類,可以是對象簡單的延續(xù),可以是不同對象的相同或相似的服務(wù)。由此可見,OOD不是在OOA上的另一思維方式的大動干戈,而是OOA的進(jìn)一步細(xì)化和更高層的抽象。面向?qū)ο笤O(shè)計(jì)(OOD)是以O(shè)OA歸納出的類為基礎(chǔ),建立類結(jié)構(gòu)甚至進(jìn)一步構(gòu)造成類庫,實(shí)現(xiàn)分析結(jié)果對問題空間的抽象。沈陽師范大學(xué)軟件學(xué)院327.3.1面向?qū)ο笤O(shè)計(jì)概述7.3.1面向?qū)ο笤O(shè)計(jì)概述

OOD設(shè)計(jì)模型有四個(gè)部分和五個(gè)層次組成:問題空間部件PDC人機(jī)交互部件HIC任務(wù)管理部件TMC數(shù)據(jù)管理部件DMC沈陽師范大學(xué)軟件學(xué)院337.3.1面向?qū)ο笤O(shè)計(jì)概述7.3.1面向?qū)ο笤O(shè)計(jì)概述五個(gè)層次為主題層、類與對象層、結(jié)構(gòu)層、屬性層和服務(wù)層。這五個(gè)層次分別面向?qū)ο蠓治龇椒ㄖ械亩x主題、確定對象、確定結(jié)構(gòu)、定義屬性、確定服務(wù)等行動。沈陽師范大學(xué)軟件學(xué)院34問題空間部件人機(jī)交互部件任務(wù)管理部件數(shù)據(jù)管理部件主題層類與對象層結(jié)構(gòu)層屬性層服務(wù)層問題空間部件人機(jī)交互部件任務(wù)管理部件數(shù)據(jù)管理部件結(jié)構(gòu)層7.3.1面向?qū)ο笤O(shè)計(jì)概述7.3.1面向?qū)ο笤O(shè)計(jì)概述從以下方面對OOD進(jìn)行測試:確定測試的問題域人機(jī)交互部分設(shè)計(jì)的測試對認(rèn)定的類的測試對構(gòu)造的類層次結(jié)構(gòu)的測試對類庫支持的測試對測試結(jié)果及對模型的測試覆蓋率進(jìn)行評估沈陽師范大學(xué)軟件學(xué)院357.3.2確定測試的問題域7.3.2確定測試的問題域在面向?qū)ο笤O(shè)計(jì)中,面向?qū)ο蠓治觯∣OA)的結(jié)果恰好符合面向?qū)ο笤O(shè)計(jì)的問題空間部分,因此OOA的結(jié)果就是OOD部分模型的一個(gè)完整部分。為了解決一些特定設(shè)計(jì)所需要考慮的實(shí)際變化,要對OOA的結(jié)果進(jìn)行一些改進(jìn)和增補(bǔ)。根據(jù)需求的變化,對OOA產(chǎn)生的模型中的某些類與對象、結(jié)構(gòu)、屬性、操作進(jìn)行組合與分解。根據(jù)OOD的附加原則,增加必要的類、屬性和關(guān)系。沈陽師范大學(xué)軟件學(xué)院367.3.2確定測試的問題域7.3.2確定測試的問題域1、復(fù)用設(shè)計(jì)

2、把問題域相關(guān)的類關(guān)聯(lián)起來

3、加入一般化類以建立類間協(xié)議

4、調(diào)整繼承支持級別

5、改進(jìn)性嫩

6、加入較低層的構(gòu)件沈陽師范大學(xué)軟件學(xué)院377.3.3人機(jī)交互部件設(shè)計(jì)的測試7.3.3人機(jī)交互部件設(shè)計(jì)的測試OOA階段給出所需的屬性和操作,同時(shí)必須根據(jù)需求把交互的細(xì)節(jié)加入到用戶界面的設(shè)計(jì)中,包括有效的人機(jī)交互所必須的實(shí)際顯示和輸入。人機(jī)交互部件的測試策略由以下幾個(gè)方面構(gòu)成:用戶分類;描述人及任務(wù)腳本;設(shè)計(jì)命令層;設(shè)計(jì)詳細(xì)的交互;繼續(xù)做原型;設(shè)計(jì)HIC類;根據(jù)圖形用戶界面進(jìn)行設(shè)計(jì);沈陽師范大學(xué)軟件學(xué)院38本節(jié)內(nèi)容7.4面向?qū)ο蟮膯卧獪y試7.4.1面向?qū)ο髥卧獪y試的內(nèi)容7.4.2單元測試開始的時(shí)間7.4.3單元測試的人員7.4.4單元測試方法7.4.5方法的測試7.4.6測試程度沈陽師范大學(xué)軟件學(xué)院397.4.1面向?qū)ο髥卧獪y試的內(nèi)容7.4.1面向?qū)ο髥卧獪y試的內(nèi)容

面向?qū)ο蟮膯卧獪y試的對象是軟件設(shè)計(jì)的最小單位—類。單元測試的依據(jù)是詳細(xì)設(shè)計(jì),單元測試應(yīng)對類中所有重要的屬性和方法設(shè)計(jì)測試用例,以發(fā)現(xiàn)類內(nèi)部的錯誤。單元測試多采用白盒測試技術(shù),系統(tǒng)內(nèi)多個(gè)類快可以并行進(jìn)行測試。沿用單元測試概念,實(shí)際測試類成員函數(shù)。一些傳統(tǒng)的測試方法在面向?qū)ο蟮膯卧獪y試中都可以使用,如等價(jià)類劃分、邊界值分析、因果圖、邏輯覆蓋、路徑分析法等。沈陽師范大學(xué)軟件學(xué)院407.4.1面向?qū)ο髥卧獪y試的內(nèi)容7.4.1面向?qū)ο髥卧獪y試的內(nèi)容

面向?qū)ο蟮膯卧褪穷悾瑔卧獪y試實(shí)際測試的就是對類的測試。類測試的目的主要確保一個(gè)類的代碼能夠完全滿足類的說明所描述的要求。沈陽師范大學(xué)軟件學(xué)院417.4.1面向?qū)ο髥卧獪y試的內(nèi)容7.4.1面向?qū)ο髥卧獪y試的內(nèi)容

面向?qū)ο蟮膯卧褪穷?,單元測試實(shí)際測試的就是對類的測試。類測試的目的主要確保一個(gè)類的代碼能夠完全滿足類的說明所描述的要求。沈陽師范大學(xué)軟件學(xué)院427.4.2單元測試開始的時(shí)間7.4.2單元測試開始的時(shí)間

單元測試開始的時(shí)間一般在完全說明了這個(gè)類,并且準(zhǔn)備對其編碼后不久。單元測試開始時(shí)要制定一個(gè)測試計(jì)劃。在反復(fù)迭代的過程中,類的實(shí)現(xiàn)和說明在進(jìn)程中可能會發(fā)生變化,所以應(yīng)該在軟件的其他部件使用該類之前對類進(jìn)行測試,同時(shí)還有必要執(zhí)行回歸測試。沈陽師范大學(xué)軟件學(xué)院437.4.3單元測試的人員7.4.3單元測試的人員

由另一個(gè)類的開發(fā)人員編寫測試計(jì)劃,由該類的開發(fā)人員完成測試,避免對類說明的錯誤理解沈陽師范大學(xué)軟件學(xué)院447.4.4單元測試方法7.4.4單元測試方法

單元測試的方法有代碼檢查和執(zhí)行測試用例。在某些情況下,用代碼檢查代替基于執(zhí)行的測試方法是可行的,但是,代碼檢查也存在以下兩個(gè)不利之處:代碼檢查容易受人為因素影響代碼檢查在回歸測試方面明顯需要更多的工作量沈陽師范大學(xué)軟件學(xué)院457.4.4單元測試方法7.4.4單元測試方法類測試按順序分為以下三部分:基于服務(wù)的測試:測試類中的每個(gè)方法。基于狀態(tài)的測試:測試類的實(shí)例在其生命周期各個(gè)狀態(tài)下的情況。基于響應(yīng)狀態(tài)的測試:從類和對象的責(zé)任出發(fā),以外界向?qū)ο蟀l(fā)送特定消息序列的方法來測試對象的各個(gè)響應(yīng)狀態(tài)。沈陽師范大學(xué)軟件學(xué)院467.4.5方法的測試7.4.5方法的測試在測試類的功能實(shí)現(xiàn)時(shí),應(yīng)該首先保證類成員函數(shù)的正確性。測試時(shí)主要考慮封裝在類中的一個(gè)方法對數(shù)據(jù)進(jìn)行的操作,可以采用傳統(tǒng)的模塊測試方法,通過向所在對象發(fā)消息來執(zhí)行,它的執(zhí)行與狀態(tài)有關(guān)。傳統(tǒng)的針對模塊的設(shè)計(jì)測試用例的技術(shù),如等價(jià)劃分、邊界值分析、因果圖、邏輯覆蓋、路徑覆蓋等方法,仍然可以作為測試類中每個(gè)方法的主要技術(shù)。沈陽師范大學(xué)軟件學(xué)院477.4.5方法的測試7.4.5方法的測試在面向?qū)ο蟮南到y(tǒng)中的方法,是通過消息來驅(qū)動執(zhí)行的,要測試類中的方法,必須用一個(gè)驅(qū)動程序?qū)Ρ粶y方法發(fā)送一條消息以驅(qū)動其執(zhí)行,如果被測模塊或方法中調(diào)用了其他模塊或方法,則需要設(shè)計(jì)一個(gè)模擬被調(diào)子程序功能的存根程序,驅(qū)動程序、存根程序及被測模塊或方法組成一個(gè)獨(dú)立的可執(zhí)行單元。沈陽師范大學(xué)軟件學(xué)院487.4.5方法的測試7.4.5方法的測試在面向?qū)ο筌浖校诒WC單個(gè)方法功能正確的基礎(chǔ)上,還應(yīng)該處理好測試方法之間的協(xié)助關(guān)系。為了提高方法的重用性,設(shè)計(jì)方法的一個(gè)準(zhǔn)則是提高方法的內(nèi)聚,即在一個(gè)方法中只完成單個(gè)功能。對于繼承過來的方法,也要加以測試。運(yùn)行測試用例的時(shí)候,必須提供能夠?qū)嵗臉额?,以及起?qū)動器作用的“主程序”類,來提供和分析測試用例。。沈陽師范大學(xué)軟件學(xué)院497.4.6測試程度7.4.6測試程度可以根據(jù)已經(jīng)測試了多少類的實(shí)現(xiàn)和多少類的說明來衡量測試的充分性。通常需要將這兩者都考慮到,希望測試到操作和狀態(tài)轉(zhuǎn)換的各種組合情況。一個(gè)對象能維持自己的狀態(tài),而狀態(tài)一般來說也會影響操作的含義。沈陽師范大學(xué)軟件學(xué)院50本節(jié)內(nèi)容7.5面向?qū)ο蟮募蓽y試7.5.1面向?qū)ο蠹蓽y試的內(nèi)容7.5.2基于類間協(xié)作關(guān)系的橫向測試7.5.3基于類間繼承關(guān)系的縱向測試沈陽師范大學(xué)軟件學(xué)院517.5.1面向?qū)ο蠹蓽y試的內(nèi)容7.5.1面向?qū)ο蠹蓽y試的內(nèi)容傳統(tǒng)的集成測試,是由底向上通過集成完成的功能模塊進(jìn)行測試,一般可以在部分程序編譯完成的情況下進(jìn)行。對于面向?qū)ο蟪绦?,相互調(diào)用的功能是散布在程序的不同類中,類通過消息相互作用申請和提供服務(wù)。類的行為與它的狀態(tài)密切相關(guān),狀態(tài)不僅僅是體現(xiàn)在類數(shù)據(jù)成員的值,也許還包括其他類中的狀態(tài)信息。由此可見,類相互依賴極其緊密,根本無法在編譯不完全的程序上對類進(jìn)行測試。面向?qū)ο蟮募蓽y試通常需要在整個(gè)程序編譯完成后進(jìn)行。面向?qū)ο蟪绦蚓哂袆討B(tài)特性,程序的控制流往往無法確定,因此也只能對整個(gè)編譯后的程序做基于黑盒的集成測試。沈陽師范大學(xué)軟件學(xué)院527.5.1面向?qū)ο蠹蓽y試的內(nèi)容7.5.1面向?qū)ο蠹蓽y試的內(nèi)容把一組相互有影響的類看作一個(gè)整體稱為類簇。類簇的測試主要依據(jù)系統(tǒng)中相關(guān)類的層次關(guān)系,檢查類之間相互作用的正確性,即檢查各相關(guān)類之間消息連接的合法性、子類的繼承性與父類的一致性、動態(tài)綁定執(zhí)行的正確性、類簇協(xié)同完成系統(tǒng)功能的正確性等。其測試有兩種不同策略:基于類間協(xié)作關(guān)系的橫向測試和基于類間繼承關(guān)系的縱向測試。沈陽師范大學(xué)軟件學(xué)院537.5.2基于類間協(xié)作關(guān)系的橫向測試7.5.2基于類間協(xié)作關(guān)系的橫向測試由系統(tǒng)的一個(gè)輸入事件為激勵,對其觸發(fā)的一組類進(jìn)行測試,執(zhí)行相應(yīng)的操作/消息處理路徑,最后終止于某一輸出時(shí)間。應(yīng)用回歸測試對以測試過的類集再重新執(zhí)行一次,以保證加入新類時(shí)不會產(chǎn)生意外的結(jié)果沈陽師范大學(xué)軟件學(xué)院547.5.3基于類間繼承關(guān)系的縱向測試7.5.3基于類間繼承關(guān)系的縱向測試首先通過測試獨(dú)立的類來開始構(gòu)造系統(tǒng),在獨(dú)立類測試完成后,進(jìn)行下一層繼承獨(dú)立類的類的測試,這個(gè)依賴類層次的測試序列一直循環(huán)執(zhí)行到構(gòu)造完整個(gè)系統(tǒng)為止。集成測試在面向?qū)ο笙到y(tǒng)中屬于應(yīng)用生命周期的一個(gè)階段,可在兩個(gè)層次上進(jìn)行:對一個(gè)新類進(jìn)行測試,并測試在定義中所涉及的那些類的集成。將各部件集合在一起組成完整的系統(tǒng)進(jìn)行測試。沈陽師范大學(xué)軟件學(xué)院557.5.3基于類間繼承關(guān)系的縱向測試7.5.3基于類間繼承關(guān)系的縱向測試

面向?qū)ο蟮募蓽y試能夠檢測出相對獨(dú)立的單元測試無法檢測出的那些類相互作用

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論