《軟件測(cè)試》課件第0章_第1頁(yè)
《軟件測(cè)試》課件第0章_第2頁(yè)
《軟件測(cè)試》課件第0章_第3頁(yè)
《軟件測(cè)試》課件第0章_第4頁(yè)
《軟件測(cè)試》課件第0章_第5頁(yè)
已閱讀5頁(yè),還剩53頁(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)介

第一章緒論0.1軟件測(cè)試的背景及必要性0.2軟件測(cè)試的基礎(chǔ)理論

0.1.1軟件測(cè)試的背景

隨著軟件系統(tǒng)的規(guī)模越來(lái)越大,復(fù)雜性日益增加,軟件的生產(chǎn)成本及軟件中存在的缺陷和故障造成的各類損失也大大增加,有的甚至帶來(lái)了災(zāi)難性的后果。軟件質(zhì)量問(wèn)題已成為軟件使用者和軟件開(kāi)發(fā)者關(guān)注的焦點(diǎn)。由于軟件是人類高度智能化的體現(xiàn)和產(chǎn)品,因此軟件與生俱來(lái)就有可能存在著缺陷。而事實(shí)也恰恰如此,在軟件開(kāi)發(fā)的歷史上有很多這樣的案例。0.1軟件測(cè)試的背景及必要性

1.迪斯尼的獅子王游戲軟件缺陷

1994年秋天,迪斯尼公司發(fā)布了第一個(gè)面向兒童的多媒體光盤(pán)游戲——獅子王動(dòng)畫(huà)故事書(shū)(TheLionKingAnimatedStorybook)。因?yàn)榍捌谶M(jìn)行了大量促銷宣傳,所以銷售額非??捎^,該款游戲成為孩子們的必買游戲。然而在孩子們玩的過(guò)程中發(fā)現(xiàn)了重大缺陷——迪斯尼公司未能對(duì)市面上投入使用的許多不同PC機(jī)型進(jìn)行廣泛的測(cè)試,使得游戲軟件只能在極少數(shù)系統(tǒng)中正常運(yùn)行。12月26日,圣誕節(jié)后第二天,迪斯尼公司的客戶支持電話開(kāi)始響個(gè)不停。很快,電話支持技術(shù)員們的耳邊就充斥著家長(zhǎng)的聲討聲和玩不成游戲的孩子們的哭叫聲。

2.愛(ài)國(guó)者導(dǎo)彈防御系統(tǒng)缺陷

愛(ài)國(guó)者導(dǎo)彈防御系統(tǒng)是里根總統(tǒng)提出的戰(zhàn)略防御計(jì)劃(即星球大戰(zhàn)計(jì)劃)的縮略版本,它首次應(yīng)用于海灣戰(zhàn)爭(zhēng)對(duì)抗伊拉克飛毛腿導(dǎo)彈的防御戰(zhàn)中。盡管贊譽(yù)該系統(tǒng)的報(bào)道不絕于耳,但是它確實(shí)在幾次對(duì)抗中失利,其中一次是在沙特阿拉伯的載赫藍(lán),因該系統(tǒng)未對(duì)伊拉克的飛毛腿導(dǎo)彈進(jìn)行有效攔截,致使軍營(yíng)中的28名美國(guó)士兵被炸死。分析該系統(tǒng)發(fā)現(xiàn)癥結(jié)在于一個(gè)軟件缺陷:系統(tǒng)時(shí)鐘的一個(gè)很小的計(jì)時(shí)誤差在累積14小時(shí)后,就會(huì)使跟蹤系統(tǒng)不再準(zhǔn)確。而在這次襲擊之前,該系統(tǒng)已經(jīng)運(yùn)行了100多個(gè)小時(shí)。

3.千年蟲(chóng)問(wèn)題

20世紀(jì)70年代早期,某位程序員正在為本公司設(shè)計(jì)開(kāi)發(fā)工資系統(tǒng)。他使用的計(jì)算機(jī)存儲(chǔ)空間很小,不得不盡量節(jié)省每一個(gè)字節(jié)。他將自己的程序壓縮得比其他任何人的都緊湊,其中的一個(gè)方法是把4位數(shù)年份,例如1973年,縮減為2位數(shù)73。因?yàn)楣べY系統(tǒng)的很多數(shù)據(jù)依賴于日期來(lái)處理,所以這就能節(jié)省大量的存儲(chǔ)空間。他簡(jiǎn)單地認(rèn)為只有在到達(dá)2000年,也就是他的程序開(kāi)始計(jì)算00或01這樣的年份時(shí)才會(huì)產(chǎn)生問(wèn)題。他認(rèn)定在25年之內(nèi)程序肯定會(huì)升級(jí)或替換,而且完成眼前的任務(wù)比計(jì)劃遙不可及的未來(lái)更加重要。然而這一天還是到來(lái)了,1995年他的程序仍然在使用,而他退休了,誰(shuí)也不會(huì)想到如何深入到程序中檢查2000年兼容問(wèn)題,更不用說(shuō)去修改了。

