軟件工程軟件測試課件_第1頁
軟件工程軟件測試課件_第2頁
軟件工程軟件測試課件_第3頁
軟件工程軟件測試課件_第4頁
軟件工程軟件測試課件_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件工程軟件測試軟件工程軟件測試 第7章 軟件測試軟件工程軟件測試軟件工程軟件測試內(nèi)容提要內(nèi)容提要7.1 軟件測試概述7.2 軟件測試用例的設(shè)計(jì)7.3 軟件測試的實(shí)施7.4 軟件測試的面向?qū)ο蠓椒ê喪?.5 本章小結(jié)軟件工程軟件測試軟件工程軟件測試軟件測試軟件測試 軟件系統(tǒng)的開發(fā)體現(xiàn)了人們智力勞動(dòng)的成果。在軟件軟件系統(tǒng)的開發(fā)體現(xiàn)了人們智力勞動(dòng)的成果。在軟件開發(fā)過程中,由于人的主觀認(rèn)知能力的局限性和所開發(fā)軟開發(fā)過程中,由于人的主觀認(rèn)知能力的局限性和所開發(fā)軟件的復(fù)雜性,盡管人們利用了許多旨在改進(jìn)、保證軟件質(zhì)件的復(fù)雜性,盡管人們利用了許多旨在改進(jìn)、保證軟件質(zhì)量的方法去分析、設(shè)計(jì)和實(shí)現(xiàn)軟件,在軟件生命

2、周期的每量的方法去分析、設(shè)計(jì)和實(shí)現(xiàn)軟件,在軟件生命周期的每個(gè)階段還是不可避免地會(huì)產(chǎn)生錯(cuò)誤。因此,在軟件正式投個(gè)階段還是不可避免地會(huì)產(chǎn)生錯(cuò)誤。因此,在軟件正式投入運(yùn)行之前,必須通過嚴(yán)格的測試,來發(fā)現(xiàn)并糾正軟件中入運(yùn)行之前,必須通過嚴(yán)格的測試,來發(fā)現(xiàn)并糾正軟件中的錯(cuò)誤,從而保證軟件的質(zhì)量。大量的實(shí)踐證明,測試是的錯(cuò)誤,從而保證軟件的質(zhì)量。大量的實(shí)踐證明,測試是一項(xiàng)很艱苦的工作,據(jù)統(tǒng)計(jì),軟件測試的工作量往往占軟一項(xiàng)很艱苦的工作,據(jù)統(tǒng)計(jì),軟件測試的工作量往往占軟件開發(fā)總工作量的件開發(fā)總工作量的40%以上。目前,程序的正確性證明在以上。目前,程序的正確性證明在技術(shù)上尚未得到根本的解決,軟件測試仍然是發(fā)現(xiàn)

3、軟件中技術(shù)上尚未得到根本的解決,軟件測試仍然是發(fā)現(xiàn)軟件中錯(cuò)誤和缺陷的主要手段。因此,必須高度重視軟件測試工錯(cuò)誤和缺陷的主要手段。因此,必須高度重視軟件測試工作。作。軟件工程軟件測試軟件工程軟件測試軟件測試軟件測試 軟件測試是軟件質(zhì)量保證的關(guān)鍵步驟,它包括分析、軟件測試是軟件質(zhì)量保證的關(guān)鍵步驟,它包括分析、設(shè)計(jì)和編碼的最終檢查。軟件測試的結(jié)果也是分析軟件可設(shè)計(jì)和編碼的最終檢查。軟件測試的結(jié)果也是分析軟件可靠性的重要依據(jù)。本章著重討論軟件測試的概念、傳統(tǒng)軟靠性的重要依據(jù)。本章著重討論軟件測試的概念、傳統(tǒng)軟件和面向?qū)ο筌浖臏y試問題。件和面向?qū)ο筌浖臏y試問題。軟件工程軟件測試軟件工程軟件測試 7.

4、1 軟件測試概述軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 7.1.1 軟件測試的目標(biāo)及原則軟件測試的目標(biāo)及原則 測試是對軟件分析、設(shè)計(jì)、編碼進(jìn)行查錯(cuò)和糾錯(cuò)的活測試是對軟件分析、設(shè)計(jì)、編碼進(jìn)行查錯(cuò)和糾錯(cuò)的活動(dòng)。正確理解軟件測試的概念和目標(biāo),對保證軟件測試的動(dòng)。正確理解軟件測試的概念和目標(biāo),對保證軟件測試的成功實(shí)施起著極其重要的作用。從表面上來看,軟件測試成功實(shí)施起著極其重要的作用。從表面上來看,軟件測試是具有是具有“破壞破壞”性質(zhì)的,因?yàn)樵跍y試階段,測試人員努力設(shè)性質(zhì)的,因?yàn)樵跍y試階段,測試人員努力設(shè)計(jì)出一系列測試方案,竭力發(fā)現(xiàn)和證明程序中錯(cuò)誤的存在。計(jì)出一系列測試方案,竭力發(fā)現(xiàn)

5、和證明程序中錯(cuò)誤的存在。而軟件工程的其他階段都是而軟件工程的其他階段都是“建設(shè)性建設(shè)性”的,軟件工程師力圖的,軟件工程師力圖從抽象的概念出發(fā),逐步設(shè)計(jì)出軟件藍(lán)圖,再經(jīng)過編碼而從抽象的概念出發(fā),逐步設(shè)計(jì)出軟件藍(lán)圖,再經(jīng)過編碼而實(shí)現(xiàn)軟件產(chǎn)品。當(dāng)然,這種反常僅僅是表面的或是心理上實(shí)現(xiàn)軟件產(chǎn)品。當(dāng)然,這種反常僅僅是表面的或是心理上的,暴露問題并不是軟件測試的最終目的,發(fā)現(xiàn)問題是為的,暴露問題并不是軟件測試的最終目的,發(fā)現(xiàn)問題是為了改進(jìn)軟件設(shè)計(jì)或糾正程序的錯(cuò)誤。測試階段的根本目標(biāo)了改進(jìn)軟件設(shè)計(jì)或糾正程序的錯(cuò)誤。測試階段的根本目標(biāo)是盡可能多地發(fā)現(xiàn)并排除軟件中潛在的錯(cuò)誤,最終把一個(gè)是盡可能多地發(fā)現(xiàn)并排除軟件

6、中潛在的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶使用。高質(zhì)量的軟件系統(tǒng)交給用戶使用。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 以下三點(diǎn)可以看作是測試的目標(biāo)以下三點(diǎn)可以看作是測試的目標(biāo): 1.測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。 2.好的測試方案是盡可能發(fā)現(xiàn)至今為止尚未被發(fā)現(xiàn)的錯(cuò)誤好的測試方案是盡可能發(fā)現(xiàn)至今為止尚未被發(fā)現(xiàn)的錯(cuò)誤的測試方案。的測試方案。 3.成功的測試是發(fā)現(xiàn)了至今為止尚未被發(fā)現(xiàn)的錯(cuò)誤的測試。成功的測試是發(fā)現(xiàn)了至今為止尚未被發(fā)現(xiàn)的錯(cuò)誤的測試。由此可以看出,測試的正確含義是由此可以看出,測試的正確含義是“為了發(fā)現(xiàn)程序

7、中的錯(cuò)誤為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程而執(zhí)行程序的過程”。這和某些人想像的。這和某些人想像的“測試是為了證明測試是為了證明程序是正確的程序是正確的”,“成功的測試是沒有發(fā)現(xiàn)錯(cuò)誤的測試成功的測試是沒有發(fā)現(xiàn)錯(cuò)誤的測試”等是等是完全相反的。明確測試的目的是一件非常重要的事情,因完全相反的。明確測試的目的是一件非常重要的事情,因?yàn)樵趯?shí)際工作中對測試工作存在著許多模糊或錯(cuò)誤的看法,為在實(shí)際工作中對測試工作存在著許多模糊或錯(cuò)誤的看法,這些看法嚴(yán)重影響著測試工作的順利進(jìn)行。測試的目標(biāo)決這些看法嚴(yán)重影響著測試工作的順利進(jìn)行。測試的目標(biāo)決定了測試方案的設(shè)計(jì),如果為了表明程序是正確的,就會(huì)定了測試方案的設(shè)計(jì)

8、,如果為了表明程序是正確的,就會(huì)設(shè)計(jì)一些不易暴露錯(cuò)誤的測試方案。相反,如果測試是為設(shè)計(jì)一些不易暴露錯(cuò)誤的測試方案。相反,如果測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤,就會(huì)力求設(shè)計(jì)出最容易暴露錯(cuò)誤的了發(fā)現(xiàn)程序中的錯(cuò)誤,就會(huì)力求設(shè)計(jì)出最容易暴露錯(cuò)誤的測試方案。測試方案。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 基于以上的敘述,在設(shè)計(jì)軟件測試方案前,軟件開發(fā)基于以上的敘述,在設(shè)計(jì)軟件測試方案前,軟件開發(fā)者必須理解軟件測試的基本原則。這些測試原則是者必須理解軟件測試的基本原則。這些測試原則是: (1)堅(jiān)持)堅(jiān)持“盡早地和不斷地進(jìn)行軟件測試盡早地和不斷地進(jìn)行軟件測試”的原則。的原則。 不應(yīng)把軟件測試僅

