清華大學(xué)殷仁昆教授講授《軟件工程》講義2_第1頁(yè)
清華大學(xué)殷仁昆教授講授《軟件工程》講義2_第2頁(yè)
清華大學(xué)殷仁昆教授講授《軟件工程》講義2_第3頁(yè)
清華大學(xué)殷仁昆教授講授《軟件工程》講義2_第4頁(yè)
清華大學(xué)殷仁昆教授講授《軟件工程》講義2_第5頁(yè)
已閱讀5頁(yè),還剩73頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程

第八章面向?qū)ο蟮臏y(cè)試8.1面向?qū)ο鬁y(cè)試的概念8.2開(kāi)發(fā)前期的面向?qū)ο鬁y(cè)試8.3開(kāi)發(fā)后期的面向?qū)ο鬁y(cè)試8.4分布式系統(tǒng)的測(cè)試18.1面向?qū)ο鬁y(cè)試的概念

面向?qū)ο笙到y(tǒng)的測(cè)試與傳統(tǒng)的基于功能的系統(tǒng)的測(cè)試之間存在很大差別:對(duì)象作為一個(gè)單獨(dú)的構(gòu)件一般比一個(gè)功能模塊大。由對(duì)象到子系統(tǒng)的集成通常是松散耦合的,沒(méi)有一個(gè)明顯的“頂層”。如果對(duì)象被復(fù)用,測(cè)試者無(wú)權(quán)進(jìn)入構(gòu)件內(nèi)部來(lái)分析其代碼。2面向?qū)ο蟮拈_(kāi)發(fā)模型將系統(tǒng)開(kāi)發(fā)分為面向?qū)ο蠓治觯∣OA),面向?qū)ο笤O(shè)計(jì)(OOD)和面向?qū)ο缶幊蹋∣OP)三個(gè)階段。分析階段產(chǎn)生整個(gè)問(wèn)題領(lǐng)域的抽象描述,在此基礎(chǔ)上,進(jìn)一步歸納出適用于面向?qū)ο缶幊陶Z(yǔ)言的類(lèi)和類(lèi)結(jié)構(gòu),最后形成代碼。針對(duì)這種開(kāi)發(fā)模型,結(jié)合傳統(tǒng)測(cè)試步驟的劃分,本著在整個(gè)開(kāi)發(fā)過(guò)程中不斷測(cè)試的原則,應(yīng)將開(kāi)發(fā)階段的測(cè)試與編碼完成后的單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試用一個(gè)測(cè)試模型描述。3面向?qū)ο鬁y(cè)試模型

OOSystemTestOOIntegrationTestOOUnitTestOOATestOODTestOOPTestOOAOODOOP4OOATest和OODTest是對(duì)分析結(jié)果和設(shè)計(jì)結(jié)果的測(cè)試,主要是對(duì)分析設(shè)計(jì)產(chǎn)生的文本進(jìn)行,是軟件開(kāi)發(fā)前期的關(guān)鍵性測(cè)試。OOPTest主要針對(duì)編程風(fēng)格和程序代碼實(shí)現(xiàn)進(jìn)行測(cè)試,其主要的測(cè)試內(nèi)容在面向?qū)ο髥卧獪y(cè)試和面向?qū)ο蠹蓽y(cè)試中體現(xiàn)。面向?qū)ο髥卧獪y(cè)試是對(duì)程序內(nèi)部具體單一的功能模塊的測(cè)試,如果程序是用C++語(yǔ)言實(shí)現(xiàn),主要就是對(duì)類(lèi)成員函數(shù)的測(cè)試。面向?qū)ο髥卧獪y(cè)試是進(jìn)行面向?qū)ο蠹蓽y(cè)試的基礎(chǔ)。5面向?qū)ο蠹蓽y(cè)試主要對(duì)系統(tǒng)內(nèi)部的相互服務(wù)進(jìn)行測(cè)試,如成員函數(shù)間的相互作用,類(lèi)間的消息傳遞等。面向?qū)ο蠹蓽y(cè)試不但要基于面向?qū)ο髥卧獪y(cè)試,更要參見(jiàn)OOD或OODTest結(jié)果。面向?qū)ο笙到y(tǒng)測(cè)試是基于面向?qū)ο蠹蓽y(cè)試的最后階段的測(cè)試,主要以用戶需求為測(cè)試標(biāo)準(zhǔn),也需要借鑒OOA或OOATest結(jié)果。

68.2開(kāi)發(fā)前期的面向?qū)ο鬁y(cè)試

面向?qū)ο蟮南到y(tǒng)開(kāi)發(fā)經(jīng)歷面向?qū)ο蠓治觯∣OA)面向?qū)ο笤O(shè)計(jì)(OOD)面向?qū)ο缶幊蹋∣OP)等三個(gè)階段。在這個(gè)時(shí)期的測(cè)試工作主要是靜態(tài)測(cè)試。通過(guò)各種評(píng)審和質(zhì)量分析活動(dòng),完成必須的測(cè)試工作,及時(shí)檢測(cè)和克服各種缺陷。78.2.1面向?qū)ο蠓治龅臏y(cè)試

