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