9、僅看作是軟件開發(fā)的一個(gè)獨(dú)立階段,不應(yīng)把軟件測試僅僅看作是軟件開發(fā)的一個(gè)獨(dú)立階段,而應(yīng)當(dāng)把它貫穿到軟件開發(fā)的各個(gè)階段中。堅(jiān)持軟件開發(fā)而應(yīng)當(dāng)把它貫穿到軟件開發(fā)的各個(gè)階段中。堅(jiān)持軟件開發(fā)的各個(gè)階段的技術(shù)評(píng)審,這樣才能在開發(fā)過程中盡早發(fā)現(xiàn)的各個(gè)階段的技術(shù)評(píng)審,這樣才能在開發(fā)過程中盡早發(fā)現(xiàn)和預(yù)防錯(cuò)誤,把出現(xiàn)的錯(cuò)誤克服在早期,杜絕某些錯(cuò)誤發(fā)和預(yù)防錯(cuò)誤,把出現(xiàn)的錯(cuò)誤克服在早期,杜絕某些錯(cuò)誤發(fā)生的隱患。生的隱患。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 (2)測試用例應(yīng)由測試輸入數(shù)據(jù)和與之對應(yīng)的預(yù)期輸出結(jié))測試用例應(yīng)由測試輸入數(shù)據(jù)和與之對應(yīng)的預(yù)期輸出結(jié)果這兩部分組成。果這兩部分組成。 測試以前

10、應(yīng)當(dāng)根據(jù)測試的要求選擇測試用例,用來檢測試以前應(yīng)當(dāng)根據(jù)測試的要求選擇測試用例,用來檢驗(yàn)程序員編制的程序,因此不但需要測試的輸入數(shù)據(jù),而驗(yàn)程序員編制的程序,因此不但需要測試的輸入數(shù)據(jù),而且需要針對這些輸入數(shù)據(jù)的預(yù)期輸出結(jié)果。且需要針對這些輸入數(shù)據(jù)的預(yù)期輸出結(jié)果。 (3)程序員應(yīng)避免測試自己的程序。)程序員應(yīng)避免測試自己的程序。 由于思維定勢和心理因素的影響,程序員并不是測試由于思維定勢和心理因素的影響,程序員并不是測試的最佳人選。這不能與程序的調(diào)試相混淆,調(diào)試由程序員的最佳人選。這不能與程序的調(diào)試相混淆,調(diào)試由程序員自己來做可能更有效。而程序員以及程序開發(fā)小組應(yīng)盡可自己來做可能更有效。而程序員以

11、及程序開發(fā)小組應(yīng)盡可能避免測試自己編寫的程序。為了達(dá)到最佳效果,最好建能避免測試自己編寫的程序。為了達(dá)到最佳效果,最好建立獨(dú)立的軟件測試小組或測試機(jī)構(gòu)。立獨(dú)立的軟件測試小組或測試機(jī)構(gòu)。 (4)在設(shè)計(jì)測試用例時(shí),應(yīng)當(dāng)包括合理的輸入條件和不合)在設(shè)計(jì)測試用例時(shí),應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件。理的輸入條件。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 (5)充分注意測試中的群集現(xiàn)象。)充分注意測試中的群集現(xiàn)象。 軟件測試的實(shí)踐表明軟件測試的實(shí)踐表明:測試后模塊中殘存的錯(cuò)誤數(shù)目與該測試后模塊中殘存的錯(cuò)誤數(shù)目與該模塊的錯(cuò)誤檢出率成正比,即錯(cuò)誤群集。根據(jù)這個(gè)規(guī)律,模塊的錯(cuò)誤檢出率成

12、正比,即錯(cuò)誤群集。根據(jù)這個(gè)規(guī)律,應(yīng)當(dāng)對發(fā)現(xiàn)錯(cuò)誤較多的模塊進(jìn)行重點(diǎn)測試,以提高測試效應(yīng)當(dāng)對發(fā)現(xiàn)錯(cuò)誤較多的模塊進(jìn)行重點(diǎn)測試,以提高測試效率。率。 (6)嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性。)嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性。 (7)應(yīng)當(dāng)對每個(gè)測試結(jié)果做全面檢查。)應(yīng)當(dāng)對每個(gè)測試結(jié)果做全面檢查。 有些錯(cuò)誤的征兆在輸出測試結(jié)果時(shí)已經(jīng)明顯地出現(xiàn)了,有些錯(cuò)誤的征兆在輸出測試結(jié)果時(shí)已經(jīng)明顯地出現(xiàn)了,但是如果不仔細(xì)地、全面地檢查測試結(jié)果,就會(huì)使這些錯(cuò)但是如果不仔細(xì)地、全面地檢查測試結(jié)果,就會(huì)使這些錯(cuò)誤被遺漏掉。所以必須對預(yù)期的輸出結(jié)果明確定義,對測誤被遺漏掉。所以必須對預(yù)期的輸出結(jié)果明確定義,對測試的結(jié)果仔

13、細(xì)分析檢查,暴露錯(cuò)誤。試的結(jié)果仔細(xì)分析檢查,暴露錯(cuò)誤。 (8)妥善保存測試計(jì)劃、測試用例、出錯(cuò)統(tǒng)計(jì)和最終分析)妥善保存測試計(jì)劃、測試用例、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。報(bào)告,為維護(hù)提供方便。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 7.1.2 軟件錯(cuò)誤產(chǎn)生的原因及分類軟件錯(cuò)誤產(chǎn)生的原因及分類 軟件開發(fā)是一項(xiàng)極其復(fù)雜的智力活動(dòng),由于主觀認(rèn)知軟件開發(fā)是一項(xiàng)極其復(fù)雜的智力活動(dòng),由于主觀認(rèn)知能力的局限性和所解決問題的復(fù)雜性,在表達(dá)、理解、驗(yàn)?zāi)芰Φ木窒扌院退鉀Q問題的復(fù)雜性,在表達(dá)、理解、驗(yàn)證用戶需求,軟件設(shè)計(jì)以及程序編寫的過程中,都不可避證用戶需求,軟件設(shè)計(jì)以及程序編寫的過程

14、中,都不可避免地會(huì)出現(xiàn)各式各樣的錯(cuò)誤,這些錯(cuò)誤貫穿在軟件生命周免地會(huì)出現(xiàn)各式各樣的錯(cuò)誤,這些錯(cuò)誤貫穿在軟件生命周期的各個(gè)階段。期的各個(gè)階段。 由于人們對錯(cuò)誤有不同的理解和認(rèn)識(shí),基于不同的角由于人們對錯(cuò)誤有不同的理解和認(rèn)識(shí),基于不同的角度,有著不同的錯(cuò)誤分類方法,所以目前還沒有一個(gè)統(tǒng)一度,有著不同的錯(cuò)誤分類方法,所以目前還沒有一個(gè)統(tǒng)一的錯(cuò)誤分類方法。下面分別從錯(cuò)誤的影響和后果、錯(cuò)誤的的錯(cuò)誤分類方法。下面分別從錯(cuò)誤的影響和后果、錯(cuò)誤的性質(zhì)和范圍、錯(cuò)誤產(chǎn)生的階段作簡單介紹。性質(zhì)和范圍、錯(cuò)誤產(chǎn)生的階段作簡單介紹。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 1.按錯(cuò)誤的影響和后果分類按錯(cuò)誤

15、的影響和后果分類 (1)較小錯(cuò)誤)較小錯(cuò)誤:只對系統(tǒng)的輸出有一些非實(shí)質(zhì)性影響。只對系統(tǒng)的輸出有一些非實(shí)質(zhì)性影響。例如,輸出的數(shù)據(jù)格式不符合要求等。例如,輸出的數(shù)據(jù)格式不符合要求等。 (2)中等錯(cuò)誤)中等錯(cuò)誤:對系統(tǒng)的運(yùn)行有局部影響。如輸出的某對系統(tǒng)的運(yùn)行有局部影響。如輸出的某些數(shù)據(jù)有錯(cuò)誤或出現(xiàn)冗余。些數(shù)據(jù)有錯(cuò)誤或出現(xiàn)冗余。 (3)較嚴(yán)重錯(cuò)誤)較嚴(yán)重錯(cuò)誤:系統(tǒng)的行為因錯(cuò)誤的干擾而出現(xiàn)異常系統(tǒng)的行為因錯(cuò)誤的干擾而出現(xiàn)異?,F(xiàn)象。例如,錯(cuò)誤的輸入數(shù)據(jù)?,F(xiàn)象。例如,錯(cuò)誤的輸入數(shù)據(jù)。 (4)嚴(yán)重錯(cuò)誤)嚴(yán)重錯(cuò)誤:系統(tǒng)運(yùn)行不可跟蹤,一時(shí)不能掌握其規(guī)系統(tǒng)運(yùn)行不可跟蹤,一時(shí)不能掌握其規(guī)律,時(shí)好時(shí)壞。律,時(shí)好時(shí)壞。