傳統(tǒng)的面向過(guò)程分析是一個(gè)功能分解的過(guò)程,是把一個(gè)系統(tǒng)看成可以分解的功能的集合。這種傳統(tǒng)的功能分解分析法的著眼點(diǎn)在于一個(gè)系統(tǒng)需要什么樣的信息處理方法和過(guò)程,以過(guò)程的抽象來(lái)對(duì)待系統(tǒng)的需要。面向?qū)ο蠓治觯∣OA)是“把E-R圖和語(yǔ)義網(wǎng)絡(luò)模型,即信息模型中的概念,與面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中的重要概念結(jié)合在一起而形成的分析方法”,最后得到問(wèn)題領(lǐng)域的可視的形式描述。OOA的結(jié)果是為后續(xù)階段中類(lèi)的選定和實(shí)現(xiàn),類(lèi)層8 層次結(jié)構(gòu)的組織和實(shí)現(xiàn)提供平臺(tái)。OOA對(duì)問(wèn)題領(lǐng)域分析抽象的不完整,最終會(huì)影響軟件的功能實(shí)現(xiàn),導(dǎo)致軟件開(kāi)發(fā)后期大量可避免的修補(bǔ)工作;而一些冗余的對(duì)象或結(jié)構(gòu)會(huì)影響類(lèi)的選定、程序的整體結(jié)構(gòu)或增加程序員不必要的工作量。因此,OOA測(cè)試的重點(diǎn)在其完整性和冗余性。根據(jù)Coad和Yourdon方法所提出的OOA實(shí)現(xiàn)步驟,對(duì)OOA階段的測(cè)試劃分為以下五個(gè)方面:對(duì)認(rèn)定的類(lèi)的測(cè)試對(duì)認(rèn)定的結(jié)構(gòu)的測(cè)試對(duì)認(rèn)定的主題的測(cè)試9對(duì)定義的屬性和實(shí)例連接的測(cè)試對(duì)定義的服務(wù)和消息連接的測(cè)試對(duì)認(rèn)定的類(lèi)的測(cè)試OOA中認(rèn)定的類(lèi)是對(duì)問(wèn)題領(lǐng)域中的結(jié)構(gòu),其他相關(guān)系統(tǒng),設(shè)備,被記憶的事件,系統(tǒng)涉及的人員等實(shí)際對(duì)象的抽象。對(duì)它的測(cè)試可以從如下方面考慮:認(rèn)定的類(lèi)是否全面,是否問(wèn)題領(lǐng)域中所有涉及到的對(duì)象都反映在認(rèn)定的類(lèi)中。認(rèn)定的類(lèi)是否具有多個(gè)屬性。只有一個(gè)屬性的類(lèi)通常應(yīng)看成其他類(lèi)的屬性,而不是抽象10為獨(dú)立的類(lèi)類(lèi)。認(rèn)定為同一一個(gè)類(lèi)的對(duì)對(duì)象是否有有共同的,,區(qū)別于其其他類(lèi)對(duì)象象的共同屬屬性。對(duì)認(rèn)定為同同一類(lèi)的對(duì)對(duì)象是否提供或需要要相同的服服務(wù),如果服務(wù)務(wù)隨著不同同的對(duì)象而而變化,認(rèn)認(rèn)定的對(duì)象象就需要分分解或利用用繼承性來(lái)來(lái)分類(lèi)表示示。如果系統(tǒng)不不需要始終終保持類(lèi)所所代表的對(duì)對(duì)象的信息息,認(rèn)定的的類(lèi)也無(wú)必必要存在。。認(rèn)定的類(lèi)的的名稱應(yīng)該該盡量準(zhǔn)確確,適用。。對(duì)認(rèn)定的結(jié)結(jié)構(gòu)的測(cè)試試11在Coad和Yourdon方法中,,認(rèn)定的結(jié)結(jié)構(gòu)分為兩兩種:泛化結(jié)構(gòu)和復(fù)合結(jié)構(gòu)。泛化結(jié)構(gòu)體現(xiàn)了了問(wèn)題領(lǐng)域域中對(duì)象的的一般與特特殊的關(guān)系系,復(fù)合結(jié)構(gòu)體現(xiàn)了了問(wèn)題領(lǐng)域域中對(duì)象的的整體與局局部的關(guān)系系。1)對(duì)泛化結(jié)構(gòu)的測(cè)試可從從如下方面面著手:對(duì)于結(jié)構(gòu)中中的一個(gè)類(lèi)類(lèi),尤其是是處于高層層的類(lèi),看看是否能在在問(wèn)題領(lǐng)域域中派生出出其下一層層的類(lèi)。對(duì)于結(jié)構(gòu)中中的一個(gè)類(lèi)類(lèi),尤其是是處于同一一低層的類(lèi)類(lèi),看是否否能抽象出出在現(xiàn)實(shí)世世界中有意意義的更一一般的上層層的類(lèi)。12高層的類(lèi)的的屬性和服服務(wù)是否完完全體現(xiàn)下下層的共性性。低層的類(lèi)是是否基于其其上層類(lèi)的的屬性和服服務(wù)并具有有自己的特特殊性。對(duì)復(fù)合結(jié)構(gòu)的測(cè)試從如如下方面入入手:整體類(lèi)和局局部類(lèi)的復(fù)復(fù)合(聚合合)關(guān)系是是否符合現(xiàn)現(xiàn)實(shí)的關(guān)系系。整體類(lèi)的局局部類(lèi)是否否在問(wèn)題領(lǐng)領(lǐng)域中有實(shí)實(shí)際應(yīng)用。。整體類(lèi)中是是否遺漏了了在問(wèn)題領(lǐng)領(lǐng)域中有用用的局部類(lèi)類(lèi)。13局部類(lèi)是否否能夠在問(wèn)問(wèn)題領(lǐng)域中中組合出新新的有現(xiàn)實(shí)實(shí)意義的整整體類(lèi)。對(duì)認(rèn)定的主主題的測(cè)試試主題是在對(duì)對(duì)象和結(jié)構(gòu)構(gòu)的基礎(chǔ)上上更高一層層的抽象,,是為了提提供OOA分析結(jié)果果的可見(jiàn)性性,如同文文章對(duì)各部部分內(nèi)容的的概要。對(duì)主題的測(cè)測(cè)試應(yīng)該考考慮以下方方面:貫徹GeorgeMiller的的“7+2”原則,,如果主題題個(gè)數(shù)超過(guò)過(guò)7個(gè)個(gè),就要求求對(duì)有較密密切屬性和和服務(wù)的主主題進(jìn)行歸歸并。14主題所反映映的一組類(lèi)類(lèi)和結(jié)構(gòu)是是否具有相相同和相近近的屬性和和服務(wù)。認(rèn)定的主題題是否是類(lèi)類(lèi)和結(jié)構(gòu)更更高層的抽抽象,是否否便于理解解OOA結(jié)結(jié)果的概貌貌(尤其是是對(duì)非技術(shù)術(shù)人員的OOA結(jié)結(jié)果讀者))。主題間的消消息連接((抽象)是是否代表了了主題所反反映的類(lèi)和和結(jié)構(gòu)之間間的所有關(guān)關(guān)聯(lián)。對(duì)定義的屬屬性和實(shí)例例連接的測(cè)測(cè)試屬性描述類(lèi)類(lèi)或結(jié)構(gòu)中中實(shí)例(對(duì)對(duì)象)的特特性。而實(shí)實(shí)例連接則則反映實(shí)例例集合之間間的映射關(guān)關(guān)系。15對(duì)屬性和實(shí)實(shí)例連接的的測(cè)試從如如下方面考考慮:定義的屬性性是否對(duì)相相應(yīng)的類(lèi)和和泛化結(jié)構(gòu)構(gòu)的每個(gè)實(shí)實(shí)例都適用用。定義的屬性性在現(xiàn)實(shí)世世界中是否否與這種實(shí)實(shí)例關(guān)系密密切。定義的屬性性在問(wèn)題領(lǐng)領(lǐng)域中是否否與這種實(shí)實(shí)例關(guān)系密密切。定義的屬性性是否能夠夠不依賴于于其他屬性性被獨(dú)立理理解。定義的屬性性在泛化結(jié)結(jié)構(gòu)中的位位置是否恰恰當(dāng),低層層類(lèi)的共有有屬性是否否在其上層層類(lèi)的屬性性中16有定義。問(wèn)題領(lǐng)域中每每個(gè)類(lèi)的屬性性是否定義完完整。定義的實(shí)例連連接是否符合合實(shí)際。在問(wèn)題領(lǐng)域中中實(shí)例連接的的定義是否完完整,特別需需要注意一對(duì)對(duì)多和多對(duì)多多的實(shí)例連接接。對(duì)定義的服務(wù)務(wù)和消息關(guān)聯(lián)聯(lián)的測(cè)試定義服務(wù)就是是定義每一個(gè)個(gè)類(lèi)和結(jié)構(gòu)在在問(wèn)題領(lǐng)域中中的行為。由由于問(wèn)題領(lǐng)域域中的實(shí)例之之間需要通信信,在OOA中就需要定定義消息的連連接。對(duì)服務(wù)和消息息連接的測(cè)試試應(yīng)考慮以下下幾方面:17類(lèi)和結(jié)構(gòu)在問(wèn)問(wèn)題領(lǐng)域中的的實(shí)例具有不不同的狀態(tài),,是否為狀態(tài)態(tài)轉(zhuǎn)換定義了了相應(yīng)的服務(wù)務(wù)。類(lèi)或結(jié)構(gòu)所需需要的服務(wù)是是否都定義了了相應(yīng)的消息息連接。定義的消息連連接所調(diào)用的的服務(wù)是否正正確。沿著消息連接接所執(zhí)行的線線索(消息的的調(diào)用序列))是否合理,,是否符合實(shí)實(shí)際。定義的服務(wù)是是否有重復(fù),,是否定義了了能夠得到的的服務(wù)。18面面向?qū)ο笙笤O(shè)計(jì)的測(cè)試試面向?qū)ο笤O(shè)計(jì)計(jì)(OOD))從“建模的的觀點(diǎn)”出發(fā)發(fā),基于OOA模型歸納納出類(lèi),并建建立類(lèi)的層次次結(jié)構(gòu)或進(jìn)一一步構(gòu)造成類(lèi)類(lèi)庫(kù),實(shí)現(xiàn)分分析結(jié)果對(duì)問(wèn)問(wèn)題領(lǐng)域的抽抽象。OOD歸納出出的類(lèi),可以以是OOA類(lèi)類(lèi)的簡(jiǎn)單延續(xù),也可以是基基于設(shè)計(jì)要求求新建立或從已有類(lèi)演化化的類(lèi)。因此,,OOD是OOA的進(jìn)一一步細(xì)化和更更高層的抽象象,OOD與與OOA的的界限通常是是難以嚴(yán)格區(qū)區(qū)分的。OOD確定類(lèi)類(lèi)和類(lèi)結(jié)構(gòu)是是想通過(guò)重新新組合或加以以適當(dāng)?shù)难a(bǔ)充充,可方便地地實(shí)現(xiàn)功能的的復(fù)用和擴(kuò)充充。19OOD的測(cè)試試可從如下三三方面考慮::對(duì)認(rèn)定的類(lèi)的的測(cè)試對(duì)構(gòu)造的類(lèi)層層次結(jié)構(gòu)的測(cè)測(cè)試對(duì)類(lèi)庫(kù)的支持持的測(cè)試對(duì)認(rèn)定的類(lèi)的的測(cè)試認(rèn)定的類(lèi)的測(cè)測(cè)試應(yīng)考慮以以下幾個(gè)方面面:是否涵蓋了OOA中所有有認(rèn)定的對(duì)象象。是否能體現(xiàn)OOA中定義義的屬性。是否能實(shí)現(xiàn)OOA中定義義的服務(wù)。是否對(duì)應(yīng)著一一個(gè)含義明確確的數(shù)據(jù)抽象象。20是否盡可能少少地依賴其他他類(lèi)。類(lèi)中的方法((C++稱為為類(lèi)的成員函函數(shù))是否只只有單一用途途。對(duì)構(gòu)造造的類(lèi)類(lèi)層次次結(jié)構(gòu)構(gòu)的測(cè)測(cè)試為能充充分發(fā)發(fā)揮面面向?qū)?duì)象的的繼承承共享享特性性,OOD的類(lèi)類(lèi)層次次結(jié)構(gòu)構(gòu),通通常基基于OOA中產(chǎn)產(chǎn)生的的泛化化結(jié)構(gòu)構(gòu)的原原則來(lái)來(lái)組織織,著著重體體現(xiàn)父父類(lèi)和和子類(lèi)類(lèi)之間間一般般性和和特殊殊性關(guān)關(guān)系。。在當(dāng)前前的問(wèn)問(wèn)題領(lǐng)領(lǐng)域,,對(duì)類(lèi)類(lèi)層次次結(jié)構(gòu)構(gòu)的主主要要要求是是能在在解空空間構(gòu)構(gòu)造實(shí)實(shí)現(xiàn)全全部功功能的的結(jié)構(gòu)構(gòu)框架架。為為此應(yīng)應(yīng)做如如下幾幾個(gè)方方面的的檢查查:21類(lèi)層次次結(jié)構(gòu)構(gòu)中是是否涵涵蓋了了所有有定義義的類(lèi)類(lèi)。是否能能體現(xiàn)現(xiàn)OOA中中所定定義的的實(shí)例例連接接。是否能能實(shí)現(xiàn)現(xiàn)OOA中中所定定義的的消息息連接接。子類(lèi)是是否具具有父父類(lèi)沒(méi)沒(méi)有的的新特特性。。子類(lèi)之之間的的共同同特性性是否否完全全在父父類(lèi)中中得以以體現(xiàn)現(xiàn)。對(duì)類(lèi)庫(kù)庫(kù)支持持的測(cè)測(cè)試對(duì)類(lèi)庫(kù)庫(kù)的支支持雖雖然也也屬于于類(lèi)層層次結(jié)結(jié)構(gòu)的的組織織問(wèn)題題,但但其強(qiáng)強(qiáng)調(diào)的的重點(diǎn)點(diǎn)是軟軟件的的復(fù)用用。由由于它它并不不直接接影響響當(dāng)前前軟件件的開(kāi)開(kāi)發(fā)和和功能能實(shí)現(xiàn)現(xiàn),可可以將將其單單獨(dú)提提出來(lái)來(lái)測(cè)試試。22有關(guān)類(lèi)類(lèi)庫(kù)支支持的的測(cè)試試可從從以下下幾個(gè)個(gè)方面面入手手:一組子子類(lèi)中中有關(guān)關(guān)某種種含義義相同同或基基本相相同的的操作作,是是否有有相同同的接接口((包括括名字字和參參數(shù)表表)。。類(lèi)中方方法((C++稱稱為類(lèi)類(lèi)的成成員函函數(shù)))的功功能是是否比比較單單一,,相應(yīng)應(yīng)的代代碼行行是否否較少少(建建議不不超過(guò)過(guò)100行行)。。類(lèi)的層層次結(jié)結(jié)構(gòu)是是否是是深度度大,,寬度度小。。23面面向?qū)?duì)象編編程的的測(cè)試試典型的的面向向?qū)ο笙蟪绦蛐蚓哂杏欣^承、封裝和多態(tài)等新特特性,,這使使得傳傳統(tǒng)的的測(cè)試試策略略必須須有所所改變變。封裝是對(duì)數(shù)數(shù)據(jù)的的隱藏藏,外外界只只能通通過(guò)接接口提提供的的操作作來(lái)訪訪問(wèn)或或修改改數(shù)據(jù)據(jù),這這就降降低了了直接接接觸觸數(shù)據(jù)據(jù)的可可能性性,妨妨礙了了對(duì)非非法數(shù)數(shù)據(jù)操操作的的測(cè)試試。繼承提高了了代碼碼的復(fù)復(fù)用率率,同同時(shí)也也提高高了錯(cuò)錯(cuò)誤傳傳播的的概率率。繼繼承向向測(cè)試試提出出了這這樣一一個(gè)難難題::對(duì)繼繼承的的代碼碼究竟竟如何何測(cè)試試?多態(tài)令面向向?qū)ο笙蟪绦蛐驅(qū)ν馔獗憩F(xiàn)現(xiàn)出強(qiáng)強(qiáng)大的的處理理能力力,24但同時(shí)時(shí)卻使使得程程序內(nèi)內(nèi)“同同一””函數(shù)數(shù)的行行為復(fù)復(fù)雜化化,測(cè)測(cè)試時(shí)時(shí)不得得不考考慮不不同類(lèi)類(lèi)型的的同名名操作作具體體的實(shí)實(shí)現(xiàn)代代碼和和產(chǎn)生生的行行為。。面向?qū)?duì)象程程序是是把功功能的的實(shí)現(xiàn)現(xiàn)分布布在類(lèi)類(lèi)中。。與某某種設(shè)設(shè)計(jì)功功能相相關(guān)的的一組組對(duì)象象,通通過(guò)對(duì)對(duì)象提提供的的服務(wù)和對(duì)象象之間間的消息傳傳遞,共同同協(xié)作作來(lái)實(shí)現(xiàn)這這個(gè)功功能。這種種面向向?qū)ο笙蟪绦蛐蝻L(fēng)格格,可可將出出現(xiàn)的的錯(cuò)誤誤精確確定位位在某某一個(gè)個(gè)具體體的對(duì)對(duì)象。。因此,,在面向向?qū)ο笙缶幊坛蹋∣OP)階階段,,將測(cè)測(cè)試的的目光光集中中在類(lèi)類(lèi)功能的的實(shí)現(xiàn)現(xiàn)和相相應(yīng)的的面向向?qū)ο笙蟪绦蛐蝻L(fēng)格格上。。251.數(shù)數(shù)據(jù)據(jù)成員員是否否滿足足數(shù)據(jù)據(jù)封裝裝的要要求檢查數(shù)數(shù)據(jù)成成員是是否滿滿足數(shù)數(shù)據(jù)封封裝的的要求求,就就是檢檢查其其數(shù)據(jù)成成員是是否能能被外外界((數(shù)據(jù)據(jù)成員員所屬屬的類(lèi)類(lèi)或子子類(lèi)以以外的的調(diào)用用)直直接調(diào)調(diào)用。更直直觀的的說(shuō),,當(dāng)改改變數(shù)數(shù)據(jù)成成員的的結(jié)構(gòu)構(gòu)時(shí),,看其其是否否影響響了類(lèi)類(lèi)的對(duì)對(duì)外接接口,,是否否會(huì)導(dǎo)導(dǎo)致相相應(yīng)外外界必必須改改動(dòng)。。值得注注意,,有時(shí)時(shí)強(qiáng)制制的類(lèi)類(lèi)型轉(zhuǎn)轉(zhuǎn)換會(huì)會(huì)破壞壞數(shù)據(jù)據(jù)的封封裝特特性。。例如如:classHiden{private:inta=1;26char*p="hiden";}classVisible{public:intb=2;char*s="visible";}……..……..Hidenpp;Visible*qq=(Visible*)&pp;在上面的的程序段段中,pp的數(shù)數(shù)據(jù)成員員可以通通過(guò)qq被隨意意訪問(wèn)。。272.類(lèi)類(lèi)是否實(shí)實(shí)現(xiàn)了要要求的功功能類(lèi)的功能能都是通通過(guò)類(lèi)的的成員函函數(shù)實(shí)現(xiàn)現(xiàn)的。在在測(cè)試類(lèi)類(lèi)的功能能實(shí)現(xiàn)時(shí)時(shí),應(yīng)該該首先保保證類(lèi)成成員函數(shù)數(shù)執(zhí)行的的正確性性。單獨(dú)地看看類(lèi)的成成員函數(shù)數(shù),與過(guò)過(guò)程性程程序中的的函數(shù)或或過(guò)程沒(méi)沒(méi)有本質(zhì)質(zhì)的區(qū)別別,幾乎乎所有傳傳統(tǒng)的單單元測(cè)試試中使用用的方法法,都可可在面向向?qū)ο蟮牡膯卧獪y(cè)測(cè)試中使使用。類(lèi)函數(shù)成成員的正正確行為為只是類(lèi)類(lèi)能夠?qū)崒?shí)現(xiàn)要求求功能的的基礎(chǔ),,而類(lèi)成成員函數(shù)數(shù)之間的的交互和和類(lèi)之間間的服務(wù)務(wù)調(diào)用是是單元測(cè)測(cè)試無(wú)法法確定的的。因此此需要進(jìn)進(jìn)行面向向?qū)ο蟮牡募蓽y(cè)測(cè)試。28需要注意意的是,,測(cè)試類(lèi)類(lèi)的功能能,不能能僅滿足足于被測(cè)測(cè)試代碼碼能無(wú)錯(cuò)運(yùn)行行或被測(cè)試試類(lèi)提供供的功能無(wú)錯(cuò)錯(cuò),還應(yīng)該該以O(shè)OD結(jié)結(jié)果為依依據(jù),檢檢測(cè)類(lèi)提提供的功功能是否否滿足設(shè)設(shè)計(jì)的要要求,是是否有缺缺陷。必要時(shí)((如通過(guò)過(guò)OOD結(jié)果仍仍不清楚楚明確的的地方))還應(yīng)該該參照OOA的的結(jié)果,并以其其為最終終標(biāo)準(zhǔn)。。29編程完成成之后,,需要經(jīng)經(jīng)歷三個(gè)個(gè)階段的的測(cè)試::?jiǎn)卧獪y(cè)試試集成測(cè)試試系統(tǒng)測(cè)試試傳統(tǒng)的單單元測(cè)試試是針對(duì)對(duì)程序的的函數(shù)、、過(guò)程或或完成某某一特定定功能的的程序塊塊所進(jìn)行行的測(cè)試試。8.3開(kāi)開(kāi)發(fā)后后期的面面向?qū)ο笙鬁y(cè)試面面向?qū)ο笙蟮膯卧獪y(cè)試((UnitTest)30面向?qū)ο笙蟮膯卧獪y(cè)試則則是針對(duì)對(duì)面向?qū)?duì)象程序序的基本本單元-對(duì)象類(lèi)。。為此需需要分兩兩步走::測(cè)試與對(duì)對(duì)象相關(guān)關(guān)聯(lián)的單單個(gè)操作作它們是一一些函數(shù)數(shù)或程序序,傳統(tǒng)統(tǒng)的白盒盒測(cè)試和和黑盒測(cè)測(cè)試方法法都可以以使用。。測(cè)試單個(gè)個(gè)對(duì)象類(lèi)類(lèi)黑盒測(cè)試試的原理理不變,,但等價(jià)價(jià)劃分的的概念要要擴(kuò)展以以適合操操作序列列的情況況。在設(shè)計(jì)測(cè)測(cè)試用例例時(shí),可可基于以以下兩個(gè)個(gè)假設(shè)::1.對(duì)對(duì)象操作作的測(cè)試試31如果操作作(成員員函數(shù)))對(duì)某一一類(lèi)輸入入中的一一個(gè)數(shù)據(jù)據(jù)正確執(zhí)執(zhí)行,對(duì)對(duì)同類(lèi)中中的其他他輸入也也能正確確執(zhí)行。。如果操作作(成員員函數(shù)))對(duì)某一一復(fù)雜度度的輸入入能夠正正確執(zhí)行行,則對(duì)對(duì)更高復(fù)復(fù)雜度的的輸入也也應(yīng)能正正確執(zhí)行行。例如需要要選擇字字符串作作為輸入入時(shí),基基于本假假設(shè),就就無(wú)需計(jì)計(jì)較字符符串的長(zhǎng)長(zhǎng)度。除除非字符符串的長(zhǎng)長(zhǎng)度是固固定的,,如IP地址字字符串。。在面向?qū)?duì)象程序序中,對(duì)對(duì)象的操操作(成成員函數(shù)數(shù))通常常都很小小,功能能單一,,函數(shù)之之間調(diào)用用頻繁,,容易出出現(xiàn)一些些不宜發(fā)發(fā)現(xiàn)的錯(cuò)錯(cuò)誤。例例如:32if(-1==write(fid,buffer,amount))error_out();該語(yǔ)句沒(méi)沒(méi)有全面面檢查write()的的返回值值,無(wú)意意中假設(shè)了只只有數(shù)據(jù)據(jù)被完全寫(xiě)入入和沒(méi)有寫(xiě)入入兩種情況。此測(cè)測(cè)試還忽忽略了數(shù)數(shù)據(jù)部分寫(xiě)入入的情況,,就給程程序遺留留了隱患患。按程序的的設(shè)計(jì),,使用函函數(shù)strrchr()查找最后后的匹配配字符,,但程序序中誤寫(xiě)寫(xiě)成了函函數(shù)strchr(),使程序序功能實(shí)實(shí)現(xiàn)時(shí)查查找的是是第一個(gè)個(gè)匹配字字符。程序中將將if(strncmp(str1,str2,strlen(str1)))誤寫(xiě)成了了if(strncmp(str1,str2,strlen(str2)))。如果測(cè)測(cè)試用例例中使用用的數(shù)據(jù)據(jù)str1和和str2長(zhǎng)度度相33同,就無(wú)無(wú)法檢測(cè)測(cè)出。因此,在設(shè)計(jì)計(jì)測(cè)試用例時(shí)時(shí),應(yīng)對(duì)以函數(shù)返回值值作為條件判判斷,字符串操作等情況特別注注意。面向?qū)ο缶幊坛痰奶匦允沟玫脤?duì)成員函數(shù)數(shù)的測(cè)試,又又不完全等同同于傳統(tǒng)的函函數(shù)或過(guò)程測(cè)測(cè)試。尤其是是繼承特性和和多態(tài)特性,,BrianMarick提出了兩點(diǎn):繼承的成員函函數(shù)可能需要要重新測(cè)試對(duì)父類(lèi)中已經(jīng)經(jīng)測(cè)試過(guò)的成成員函數(shù),兩兩種情況需要要在子類(lèi)中重重新測(cè)試:繼承的成員函函數(shù)在子類(lèi)中中做了改動(dòng);;成員函數(shù)調(diào)用用了改動(dòng)過(guò)的的成員函數(shù)。。34例如:假設(shè)父父類(lèi)Bass有兩個(gè)成員函函數(shù):Inherited()Redefined()若子類(lèi)Derived對(duì)Redefined()做了改動(dòng),Derived::Redefined()必需重新測(cè)試。。但如果Derived::Inherited()包含有調(diào)用Redefined()的語(yǔ)句(如::x=x/Redefined())),就需要重重新測(cè)試;反反之,則不必必重新測(cè)試。。2)對(duì)父類(lèi)的測(cè)試試用例不能照照搬到子類(lèi)根據(jù)以上的假假設(shè),Base::Redefined()和Derived::Redefined()是不同的成員員函數(shù),它們們35有不同的說(shuō)明明和實(shí)現(xiàn)。對(duì)對(duì)此,應(yīng)該對(duì)對(duì)Derived::Redefined()重新設(shè)計(jì)測(cè)試試用例。由于面向?qū)ο笙蟮睦^承性,,使得兩個(gè)函函數(shù)還是有相相似之處,故故只需在Base::Redefined()的測(cè)試用例基基礎(chǔ)上添加對(duì)對(duì)Derived::Redfined()的新測(cè)試用例例。例如:Base::Redefined()含有如下語(yǔ)句句if(value<0)message("less");elseif(value==0)message("equal");elsemessage("more");Derived::Redfined()中定義為36if(value<0)message("less");elseif(value==0)message(“Itisequal");else{message("more");if(value==88)message("luck");}在原有的測(cè)試試上,對(duì)Derived::Redfined()的測(cè)試只需做做如下改動(dòng)::改動(dòng)value==0的預(yù)期測(cè)試結(jié)結(jié)果,并增加加value==88的測(cè)試。多態(tài)有幾種不不同的形式,,如參數(shù)多態(tài),包含多態(tài),重載多態(tài)。包含多態(tài)和重載多態(tài)在面向?qū)ο笳Z(yǔ)語(yǔ)言程序中通通常37體現(xiàn)在子類(lèi)與父類(lèi)的的繼承關(guān)系上,對(duì)這兩種種多態(tài)的測(cè)試試可參照對(duì)父父類(lèi)成員函數(shù)數(shù)繼承和重載載的情況處理理。在測(cè)試對(duì)象時(shí)時(shí),完全的覆覆蓋測(cè)試應(yīng)當(dāng)當(dāng)包括:隔離對(duì)象中所所有操作,進(jìn)行獨(dú)立測(cè)測(cè)試。測(cè)試對(duì)象中所所有屬性的設(shè)置和訪問(wèn)問(wèn)。測(cè)試對(duì)象的所所有可能的狀態(tài)轉(zhuǎn)換。所有可能引引起狀態(tài)改變變的事件都要要模擬到。2.對(duì)象類(lèi)類(lèi)測(cè)試38對(duì)象類(lèi),作為為在語(yǔ)法上獨(dú)獨(dú)立的構(gòu)件,,應(yīng)當(dāng)允許在在不同應(yīng)用中中使用。每個(gè)個(gè)類(lèi)都應(yīng)是可可靠的且不需需了解任何實(shí)實(shí)現(xiàn)細(xì)節(jié)就能能復(fù)用。因此此對(duì)象類(lèi)應(yīng)盡盡可能孤立地地進(jìn)行測(cè)試。。設(shè)計(jì)操作的測(cè)測(cè)試用例時(shí)的的要點(diǎn):首先定義測(cè)試試對(duì)象各操作的測(cè)試用例。。對(duì)于一個(gè)單獨(dú)獨(dú)的操作,可可通過(guò)該操作作的前置條件選擇測(cè)試用例例,產(chǎn)生輸出出,讓測(cè)試者者能夠判斷后置條件是否能夠得到到滿足。各個(gè)操作的測(cè)測(cè)試與傳統(tǒng)對(duì)對(duì)函數(shù)過(guò)程定定義的測(cè)試基基本相同。39然后再把測(cè)試試用例組擴(kuò)充充,針對(duì)被測(cè)測(cè)操作調(diào)用對(duì)對(duì)象類(lèi)中其他他操作的情況況,設(shè)計(jì)操作作序列的測(cè)試試用例組。測(cè)試可以覆蓋蓋每個(gè)操作的的整個(gè)輸入域域。但這不夠夠,還必須測(cè)測(cè)試這些操作作的相互作用用,才能認(rèn)為為測(cè)試是充分分的。各個(gè)操作間的的相互作用包包括類(lèi)內(nèi)通信和類(lèi)間通信。設(shè)計(jì)對(duì)象類(lèi)的的規(guī)格說(shuō)明測(cè)測(cè)試時(shí)的要點(diǎn)點(diǎn):把對(duì)象類(lèi)當(dāng)做做一個(gè)黑盒,,確認(rèn)類(lèi)的實(shí)實(shí)現(xiàn)是否遵照照它的定義。。40putReferencePoint(Point)moveTo(Point)ReferencePointarea()draw()erase()getReferencePoint(Point)DisplayableShape(Point)DisplayableShape類(lèi)內(nèi)消息類(lèi)間消息DisplayableShape()41例如,對(duì)于于“?!钡牡臏y(cè)試應(yīng)當(dāng)當(dāng)確保LIFO原原則得以以實(shí)施。對(duì)于多數(shù)對(duì)對(duì)象類(lèi),主主要檢驗(yàn)在在類(lèi)聲明的的public域中的那些操操作。對(duì)于子類(lèi),,要檢查繼繼承父類(lèi)的的public域和protected域的那些操作作。檢查所有public域,protected域及private域域中的操作以以完全檢查查對(duì)象中定定義的操作作。等價(jià)劃分的的思想也可可用到對(duì)象象類(lèi)上。將將使用對(duì)象相相同屬性的測(cè)試歸入入同一個(gè)等等價(jià)劃分集集合中。這這樣可以建建立對(duì)對(duì)象象類(lèi)屬性進(jìn)進(jìn)行初始化化、42訪問(wèn)、更新新等的等價(jià)價(jià)劃分。在設(shè)計(jì)對(duì)象象類(lèi)的行為為測(cè)試時(shí)需需要注意::基于對(duì)象的的狀態(tài)模型進(jìn)行測(cè)試時(shí)時(shí),首先要要識(shí)別需要要測(cè)試的狀態(tài)的變遷遷序列,并定義事事件序列來(lái)來(lái)強(qiáng)制執(zhí)行行這些變遷遷。原則上應(yīng)當(dāng)當(dāng)測(cè)試每一一個(gè)狀態(tài)變變遷序列,,當(dāng)然這樣樣做測(cè)試成成本很高。。完全的單元元應(yīng)當(dāng)保證證類(lèi)的執(zhí)行行必須覆蓋它的一一個(gè)有代表表性的狀態(tài)態(tài)集合。構(gòu)造函數(shù)和和消息序列列(線程))的參數(shù)值值的選擇應(yīng)應(yīng)當(dāng)滿足這這個(gè)規(guī)則。。438.3.2面向?qū)?duì)象的集成成測(cè)試(OOIntegrateTest)當(dāng)開(kāi)發(fā)面向向?qū)ο笙到y(tǒng)統(tǒng)時(shí),集成成的層次并并不明顯。。而當(dāng)一組組對(duì)象類(lèi)通通過(guò)組合行行為提供一一組服務(wù)時(shí)時(shí),則需將將它們一起起測(cè)試,這這就是簇測(cè)測(cè)試。此時(shí)時(shí)不存在自自底向上和和自頂向下下的集成。。面向?qū)ο蟪坛绦蛳嗷フ{(diào)調(diào)用的功能能是散布在在程序的不不同類(lèi)中,,類(lèi)通過(guò)消消息相互作作用申請(qǐng)和和提供服務(wù)務(wù)。類(lèi)的行行為與它的的狀態(tài)密切切相關(guān),狀狀態(tài)不僅僅僅是體現(xiàn)在在類(lèi)數(shù)據(jù)成成員的值,,也許還包包括其他類(lèi)類(lèi)中的狀態(tài)態(tài)信息。44對(duì)象集成測(cè)測(cè)試又稱交互測(cè)試,目的是確確保對(duì)象的的消息傳遞遞能夠正確確進(jìn)行。面向?qū)ο笙迪到y(tǒng)的集成成測(cè)試有3種可可用的方法法:用例或基于于場(chǎng)景的測(cè)測(cè)試用例或場(chǎng)景景描述了對(duì)對(duì)系統(tǒng)的使使用模式。。測(cè)試可以以根據(jù)場(chǎng)景景描述和對(duì)對(duì)象簇來(lái)制制定。這種種測(cè)試著眼于系統(tǒng)統(tǒng)結(jié)構(gòu),首首先測(cè)試幾幾乎不使用用服務(wù)器類(lèi)類(lèi)的獨(dú)立類(lèi)類(lèi),再測(cè)試試那些使用用了獨(dú)立類(lèi)類(lèi)的下一層層次的(依依賴)類(lèi)。。這樣一層層一層地持持續(xù)下去,,直到整個(gè)個(gè)系統(tǒng)構(gòu)造造完成?;诰€程的的測(cè)試它把為響應(yīng)應(yīng)某一系統(tǒng)統(tǒng)輸入或45事件所需的的一組對(duì)象象類(lèi)組裝在在一起。每每一條線程程將分別測(cè)測(cè)試和組裝裝。因?yàn)槊婷嫦驅(qū)ο笙迪到y(tǒng)通常是是事件驅(qū)動(dòng)動(dòng)的,因此此這是一個(gè)個(gè)特別合適適的測(cè)試形形式。對(duì)象交互測(cè)測(cè)試這個(gè)方法提提出了集成成測(cè)試的中中間層概念念。中間層層給出叫做做“方法法-消息”路徑徑的對(duì)象交交互序列。。所謂“原原子系統(tǒng)功功能”就是是指一些輸輸入事件加加上一條““方法-消息”路徑徑,終止于于一個(gè)輸出出事件。集成測(cè)試能能夠檢測(cè)出出相對(duì)獨(dú)立立的單元測(cè)測(cè)試無(wú)法檢檢測(cè)出的那那些類(lèi)相互互作用時(shí)才才會(huì)產(chǎn)生的的錯(cuò)誤。46集成測(cè)試只只關(guān)注于系系統(tǒng)的結(jié)構(gòu)構(gòu)和內(nèi)部的的相互作用用。面向?qū)?duì)象的集成成測(cè)試可以以分成兩步步進(jìn)行:先先進(jìn)行靜態(tài)態(tài)測(cè)試,再再進(jìn)行動(dòng)態(tài)態(tài)測(cè)試。1) 靜態(tài)態(tài)測(cè)試靜態(tài)測(cè)試主主要針對(duì)程程序的結(jié)構(gòu)構(gòu)進(jìn)行,檢檢測(cè)程序結(jié)結(jié)構(gòu)是否符符合設(shè)計(jì)要要求?,F(xiàn)在在流行的一一些測(cè)試軟軟件都能提提供一種稱稱為“可逆逆性工程””的功能,,即通過(guò)源程序序得到類(lèi)關(guān)關(guān)系圖和函函數(shù)功能調(diào)調(diào)用關(guān)系圖圖。如InternationalSoftwareAutomation公司司的Panorama-2forWindows95、Rational公司司的RoseC++Analyzer等。。47將“可逆性性工程”得得到的結(jié)果果與OOD的結(jié)果相相比較,檢檢測(cè)程序結(jié)結(jié)構(gòu)和實(shí)現(xiàn)現(xiàn)上是否有有缺陷。換換句話說(shuō),,通過(guò)這種種方法檢測(cè)測(cè)OOP是是否達(dá)到了了設(shè)計(jì)要求求。2) 動(dòng)態(tài)態(tài)測(cè)試動(dòng)態(tài)測(cè)試在在設(shè)計(jì)測(cè)試試用例時(shí),,通常需要要上述的功功能調(diào)用結(jié)結(jié)構(gòu)圖、類(lèi)類(lèi)關(guān)系圖或或者實(shí)體關(guān)關(guān)系圖為參參考,確定定不需要被被重復(fù)測(cè)試試的部分,,從而優(yōu)化化測(cè)試用例例,減少測(cè)測(cè)試工作量量,使得進(jìn)進(jìn)行的測(cè)試試能夠達(dá)到到一定覆蓋蓋標(biāo)準(zhǔn)。測(cè)試所要達(dá)達(dá)到的覆蓋蓋標(biāo)準(zhǔn)可以以是:48達(dá)到類(lèi)所有有的服務(wù)要要求或服務(wù)務(wù)提供的一一定覆蓋率率;依據(jù)據(jù)類(lèi)類(lèi)間間傳傳遞遞的的消消息息,,達(dá)達(dá)到到對(duì)對(duì)所所有有執(zhí)執(zhí)行行線線程程的的一一定定覆覆蓋蓋率率;;達(dá)到到類(lèi)類(lèi)的的所所有有狀狀態(tài)態(tài)的的一一定定覆覆蓋蓋率率等等。??紤]慮使使用用現(xiàn)現(xiàn)有有的的一一些些測(cè)測(cè)試試工工具具來(lái)來(lái)得得到到程程序序代代碼碼執(zhí)執(zhí)行行的的覆覆蓋蓋率率。。具體體設(shè)設(shè)計(jì)計(jì)測(cè)測(cè)試試用用例例,,可可參參考考下下列列步步驟驟::先選選定定檢檢測(cè)測(cè)的的類(lèi)類(lèi);;參參考考OOD分分析析結(jié)結(jié)果果,,仔仔細(xì)細(xì)列列出出類(lèi)類(lèi)的的狀狀態(tài)態(tài)和和相相應(yīng)應(yīng)的的行行為為、、類(lèi)類(lèi)或或成成員員函函數(shù)數(shù)間間傳傳遞遞的的消消息息、、輸輸入入或或輸輸出出的的界界定定等等。。49確定定覆覆蓋蓋標(biāo)標(biāo)準(zhǔn)準(zhǔn)。。利用用結(jié)結(jié)構(gòu)構(gòu)關(guān)關(guān)系系圖圖確確定定待待測(cè)測(cè)試試類(lèi)類(lèi)的的所所有有關(guān)關(guān)聯(lián)聯(lián)。。根據(jù)據(jù)程程序序中中類(lèi)類(lèi)的的對(duì)對(duì)象象構(gòu)構(gòu)造造測(cè)測(cè)試試用用例例,,確確認(rèn)認(rèn)使使用用什什么么輸輸入入激激發(fā)發(fā)類(lèi)類(lèi)的的狀狀態(tài)態(tài)、、使使用用類(lèi)類(lèi)的的服服務(wù)務(wù)和和期期望望產(chǎn)產(chǎn)生生什什么么行行為為等等。。注意意,,設(shè)設(shè)計(jì)計(jì)測(cè)測(cè)試試用用例例時(shí)時(shí),,不不但但要要設(shè)設(shè)計(jì)計(jì)確確認(rèn)認(rèn)類(lèi)類(lèi)功功能能能能夠夠成成功功執(zhí)執(zhí)行行的的輸輸入入,,還還應(yīng)應(yīng)該該有有意意識(shí)識(shí)的的設(shè)設(shè)計(jì)計(jì)一一些些會(huì)會(huì)導(dǎo)導(dǎo)致致異異常常的的輸輸入入,,確確認(rèn)認(rèn)類(lèi)類(lèi)是是否否有有不不合合法法的的行行為為產(chǎn)產(chǎn)生生,,如如發(fā)發(fā)送送與與類(lèi)類(lèi)狀狀態(tài)態(tài)不不相相適適應(yīng)應(yīng)的的消消息息,,要要求求不不相相適適應(yīng)應(yīng)的的服服務(wù)務(wù)等等。。根根據(jù)據(jù)具具體體情情況況,,動(dòng)動(dòng)態(tài)態(tài)的的集集成成測(cè)測(cè)試試,,有有時(shí)時(shí)也也可可以以通通過(guò)過(guò)系系統(tǒng)統(tǒng)測(cè)測(cè)試試完完成成。。50面面向向?qū)?duì)象象的的系系統(tǒng)統(tǒng)測(cè)測(cè)試試(OOSystemTest)通過(guò)過(guò)單單元元測(cè)測(cè)試試和和集集成成測(cè)測(cè)試試,,僅僅能能保保證證軟軟件件開(kāi)開(kāi)發(fā)發(fā)的的功功能能得得以以實(shí)實(shí)現(xiàn)現(xiàn)。。但但不不能能確確認(rèn)認(rèn)在在實(shí)實(shí)際際運(yùn)運(yùn)行行時(shí)時(shí),,它它是是否否滿滿足足用用戶戶的的需需要要,,是是否否大大量量存存在在實(shí)實(shí)際際使使用用條條件件下下會(huì)會(huì)被被誘誘發(fā)發(fā)產(chǎn)產(chǎn)生生錯(cuò)錯(cuò)誤誤的的隱隱患患。。為為此此,,對(duì)對(duì)完完成成開(kāi)開(kāi)發(fā)發(fā)的的軟軟件件必必須須經(jīng)經(jīng)過(guò)過(guò)規(guī)規(guī)范范的的系系統(tǒng)統(tǒng)測(cè)測(cè)試試。。換個(gè)角度說(shuō),,開(kāi)發(fā)完成的的軟件僅僅是是實(shí)際投入使使用系統(tǒng)的一一個(gè)組成部分分,需要測(cè)試試它與系統(tǒng)其其他部分配套套運(yùn)行的表現(xiàn)現(xiàn),以保證在在系統(tǒng)各部分分協(xié)調(diào)工作的的環(huán)境下也能能正常工作。。51在系統(tǒng)測(cè)試的的層次上,不不再考慮對(duì)象象類(lèi)間相互連連接的細(xì)節(jié)。。主要著眼于于用戶可見(jiàn)的的動(dòng)作和用戶戶可識(shí)別的系系統(tǒng)輸出。為了幫助系統(tǒng)統(tǒng)測(cè)試的執(zhí)行行,測(cè)試者需需要回到分析析時(shí)的動(dòng)態(tài)模模型和描述系系統(tǒng)行為的事事件序列(腳腳本)進(jìn)行測(cè)測(cè)試。可以利用黑盒盒測(cè)試的方法法來(lái)驅(qū)動(dòng)系統(tǒng)統(tǒng)測(cè)試。測(cè)試檢測(cè)軟件件中的故障并并確定軟件是是否執(zhí)行了預(yù)預(yù)定要開(kāi)發(fā)的的功能。系統(tǒng)測(cè)試應(yīng)該該盡量搭建與與用戶實(shí)際使使用環(huán)境相同同的測(cè)試平臺(tái)臺(tái),應(yīng)該保證證被測(cè)系統(tǒng)的的完整性。對(duì)沒(méi)有的52系統(tǒng)設(shè)備部件件,應(yīng)有相應(yīng)應(yīng)的模擬手段段。具體測(cè)試內(nèi)容容包括:功能測(cè)試:測(cè)試系統(tǒng)是否否滿足開(kāi)發(fā)要要求,是否能能夠滿足設(shè)計(jì)計(jì)所描述的功功能,是否用用戶的需求都都得到滿足。。功能測(cè)試是是系統(tǒng)測(cè)試最最常用和必須須的測(cè)試,通通常以正式的的軟件規(guī)格說(shuō)說(shuō)明為測(cè)試標(biāo)標(biāo)準(zhǔn)。強(qiáng)度測(cè)試:測(cè)試系統(tǒng)能力力所能達(dá)到的的最高實(shí)際限限度,即軟件件在一些超負(fù)負(fù)荷情況下功功能實(shí)現(xiàn)的情情況。如要求求軟件某一行行為的大量重重復(fù)、輸入大大量的數(shù)據(jù)或或大數(shù)值數(shù)據(jù)據(jù)、對(duì)數(shù)據(jù)庫(kù)大量查查詢53等情況。性能測(cè)試:測(cè)試軟件的運(yùn)運(yùn)行績(jī)效。這這種測(cè)試常常常與強(qiáng)度測(cè)試試結(jié)合進(jìn)行,,需要事先對(duì)對(duì)被測(cè)軟件提提出性能指標(biāo)標(biāo),如傳輸連連接的最長(zhǎng)時(shí)時(shí)限、傳輸?shù)牡腻e(cuò)誤率、計(jì)計(jì)算的精度、、記錄的精度度、響應(yīng)的時(shí)時(shí)限和恢復(fù)時(shí)時(shí)限等。安全測(cè)試:驗(yàn)證安裝在系系統(tǒng)內(nèi)的保護(hù)護(hù)機(jī)構(gòu)能否確確實(shí)對(duì)系統(tǒng)進(jìn)進(jìn)行保護(hù),使使之不受各種種非常的干擾擾。安全測(cè)試試時(shí)需要設(shè)計(jì)計(jì)一些測(cè)試用用例試圖突破破系統(tǒng)的安全全保密措施,,檢驗(yàn)系統(tǒng)是是否有安全保保密的漏洞。。54恢復(fù)測(cè)試:采用人工的干干擾使軟件出出錯(cuò),中斷使使用,檢測(cè)系系統(tǒng)的恢復(fù)能能力,特別是是通訊系統(tǒng)的的恢復(fù)能力。。設(shè)計(jì)恢復(fù)測(cè)測(cè)試的測(cè)試用用例時(shí),應(yīng)該該參考性能測(cè)測(cè)試的相關(guān)測(cè)測(cè)試指標(biāo)??捎眯詼y(cè)試::測(cè)試用戶能否否滿意地使用用。具體體現(xiàn)現(xiàn)為操作是否否方便,用戶戶界面是否友友好等。安裝/卸載測(cè)測(cè)試(install/uninstalltest)),等。系統(tǒng)測(cè)試需要要對(duì)被測(cè)的軟軟件結(jié)合需求求分析做仔細(xì)細(xì)的測(cè)試分析析,建立測(cè)試試用例。55面向?qū)ο鬁y(cè)試試用例的設(shè)計(jì)計(jì)測(cè)試過(guò)程包括括了一組測(cè)試試用例的開(kāi)發(fā)發(fā),每一個(gè)測(cè)測(cè)試用例要求求能檢驗(yàn)應(yīng)用用的一個(gè)特定定的元素。還還需要分析用用各個(gè)測(cè)試用用例執(zhí)行測(cè)試試的結(jié)果來(lái)收收集有關(guān)軟件件的信息。軟件測(cè)測(cè)試人人員可可以參參考以以下方方法::應(yīng)當(dāng)唯唯一標(biāo)標(biāo)識(shí)每每一個(gè)個(gè)測(cè)試試用例例,并并與被被測(cè)試試的類(lèi)類(lèi)顯式式地建建立關(guān)關(guān)聯(lián)。。陳述測(cè)測(cè)試對(duì)對(duì)象的的一組組特定定狀態(tài)態(tài)。56對(duì)每一一個(gè)測(cè)測(cè)試建建立一一組測(cè)測(cè)試步步驟,,要思思考和和確定定的問(wèn)問(wèn)題包包括::被測(cè)試試對(duì)象象的一一組特特定狀狀態(tài);;一組消消息和和操作作;考慮在在對(duì)象象測(cè)試試時(shí)可可能產(chǎn)產(chǎn)生的的一組組異常常;一組外外部條條件;;輔助理理解和和實(shí)現(xiàn)現(xiàn)測(cè)試試時(shí)的的補(bǔ)充充信息息。傳統(tǒng)的的白盒盒測(cè)試試方法法可用用在類(lèi)類(lèi)定義義的操操作測(cè)測(cè)試和和類(lèi)級(jí)級(jí)別測(cè)測(cè)試中中,黑黑盒測(cè)測(cè)試方方法可可用于于多類(lèi)類(lèi)測(cè)試試。578.4分分布式式系統(tǒng)統(tǒng)的測(cè)測(cè)試分布式式處理理中涉涉及的的最基基本單單位是是線程程,線線程是是操作作系統(tǒng)統(tǒng)進(jìn)程程內(nèi)部部能夠夠獨(dú)立立運(yùn)行行的內(nèi)內(nèi)容,,它擁?yè)碛凶宰约旱牡某绦蛐蛴?jì)數(shù)數(shù)器和和本地地?cái)?shù)據(jù)據(jù)。線線程是是能夠夠被調(diào)調(diào)度執(zhí)執(zhí)行的的最小小單位位。分布式式系統(tǒng)統(tǒng)測(cè)試試主要要面臨臨的問(wèn)問(wèn)題是是并發(fā)發(fā)性、、網(wǎng)絡(luò)絡(luò)化和和分布布式。。并發(fā)性性是指指多個(gè)個(gè)線程程同時(shí)時(shí)發(fā)生生。針針對(duì)并并發(fā)性性錯(cuò)誤誤的測(cè)測(cè)試主主要著著重于于兩個(gè)個(gè)線程程的交交互。。在實(shí)實(shí)際實(shí)實(shí)施交交互機(jī)機(jī)制之之前應(yīng)應(yīng)對(duì)相相關(guān)方方法進(jìn)進(jìn)行測(cè)測(cè)試。。58在網(wǎng)絡(luò)絡(luò)環(huán)境境中各各個(gè)獨(dú)獨(dú)立的的盒子子連接接到通通信設(shè)設(shè)施上上,如如何實(shí)實(shí)現(xiàn)它它們物物理上上的同同步是是網(wǎng)絡(luò)絡(luò)計(jì)算算的問(wèn)問(wèn)題。。相關(guān)關(guān)的測(cè)測(cè)試就就是在在組成成一個(gè)個(gè)網(wǎng)絡(luò)絡(luò)系統(tǒng)統(tǒng)的各各個(gè)自自治機(jī)機(jī)器之之間同同步問(wèn)問(wèn)題的的測(cè)試試。分布式式系統(tǒng)統(tǒng)使用用多進(jìn)進(jìn)程來(lái)來(lái)支持持系統(tǒng)統(tǒng)的靈靈活性性一個(gè)個(gè)對(duì)象象既可可以在在同一一臺(tái)機(jī)機(jī)器上上分布布在多多個(gè)進(jìn)進(jìn)程中中,還還可以以分布布在多多個(gè)物物理上上的計(jì)計(jì)算機(jī)機(jī)上。。所有有這些些分布布式構(gòu)構(gòu)件都都要能能夠識(shí)識(shí)別““命名名服務(wù)務(wù)”或或“注注冊(cè)””對(duì)象象,能能夠與與其他他構(gòu)件件交互互。所所有在在配置置文件件中登登記的的機(jī)器器與構(gòu)構(gòu)件構(gòu)構(gòu)成基基礎(chǔ)結(jié)結(jié)構(gòu)。。59需要考考慮與與這些些分布布式構(gòu)構(gòu)件相相關(guān)的的測(cè)試試。分布式式系統(tǒng)統(tǒng)中的的路徑徑測(cè)試試一條路路徑是是一系系列邏邏輯上上連續(xù)續(xù)的語(yǔ)語(yǔ)句,,它只只有在在特定定的輸輸入下下才執(zhí)執(zhí)行。。路徑徑的另另一個(gè)個(gè)定義義是覆覆蓋變變量的的定義義和使使用就就形成成一條條完整整的路路徑。。在分布布式系系統(tǒng)中中的路路徑就就是設(shè)設(shè)計(jì)測(cè)測(cè)試用用例覆蓋一一個(gè)同同步順順序。所謂謂同步步順序序是指指同步事事件按按照特特定次次序發(fā)發(fā)生的的順序序,而同步事事件是是指一一個(gè)線線程產(chǎn)產(chǎn)生另另一個(gè)個(gè)線程程。60測(cè)試應(yīng)應(yīng)跟蹤蹤一個(gè)個(gè)事件件到另另一個(gè)個(gè)事件件的路路徑。。如果果從一一個(gè)同同步事事件到到另一一個(gè)同同步事事件有有多條條可能能的控控制流流路徑徑,只只需覆覆蓋其其中一一條路路徑。。生存周周期測(cè)測(cè)試在分布布式系系統(tǒng)中中,生生存周周期測(cè)測(cè)試是是指選選擇一一系列列測(cè)試試用例例,測(cè)測(cè)試任任何處處于生生存期期中的的對(duì)象象。特特別是是在整整個(gè)生生存周周期過(guò)過(guò)程中中存在在多條條路徑徑,測(cè)測(cè)試必必須選選擇有有代表表性的的路徑徑以保保證最最大的的覆蓋蓋范圍圍。61對(duì)于一個(gè)類(lèi)類(lèi)來(lái)說(shuō),生生存周期意意味著選擇擇一系列測(cè)測(cè)試,每個(gè)個(gè)測(cè)試構(gòu)造造類(lèi)的一個(gè)個(gè)實(shí)例,并并通過(guò)一系系列消息來(lái)來(lái)使用實(shí)例例,最后再再撤銷(xiāo)這個(gè)個(gè)實(shí)例。一個(gè)有效的的生存周期期測(cè)試應(yīng)能能證實(shí)對(duì)象象本身是否否正確,還還應(yīng)能證實(shí)實(shí)被測(cè)試項(xiàng)項(xiàng)是否能夠夠與它所在在的環(huán)境正正確地交互互。對(duì)于一一個(gè)類(lèi)的實(shí)實(shí)例,在它它被撤銷(xiāo)后后必須檢查查它占用的的資源是否否已被釋放放掉。62分布式模型型下面討論用用在分布式式系統(tǒng)中的的使用某些些標(biāo)準(zhǔn)基礎(chǔ)礎(chǔ)結(jié)構(gòu)的測(cè)測(cè)試過(guò)程。?;镜目蛻魬魴C(jī)-服務(wù)器模型型客戶機(jī)-服服務(wù)器模型型是最簡(jiǎn)單單的分布式式模型。在在這種模型型下,多個(gè)個(gè)客戶機(jī)都都可訪問(wèn)服服務(wù)器。服服務(wù)器是單單一進(jìn)程。。由于所有有客戶機(jī)都都與同一個(gè)個(gè)服務(wù)器交交互,因此此存在單點(diǎn)失?。捶?wù)器器出現(xiàn)問(wèn)題題將影響所所有客戶機(jī)機(jī))。測(cè)試試要點(diǎn):63在延時(shí)期間間,面對(duì)同同時(shí)收到的的服務(wù)請(qǐng)求求,服務(wù)器器能否把正正確結(jié)果發(fā)發(fā)送給各個(gè)個(gè)相應(yīng)的客客戶機(jī)?服務(wù)器能否否處理快速速增長(zhǎng)的負(fù)負(fù)載?當(dāng)負(fù)負(fù)載增加時(shí)時(shí),服務(wù)器器的性能可可能降低,,因此可能能選擇放棄棄一部分負(fù)負(fù)載。標(biāo)準(zhǔn)分布式式模型-CORBACORBA是對(duì)象管管理組織OMG開(kāi)發(fā)發(fā)的公共對(duì)對(duì)象請(qǐng)求代代理體系結(jié)結(jié)構(gòu),并將將它作為分分布對(duì)象系系統(tǒng)的標(biāo)準(zhǔn)準(zhǔn)體系結(jié)構(gòu)構(gòu)。64這種結(jié)構(gòu)的的核心是對(duì)對(duì)象請(qǐng)求代代理(ORB),一一個(gè)對(duì)象通通過(guò)ORB與系統(tǒng)中中的另一個(gè)個(gè)對(duì)象通信信。CORBA標(biāo)準(zhǔn)準(zhǔn)的特點(diǎn):與基礎(chǔ)結(jié)構(gòu)構(gòu)相聯(lián)系的的機(jī)器可能能有不同的的操作系統(tǒng)統(tǒng)和不同的的存儲(chǔ)設(shè)計(jì)計(jì);構(gòu)成分布式式系統(tǒng)的構(gòu)構(gòu)件可以用用不同的語(yǔ)語(yǔ)言編寫(xiě);;根據(jù)對(duì)象的的分布性和和網(wǎng)絡(luò)中機(jī)機(jī)器的類(lèi)型型,基礎(chǔ)結(jié)結(jié)構(gòu)可以改改變它自身身的配置。。測(cè)試要點(diǎn)::65不考慮基礎(chǔ)礎(chǔ)結(jié)構(gòu)的配配置,系統(tǒng)統(tǒng)能夠正確確的工作??測(cè)試用例例應(yīng)能產(chǎn)生生被測(cè)試基基礎(chǔ)結(jié)構(gòu)的的各種預(yù)期期的配置。。在標(biāo)準(zhǔn)基基礎(chǔ)結(jié)構(gòu)構(gòu)的服務(wù)務(wù)基礎(chǔ)上上,構(gòu)造造新的測(cè)測(cè)試用例例能否被被重復(fù)使使用?測(cè)測(cè)試用例例的設(shè)計(jì)計(jì)應(yīng)盡可可能地使使用基礎(chǔ)礎(chǔ)結(jié)構(gòu)。。新發(fā)布的的特定基基礎(chǔ)結(jié)構(gòu)構(gòu)能否與與已有的的應(yīng)有有有效地結(jié)結(jié)合起來(lái)來(lái)?應(yīng)有有一系列列的回歸歸測(cè)試,,使得新新發(fā)布的的基礎(chǔ)結(jié)結(jié)構(gòu)能夠夠在被集集成到產(chǎn)產(chǎn)品中之之前得到到測(cè)試。。66標(biāo)準(zhǔn)分布式模模型-DCOMDCOM是Microsoft開(kāi)開(kāi)發(fā)并鼓勵(lì)勵(lì)的一種標(biāo)準(zhǔn)準(zhǔn)的分布式構(gòu)構(gòu)件對(duì)象模型型。DCOM““標(biāo)準(zhǔn)”被被描述為包含含特定方法的的標(biāo)準(zhǔn)接口,,每個(gè)標(biāo)準(zhǔn)接接口都提供了了一套特定的的服務(wù)。單個(gè)個(gè)構(gòu)件可以完完成幾個(gè)接口口的服務(wù),或或若干構(gòu)件中中的每一個(gè)都都能完成統(tǒng)一一接口的服務(wù)務(wù),只是方式式不同。DCOM是低低層次的技術(shù)術(shù),支持構(gòu)件件間最原始的的聯(lián)系,它不不作為應(yīng)用開(kāi)開(kāi)發(fā)的部分。。67測(cè)試要點(diǎn):在對(duì)各種構(gòu)件件做任意配置置時(shí)測(cè)試者能能否正確編排排唯一的標(biāo)識(shí)識(shí)?測(cè)試用例例應(yīng)能利用各各種構(gòu)件確保保所有必要的的連接能夠成成功。每個(gè)構(gòu)件能否否實(shí)現(xiàn)必要的的接口?測(cè)試試用例應(yīng)能利利用各種構(gòu)件件確保所有服服務(wù)是可利用用的并能實(shí)現(xiàn)現(xiàn)期望的功能能。標(biāo)準(zhǔn)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論