據(jù)估計(jì),全球各地更換或升級(jí)類似的程序以解決潛在的2000年問(wèn)題的費(fèi)用已經(jīng)達(dá)數(shù)千億美元。

4.美國(guó)航天局火星登陸探測(cè)器缺陷

1999年12月3日,美國(guó)航天局的火星極地登陸者號(hào)探測(cè)器在火星表面著陸時(shí)失蹤了。故障評(píng)估委員會(huì)認(rèn)定出現(xiàn)故障的原因極可能是一個(gè)數(shù)據(jù)位被意外置位。令人費(fèi)解的是,在內(nèi)部測(cè)試時(shí)并未發(fā)現(xiàn)這個(gè)缺陷。

從理論上看,著陸計(jì)劃是這樣的:當(dāng)探測(cè)器向火星表面降落時(shí),它將打開(kāi)降落傘減緩探測(cè)器的下降速度。降落傘打開(kāi)幾秒鐘后,探測(cè)器的三條腿將迅速撐開(kāi),并鎖定位置,準(zhǔn)備著陸。當(dāng)探測(cè)器離地面1800米時(shí),它將丟棄降落傘,點(diǎn)燃著陸推進(jìn)器,緩緩地降落到地面。美國(guó)航天局的設(shè)計(jì)者為了省錢(qián),簡(jiǎn)化了確定何時(shí)關(guān)閉著陸推進(jìn)器的裝置,他們?cè)谔綔y(cè)器的腳部裝了一個(gè)廉價(jià)的觸點(diǎn)開(kāi)關(guān),在計(jì)算機(jī)中設(shè)置一個(gè)數(shù)據(jù)位來(lái)控制觸點(diǎn)開(kāi)關(guān)關(guān)閉著陸推進(jìn)器。故障評(píng)估委員會(huì)在測(cè)試中發(fā)現(xiàn),在許多情況下,當(dāng)探測(cè)器的三條腿迅速撐開(kāi)準(zhǔn)備著陸時(shí),機(jī)械震動(dòng)也會(huì)觸發(fā)著陸觸點(diǎn)開(kāi)關(guān),設(shè)置致命的錯(cuò)誤數(shù)據(jù)位使著陸推進(jìn)器關(guān)閉。設(shè)想探測(cè)器開(kāi)始著陸時(shí),計(jì)算機(jī)極有可能關(guān)閉著陸推進(jìn)器,這樣探測(cè)器在下墜1800米之后沖向地面被撞成了碎片。但其背后的原因卻很簡(jiǎn)單,登陸探測(cè)器經(jīng)過(guò)了多個(gè)小組的測(cè)試,其中一個(gè)小組測(cè)試飛船的腳折疊過(guò)程,另一個(gè)小組測(cè)試此后的著陸過(guò)程。前一個(gè)小組不去注意著陸數(shù)據(jù)是否置位——這不是他們負(fù)責(zé)的范圍;后一個(gè)小組總是在開(kāi)始就復(fù)位計(jì)算機(jī),清除數(shù)據(jù)位。雙方獨(dú)立工作都做得很好,但合在一起就發(fā)生了這樣災(zāi)難性的后果。

5.金山詞霸的缺陷

在國(guó)內(nèi),“金山詞霸”是一個(gè)很著名的詞典軟件,應(yīng)用范圍廣,對(duì)使用中文操作的用戶幫助很大,但它也存在不少缺陷。例如輸入“cube”,金山詞霸會(huì)在示例中顯示33=9的錯(cuò)誤;又如,如果用鼠標(biāo)取詞“dynamically”(力學(xué),動(dòng)力學(xué)),金山詞霸會(huì)出現(xiàn)其他不同的單詞“dynamiten.炸藥”的錯(cuò)誤顯示。

6.英特爾奔騰PC的浮點(diǎn)除法缺陷

在計(jì)算機(jī)的“計(jì)算器”程序中輸入以下算式:

(4

195

835/3

145

727)

×

3

145

727

-

4

195

835

如果答案是0,就說(shuō)明計(jì)算機(jī)沒(méi)問(wèn)題。如果得出其他的結(jié)果,就表示計(jì)算機(jī)使用的中央處理器存在缺陷。1994年10月30日,弗吉尼亞州Lynchburg學(xué)院的ThomasR.Nicely博士在他的一個(gè)實(shí)驗(yàn)中,用奔騰PC解決一個(gè)除法問(wèn)題時(shí),發(fā)現(xiàn)了一個(gè)意想不到的結(jié)果,得出了錯(cuò)誤的結(jié)論。他把發(fā)現(xiàn)的問(wèn)題放到因特網(wǎng)上,隨后引發(fā)了一場(chǎng)風(fēng)暴,成千上萬(wàn)的人發(fā)現(xiàn)了同樣的問(wèn)題,并且發(fā)現(xiàn)在另外一些類似的情形下也會(huì)得出錯(cuò)誤的結(jié)果。萬(wàn)幸的是,這種情況很少見(jiàn),僅僅在進(jìn)行精度要求很高的數(shù)學(xué)、科學(xué)和工程計(jì)算時(shí)才會(huì)出現(xiàn)錯(cuò)誤。大多數(shù)進(jìn)行稅務(wù)處理和商務(wù)應(yīng)用的用戶根本不會(huì)遇到此類問(wèn)題。0.1.2軟件缺陷的定義