16、 (5)非常嚴(yán)重的錯(cuò)誤)非常嚴(yán)重的錯(cuò)誤:系統(tǒng)運(yùn)行中突然停機(jī),其原因不系統(tǒng)運(yùn)行中突然停機(jī),其原因不明,無法軟啟動(dòng)。明,無法軟啟動(dòng)。 (6)最嚴(yán)重的錯(cuò)誤)最嚴(yán)重的錯(cuò)誤:系統(tǒng)運(yùn)行導(dǎo)致運(yùn)行環(huán)境破壞,或是系統(tǒng)運(yùn)行導(dǎo)致運(yùn)行環(huán)境破壞,或是造成事故,引起生命、財(cái)產(chǎn)的損失。造成事故,引起生命、財(cái)產(chǎn)的損失。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 2.按錯(cuò)誤的性質(zhì)和范圍分類按錯(cuò)誤的性質(zhì)和范圍分類 (1)功能性錯(cuò)誤)功能性錯(cuò)誤 規(guī)格說明錯(cuò)誤規(guī)格說明錯(cuò)誤:規(guī)格說明可能不完全,有二義性或自相規(guī)格說明可能不完全,有二義性或自相矛盾。矛盾。 功能錯(cuò)誤功能錯(cuò)誤:程序?qū)崿F(xiàn)的功能與用戶的要求不一致。程序?qū)崿F(xiàn)的功能

17、與用戶的要求不一致。 測試錯(cuò)誤測試錯(cuò)誤:軟件測試的設(shè)計(jì)與實(shí)施發(fā)生錯(cuò)誤,軟件測試軟件測試的設(shè)計(jì)與實(shí)施發(fā)生錯(cuò)誤,軟件測試自身也可能發(fā)生錯(cuò)誤。自身也可能發(fā)生錯(cuò)誤。 測試標(biāo)準(zhǔn)引起的錯(cuò)誤測試標(biāo)準(zhǔn)引起的錯(cuò)誤:若測試標(biāo)準(zhǔn)太復(fù)雜,則導(dǎo)致測試若測試標(biāo)準(zhǔn)太復(fù)雜,則導(dǎo)致測試過程出錯(cuò)的可能性就大。過程出錯(cuò)的可能性就大。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 (2)系統(tǒng)錯(cuò)誤)系統(tǒng)錯(cuò)誤 硬件接口錯(cuò)誤硬件接口錯(cuò)誤:軟件運(yùn)行相關(guān)的外部設(shè)備錯(cuò)誤,導(dǎo)致系軟件運(yùn)行相關(guān)的外部設(shè)備錯(cuò)誤,導(dǎo)致系統(tǒng)運(yùn)行故障。統(tǒng)運(yùn)行故障。 軟件接口錯(cuò)誤軟件接口錯(cuò)誤:數(shù)據(jù)輸入數(shù)據(jù)輸入.輸出格式錯(cuò)誤,軟件通信協(xié)議輸出格式錯(cuò)誤,軟件通信協(xié)議錯(cuò)誤

18、等。錯(cuò)誤等。 操作系統(tǒng)錯(cuò)誤操作系統(tǒng)錯(cuò)誤:非法使用訪問操作系統(tǒng)指令,訪問指令非法使用訪問操作系統(tǒng)指令,訪問指令錯(cuò)誤。錯(cuò)誤。 硬件結(jié)構(gòu)錯(cuò)誤硬件結(jié)構(gòu)錯(cuò)誤:非法訪問硬件指令。非法訪問硬件指令。 軟件結(jié)構(gòu)錯(cuò)誤軟件結(jié)構(gòu)錯(cuò)誤:軟件體系結(jié)構(gòu)設(shè)計(jì)不合理,導(dǎo)致負(fù)載較軟件體系結(jié)構(gòu)設(shè)計(jì)不合理,導(dǎo)致負(fù)載較高時(shí),系統(tǒng)運(yùn)行不正常。高時(shí),系統(tǒng)運(yùn)行不正常。 控制與順序錯(cuò)誤控制與順序錯(cuò)誤:不合理的控制流程,導(dǎo)致某路徑永遠(yuǎn)不合理的控制流程,導(dǎo)致某路徑永遠(yuǎn)不能執(zhí)行。不能執(zhí)行。 資源管理錯(cuò)誤資源管理錯(cuò)誤:多任務(wù)環(huán)境中,由于資源共享,資源管多任務(wù)環(huán)境中,由于資源共享,資源管理不當(dāng),導(dǎo)致系統(tǒng)死鎖。理不當(dāng),導(dǎo)致系統(tǒng)死鎖。軟件工程軟件測試軟件

19、工程軟件測試軟件測試概述軟件測試概述 (3)加工錯(cuò)誤)加工錯(cuò)誤 算術(shù)與操作錯(cuò)誤。算術(shù)與操作錯(cuò)誤。初始化錯(cuò)誤。初始化錯(cuò)誤。 控制和次序錯(cuò)誤??刂坪痛涡蝈e(cuò)誤。靜態(tài)邏輯錯(cuò)誤。靜態(tài)邏輯錯(cuò)誤。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 (4)數(shù)據(jù)錯(cuò)誤)數(shù)據(jù)錯(cuò)誤 動(dòng)態(tài)數(shù)據(jù)錯(cuò)誤。動(dòng)態(tài)數(shù)據(jù)錯(cuò)誤。 靜態(tài)數(shù)據(jù)錯(cuò)誤。靜態(tài)數(shù)據(jù)錯(cuò)誤。 數(shù)據(jù)內(nèi)容錯(cuò)誤。數(shù)據(jù)內(nèi)容錯(cuò)誤。 數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤。數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤。 數(shù)據(jù)屬性錯(cuò)誤。數(shù)據(jù)屬性錯(cuò)誤。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 (5)代碼錯(cuò)誤)代碼錯(cuò)誤 主要包括語法錯(cuò)誤、打字錯(cuò)誤、對語句或指令的不正主要包括語法錯(cuò)誤、打字錯(cuò)誤、對語句或指令的不正確理解所產(chǎn)

20、生的錯(cuò)誤。確理解所產(chǎn)生的錯(cuò)誤。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 3.按軟件生命周期階段分類按軟件生命周期階段分類 (1)需求分析錯(cuò)誤)需求分析錯(cuò)誤 這類錯(cuò)誤主要是指在理解和表達(dá)需求時(shí)產(chǎn)生的錯(cuò)誤。這類錯(cuò)誤主要是指在理解和表達(dá)需求時(shí)產(chǎn)生的錯(cuò)誤。 不一致性錯(cuò)誤不一致性錯(cuò)誤:規(guī)格說明中功能說明與需求發(fā)生矛盾。規(guī)格說明中功能說明與需求發(fā)生矛盾。 冗余性錯(cuò)誤冗余性錯(cuò)誤:規(guī)格說明中的某些功能是多余的。規(guī)格說明中的某些功能是多余的。 不完整性錯(cuò)誤不完整性錯(cuò)誤:規(guī)格說明中缺少某些必要的功能說明。規(guī)格說明中缺少某些必要的功能說明。 不可行錯(cuò)誤不可行錯(cuò)誤:規(guī)格說明中有些功能要求是不可行的。規(guī)

21、格說明中有些功能要求是不可行的。 不可測試錯(cuò)誤不可測試錯(cuò)誤:有些功能的測試要求是不現(xiàn)實(shí)的。有些功能的測試要求是不現(xiàn)實(shí)的。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 (2)設(shè)計(jì)錯(cuò)誤)設(shè)計(jì)錯(cuò)誤 這類錯(cuò)誤主要是指在設(shè)計(jì)階段產(chǎn)生的與需求規(guī)格說明這類錯(cuò)誤主要是指在設(shè)計(jì)階段產(chǎn)生的與需求規(guī)格說明中的功能說明不相符的錯(cuò)誤。中的功能說明不相符的錯(cuò)誤。 設(shè)計(jì)不完全錯(cuò)誤設(shè)計(jì)不完全錯(cuò)誤:某些功能沒有被設(shè)計(jì),或設(shè)計(jì)得不完全。某些功能沒有被設(shè)計(jì),或設(shè)計(jì)得不完全。 模塊接口錯(cuò)誤模塊接口錯(cuò)誤:模塊結(jié)構(gòu)不合理,模塊與外部數(shù)據(jù)庫以及模塊結(jié)構(gòu)不合理,模塊與外部數(shù)據(jù)庫以及模塊之間的界面不一致。模塊之間的界面不一致。 控

