軟件測(cè)試
軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程,是根據(jù)程序開發(fā)階段的規(guī)格說明及程序內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)的一批測(cè)試用例,并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過程。
測(cè)試用例設(shè)計(jì)
測(cè)試用例是為特定目標(biāo)開發(fā)的測(cè)試輸入、執(zhí)行條件和預(yù)期結(jié)果的集合。設(shè)計(jì)測(cè)試用例通常有兩種常用的測(cè)試方法:黑盒測(cè)試和白盒測(cè)試
黑盒測(cè)試
不考慮程序的內(nèi)部邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明,又稱為功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試。
黑盒測(cè)試主要是在程序的接口上進(jìn)行測(cè)試,主要是為了發(fā)現(xiàn)以下錯(cuò)誤:
是否有不正確或遺漏了的功能;
在接口上,能否正確的接收輸入,能否輸出正確的結(jié)果
是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息訪問錯(cuò)誤
性能上是否能夠滿足要求
是否有初始化或終止錯(cuò)誤
黑盒測(cè)試的測(cè)試用例設(shè)計(jì)方法主要有:
等價(jià)類劃分:是一種典型的黑盒測(cè)試方法,依據(jù)程序的規(guī)格說明書來設(shè)計(jì)測(cè)試用例,將所有可能的輸入數(shù)據(jù)劃分為若干個(gè)部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)作為測(cè)試用例,分為劃分等價(jià)類和選取測(cè)試用例兩步。
邊界值分析:是對(duì)等價(jià)類劃分方法的補(bǔ)充,選取正好等于、剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),從經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上。
錯(cuò)誤推測(cè)法:可以靠經(jīng)驗(yàn)和直覺推測(cè)程序中可能存在的各種錯(cuò)誤,從而有針對(duì)性編寫檢查這些錯(cuò)誤的用例
因果圖:如果在測(cè)試時(shí)必須考慮輸入條件的各種組合,可使用一種適于描述多種條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來設(shè)計(jì)測(cè)試用例,這就需要利用因果圖。因果圖最終生成的就是判定表,它適合于檢查程序輸入條件的各種組合情況。
白盒測(cè)試
允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)和有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致,又稱為結(jié)構(gòu)測(cè)試和邏輯驅(qū)動(dòng)測(cè)試。
白盒測(cè)試主要對(duì)程序模塊進(jìn)行如下檢查:
對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次
對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都至少測(cè)試一次
在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體
測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等
邏輯覆蓋
邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)用例的技術(shù)。它屬白盒測(cè)試,包括語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定-條件覆蓋、條件組合覆蓋、路徑覆蓋等
軟件測(cè)試是由一系列不同的測(cè)試所組成,這些軟件測(cè)試步驟分為:?jiǎn)卧獪y(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。
單元測(cè)試:也稱為模塊測(cè)試,是針對(duì)每個(gè)模塊進(jìn)行的測(cè)試,可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例,通常在編碼階段進(jìn)行,必要的時(shí)候要制作驅(qū)動(dòng)模塊和樁模塊,驅(qū)動(dòng)模塊是指在單元測(cè)試和集成測(cè)試中,協(xié)調(diào)輸入和輸出的測(cè)試程序;樁模塊指模擬被調(diào)用單元的程序。
單元測(cè)試可以測(cè)試模塊接口、局域數(shù)據(jù)結(jié)構(gòu)、獨(dú)立路徑、錯(cuò)誤處理路徑和邊界條件。
集成測(cè)試:在單元測(cè)試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求組裝成系統(tǒng),應(yīng)提交集成測(cè)試計(jì)劃、集成測(cè)試規(guī)格說明和集成測(cè)試分析報(bào)告。把模塊組裝為系統(tǒng)的方式有兩種:一次性組裝方式和增殖式組裝方式。
集成測(cè)試需要考慮的問題是:在把各個(gè)模塊連接起來的時(shí)候,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失,一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響;各個(gè)子功能組合起來,能否達(dá)到預(yù)期要求的父功能;全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題;單個(gè)模塊的誤差累積起來,是否會(huì)放大,從而達(dá)到不能接受的程度。
確認(rèn)測(cè)試:確認(rèn)測(cè)試依據(jù)軟件需求規(guī)格說明書驗(yàn)證軟件的功能、性能及其他特性是否與用戶的要求一致。確認(rèn)測(cè)試應(yīng)交付的文檔有:確認(rèn)測(cè)試分析報(bào)告;最終的用戶手冊(cè)和操作手冊(cè);項(xiàng)目開發(fā)總結(jié)報(bào)告。
系統(tǒng)測(cè)試:將軟件放在整個(gè)計(jì)算機(jī)環(huán)境下,包括軟硬件平臺(tái)、某些支持軟件、數(shù)據(jù)和人員等,在實(shí)際運(yùn)行環(huán)境下進(jìn)行一系列的測(cè)試。系統(tǒng)測(cè)試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或矛盾的地方。
@測(cè)試:是由一個(gè)用戶在開發(fā)環(huán)境下進(jìn)行的測(cè)試,也可以是公司內(nèi)部的用戶在模擬實(shí)際操作環(huán)境下進(jìn)行的測(cè)試。@測(cè)試的目的是評(píng)價(jià)軟件產(chǎn)品的功能、局域化、可使用性、可靠性、性能和支持,尤其注重產(chǎn)品的界面和特色,@測(cè)試可以從軟件產(chǎn)品編碼結(jié)束之時(shí)開始,或者在模塊測(cè)試完成之后開始,也可以在確認(rèn)測(cè)試過程中產(chǎn)品達(dá)到一定的穩(wěn)定性和可靠程度之后再開始
β測(cè)試:β測(cè)試是由軟件的多個(gè)用戶在實(shí)際使用環(huán)境下進(jìn)行的測(cè)試,這些用戶返回有關(guān)錯(cuò)誤信息給開發(fā)者,β測(cè)試是在開發(fā)者無法控制的環(huán)境下進(jìn)行的軟件現(xiàn)場(chǎng)應(yīng)用。Β測(cè)試著重于產(chǎn)品的支持性,包括文檔、客戶培訓(xùn)和支持產(chǎn)品。只有當(dāng)@測(cè)試達(dá)到一定的可靠程度時(shí),才開始β測(cè)試。它處在整個(gè)測(cè)試的最后階段。
面向?qū)ο蟮臏y(cè)試分為OOA Test、OOD Test、OOP Test、面向?qū)ο髥卧獪y(cè)試、面向?qū)ο蠹蓽y(cè)試、面向?qū)ο笙到y(tǒng)測(cè)試。
OOA Test重點(diǎn)應(yīng)該放在完整性和冗余性,分為五個(gè)方面:對(duì)認(rèn)定的對(duì)象的測(cè)試、對(duì)認(rèn)定的結(jié)構(gòu)測(cè)試、對(duì)認(rèn)定的主題的測(cè)試、對(duì)定義的屬性和實(shí)例關(guān)聯(lián)的測(cè)試、對(duì)定義的服務(wù)和消息關(guān)聯(lián)的測(cè)試。