從上述案例中可以看到軟件存在缺陷時(shí)將造成災(zāi)難性危害或?qū)τ脩舢a(chǎn)生各種影響。軟件缺陷(Bug),即計(jì)算機(jī)系統(tǒng)或者程序中存在的任何一種破壞正常運(yùn)行能力的問(wèn)題、錯(cuò)誤,或者隱藏的功能缺陷、瑕疵。缺陷會(huì)導(dǎo)致軟件產(chǎn)品在某種程度上不能滿足用戶的需要。

對(duì)于軟件缺陷的準(zhǔn)確定義,通常包含以下五條規(guī)則:

(1)軟件未實(shí)現(xiàn)產(chǎn)品說(shuō)明書(shū)中要求的功能。

(2)軟件出現(xiàn)了產(chǎn)品說(shuō)明書(shū)中指明不會(huì)出現(xiàn)的錯(cuò)誤。

(3)軟件實(shí)現(xiàn)了產(chǎn)品說(shuō)明書(shū)中未提到的功能。

(4)軟件未實(shí)現(xiàn)產(chǎn)品說(shuō)明書(shū)中雖未明確指出但應(yīng)該實(shí)現(xiàn)的目標(biāo)。

(5)軟件難以理解,不易使用,運(yùn)行緩慢或者終端用戶認(rèn)為不好。

為了更好地理解每一條規(guī)則,我們以計(jì)算器為例進(jìn)行說(shuō)明。

計(jì)算器的產(chǎn)品說(shuō)明書(shū)聲稱它能夠準(zhǔn)確無(wú)誤地進(jìn)行加、減、乘、除運(yùn)算。當(dāng)拿到計(jì)算器后,按下“+”鍵,結(jié)果什么反應(yīng)也沒(méi)有,根據(jù)第(1)條規(guī)則,這是一個(gè)缺陷。假如得到錯(cuò)誤答案,根據(jù)第(1)條規(guī)則,這同樣是一個(gè)缺陷。

若產(chǎn)品說(shuō)明書(shū)聲稱計(jì)算器永遠(yuǎn)不會(huì)崩潰、鎖死或者停止反應(yīng),當(dāng)隨意敲鍵盤(pán)時(shí),計(jì)算器停止接收輸入,根據(jù)第(2)條規(guī)則,這是一個(gè)缺陷。

若用計(jì)算器進(jìn)行測(cè)試,發(fā)現(xiàn)除了加、減、乘、除之外它還可以求平方根,而說(shuō)明書(shū)中從沒(méi)提到這一功能,根據(jù)第(3)條規(guī)則,這是軟件缺陷。若在測(cè)試計(jì)算器時(shí),發(fā)現(xiàn)電池沒(méi)電會(huì)導(dǎo)致計(jì)算不正確,但產(chǎn)品說(shuō)明書(shū)未指出這個(gè)問(wèn)題。根據(jù)第(4)條規(guī)則,這是個(gè)缺陷。

如果軟件測(cè)試員發(fā)現(xiàn)某些地方有問(wèn)題,無(wú)論什么原因,都要認(rèn)定為缺陷。例如“=”布置的位置使其極其不好按;或在明亮光下顯示屏難以看清。根據(jù)第(5)條規(guī)則,這些都是缺陷。0.1.3軟件缺陷的種類、級(jí)別及狀態(tài)

1.軟件缺陷的種類

軟件缺陷表現(xiàn)的形式有多種,不僅僅體現(xiàn)在功能的失效方面,還體現(xiàn)在其他方面。軟件缺陷的主要類型有:

(1)功能、特性沒(méi)有實(shí)現(xiàn)或部分實(shí)現(xiàn)。

(2)設(shè)計(jì)不合理,存在缺陷。

(3)實(shí)際結(jié)果和預(yù)期結(jié)果不一致。

(4)運(yùn)行出錯(cuò),包括運(yùn)行中斷、系統(tǒng)崩潰、界面混亂。

(5)數(shù)據(jù)結(jié)果不正確、精度不夠。

(6)用戶不能接受的其他問(wèn)題,如存取時(shí)間過(guò)長(zhǎng)、界面不美觀等。

2.軟件缺陷的級(jí)別

作為軟件測(cè)試員,可能所發(fā)現(xiàn)的大多數(shù)問(wèn)題不是那么明顯、嚴(yán)重,而是難以覺(jué)察且簡(jiǎn)單或細(xì)微的,這當(dāng)中有些是真正的錯(cuò)誤,也有些不是。一般來(lái)說(shuō),問(wèn)題越嚴(yán)重的,其優(yōu)先級(jí)越高,越要得到及時(shí)的糾正。軟件公司對(duì)缺陷嚴(yán)重性級(jí)別的定義不盡相同,但一般可以概括為四種級(jí)別。

致命的:致命的錯(cuò)誤會(huì)造成系統(tǒng)或應(yīng)用程序崩潰、死機(jī)、系統(tǒng)懸掛,或造成數(shù)據(jù)丟失、主要功能完全喪失等。