22、制邏輯錯(cuò)誤控制邏輯錯(cuò)誤:控制流程與規(guī)格說明不一致,控制結(jié)構(gòu)不控制流程與規(guī)格說明不一致,控制結(jié)構(gòu)不合理。合理。 算法錯(cuò)誤算法錯(cuò)誤:算法選擇不合適。算法選擇不合適。 數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤:數(shù)據(jù)設(shè)計(jì)不合理,與算法不匹配,數(shù)據(jù)結(jié)數(shù)據(jù)設(shè)計(jì)不合理,與算法不匹配,數(shù)據(jù)結(jié)構(gòu)不滿足規(guī)格說明要求。構(gòu)不滿足規(guī)格說明要求。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 (3)編碼錯(cuò)誤)編碼錯(cuò)誤 數(shù)據(jù)說明、數(shù)據(jù)使用錯(cuò)誤。數(shù)據(jù)說明、數(shù)據(jù)使用錯(cuò)誤。 計(jì)算錯(cuò)、比較錯(cuò)。計(jì)算錯(cuò)、比較錯(cuò)。 控制流錯(cuò)誤??刂屏麇e(cuò)誤。 界面錯(cuò)誤。界面錯(cuò)誤。 輸入、輸出錯(cuò)誤。輸入、輸出錯(cuò)誤。 其他錯(cuò)誤。其他錯(cuò)誤。 在不同的開發(fā)階段,錯(cuò)誤的

23、表現(xiàn)形式是不同的,故應(yīng)在不同的開發(fā)階段,錯(cuò)誤的表現(xiàn)形式是不同的,故應(yīng)當(dāng)采用不同的方法和策略來進(jìn)行測試。當(dāng)采用不同的方法和策略來進(jìn)行測試。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 7.1.3 軟件測試的過程和策略軟件測試的過程和策略 軟件測試實(shí)踐表明,軟件測試是一項(xiàng)極其復(fù)雜而又繁軟件測試實(shí)踐表明,軟件測試是一項(xiàng)極其復(fù)雜而又繁重的重要工作,是保證軟件質(zhì)量的重要環(huán)節(jié)。軟件測試的重的重要工作,是保證軟件質(zhì)量的重要環(huán)節(jié)。軟件測試的成功與否與軟件測試人員的經(jīng)驗(yàn)、知識(shí)、能力以及管理水成功與否與軟件測試人員的經(jīng)驗(yàn)、知識(shí)、能力以及管理水平有關(guān)。軟件測試還需遵循正確的測試過程,掌握科學(xué)的平有關(guān)。軟

24、件測試還需遵循正確的測試過程,掌握科學(xué)的測試方法以及在測試過程中實(shí)施合理的測試策略。軟件測測試方法以及在測試過程中實(shí)施合理的測試策略。軟件測試既是一門工程藝術(shù),也是一種科學(xué)方法。試既是一門工程藝術(shù),也是一種科學(xué)方法。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 1.軟件測試的流程軟件測試的流程 軟件測試是一項(xiàng)極其復(fù)雜的工作,它是一系列測試活動(dòng)軟件測試是一項(xiàng)極其復(fù)雜的工作,它是一系列測試活動(dòng)的集合,必須按照一定的測試流程,才能發(fā)現(xiàn)更多的錯(cuò)誤。的集合,必須按照一定的測試流程,才能發(fā)現(xiàn)更多的錯(cuò)誤。軟件測試流程包括設(shè)計(jì)測試方案,實(shí)施測試,糾正錯(cuò)誤,軟件測試流程包括設(shè)計(jì)測試方案,實(shí)施測試,糾

25、正錯(cuò)誤,分析測試數(shù)據(jù)、建立可靠性模型等幾個(gè)步驟,如圖分析測試數(shù)據(jù)、建立可靠性模型等幾個(gè)步驟,如圖7.1所示。所示。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述圖7.1 軟件測試的流程軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 2.軟件測試的信息流軟件測試的信息流 軟件測試過程中,需要軟件測試過程中,需要3類測試信息流,如圖類測試信息流,如圖7.2所示。所示。 圖圖7.2 軟件測試的信息流軟件測試的信息流軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 測試信息流:測試信息流: (1)軟件配置)軟件配置:包括軟件需求規(guī)格說明、軟件設(shè)計(jì)規(guī)格說明、包括軟件需求規(guī)格說

26、明、軟件設(shè)計(jì)規(guī)格說明、源代碼等。源代碼等。 (2)測試配置)測試配置:包括測試計(jì)劃、測試用例、測試驅(qū)動(dòng)程序等。包括測試計(jì)劃、測試用例、測試驅(qū)動(dòng)程序等。 (3)測試工具)測試工具:測試工具為測試的實(shí)施提供某種服務(wù)。測試工具為測試的實(shí)施提供某種服務(wù)。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 測試之后,用測試結(jié)果與預(yù)期結(jié)果進(jìn)行比較。如發(fā)現(xiàn)測試之后,用測試結(jié)果與預(yù)期結(jié)果進(jìn)行比較。如發(fā)現(xiàn)不一致的數(shù)據(jù),就要進(jìn)行糾正。對已經(jīng)發(fā)現(xiàn)的錯(cuò)誤進(jìn)行錯(cuò)不一致的數(shù)據(jù),就要進(jìn)行糾正。對已經(jīng)發(fā)現(xiàn)的錯(cuò)誤進(jìn)行錯(cuò)誤定位并確定出錯(cuò)性質(zhì),然后糾正這些錯(cuò)誤,同時(shí)修改相誤定位并確定出錯(cuò)性質(zhì),然后糾正這些錯(cuò)誤,同時(shí)修改相關(guān)的

27、文檔。修改后的文檔一般都要經(jīng)過再次測試,直到通關(guān)的文檔。修改后的文檔一般都要經(jīng)過再次測試,直到通過測試為止。過測試為止。 通過收集和分析測試結(jié)果數(shù)據(jù),對軟件建立可靠性模通過收集和分析測試結(jié)果數(shù)據(jù),對軟件建立可靠性模型。如果測試發(fā)現(xiàn)不了錯(cuò)誤,那么可以肯定測試配置考慮型。如果測試發(fā)現(xiàn)不了錯(cuò)誤,那么可以肯定測試配置考慮得不夠細(xì)致充分,錯(cuò)誤仍然潛伏在軟件中。這些錯(cuò)誤最終得不夠細(xì)致充分,錯(cuò)誤仍然潛伏在軟件中。這些錯(cuò)誤最終只能由用戶在使用中發(fā)現(xiàn),并在維護(hù)時(shí)由開發(fā)者去改正。只能由用戶在使用中發(fā)現(xiàn),并在維護(hù)時(shí)由開發(fā)者去改正。但在那時(shí)改正錯(cuò)誤的費(fèi)用將比在開發(fā)階段改正錯(cuò)誤的費(fèi)用但在那時(shí)改正錯(cuò)誤的費(fèi)用將比在開發(fā)階段

28、改正錯(cuò)誤的費(fèi)用要高出若干倍。要高出若干倍。軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 3.測試的過程測試的過程 圖圖7.3描述了測試的過程。從圖中可知,測試過程分為描述了測試的過程。從圖中可知,測試過程分為4個(gè)步驟,即單元測試、組裝測試、確認(rèn)測試和系統(tǒng)測試。個(gè)步驟,即單元測試、組裝測試、確認(rèn)測試和系統(tǒng)測試。 圖圖7.3 測試的過程測試的過程軟件工程軟件測試軟件工程軟件測試軟件測試概述軟件測試概述 首先是單元測試,根據(jù)設(shè)計(jì)的測試用例,對每個(gè)程序首先是單元測試,根據(jù)設(shè)計(jì)的測試用例,對每個(gè)程序模塊進(jìn)行測試,檢查每個(gè)程序模塊是否正確實(shí)現(xiàn)了規(guī)定的模塊進(jìn)行測試,檢查每個(gè)程序模塊是否正確實(shí)現(xiàn)了

