《 軟件測試技術(shù)》課件9面向?qū)ο鬁y試new_第1頁
《 軟件測試技術(shù)》課件9面向?qū)ο鬁y試new_第2頁
《 軟件測試技術(shù)》課件9面向?qū)ο鬁y試new_第3頁
《 軟件測試技術(shù)》課件9面向?qū)ο鬁y試new_第4頁
《 軟件測試技術(shù)》課件9面向?qū)ο鬁y試new_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο鬁y試9.1面向?qū)ο蠡A(chǔ)從面向?qū)ο蟮木幊陶Z言來看,面向?qū)ο缶褪菍ο蟆㈩惖慕M合;從面向?qū)ο蟮南到y(tǒng)特性來看,面向?qū)ο髴?yīng)包括封裝、繼承和多態(tài)。1.類類是對一組具有相同/相似性質(zhì)的的對象的定義。類是對象的模板(抽象)。類從規(guī)范和實(shí)現(xiàn)兩個(gè)方面描述對象:在類規(guī)范中,定義類的每個(gè)對象能做什么:在類實(shí)現(xiàn)中,定義類的每個(gè)對象如何做事情;類可有其子類,也可有其它類,形成類層次結(jié)構(gòu)。2.對象對象由數(shù)據(jù)(描述事物的屬性)和作用于數(shù)據(jù)的操作(體現(xiàn)事物的行為)構(gòu)成一獨(dú)立整體。對象是軟件測試的直接目標(biāo)程序運(yùn)行時(shí),對象被創(chuàng)建、修改、訪問或刪除,對象的行為是否符合規(guī)格說明,對象與它相關(guān)的對象是否協(xié)同工作,都是面向?qū)ο筌浖y試所關(guān)注的焦點(diǎn)。3.消息消息是對象之間進(jìn)行通信的結(jié)構(gòu)。一般它由三部分組成:接收消息的對象名、消息名及實(shí)參。一個(gè)對象接收消息,則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。從測試的角度看:消息有發(fā)送者:發(fā)送者決定何時(shí)發(fā)送消息,并且可能做出錯(cuò)誤的決定;消息有接收者:接收者可能接收到非預(yù)期的特定消息,可能會做出不正確的反應(yīng);消息可能包含實(shí)參:參數(shù)能被接收者使用或修改,如果傳遞的參數(shù)是對象,則對象在消息處理前和處理后,對象必須處于正確的狀態(tài);4.封裝性封裝是一種信息隱蔽技術(shù)。封裝使數(shù)據(jù)和加工該數(shù)據(jù)的方法(函數(shù))封裝為一個(gè)整體,以實(shí)現(xiàn)獨(dú)立性很強(qiáng)的模塊。封裝的目的在于把對象的設(shè)計(jì)者和對象的使用者分開。5.繼承性繼承性允許子類共享父類中定義的數(shù)據(jù)和方法,同時(shí)可修改和擴(kuò)充。子類是在新的環(huán)境中存在,所以父類的正確性不能保證子類的正確性,繼承使代碼的重用率得到提高,但同時(shí)故障傳播的幾率也增加。繼承提供了一種機(jī)制,潛在的錯(cuò)誤會從基類傳遞到其子類,因此要盡早消除錯(cuò)誤。6.多態(tài)性同一消息為不同的對象接受時(shí)可產(chǎn)生完全不同的行動(dòng),這種現(xiàn)象稱為多態(tài)性。利用多態(tài)性用戶可發(fā)送一個(gè)通用的信息,而將所有的實(shí)現(xiàn)細(xì)節(jié)都留給接受消息的對象自行決定。與多態(tài)相關(guān)的一個(gè)概念是動(dòng)態(tài)綁定。面向?qū)ο蟪绦虻慕M成面向?qū)ο蟪绦蛲ǔS梢幌盗蓄惤M成在類中封裝了數(shù)據(jù)和作用在數(shù)據(jù)上的操作(即方法)類和類之間按繼承關(guān)系組成一個(gè)無環(huán)路有向圖單繼承(Java)多繼承(C++)對象是類的實(shí)例面向?qū)ο蟮奶匦岳^承(代碼重用)封裝(信息隱蔽)多態(tài)(動(dòng)態(tài)綁定)繼承對測試的影響當(dāng)一個(gè)類被子類繼承后,繼承的方法需要在子類中重新測試。多重繼承會顯著地增加派生類的復(fù)雜程度,導(dǎo)致一些難以發(fā)現(xiàn)的隱含錯(cuò)誤。信息隱蔽(封裝)對測試的影響類的重要作用之一是信息隱蔽;信息隱蔽避免類中有關(guān)實(shí)現(xiàn)細(xì)節(jié)的信息被錯(cuò)誤地使用;隱蔽機(jī)制給測試帶來了困難,解決辦法:修改被測試類在其子類中定義新操作,協(xié)助測試引入一些機(jī)制來打破封裝;多態(tài)性對測試的影響多態(tài)的形式:重載(類內(nèi))覆蓋(類外)多態(tài)允許任何操作都能夠包括類型不確定的參數(shù),這就增加了應(yīng)該測試的實(shí)參的種類。動(dòng)態(tài)綁定和多態(tài)性所帶來的不確定性,增大了測試難度。在傳統(tǒng)軟件中,確定單元的指導(dǎo)方針是:1、能夠自身編譯的最小程序塊;2、單一過程/函數(shù)(獨(dú)立);3、由一個(gè)人完成的小規(guī)模工作;9.2面向?qū)ο鬁y試的層次面向?qū)ο鬁y試的層次面向?qū)ο鬁y試的層次,取決于單元的構(gòu)成,一般采用三層或四層方式。如果把單個(gè)操作或方法看作單元,則有四層測試,即方法、類、集成和系統(tǒng)測試。如果把類看作單元,則有三層測試:類測試,集成測試,系統(tǒng)測試。面向?qū)ο鬁y試的主要問題是集成測試,即類之間的交互測試。9.3面向?qū)ο髥卧獪y試面向?qū)ο筌浖膯卧獪y試觀點(diǎn)以方法為單元