嚴(yán)重的:嚴(yán)重錯(cuò)誤指功能或特性沒(méi)有實(shí)現(xiàn),主要功能部分喪失,次要功能完全喪失,或致命的錯(cuò)誤聲明。一般的:不太嚴(yán)重的錯(cuò)誤,這樣的軟件缺陷雖然不影響系統(tǒng)的基本使用,但沒(méi)有很好地實(shí)現(xiàn)功能,沒(méi)有達(dá)到預(yù)期效果。例如次要功能喪失,提示信息不太準(zhǔn)確,或用戶界面差、操作時(shí)間長(zhǎng)等。

微小的:一些小問(wèn)題,對(duì)功能幾乎沒(méi)有影響,產(chǎn)品及屬性仍可使用,如有個(gè)別錯(cuò)別字、文字排列不整齊等。

除了這四種之外,有時(shí)需要“建議”級(jí)別來(lái)處理測(cè)試人員所提出的建議或質(zhì)疑,例如建議程序做適當(dāng)?shù)男薷?,?lái)改善程序運(yùn)行狀態(tài),或?qū)υO(shè)計(jì)不合理、不明白的地方提出質(zhì)疑。

3.軟件缺陷的狀態(tài)

軟件缺陷除了嚴(yán)重性級(jí)別之外,還由其狀態(tài)來(lái)表征。為便于跟蹤和管理某個(gè)產(chǎn)品的缺陷,可以定義不同的Bug狀態(tài)。

激活狀態(tài):?jiǎn)栴}還沒(méi)有解決,測(cè)試人員新報(bào)Bug,或驗(yàn)證后Bug仍然存在。

已修正狀態(tài):開(kāi)發(fā)人員針對(duì)所存在的缺陷修改程序,認(rèn)為已解決問(wèn)題,或已通過(guò)單元測(cè)試。

關(guān)閉或非激活狀態(tài):測(cè)試人員驗(yàn)證已經(jīng)修正的Bug,確認(rèn)Bug不再存在后的狀態(tài)。0.1.4軟件缺陷產(chǎn)生的原因

軟件缺陷的產(chǎn)生是不可避免的。我們可以從技術(shù)問(wèn)題、團(tuán)隊(duì)工作和軟件本身等多個(gè)方面來(lái)分析,確定造成軟件缺陷的原因。

1.技術(shù)問(wèn)題

算法錯(cuò)誤。

計(jì)算和精度問(wèn)題。

系統(tǒng)結(jié)構(gòu)不合理,造成系統(tǒng)性能問(wèn)題。

接口參數(shù)不匹配出現(xiàn)問(wèn)題。

2.團(tuán)隊(duì)工作

系統(tǒng)分析時(shí)對(duì)客戶的需求不是十分清楚,或者和用戶的溝通存在一些困難。

不同階段的開(kāi)發(fā)人員相互理解不一致,軟件設(shè)計(jì)者對(duì)需求分析結(jié)果的理解偏差,編程人員對(duì)系統(tǒng)設(shè)計(jì)規(guī)格說(shuō)明書(shū)中某些內(nèi)容重視不夠,或存在誤解。

設(shè)計(jì)或編程上的一些假定或依賴性沒(méi)有得到充分的溝通。

3.軟件本身

文檔錯(cuò)誤、內(nèi)容不正確或拼寫(xiě)錯(cuò)誤。

數(shù)據(jù)考慮不周全引起強(qiáng)度或負(fù)載問(wèn)題。

對(duì)邊界考慮不夠周全,因漏掉某幾個(gè)邊界條件而造成的錯(cuò)誤。

對(duì)一些實(shí)時(shí)應(yīng)用系統(tǒng)要保證精確的時(shí)間同步,否則容易引起時(shí)間上不協(xié)調(diào)、不一致性問(wèn)題。

沒(méi)有考慮系統(tǒng)崩潰后在系統(tǒng)安全性、可靠性方面存在的隱患。

硬件或系統(tǒng)軟件上存在的錯(cuò)誤。

軟件開(kāi)發(fā)標(biāo)準(zhǔn)或過(guò)程上的錯(cuò)誤。

我們知道軟件缺陷是由很多原因造成的,如果把它們按產(chǎn)品規(guī)格說(shuō)明書(shū)、系統(tǒng)設(shè)計(jì)、編程代碼及其他原因等歸類,經(jīng)比較后發(fā)現(xiàn),產(chǎn)品規(guī)格說(shuō)明書(shū)是軟件缺陷出現(xiàn)最多的地方,如圖0-1所示。圖0-1軟件缺陷產(chǎn)生的原因分布

0.2.1軟件測(cè)試技術(shù)的發(fā)展歷史