29、規(guī)定的功能。然后,把測試過的模塊,通過組裝技術(shù),測試軟件功能。然后,把測試過的模塊,通過組裝技術(shù),測試軟件的體系結(jié)構(gòu)以及實(shí)現(xiàn)的功能是否符合設(shè)計(jì)說明的要求。確的體系結(jié)構(gòu)以及實(shí)現(xiàn)的功能是否符合設(shè)計(jì)說明的要求。確認(rèn)測試是要檢查已經(jīng)實(shí)現(xiàn)的軟件能否滿足需求說明規(guī)定的認(rèn)測試是要檢查已經(jīng)實(shí)現(xiàn)的軟件能否滿足需求說明規(guī)定的用戶需求以及軟件配置是否完全、正確。最后是系統(tǒng)測試,用戶需求以及軟件配置是否完全、正確。最后是系統(tǒng)測試,把經(jīng)過確認(rèn)的軟件納入實(shí)際的運(yùn)行環(huán)境,與應(yīng)用環(huán)境組合把經(jīng)過確認(rèn)的軟件納入實(shí)際的運(yùn)行環(huán)境,與應(yīng)用環(huán)境組合在一起進(jìn)行測試,以檢查軟件能否正確、穩(wěn)定地運(yùn)行。在一起進(jìn)行測試,以檢查軟件能否正確、穩(wěn)定地

30、運(yùn)行。 測試的每個(gè)過程,都可以采用靈活的測試方法和測試測試的每個(gè)過程,都可以采用靈活的測試方法和測試策略,通常在單元測試中采用白盒測試方法,而在組裝測策略,通常在單元測試中采用白盒測試方法,而在組裝測試中采用黑盒測試方法。試中采用黑盒測試方法。軟件工程軟件測試軟件工程軟件測試7.2 軟件測試用例的設(shè)計(jì)軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 7.2.1 軟件測試用例和對象設(shè)計(jì)軟件測試用例和對象設(shè)計(jì) 要進(jìn)行測試,除了要有測試數(shù)據(jù)外,還應(yīng)同時(shí)給出該要進(jìn)行測試,除了要有測試數(shù)據(jù)外,還應(yīng)同時(shí)給出該組測試數(shù)據(jù)應(yīng)該得到怎樣的輸出結(jié)果,我們稱它為預(yù)期結(jié)組測試數(shù)據(jù)應(yīng)該得到怎樣的輸出

31、結(jié)果,我們稱它為預(yù)期結(jié)果。在測試時(shí)將實(shí)際輸出結(jié)果與預(yù)期結(jié)果比較,若不同則果。在測試時(shí)將實(shí)際輸出結(jié)果與預(yù)期結(jié)果比較,若不同則表示發(fā)現(xiàn)了錯(cuò)誤。因此測試用例是由測試數(shù)據(jù)和預(yù)期結(jié)果表示發(fā)現(xiàn)了錯(cuò)誤。因此測試用例是由測試數(shù)據(jù)和預(yù)期結(jié)果組成的。測試的目的是為了發(fā)現(xiàn)軟件中的錯(cuò)誤,而且發(fā)現(xiàn)組成的。測試的目的是為了發(fā)現(xiàn)軟件中的錯(cuò)誤,而且發(fā)現(xiàn)的錯(cuò)誤越多越好,那么是否可以把軟件中隱藏的錯(cuò)誤全部的錯(cuò)誤越多越好,那么是否可以把軟件中隱藏的錯(cuò)誤全部找出來呢找出來呢?或者說能不能把所有可能做的測試毫無遺漏地一或者說能不能把所有可能做的測試毫無遺漏地一一做完,也就是說經(jīng)過窮舉測試,從而找出所有的錯(cuò)誤呢一做完,也就是說經(jīng)過窮舉測

32、試,從而找出所有的錯(cuò)誤呢?軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 假定一個(gè)簡單程序假定一個(gè)簡單程序P有輸入量有輸入量X和和Y及輸出量及輸出量Z,見圖,見圖7.4。在字長為在字長為32位的計(jì)算機(jī)上運(yùn)行。如果位的計(jì)算機(jī)上運(yùn)行。如果X和和Y只取整數(shù),考慮只取整數(shù),考慮把所有的把所有的X,Y值都作為測試數(shù)據(jù),這樣可能的測試數(shù)據(jù)的值都作為測試數(shù)據(jù),這樣可能的測試數(shù)據(jù)的最大數(shù)目是最大數(shù)目是 232 * 232 = 264 如果程序如果程序P測試一組數(shù)據(jù)測試一組數(shù)據(jù)X,Y需要需要1毫秒,并假定一天毫秒,并假定一天工作工作24小時(shí),一年工作小時(shí),一年工作365天,要完成天,要完成

33、264 組數(shù)據(jù)測試,需組數(shù)據(jù)測試,需要要5億年。億年。圖7.4黑盒測試軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 以上分析表明,即使對一個(gè)算法明確的簡單程序,實(shí)以上分析表明,即使對一個(gè)算法明確的簡單程序,實(shí)行窮舉測試在實(shí)際上也是不可能的。因此,為了節(jié)省時(shí)間行窮舉測試在實(shí)際上也是不可能的。因此,為了節(jié)省時(shí)間和資源,提高測試效率,就必須精心設(shè)計(jì)測試用例,也就和資源,提高測試效率,就必須精心設(shè)計(jì)測試用例,也就是要從數(shù)量極大的可用測試用例中精心地選擇盡量少的測是要從數(shù)量極大的可用測試用例中精心地選擇盡量少的測試數(shù)據(jù),使采用這些測試數(shù)據(jù)能夠達(dá)到最佳的測試效果,試數(shù)據(jù),使采用這些

34、測試數(shù)據(jù)能夠達(dá)到最佳的測試效果,或者說它們能夠高效率地把隱藏的錯(cuò)誤暴露出來?;蛘哒f它們能夠高效率地把隱藏的錯(cuò)誤暴露出來。 以上事實(shí)說明,軟件測試有一個(gè)致命的缺陷,即測試以上事實(shí)說明,軟件測試有一個(gè)致命的缺陷,即測試的不完全、不徹底性。由于任何程序只能進(jìn)行少量的有限的不完全、不徹底性。由于任何程序只能進(jìn)行少量的有限測試,所以在發(fā)現(xiàn)錯(cuò)誤時(shí),能夠說明程序有錯(cuò)誤,在未發(fā)測試,所以在發(fā)現(xiàn)錯(cuò)誤時(shí),能夠說明程序有錯(cuò)誤,在未發(fā)現(xiàn)錯(cuò)誤時(shí),也不能說明程序中沒有錯(cuò)誤,這點(diǎn)是必須要明現(xiàn)錯(cuò)誤時(shí),也不能說明程序中沒有錯(cuò)誤,這點(diǎn)是必須要明確的。確的。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 7.

35、2.2 黑盒測試法黑盒測試法 黑盒測試是把程序看成是一個(gè)不透明的黑盒測試是把程序看成是一個(gè)不透明的“黑盒子黑盒子”,測,測試時(shí)完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,只按照規(guī)格試時(shí)完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,只按照規(guī)格說明書所規(guī)定的功能來設(shè)計(jì)測試用例,也就是檢查程序是說明書所規(guī)定的功能來設(shè)計(jì)測試用例,也就是檢查程序是否符合它的功能要求。黑盒測試是在程序接口上進(jìn)行的測否符合它的功能要求。黑盒測試是在程序接口上進(jìn)行的測試,又稱為功能測試。常用的黑盒測試技術(shù)有等價(jià)類劃分、試,又稱為功能測試。常用的黑盒測試技術(shù)有等價(jià)類劃分、邊界值分析、錯(cuò)誤推斷法等。邊界值分析、錯(cuò)誤推斷法等。軟件工程軟件測試軟件工

36、程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 1.等價(jià)類劃分等價(jià)類劃分 等價(jià)類劃分是用黑盒設(shè)計(jì)測試方案的一種技術(shù)。前面等價(jià)類劃分是用黑盒設(shè)計(jì)測試方案的一種技術(shù)。前面講過,窮盡的黑盒測試需要使用所有有效的和無效的輸入講過,窮盡的黑盒測試需要使用所有有效的和無效的輸入數(shù)據(jù)來測試程序,通常這是不現(xiàn)實(shí)的。因此,只能選取少數(shù)據(jù)來測試程序,通常這是不現(xiàn)實(shí)的。因此,只能選取少量最具有代表性的輸入數(shù)據(jù),目的是要用較小的代價(jià)暴露量最具有代表性的輸入數(shù)據(jù),目的是要用較小的代價(jià)暴露出較多的程序錯(cuò)誤。出較多的程序錯(cuò)誤。 如果把所有可能的數(shù)據(jù)(有效的和無效的)劃分成若如果把所有可能的數(shù)據(jù)(有效的和無效的)劃分成若干個(gè)