以類為單元以方法為單元將面向?qū)ο髥卧獪y試歸結(jié)為傳統(tǒng)的(過程)單元測試??梢允褂盟袀鹘y(tǒng)功能性測試和結(jié)構(gòu)性測試手段。如果把方法看作是面向?qū)ο蟮膯卧?,必須提供能夠?qū)嵗臉额?,以及起?qū)動(dòng)器作用的“主程序”類以提供和分析測試用例。以類為單元主要考察封裝在一個(gè)類中的方法和類的狀態(tài)行為,重點(diǎn)測試同一個(gè)類中的不同方法之間的交互關(guān)系。把類作為單元,可以解決類內(nèi)集成問題,但是會產(chǎn)生其它問題。類測試過程為類創(chuàng)建實(shí)例;創(chuàng)造適當(dāng)?shù)沫h(huán)境;運(yùn)行測試用例(向一個(gè)實(shí)例發(fā)送一個(gè)或多個(gè)消息);通過參數(shù)來檢查測試運(yùn)行的結(jié)果;清除執(zhí)行測試用例所需的測試環(huán)境。類在UML中的描述在UML中,用矩形來表示類,并劃分為三個(gè)區(qū)域:名稱區(qū)域:顯示類的名稱;屬性區(qū)域:顯示在類中定義的變量;操作區(qū)域:顯示在類中定義的方法;ClassNameAttributesOperation()ClassNameAttributesOperation()

InterfaceOperation()具體類抽象類接口類一、繼承層次結(jié)構(gòu)中類的測試?yán)^承是實(shí)現(xiàn)接口和代碼復(fù)用的有效機(jī)制。根據(jù)繼承機(jī)制的特點(diǎn),父類中被測試用例所測試的代碼被子類繼承,只要父類代碼沒有被子類“覆蓋”,那么就不用重新創(chuàng)建這些測試用例。例:Class_A+operation1()+operation2()Class_B+operation3()Class_C+operation2()+operation3()類之間的繼承關(guān)系類繼承類類方法是否改變是否增加測試用例Class_AClass_BClass_BClass_AClass_Coperation1()operation2()operation3()operation2()operation1()operation3()operation2()operation1()FalseFalseFalseTrueTrueTrueFalseFalseTrueFalseTrueTrue是否需要產(chǎn)生新的子類測試用例?繼承層次結(jié)構(gòu)中類測試的測試用例可以采用如下增補(bǔ)原則:(1)如果子類新增了一個(gè)或者多個(gè)新的操作,就需要增加相應(yīng)的測試用例。(2)如果子類定義的同名方法覆蓋了父類的方法,就需要增加相應(yīng)的測試用例。

二、接口類測試

接口不存在任何構(gòu)造方法,因此無法被實(shí)現(xiàn);由于接口一定會在某個(gè)類中實(shí)現(xiàn),因此就使用一個(gè)實(shí)現(xiàn)接口的類來做測試。遵循以下原則:如果接口沒有被任何類實(shí)現(xiàn)就無需進(jìn)行測試。如果已被別的類實(shí)現(xiàn),那么就針對實(shí)現(xiàn)該接口的類進(jìn)行測試。Class_C+Class_C+a_Method()+b_Method()+c_Method()Interface_A+a_method()+b_method()三、抽象類測試抽象類不能創(chuàng)建對象(不能被實(shí)例化)。測試時(shí),首先需要繼承被測試抽象類,實(shí)現(xiàn)里面的抽象方法(函數(shù))。四、重載和覆蓋測試覆蓋是在子類中重新定義了從父類中繼承的同名方法;重載是類對自身已有的同名方法的重新定義。在測試過程中,可以參考如下兩個(gè)原則:①要對類實(shí)例方法的所有重載形式分別進(jìn)行測試;②要對覆蓋了父類的同名方法進(jìn)行測試;

五、異常測試因?yàn)榇嬖诋惓?,在?gòu)建測試用例時(shí),還要考慮如何測試在某種特殊情況下程序代碼是否返回了指定的狀態(tài)。9.3面向?qū)ο蟮募蓽y試如果單元測試以方法/操作為單元,則集成測試需要進(jìn)行兩極:類內(nèi)集成和類間集成;如果單元測試以類為單元,則集成測試就是類間集成(類簇);集成測試能夠檢測出類相互作用時(shí)才會發(fā)生的錯(cuò)誤。面向?qū)ο蟮募蓽y試把一組相互有影響的類看作一個(gè)整體稱為類簇。根據(jù)系統(tǒng)中相關(guān)類的層次關(guān)系,檢查類之間的相互作用的正確性:檢查各相關(guān)類之間消息連接的合法性;子類的繼承性與父類的一致性;動(dòng)態(tài)綁定執(zhí)行的正確性;類簇協(xié)同完成系統(tǒng)功能的正確性等等??梢愿鶕?jù)協(xié)作關(guān)系來設(shè)計(jì)集成測試的方案,其實(shí)質(zhì)就是基于調(diào)用的集成??梢圆捎贸蓪珊拖噜徏傻姆椒?。1.基于UML協(xié)作圖的集成測試UML序列圖是按時(shí)間的順序來描述對象之間交互的模型。由系統(tǒng)的一個(gè)輸入事件作為激勵(lì),對其觸發(fā)的一組類進(jìn)行測試,執(zhí)行相應(yīng)的操作

溫馨提示

  • 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

提交評論