在軟件行業(yè)發(fā)展初期就已經(jīng)開(kāi)始實(shí)施軟件測(cè)試,但這一階段還沒(méi)有系統(tǒng)意義上的軟件測(cè)試,更多的是一種類似調(diào)試的測(cè)試。這種測(cè)試是沒(méi)有計(jì)劃和方法的,測(cè)試用例的設(shè)計(jì)和選取也都是根據(jù)測(cè)試人員的經(jīng)驗(yàn)隨機(jī)進(jìn)行的,大多數(shù)測(cè)試是為了證明系統(tǒng)可以正常運(yùn)行。0.2軟件測(cè)試的基礎(chǔ)理論

20世紀(jì)50年代后期到20世紀(jì)60年代,各種高級(jí)語(yǔ)言相繼誕生,測(cè)試的重點(diǎn)也逐步轉(zhuǎn)入到使用高級(jí)語(yǔ)言編寫(xiě)的軟件系統(tǒng)中來(lái),這類程序的復(fù)雜性遠(yuǎn)遠(yuǎn)超過(guò)了以前。在這一階段,由于計(jì)算機(jī)系統(tǒng)中,軟件仍然處于次要位置,軟件正確性主要依賴于編程人員的技術(shù)水平,因此這一時(shí)期軟件測(cè)試的理論和方法發(fā)展比較緩慢。

20世紀(jì)70年代以后,隨著計(jì)算機(jī)處理速度的提高和存儲(chǔ)器容量的快速增加,軟件在整個(gè)計(jì)算機(jī)系統(tǒng)中的地位變得越來(lái)越重要。在軟件開(kāi)發(fā)技術(shù)不斷成熟和完善的同時(shí),軟件的規(guī)模越來(lái)越大,復(fù)雜度也大大增加。因此,軟件的可靠性面臨著前所未有的危機(jī),這給軟件測(cè)試工作帶來(lái)了更大的挑戰(zhàn),很多測(cè)試?yán)碚摵蜏y(cè)試方法應(yīng)運(yùn)而生,逐漸形成了一套完整的體系,培養(yǎng)和造就出了一批批出色的測(cè)試人才。如今,在軟件產(chǎn)業(yè)化發(fā)展的大趨勢(shì)下,人們對(duì)軟件的質(zhì)量、成本和開(kāi)發(fā)進(jìn)度的要求也越來(lái)越高,質(zhì)量控制的含義已經(jīng)超越了傳統(tǒng)意義上的軟件測(cè)試的要求及規(guī)范。傳統(tǒng)的軟件測(cè)試大多是基于代碼運(yùn)行的,并且常常是在軟件開(kāi)發(fā)的后期才開(kāi)始進(jìn)行的。但大量研究表明,設(shè)計(jì)活動(dòng)引入的錯(cuò)誤占軟件開(kāi)發(fā)過(guò)程中出現(xiàn)的所有錯(cuò)誤數(shù)量的50%~65%。因此,越來(lái)越多的聲音呼吁,要求有一個(gè)規(guī)范的軟件開(kāi)發(fā)過(guò)程。在整個(gè)軟件開(kāi)發(fā)過(guò)程中,測(cè)試已經(jīng)不再只是基于程序代碼進(jìn)行的活動(dòng),而是一個(gè)基于整個(gè)軟件生命周期的質(zhì)量控制活動(dòng),貫穿于軟件開(kāi)發(fā)的各個(gè)階段。0.2.2軟件測(cè)試的定義

軟件測(cè)試就是在軟件投入運(yùn)行前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼實(shí)現(xiàn)的最終審查,它是保證軟件質(zhì)量的關(guān)鍵步驟。通常對(duì)軟件測(cè)試的定義有兩種描述:

定義

1

軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。

定義2

軟件測(cè)試是根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)精心設(shè)計(jì)一批測(cè)試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測(cè)試用例運(yùn)行程序以及發(fā)現(xiàn)錯(cuò)誤的過(guò)程,即執(zhí)行測(cè)試步驟。測(cè)試是指某個(gè)系統(tǒng)或組成部分將在特定條件下的運(yùn)行,其結(jié)果將被觀察和記錄,并對(duì)系統(tǒng)或其組成部分進(jìn)行評(píng)價(jià)。測(cè)試活動(dòng)有兩種結(jié)果:找出缺陷和故障或顯示軟件執(zhí)行正確。測(cè)試也是一個(gè)或多個(gè)測(cè)試用例的集合。

測(cè)試用例是為特定的目的而設(shè)計(jì)的一組測(cè)試輸入、執(zhí)行條件和預(yù)期的結(jié)果。測(cè)試用例是執(zhí)行測(cè)試的最小實(shí)體。

測(cè)試步驟詳細(xì)規(guī)定了如何設(shè)置、執(zhí)行、評(píng)估特定的測(cè)試用例。對(duì)軟件測(cè)試的理解應(yīng)基于以下三點(diǎn):

(1)軟件測(cè)試不等于程序調(diào)試。

(2)軟件測(cè)試貫穿于軟件定義和開(kāi)發(fā)的整個(gè)過(guò)程。

(3)軟件開(kāi)發(fā)過(guò)程中所產(chǎn)生的需求規(guī)格說(shuō)明、概要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序都是軟件測(cè)試的對(duì)象。