37、等價(jià)類,則可以做出下述假定干個(gè)等價(jià)類,則可以做出下述假定:每個(gè)類中的一個(gè)典型值每個(gè)類中的一個(gè)典型值在測試中的作用與這一類中所有其他值的作用相同。因此,在測試中的作用與這一類中所有其他值的作用相同。因此,可以從每個(gè)等價(jià)類中只取一組數(shù)據(jù)作為測試數(shù)據(jù)。這樣選可以從每個(gè)等價(jià)類中只取一組數(shù)據(jù)作為測試數(shù)據(jù)。這樣選取的測試數(shù)據(jù)最具有代表性,最有可能發(fā)現(xiàn)程序中的錯(cuò)誤。取的測試數(shù)據(jù)最具有代表性,最有可能發(fā)現(xiàn)程序中的錯(cuò)誤。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 使用等價(jià)類劃分方法設(shè)計(jì)測試方案首先需要?jiǎng)澐州斎胧褂玫葍r(jià)類劃分方法設(shè)計(jì)測試方案首先需要?jiǎng)澐州斎霐?shù)據(jù)的等價(jià)類,為此需要研究程序的

38、功能說明,從而確定數(shù)據(jù)的等價(jià)類,為此需要研究程序的功能說明,從而確定輸入數(shù)據(jù)的有效等價(jià)類和無效等價(jià)類。在確定輸入數(shù)據(jù)的輸入數(shù)據(jù)的有效等價(jià)類和無效等價(jià)類。在確定輸入數(shù)據(jù)的等價(jià)類時(shí)常常還需要分析輸出數(shù)據(jù)的等價(jià)類,以便根據(jù)輸?shù)葍r(jià)類時(shí)常常還需要分析輸出數(shù)據(jù)的等價(jià)類,以便根據(jù)輸出數(shù)據(jù)的等價(jià)類導(dǎo)出對應(yīng)的輸入數(shù)據(jù)等價(jià)類。出數(shù)據(jù)的等價(jià)類導(dǎo)出對應(yīng)的輸入數(shù)據(jù)等價(jià)類。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 為了正確劃分等價(jià)類,一是要注意積累經(jīng)驗(yàn),二是要為了正確劃分等價(jià)類,一是要注意積累經(jīng)驗(yàn),二是要正確分析被測程序的功能。此外,在劃分無效的等價(jià)類時(shí)正確分析被測程序的功能。此外,在劃分無效

39、的等價(jià)類時(shí)還必須考慮編譯程序的檢錯(cuò)功能,一般來說,不需要設(shè)計(jì)還必須考慮編譯程序的檢錯(cuò)功能,一般來說,不需要設(shè)計(jì)測試數(shù)據(jù)用來暴露編譯程序肯定能發(fā)現(xiàn)的錯(cuò)誤。最后說明測試數(shù)據(jù)用來暴露編譯程序肯定能發(fā)現(xiàn)的錯(cuò)誤。最后說明一點(diǎn),上面列出的啟發(fā)式規(guī)則雖然都是針對輸入數(shù)據(jù)說的,一點(diǎn),上面列出的啟發(fā)式規(guī)則雖然都是針對輸入數(shù)據(jù)說的,但是其中絕大部分也同樣適用于輸出數(shù)據(jù)。但是其中絕大部分也同樣適用于輸出數(shù)據(jù)。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 劃分出等價(jià)類以后,根據(jù)等價(jià)類設(shè)計(jì)測試方案時(shí)主要?jiǎng)澐殖龅葍r(jià)類以后,根據(jù)等價(jià)類設(shè)計(jì)測試方案時(shí)主要使用下面兩個(gè)步驟使用下面兩個(gè)步驟: (1)設(shè)計(jì)一

40、個(gè)新的測試方案,以盡可能多地覆蓋尚未被)設(shè)計(jì)一個(gè)新的測試方案,以盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步驟直到所有有效等價(jià)類都覆蓋的有效等價(jià)類,重復(fù)這一步驟直到所有有效等價(jià)類都被覆蓋為止。被覆蓋為止。 (2)設(shè)計(jì)一個(gè)新的測試方案,使它覆蓋一個(gè)而且只覆蓋)設(shè)計(jì)一個(gè)新的測試方案,使它覆蓋一個(gè)而且只覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這一步驟直到所有無一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這一步驟直到所有無效等價(jià)類都被覆蓋為止。效等價(jià)類都被覆蓋為止。 注意注意: 通常程序發(fā)現(xiàn)一類錯(cuò)誤后就不再檢查是否還有其通常程序發(fā)現(xiàn)一類錯(cuò)誤后就不再檢查是否還有其他錯(cuò)誤,因此,應(yīng)該使每個(gè)測試方案只覆蓋一個(gè)無效的等他

41、錯(cuò)誤,因此,應(yīng)該使每個(gè)測試方案只覆蓋一個(gè)無效的等價(jià)類。價(jià)類。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 2.邊界值分析邊界值分析 經(jīng)驗(yàn)表明,處理邊界情況時(shí)程序最容易發(fā)生錯(cuò)誤。例經(jīng)驗(yàn)表明,處理邊界情況時(shí)程序最容易發(fā)生錯(cuò)誤。例如,許多程序錯(cuò)誤出現(xiàn)在下標(biāo)、數(shù)據(jù)結(jié)構(gòu)和循環(huán)等的邊界如,許多程序錯(cuò)誤出現(xiàn)在下標(biāo)、數(shù)據(jù)結(jié)構(gòu)和循環(huán)等的邊界附近。因此,設(shè)計(jì)使程序運(yùn)行在邊界情況附近的測試方案,附近。因此,設(shè)計(jì)使程序運(yùn)行在邊界情況附近的測試方案,暴露出程序錯(cuò)誤的可能性更大一些。暴露出程序錯(cuò)誤的可能性更大一些。 使用邊界值分析方法設(shè)計(jì)測試方案首先應(yīng)該確定邊界使用邊界值分析方法設(shè)計(jì)測試方案首先應(yīng)

42、該確定邊界情況,這需要經(jīng)驗(yàn)和創(chuàng)造性,通常輸入等價(jià)類和輸出等價(jià)情況,這需要經(jīng)驗(yàn)和創(chuàng)造性,通常輸入等價(jià)類和輸出等價(jià)類的邊界,就是應(yīng)該著重測試的程序邊界情況。按照邊界類的邊界,就是應(yīng)該著重測試的程序邊界情況。按照邊界值分析方法,應(yīng)該選取剛好等于、稍小于和稍大于等價(jià)類值分析方法,應(yīng)該選取剛好等于、稍小于和稍大于等價(jià)類邊界值的數(shù)據(jù)作為測試數(shù)據(jù),而不是選取每個(gè)等價(jià)類內(nèi)的邊界值的數(shù)據(jù)作為測試數(shù)據(jù),而不是選取每個(gè)等價(jià)類內(nèi)的典型值和任意值作為測試數(shù)據(jù)。設(shè)計(jì)測試方案時(shí)總是結(jié)合典型值和任意值作為測試數(shù)據(jù)。設(shè)計(jì)測試方案時(shí)總是結(jié)合使用等價(jià)類劃分和邊界值分析兩種技術(shù)。使用等價(jià)類劃分和邊界值分析兩種技術(shù)。軟件工程軟件測試軟

43、件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 3.錯(cuò)誤推斷法錯(cuò)誤推斷法 使用邊界值分析和等價(jià)類劃分技術(shù),可以幫助我們設(shè)使用邊界值分析和等價(jià)類劃分技術(shù),可以幫助我們設(shè)計(jì)出具有代表性的,因而也就容易暴露程序錯(cuò)誤的測試方計(jì)出具有代表性的,因而也就容易暴露程序錯(cuò)誤的測試方案。但是,不同類型不同特點(diǎn)的程序通常又有一些特殊的案。但是,不同類型不同特點(diǎn)的程序通常又有一些特殊的容易出錯(cuò)的情況。此外,有時(shí)分別使用每組測試數(shù)據(jù)時(shí)程容易出錯(cuò)的情況。此外,有時(shí)分別使用每組測試數(shù)據(jù)時(shí)程序都能正常工作,但這些輸入數(shù)據(jù)的組合卻可能檢測出程序都能正常工作,但這些輸入數(shù)據(jù)的組合卻可能檢測出程序的錯(cuò)誤。一般說來,即使是一個(gè)

44、比較小的程序,可能的序的錯(cuò)誤。一般說來,即使是一個(gè)比較小的程序,可能的輸入組合數(shù)也十分巨大,因此必須依靠測試人員的經(jīng)驗(yàn)和輸入組合數(shù)也十分巨大,因此必須依靠測試人員的經(jīng)驗(yàn)和直覺,從各種可能的測試方案中選出一些最可能引起程序直覺,從各種可能的測試方案中選出一些最可能引起程序出錯(cuò)的方案。推測程序中可能存在錯(cuò)誤的類型,是挑選測出錯(cuò)的方案。推測程序中可能存在錯(cuò)誤的類型,是挑選測試方案所依據(jù)的一個(gè)重要因素。試方案所依據(jù)的一個(gè)重要因素。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 錯(cuò)誤推斷法在很大程度上靠直覺和經(jīng)驗(yàn)進(jìn)行,它的基錯(cuò)誤推斷法在很大程度上靠直覺和經(jīng)驗(yàn)進(jìn)行,它的基本想法是列舉