軟件測(cè)試在軟件生命周期的每個(gè)時(shí)刻都存在。軟件從開(kāi)發(fā)設(shè)計(jì)、運(yùn)行直到結(jié)束使用的全過(guò)程中,主要包含兩個(gè)測(cè)試階段:第一個(gè)階段是單元測(cè)試階段,即在每個(gè)模塊編寫(xiě)完以后所做的必要測(cè)試;第二個(gè)階段是綜合測(cè)試階段,即在完成單元測(cè)試后進(jìn)行的測(cè)試,如集成測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試。0.2.3軟件測(cè)試與軟件開(kāi)發(fā)

1.軟件測(cè)試與軟件開(kāi)發(fā)的回溯性

軟件開(kāi)發(fā)過(guò)程是一個(gè)自頂向下、逐步細(xì)化的過(guò)程。首先在軟件計(jì)劃階段定義了軟件的作用域;然后進(jìn)行軟件需求分析,建立軟件的數(shù)據(jù)域、功能和性能需求、約束和一些有效性準(zhǔn)則;接著進(jìn)入軟件開(kāi)發(fā),先是進(jìn)行軟件設(shè)計(jì),然后再把設(shè)計(jì)用某種程序設(shè)計(jì)語(yǔ)言轉(zhuǎn)換成程序代碼。而測(cè)試過(guò)程則是以相反的順序安排的自底向上、逐步集成的過(guò)程,低一級(jí)測(cè)試為高一級(jí)測(cè)試準(zhǔn)備條件。首先對(duì)每一個(gè)程序模塊進(jìn)行單元測(cè)試,消除程序模塊內(nèi)部的邏輯和功能錯(cuò)誤及缺陷;再對(duì)照軟件設(shè)計(jì)進(jìn)行集成測(cè)試,檢測(cè)和排除子系統(tǒng)(或系統(tǒng))結(jié)構(gòu)上的錯(cuò)誤;隨后再對(duì)照需求,進(jìn)行確認(rèn)測(cè)試;最后從系統(tǒng)全局出發(fā),運(yùn)行系統(tǒng),看其是否滿足要求。軟件測(cè)試與軟件開(kāi)發(fā)過(guò)程的關(guān)系如圖0-2所示。

圖0-2軟件測(cè)試與軟件開(kāi)發(fā)過(guò)程的關(guān)系

2.軟件測(cè)試與軟件開(kāi)發(fā)的并行性

在軟件的需求得到確認(rèn)并通過(guò)評(píng)審后,概要設(shè)計(jì)工作和測(cè)試計(jì)劃制定工作就可以并行進(jìn)行。如果系統(tǒng)模塊已經(jīng)建立,對(duì)各個(gè)模塊的詳細(xì)設(shè)計(jì)、編碼、單元測(cè)試等工作又可并行。等待每個(gè)模塊完成后,可以進(jìn)行集成測(cè)試、系統(tǒng)測(cè)試。

圖0-3軟件測(cè)試與軟件開(kāi)發(fā)的并行性

3.軟件測(cè)試與軟件開(kāi)發(fā)的V模型

軟件測(cè)試不僅僅是執(zhí)行測(cè)試,而是一個(gè)包含很多復(fù)雜活動(dòng)的過(guò)程,并且這些過(guò)程應(yīng)該貫穿于整個(gè)軟件開(kāi)發(fā)過(guò)程。在軟件開(kāi)發(fā)過(guò)程中,應(yīng)該什么時(shí)候進(jìn)行測(cè)試、如何更好地把軟件開(kāi)發(fā)和測(cè)試活動(dòng)集成到一起,是軟件測(cè)試工作人員必須考慮的問(wèn)題。因?yàn)橹挥羞@樣,才能提高軟件測(cè)試工作的效率,提高軟件產(chǎn)品的質(zhì)量,最大限度地降低軟件開(kāi)發(fā)與測(cè)試的成本,減少重復(fù)勞動(dòng)。如圖0-4所示為軟件測(cè)試與軟件開(kāi)發(fā)的完整流程模型。

圖0-4軟件測(cè)試與開(kāi)發(fā)的完整流程模型0.2.4軟件測(cè)試的目的

基于不同的立場(chǎng),存在著兩種完全不同的測(cè)試目的:

(1)從用戶的角度出發(fā),普遍希望通過(guò)軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,以考慮是否可以接受該產(chǎn)品。

(2)從軟件開(kāi)發(fā)者的角度出發(fā),則希望軟件測(cè)試成為表明軟件產(chǎn)品中不存在錯(cuò)誤的過(guò)程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對(duì)軟件質(zhì)量的信心。

綜上所述,軟件測(cè)試的目的包括以下幾點(diǎn):

(1)軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。

(2)測(cè)試是為了證明程序有錯(cuò),而不是證明程序無(wú)錯(cuò)。即測(cè)試能證明程序的正確性,僅限于有限種情況。

(3)檢查系統(tǒng)是否滿足需求,這是測(cè)試期望的目標(biāo)。

(4)一個(gè)好的測(cè)試用例在于它發(fā)現(xiàn)了還未曾發(fā)現(xiàn)的錯(cuò)誤。

(5)一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。

上述幾點(diǎn)可以提醒人們測(cè)試要以查找錯(cuò)誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這些觀點(diǎn)可能會(huì)產(chǎn)生誤導(dǎo),認(rèn)為發(fā)現(xiàn)錯(cuò)誤是軟件測(cè)試的唯一目的,查找不出錯(cuò)誤的測(cè)試就是沒(méi)有價(jià)值的,其實(shí)事實(shí)并非如此。首先,測(cè)試并不僅僅是為了要找出錯(cuò)誤。通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的分布特征,可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前所采用的軟件過(guò)程的缺陷,以便改進(jìn)。同時(shí),通過(guò)分析也能幫助人們?cè)O(shè)計(jì)出有針對(duì)性的檢測(cè)方法,改善測(cè)試的有效性。

其次,沒(méi)有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的。完整的測(cè)試是評(píng)定測(cè)試質(zhì)量的一種方法,詳細(xì)而嚴(yán)謹(jǐn)?shù)目煽啃栽鲩L(zhǎng)模型可以證明這一點(diǎn)。例如,有人發(fā)現(xiàn)一個(gè)經(jīng)過(guò)測(cè)試能正常運(yùn)行N個(gè)小時(shí)的系統(tǒng)有繼續(xù)正常運(yùn)行N個(gè)小時(shí)的可能。0.2.5軟件測(cè)試的原則

軟件測(cè)試的目標(biāo)是希望能夠以最少的時(shí)間和人力找出軟件中潛藏的各種錯(cuò)誤和缺陷。如果成功地實(shí)施了測(cè)試,就能夠發(fā)現(xiàn)軟件中的錯(cuò)誤。

根據(jù)這樣的測(cè)試目的,軟件測(cè)試的原則應(yīng)該有以下幾點(diǎn):

(1)應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測(cè)試”作為軟件開(kāi)發(fā)者的座右銘。原始問(wèn)題的復(fù)雜性、軟件的復(fù)雜性和抽象性、軟件開(kāi)發(fā)各個(gè)階段工作的多樣性以及開(kāi)發(fā)過(guò)程中各種層次的人員之間工作的配合關(guān)系等因素,導(dǎo)致開(kāi)發(fā)的每個(gè)環(huán)節(jié)都可能產(chǎn)生錯(cuò)誤。所以不應(yīng)把軟件測(cè)試僅僅看做軟件開(kāi)發(fā)的一個(gè)獨(dú)立階段,而應(yīng)當(dāng)把它貫穿到軟件開(kāi)發(fā)的各個(gè)階段中,堅(jiān)持在軟件開(kāi)發(fā)的各個(gè)階段進(jìn)行技術(shù)評(píng)審,這樣才能在開(kāi)發(fā)過(guò)程中盡早發(fā)現(xiàn)和預(yù)防錯(cuò)誤,杜絕某些隱患,提高軟件質(zhì)量。

(2)測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)和與之對(duì)應(yīng)的預(yù)期輸出結(jié)果兩部分組成。在進(jìn)行測(cè)試之前應(yīng)當(dāng)根據(jù)測(cè)試的要求設(shè)計(jì)測(cè)試用例(TestCase)。測(cè)試用例主要用來(lái)檢驗(yàn)程序員編制的程序,因此不但需要測(cè)試的輸入數(shù)據(jù),而且需要針對(duì)這些輸入數(shù)據(jù)的預(yù)期輸出結(jié)果。如果對(duì)測(cè)試輸入數(shù)據(jù)沒(méi)有給出預(yù)期的程序輸出結(jié)果,那么就缺少了檢驗(yàn)實(shí)際測(cè)試結(jié)果的基準(zhǔn),就有可能把一個(gè)似是而非的錯(cuò)誤結(jié)果當(dāng)成正確結(jié)果。

(3)程序員應(yīng)避免檢查自己的程序。測(cè)試工作需要嚴(yán)謹(jǐn)?shù)淖黠L(fēng)、客觀的態(tài)度和冷靜的情緒。人們常常由于各種原因而產(chǎn)生一種不愿否定自己工作的心理,認(rèn)為揭露自己程序中的問(wèn)題不是一件愉快的事。這一心理狀態(tài)就成為測(cè)試自己編寫(xiě)的程序的障礙。另外,由于程序員對(duì)軟件規(guī)格說(shuō)明的錯(cuò)誤理解而引入的錯(cuò)誤很難發(fā)現(xiàn),如果由別人來(lái)測(cè)試程序員編寫(xiě)的程序,可能會(huì)更客觀、更有效,并更容易取得成功。要注意的是,這點(diǎn)不能與程序的調(diào)試(Debug)相混淆,調(diào)試由程序員自己來(lái)做可能更有效。