45、出程序中可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特本想法是列舉出程序中可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,并且根據(jù)它們選擇測試方案。對于程序中容易出殊情況,并且根據(jù)它們選擇測試方案。對于程序中容易出錯(cuò)的情況也有一些經(jīng)驗(yàn)總結(jié)出來,例如,輸入數(shù)據(jù)為零或錯(cuò)的情況也有一些經(jīng)驗(yàn)總結(jié)出來,例如,輸入數(shù)據(jù)為零或輸出數(shù)據(jù)為零往往容易發(fā)生錯(cuò)誤輸出數(shù)據(jù)為零往往容易發(fā)生錯(cuò)誤;如果輸入或輸出的數(shù)目允如果輸入或輸出的數(shù)目允許變化(例如,被檢索的或生成的表的項(xiàng)數(shù)),則輸入或許變化(例如,被檢索的或生成的表的項(xiàng)數(shù)),則輸入或輸出的數(shù)目為輸出的數(shù)目為0和和1的情況(例如,表為空或只有一項(xiàng))是的情況(例如,表為空或只有一項(xiàng))是容易出錯(cuò)的

46、情況。此外還應(yīng)該仔細(xì)分析程序規(guī)格說明書,容易出錯(cuò)的情況。此外還應(yīng)該仔細(xì)分析程序規(guī)格說明書,注意找出其中遺漏或省略的部分,以便設(shè)計(jì)相應(yīng)的測試方注意找出其中遺漏或省略的部分,以便設(shè)計(jì)相應(yīng)的測試方案,檢測程序員對這部分的處理是否正確。案,檢測程序員對這部分的處理是否正確。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 等價(jià)類劃分方法和邊界值分析方法都只是孤立地考慮等價(jià)類劃分方法和邊界值分析方法都只是孤立地考慮各個(gè)輸入數(shù)據(jù)的測試功效,而沒有考慮多個(gè)輸入數(shù)據(jù)的組各個(gè)輸入數(shù)據(jù)的測試功效,而沒有考慮多個(gè)輸入數(shù)據(jù)的組合效應(yīng),這樣可能會(huì)遺漏輸入數(shù)據(jù)易于出錯(cuò)的組合情況。合效應(yīng),這樣可能會(huì)遺漏

47、輸入數(shù)據(jù)易于出錯(cuò)的組合情況。利用判定表或判定樹是選擇輸入組合的一條有效途徑,列利用判定表或判定樹是選擇輸入組合的一條有效途徑,列出輸入數(shù)據(jù)各種組合與程序應(yīng)做的動(dòng)作(即相應(yīng)的輸出結(jié)出輸入數(shù)據(jù)各種組合與程序應(yīng)做的動(dòng)作(即相應(yīng)的輸出結(jié)果)之間的對應(yīng)關(guān)系,然后為判定表的每一列至少設(shè)計(jì)一果)之間的對應(yīng)關(guān)系,然后為判定表的每一列至少設(shè)計(jì)一個(gè)測試用例。個(gè)測試用例。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 選擇輸入組合的另一條有效途徑是把計(jì)算機(jī)測試和人選擇輸入組合的另一條有效途徑是把計(jì)算機(jī)測試和人工檢查代碼結(jié)合起來。例如,通過代碼檢查,發(fā)現(xiàn)程序中工檢查代碼結(jié)合起來。例如,通過代碼檢

48、查,發(fā)現(xiàn)程序中兩個(gè)模塊使用并修改某些共享的變量,如果一個(gè)模塊對這兩個(gè)模塊使用并修改某些共享的變量,如果一個(gè)模塊對這些變量的修改不正確,則會(huì)引起另一個(gè)模塊出錯(cuò),這是程些變量的修改不正確,則會(huì)引起另一個(gè)模塊出錯(cuò),這是程序發(fā)生錯(cuò)誤的又一個(gè)可能原因。應(yīng)該設(shè)計(jì)測試方案,在程序發(fā)生錯(cuò)誤的又一個(gè)可能原因。應(yīng)該設(shè)計(jì)測試方案,在程序的一次運(yùn)行中同時(shí)檢測這兩個(gè)模塊,特別要著重檢測一序的一次運(yùn)行中同時(shí)檢測這兩個(gè)模塊,特別要著重檢測一個(gè)模塊修改了共享變量后,另一個(gè)模塊能否像預(yù)期的那樣個(gè)模塊修改了共享變量后,另一個(gè)模塊能否像預(yù)期的那樣正常使用這些變量。反之,如果兩個(gè)模塊相互獨(dú)立,則沒正常使用這些變量。反之,如果兩個(gè)模塊

49、相互獨(dú)立,則沒有必要測試它們的輸入組合情況。有必要測試它們的輸入組合情況。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 7.2.3 白盒測試法白盒測試法 白盒測試是把程序看成一個(gè)透明的盒子,測試人員完白盒測試是把程序看成一個(gè)透明的盒子,測試人員完全了解程序的內(nèi)部結(jié)構(gòu)和處理過程,測試時(shí)是根據(jù)程序的全了解程序的內(nèi)部結(jié)構(gòu)和處理過程,測試時(shí)是根據(jù)程序的內(nèi)部邏輯來設(shè)計(jì)測試用例的,即檢驗(yàn)程序中的每條路徑是內(nèi)部邏輯來設(shè)計(jì)測試用例的,即檢驗(yàn)程序中的每條路徑是否都能按預(yù)定的要求正確工作。白盒測試是在程序結(jié)構(gòu)上否都能按預(yù)定的要求正確工作。白盒測試是在程序結(jié)構(gòu)上進(jìn)行的測試,所以白盒測試也稱為

50、結(jié)構(gòu)測試。白盒測試常進(jìn)行的測試,所以白盒測試也稱為結(jié)構(gòu)測試。白盒測試常用的技術(shù)是邏輯覆蓋,即考察用測試數(shù)據(jù)運(yùn)行被測程序時(shí)用的技術(shù)是邏輯覆蓋,即考察用測試數(shù)據(jù)運(yùn)行被測程序時(shí)對程序邏輯的覆蓋程度。主要的覆蓋標(biāo)準(zhǔn)有六種對程序邏輯的覆蓋程度。主要的覆蓋標(biāo)準(zhǔn)有六種:語句覆蓋、語句覆蓋、判定覆蓋、條件覆蓋、判定判定覆蓋、條件覆蓋、判定.條件覆蓋、條件組合覆蓋和路條件覆蓋、條件組合覆蓋和路徑覆蓋。為了提高測試效率,我們希望選擇最少的測試用徑覆蓋。為了提高測試效率,我們希望選擇最少的測試用例來滿足指定的覆蓋標(biāo)準(zhǔn)。例來滿足指定的覆蓋標(biāo)準(zhǔn)。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 1.

51、語句覆蓋語句覆蓋 為了暴露程序中的錯(cuò)誤,至少每個(gè)語句應(yīng)該執(zhí)行一次。為了暴露程序中的錯(cuò)誤,至少每個(gè)語句應(yīng)該執(zhí)行一次。語句覆蓋的含義是選擇足夠多的測試數(shù)據(jù),使被測程序中語句覆蓋的含義是選擇足夠多的測試數(shù)據(jù),使被測程序中每個(gè)語句至少執(zhí)行一次。每個(gè)語句至少執(zhí)行一次。 2.判定覆蓋判定覆蓋 判定覆蓋又叫分支覆蓋,它的含義是不僅每個(gè)語句必判定覆蓋又叫分支覆蓋,它的含義是不僅每個(gè)語句必須至少執(zhí)行一次,而且每個(gè)判定各種可能的結(jié)果都應(yīng)該至須至少執(zhí)行一次,而且每個(gè)判定各種可能的結(jié)果都應(yīng)該至少執(zhí)行一次,也就是每個(gè)判定的各個(gè)分支都至少執(zhí)行一次。少執(zhí)行一次,也就是每個(gè)判定的各個(gè)分支都至少執(zhí)行一次。軟件工程軟件測試軟件工

52、程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 3.條件覆蓋條件覆蓋 條件覆蓋的含義是不僅每個(gè)語句至少執(zhí)行一次,而且條件覆蓋的含義是不僅每個(gè)語句至少執(zhí)行一次,而且判定表達(dá)式中的每個(gè)條件都取到各種可能的結(jié)果。判定表達(dá)式中的每個(gè)條件都取到各種可能的結(jié)果。 4.判定判定/條件覆蓋條件覆蓋 既然判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一既然判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,自然會(huì)提出一種能同時(shí)滿足這兩種覆蓋定包含判定覆蓋,自然會(huì)提出一種能同時(shí)滿足這兩種覆蓋標(biāo)準(zhǔn)的邏輯覆蓋,這就是判定標(biāo)準(zhǔn)的邏輯覆蓋,這就是判定.條件覆蓋。它的含義是選取條件覆蓋。它的含義是選取足夠多的測試數(shù)據(jù),使得