(4)在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件。合理的輸入條件是指能驗(yàn)證程序正確性的輸入條件,而不合理的輸入條件是指異常的、臨界的、可能引起問(wèn)題異變的輸入條件。在測(cè)試程序時(shí),人們常常傾向于過(guò)多地考慮合法的和期望的輸入條件,以檢查程序是否做了它應(yīng)該做的事情,而忽視了不合法的和預(yù)想不到的輸入條件。事實(shí)上,軟件在投入運(yùn)行以后,用戶的使用往往不遵循事先的約定,使用了一些意外的輸入,如用戶在鍵盤(pán)上按錯(cuò)了鍵或輸入了非法的命令。如果軟件對(duì)這種情況不能做出適當(dāng)?shù)姆磻?yīng),給出相應(yīng)的信息,那么就容易產(chǎn)生故障,輕則給出錯(cuò)誤的結(jié)果,重則導(dǎo)致軟件失效。因此,軟件系統(tǒng)處理非法命令的能力也必須在測(cè)試時(shí)受到檢驗(yàn)。用不合理的輸入條件測(cè)試程序時(shí),往往比用合理的輸入條件進(jìn)行測(cè)試更能發(fā)現(xiàn)錯(cuò)誤。

(5)充分注意測(cè)試中的群集現(xiàn)象。測(cè)試時(shí)不要以為找到了幾個(gè)錯(cuò)誤就不需要繼續(xù)測(cè)試了。經(jīng)驗(yàn)表明,測(cè)試后程序中殘存的錯(cuò)誤數(shù)目與該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目或檢錯(cuò)率成正比。根據(jù)這個(gè)規(guī)律,應(yīng)當(dāng)對(duì)錯(cuò)誤群集的程序段進(jìn)行重點(diǎn)測(cè)試,以提高測(cè)試投資的效益。

在所測(cè)程序段中,若發(fā)現(xiàn)錯(cuò)誤數(shù)目較多,則殘存錯(cuò)誤數(shù)目也比較多,這種錯(cuò)誤群集性現(xiàn)象已被許多程序的測(cè)試實(shí)踐所證實(shí)。例如,美國(guó)IBM公司的OS/370操作系統(tǒng)中,47%的錯(cuò)誤僅與該系統(tǒng)4%的程序模塊有關(guān)。這種現(xiàn)象對(duì)測(cè)試很有用,如果發(fā)現(xiàn)某一程序模塊似乎比其他程序模塊有更多的錯(cuò)誤傾向,則應(yīng)當(dāng)花費(fèi)較多的時(shí)間和代價(jià)測(cè)試這個(gè)程序模塊。

(6)嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。測(cè)試計(jì)劃應(yīng)包括:所測(cè)軟件的功能、輸入和輸出、測(cè)試內(nèi)容、各項(xiàng)測(cè)試的進(jìn)度安排、資源要求、測(cè)試資料、測(cè)試工具、測(cè)試用例的選擇、測(cè)試的控制方式和過(guò)程、系統(tǒng)組裝方式、跟蹤規(guī)程、總體流程圖調(diào)試規(guī)程、回歸測(cè)試的規(guī)定以及評(píng)價(jià)標(biāo)準(zhǔn)等。對(duì)于測(cè)試計(jì)劃,要明確規(guī)定,不要隨意更改。

(7)應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。這是一條最明顯的原則,但常常被忽視。有些錯(cuò)誤的征兆在輸出實(shí)測(cè)結(jié)果時(shí)已經(jīng)明顯地出現(xiàn)了,但是如果不仔細(xì)、全面地檢查測(cè)試結(jié)果,就會(huì)使這些錯(cuò)誤被忽略。所以必須對(duì)預(yù)期的輸出結(jié)果明確定義,對(duì)實(shí)測(cè)的結(jié)果仔細(xì)分析檢查,抓住征候,暴露錯(cuò)誤。

(8)妥善保存測(cè)試計(jì)劃、測(cè)試用例、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。0.2.6軟件測(cè)試的分類

從不同的角度,可以把軟件測(cè)試技術(shù)分成不同種類。

1.從是否需要執(zhí)行被測(cè)軟件的角度分類

從是否需要執(zhí)行被測(cè)軟件的角度,可將軟件測(cè)試分為靜態(tài)測(cè)試(StaticTesting)和動(dòng)態(tài)測(cè)試(DynamicTesting)。

顧名思義,靜態(tài)測(cè)試就是通過(guò)對(duì)被測(cè)程序的靜態(tài)審查,發(fā)現(xiàn)代碼中潛藏的錯(cuò)誤。它一般用人工方式脫機(jī)完成,故亦稱為人工測(cè)試或代碼評(píng)審(CodeReview);也可借助于靜態(tài)分析器在機(jī)器上以自動(dòng)方式進(jìn)行檢查,但不要求程序本身在機(jī)器上運(yùn)行。按照評(píng)審的不同組織形式,代碼評(píng)審又可分為代碼會(huì)審、走查以及辦公桌檢查、同行評(píng)分四種。對(duì)某個(gè)具體的程序,通常只使用一種評(píng)審方式。

動(dòng)態(tài)測(cè)試是通常意義上的測(cè)試,即使用和運(yùn)行被測(cè)軟件。動(dòng)態(tài)測(cè)試的對(duì)象必須是能夠由計(jì)算機(jī)真正運(yùn)行的被測(cè)試的程序。

2.從軟件測(cè)試用例設(shè)計(jì)方法的角度分類

從軟

溫馨提示

  • 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)論