53、判定表達(dá)式中的每個(gè)條件都取到足夠多的測試數(shù)據(jù),使得判定表達(dá)式中的每個(gè)條件都取到各種可能的值,而且每個(gè)判定表達(dá)式也都取到各種可能的各種可能的值,而且每個(gè)判定表達(dá)式也都取到各種可能的結(jié)果。結(jié)果。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 5.條件組合覆蓋條件組合覆蓋 條件組合覆蓋是更強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn),它要求選取足條件組合覆蓋是更強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn),它要求選取足夠多的測試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能夠多的測試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。組合都至少出現(xiàn)一次。 顯然,滿足條件組合覆蓋標(biāo)準(zhǔn)的測試數(shù)據(jù),也一定滿足顯然,滿足條件組合覆蓋標(biāo)準(zhǔn)的

54、測試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定判定覆蓋、條件覆蓋和判定.條件覆蓋標(biāo)準(zhǔn)。因此,條件組條件覆蓋標(biāo)準(zhǔn)。因此,條件組合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的。但是,滿足條件組合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的。但是,滿足條件組合覆蓋標(biāo)準(zhǔn)的測試數(shù)據(jù)并不一定能使程序中的每條路徑都合覆蓋標(biāo)準(zhǔn)的測試數(shù)據(jù)并不一定能使程序中的每條路徑都執(zhí)行到。執(zhí)行到。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 6.路徑覆蓋路徑覆蓋 路徑覆蓋的含義是,選取足夠多的測試數(shù)據(jù),使程序路徑覆蓋的含義是,選取足夠多的測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán)路,的每條可能路徑都至少執(zhí)行一次

55、(如果程序圖中有環(huán)路,則要求每個(gè)環(huán)路至少經(jīng)過一次)。則要求每個(gè)環(huán)路至少經(jīng)過一次)。 路徑覆蓋是相當(dāng)強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn),它保證程序中每路徑覆蓋是相當(dāng)強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn),它保證程序中每條可能的路徑都至少執(zhí)行一次,因此這樣的測試數(shù)據(jù)更有條可能的路徑都至少執(zhí)行一次,因此這樣的測試數(shù)據(jù)更有代表性,暴露錯(cuò)誤的能力也更強(qiáng)。但是,路徑覆蓋只是考代表性,暴露錯(cuò)誤的能力也更強(qiáng)。但是,路徑覆蓋只是考慮到每個(gè)判定表達(dá)式的取值,并沒有檢驗(yàn)表達(dá)式中條件的慮到每個(gè)判定表達(dá)式的取值,并沒有檢驗(yàn)表達(dá)式中條件的各種可能組合情況。如果把路徑覆蓋和條件組合覆蓋結(jié)合各種可能組合情況。如果把路徑覆蓋和條件組合覆蓋結(jié)合起來,可以設(shè)計(jì)出檢錯(cuò)能力

56、更強(qiáng)的測試數(shù)據(jù)。起來,可以設(shè)計(jì)出檢錯(cuò)能力更強(qiáng)的測試數(shù)據(jù)。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 7.2.4 測試實(shí)例分析測試實(shí)例分析 以上簡單介紹了設(shè)計(jì)測試方案的幾種基本方法,使用以上簡單介紹了設(shè)計(jì)測試方案的幾種基本方法,使用每種方法都能設(shè)計(jì)出一組有用的測試方案,但是沒有一種每種方法都能設(shè)計(jì)出一組有用的測試方案,但是沒有一種方法能設(shè)計(jì)出全部測試方案。此外,不同方法各有所長,方法能設(shè)計(jì)出全部測試方案。此外,不同方法各有所長,用一種方法設(shè)計(jì)出的測試方案可能最容易發(fā)現(xiàn)某些類型的用一種方法設(shè)計(jì)出的測試方案可能最容易發(fā)現(xiàn)某些類型的錯(cuò)誤,而對另外一些類型的錯(cuò)誤可能不易發(fā)現(xiàn)。錯(cuò)

57、誤,而對另外一些類型的錯(cuò)誤可能不易發(fā)現(xiàn)。 因此,對軟件系統(tǒng)進(jìn)行實(shí)際測試時(shí),應(yīng)該聯(lián)合使用各因此,對軟件系統(tǒng)進(jìn)行實(shí)際測試時(shí),應(yīng)該聯(lián)合使用各種設(shè)計(jì)測試方案的方法,形成一種綜合策略。通常的做法種設(shè)計(jì)測試方案的方法,形成一種綜合策略。通常的做法是,用黑盒法設(shè)計(jì)基本的測試方案,再用白盒法補(bǔ)充一些是,用黑盒法設(shè)計(jì)基本的測試方案,再用白盒法補(bǔ)充一些必要的測試方案。必要的測試方案。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 具體地說,可以使用下述策略結(jié)合各種方法具體地說,可以使用下述策略結(jié)合各種方法: (1)在任何情況下都應(yīng)該使用邊界值分析的方法。經(jīng)驗(yàn))在任何情況下都應(yīng)該使用邊界值分析

58、的方法。經(jīng)驗(yàn)表明,用這種方法設(shè)計(jì)出的測試方案暴露程序錯(cuò)誤的能力表明,用這種方法設(shè)計(jì)出的測試方案暴露程序錯(cuò)誤的能力最強(qiáng)。注意,應(yīng)該既包括輸入數(shù)據(jù)的邊界情況又包括輸出最強(qiáng)。注意,應(yīng)該既包括輸入數(shù)據(jù)的邊界情況又包括輸出數(shù)據(jù)的邊界情況。數(shù)據(jù)的邊界情況。 (2)必要時(shí)用等價(jià)類劃分法補(bǔ)充測試方案。)必要時(shí)用等價(jià)類劃分法補(bǔ)充測試方案。 (3)必要時(shí)再用錯(cuò)誤推斷法補(bǔ)充測試方案。)必要時(shí)再用錯(cuò)誤推斷法補(bǔ)充測試方案。 (4)對照程序邏輯,檢查已經(jīng)設(shè)計(jì)出的測試方案??梢裕φ粘绦蜻壿?,檢查已經(jīng)設(shè)計(jì)出的測試方案。可以根據(jù)對程序可靠性的要求采用不同的邏輯覆蓋標(biāo)準(zhǔn),如果根據(jù)對程序可靠性的要求采用不同的邏輯覆蓋標(biāo)準(zhǔn),如果現(xiàn)

59、有測試方案的邏輯覆蓋程度沒有達(dá)到所要求的覆蓋標(biāo)準(zhǔn),現(xiàn)有測試方案的邏輯覆蓋程度沒有達(dá)到所要求的覆蓋標(biāo)準(zhǔn),則應(yīng)再補(bǔ)充一些測試方案。則應(yīng)再補(bǔ)充一些測試方案。軟件工程軟件測試軟件工程軟件測試軟件測試用例的設(shè)計(jì)軟件測試用例的設(shè)計(jì) 應(yīng)該強(qiáng)調(diào)指出,即使使用上述綜合策略設(shè)計(jì)測試方案,應(yīng)該強(qiáng)調(diào)指出,即使使用上述綜合策略設(shè)計(jì)測試方案,仍然不能保證測試能發(fā)現(xiàn)一切程序錯(cuò)誤,但是,這個(gè)策略仍然不能保證測試能發(fā)現(xiàn)一切程序錯(cuò)誤,但是,這個(gè)策略確實(shí)是在測試成本和測試效果之間的一個(gè)合理的折中。通確實(shí)是在測試成本和測試效果之間的一個(gè)合理的折中。通過前面的敘述可以看出,軟件測試確實(shí)是一件十分艱巨繁過前面的敘述可以看出,軟件測試確實(shí)

60、是一件十分艱巨繁重的工作。重的工作。軟件工程軟件測試軟件工程軟件測試7.3 軟件測試的實(shí)施軟件工程軟件測試軟件工程軟件測試軟件測試的實(shí)施軟件測試的實(shí)施 7.3.1 單元測試單元測試 單元測試也稱模塊測試,是對軟件最小單元的測試,單元測試也稱模塊測試,是對軟件最小單元的測試,也是對程序模塊進(jìn)行正確性檢驗(yàn)的測試,其目的在于發(fā)現(xiàn)也是對程序模塊進(jìn)行正確性檢驗(yàn)的測試,其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。通常單元測試可以放在各模塊內(nèi)部可能存在的各種差錯(cuò)。通常單元測試可以放在編碼階段,程序員在編寫好一個(gè)模塊后,應(yīng)該對自己編寫編碼階段,程序員在編寫好一個(gè)模塊后,應(yīng)該對自己編寫的模塊進(jìn)行測試,檢查它是否

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論