《軟件測試的基礎(chǔ)理論》由會員分享,可在線閱讀,更多相關(guān)《軟件測試的基礎(chǔ)理論(29頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版文本樣式,第二級,*,*,單擊此處
2、編輯母版標(biāo)題樣式,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,*,*,軟件測試基礎(chǔ)理論,1:軟件缺陷含義,2:軟件缺陷的案例,3:軟件缺陷的定義,4:軟件缺陷的種類,5:軟件缺陷的級別判定,6:軟件缺陷的原因,7:軟件缺陷的組成,8:軟件測試的分類,9:軟件測試流程,10:軟件測試模型,11:,單元測試的時間如何把握?,軟件的質(zhì)量就是軟件的生命,為了保證軟件的質(zhì)量,人們在長期的開發(fā)過程中積累了許多經(jīng)驗并形成了許多行之有效的方法。但是借助這些方法,我們只能盡量減少軟件中的錯誤和不足,卻不能完全避免所有的錯誤。,如果把所開發(fā)出來的軟件看作一個企業(yè)生產(chǎn)的產(chǎn)品,那么軟件測試就相當(dāng)于該企
3、業(yè)的質(zhì)量檢測部分。簡單地說,我們在編寫完一段代碼之后,檢查其是否如我們所預(yù)期的那樣運行,這個活動就可以看作是一種軟件測試工作。新的測試?yán)碚摗y試方法、測試技術(shù)手段在不斷涌出,軟件測試機構(gòu)和組織也在迅速產(chǎn)生和發(fā)展,由此軟件測試技術(shù)職業(yè)也同步完善和健全起來。,1:軟件測試的含義,人們常常不把軟件當(dāng)回事,沒有真正意識到它已經(jīng)深入滲透到我們的日常生活中,軟件在電子信息領(lǐng)域里無處不在?,F(xiàn)在有許多人如果一天不上網(wǎng)查看電子郵件,簡直就沒法過下去。我們已經(jīng)離不開,24,小時包裹投遞服務(wù)、長途電話服務(wù)和最先進的醫(yī)療服務(wù)了。,然而軟件是由人編寫開發(fā)的,是一種邏輯思維的產(chǎn)品,盡管現(xiàn)在軟件開發(fā)者采取了一系列有效措施,
4、不斷地提高軟件開發(fā)質(zhì)量,但仍然無法完全避免軟件(產(chǎn)品)會存在各種各樣的缺陷。,2軟件缺陷案例,下面以實例來說明。,(,1,)迪斯尼的獅子王游戲軟件缺陷。,1994,年秋天,迪斯尼公司發(fā)布了第一個面向兒童的多媒體光盤游戲,獅子王動畫故事書(,The Lion King Animated Storybook,)。盡管已經(jīng)有許多其他公司在兒童游戲市場上運作多年,但是這次是迪斯尼公司首次進軍這個市場,所以進行了大量促銷宣傳。結(jié)果,銷售額非??捎^,該游戲成為孩子們那年節(jié)假日的“必買游戲”。然而后來卻飛來橫禍。,12,月,26,日,圣誕節(jié)的后一天,迪斯尼公司的客戶支持電話開始響個不停。很快,電話支持技術(shù)員
5、們就淹沒在來自于憤怒的家長并伴隨著玩不成游戲的孩子們哭叫的電話之中。報紙和電視新聞進行了大量的報道。,后來證實,迪斯尼公司未能對市面上投入使用的許多不同類型的,PC,機型進行廣泛的測試。軟件在極少數(shù)系統(tǒng)中工作正常,-,例如在迪斯尼程序員用來開發(fā)游戲的系統(tǒng)中,但在大多數(shù)公眾使用的系統(tǒng)中卻不能運行。,(,2,)愛國者導(dǎo)彈防御系統(tǒng)缺陷,愛國者導(dǎo)彈防御系統(tǒng)是里根總統(tǒng)提出的戰(zhàn)略防御計劃(即星球大戰(zhàn)計劃)的縮略版本,它首次應(yīng)用在海灣戰(zhàn)爭中對抗伊拉克飛毛腿導(dǎo)彈的防御戰(zhàn)中。盡管對系統(tǒng)贊譽的報道不絕于耳,但是它確實在對抗幾枚導(dǎo)彈中失利,包括一次在沙特阿拉伯的多哈擊斃了,28,名美國士兵。分析發(fā)現(xiàn)癥結(jié)在于一個軟件
6、缺陷,系統(tǒng)時鐘的一個很小的計時錯誤積累起來到,14,小時后,跟蹤系統(tǒng)不再準(zhǔn)確。在多哈的這次襲擊中,系統(tǒng)已經(jīng)運行了,100,多個小時。,(,3,)千年蟲問題,20,世紀(jì),70,年代早期的某個時間,某位程序員正在為本公司設(shè)計開發(fā)工資系統(tǒng)。他使用的計算機存儲空間很小,迫使他盡量節(jié)省每一個字節(jié)。他將自己的程序壓縮得比其他任何人都緊湊。使用的其中一個方法是把,4,位數(shù)年份,例如,1973,年,縮減為,2,位數(shù),,73,。因為工資系統(tǒng)相當(dāng)信賴于日期的處理,所以需要節(jié)省大量的存儲空間。他簡單的認(rèn)為只有在到達(dá),2000,年,那時他的程序開始計算,00,或,01,這樣的年份時問題才會產(chǎn)生。雖然他知道會出這樣的問
7、題,但是他認(rèn)定在,25,年之內(nèi)程序肯定會升級或替換,而且眼前的任務(wù)比現(xiàn)在計劃遙不可及的未來更加重要。然而這一天畢竟到來了。,1995,年他的程序仍然在使用,而他退休了,誰也不會想到如何深入到程序中檢查,2000,年兼容問題,更不用說去修改了。,估計全球各地更換或升級類似的前者程序以解決潛在的,2000,問題的費用已經(jīng)達(dá)數(shù)千億美元。,3軟件缺陷的定義,從上述的案例中可以看到軟件發(fā)生錯誤時將造成災(zāi)難性危害或?qū)τ脩舢a(chǎn)生各種影響。軟件缺陷(,bug,),即計算機系統(tǒng)或者程序中存在的任何一種破壞正常運行能力的問題、錯誤,或者隱藏的功能缺陷、瑕疵。缺陷會導(dǎo)致軟件產(chǎn)品在某種程度上不能滿足用戶的需要。,對于軟
8、件缺陷的準(zhǔn)確定義,通常有以下,5,條描述:,(,1,)軟件未實現(xiàn)產(chǎn)品說明書要求的功能。,(,2,)軟件出現(xiàn)了產(chǎn)品說明書指明不會出現(xiàn)的錯誤。,(,3,)軟件超出實現(xiàn)了產(chǎn)品說明書提到的功能。,(,4,)軟件實現(xiàn)了產(chǎn)品說明書雖未明確指出但應(yīng)該實現(xiàn)的目標(biāo)。,(,5,)軟件難以理解,不易使用,運行緩慢或者終端用戶認(rèn)為不好。,4軟件缺陷的種類,軟件缺陷表現(xiàn)的形式有多種,不僅僅體現(xiàn)在功能的失效方面,還體現(xiàn)在其他方面。軟件缺陷的主要類型有:,功能、特性沒有實現(xiàn)或部分實現(xiàn)。,設(shè)計不合理,存在缺陷。,實際結(jié)果和預(yù)期結(jié)果不一致。,運行出錯,包括運行中斷、系統(tǒng)崩潰、界面混亂。,數(shù)據(jù)結(jié)果不正確、精度不夠。,用戶不能接受
9、的其他問題,如存取時間過長、界面不美觀。,5軟件缺陷的級別,(,1,)軟件缺陷的級別,作為軟件測試員,可能所發(fā)現(xiàn)的大多數(shù)問題不是那么明顯、嚴(yán)重,而是難以覺察的簡單而細(xì)微的錯誤,有些是真正的錯誤,也有些不是。一般來說,問題越嚴(yán)重的,其優(yōu)先級越高,越要得到及時的糾正。軟件公司對缺陷嚴(yán)重性級別的定義不盡相同,但一般可以概括為,4,種級別:,致命的:致命的錯誤,造成系統(tǒng)或應(yīng)用程序崩潰、死機、系統(tǒng)懸掛,或造成數(shù)據(jù)丟失、主要功能完全喪失等。,嚴(yán)重的:嚴(yán)重錯誤,指功能或特性沒有實現(xiàn),主要功能部分喪失,次要功能完全喪失,或致命的錯誤聲明,對用戶的操作有很大影響,普通的:不太嚴(yán)重的錯誤,這樣的軟件缺陷雖然不影響
10、系統(tǒng)的基本使用,但沒有很好地實現(xiàn)功能,沒有達(dá)到預(yù)期效果。如次要功能喪失,提示信息不太準(zhǔn)確,或用戶界面差,操作時間長等。,輕微的:一些小問題,對功能幾乎沒有影響,產(chǎn)品及屬性仍可使用,如有個別錯別字、文字排列不整齊等。,除了這,4,種之外,有時需要“建議”級別來處理測試人員所提出的建議或質(zhì)疑,如建議程序做適當(dāng)?shù)男薷?,來改善程序運行狀態(tài),或?qū)υO(shè)計不合理、不明白的地方提出質(zhì)疑。,6軟件缺陷的原因,軟件缺陷的產(chǎn)生,首先是不可避免的。其次我們可以從軟件本身,團隊工作和技術(shù)問題等多個方面分析,比較容易確定造成軟件缺陷的原因,歸納如下。,技術(shù)問題,算法錯誤。,語法錯誤。,計算和精度問題。,系統(tǒng)結(jié)構(gòu)不合理,造成
11、系統(tǒng)性能問題。,接口參數(shù)不匹配出現(xiàn)問題。,7軟件缺陷的組成,我們知道軟件缺陷是由很多原因造成的,如果把它們按需求分析結(jié)果,規(guī)格說明書,系統(tǒng)設(shè)計結(jié)果,編程的代碼等歸類起來,比較后發(fā)現(xiàn),結(jié)果規(guī)格說明書是軟件缺陷出現(xiàn)最多的地方,見圖,1-1,。,圖,1-1,軟件缺陷構(gòu)成示意圖,8軟件測試的分類,從不同的角度,可以把軟件測試技術(shù)分成不同種類。,(,1,)從是否需要執(zhí)行被測軟件的角度分類,從是否需要執(zhí)行被測軟件的角度,可分為靜態(tài)測試(,Static Testing,)和動態(tài)測試,(Dynamic Testing),。顧名思義,靜態(tài)測試就是通過對被測程序的靜態(tài)審查,發(fā)現(xiàn)代碼中潛在的錯誤。它一般用人工方式脫
12、機完成,故亦稱人工測試或代碼評審(,Code Review,),;,也可借助于靜態(tài)分析器在機器上以自動方式進行檢查,但不要求程序本身在機器上運行。按照評審的不同組織形式,代碼評審又可分為代碼會審,走查以及辦公桌檢查,同行評分,4,種。對某個具體的程序,通常只使用一種評審方式。,動態(tài)測試的對象必須是能夠由計算機真正運行的被測試的程序。它分為黑盒測試和白盒測試,也是我們下面將要介紹的內(nèi)容。,(,2,)從軟件測試用例設(shè)計方法的角度分類,從軟件測試用例設(shè)計方法的角度,可分為黑盒測試(,Black-Box Testing,)和白盒測試(,White-Box Testing,)。,黑盒測試是一種從用戶觀點
13、出發(fā)的測試,又稱為功能測試,數(shù)據(jù)驅(qū)動測試和基于規(guī)格說明的測試。若測試用例的設(shè)計是基于產(chǎn)品的功能,目的是檢查程序各個功能是否實現(xiàn),并檢查其中的功能錯誤,則這種測試方法稱為黑盒。,白盒測試基于產(chǎn)品的內(nèi)部結(jié)構(gòu)來進行測試,檢查內(nèi)部操作是否按規(guī)定執(zhí)行,軟件各個部分功能是否得到充分利用。白盒測試又稱為結(jié)構(gòu)測試,邏輯驅(qū)動測試或基于程序的測試。即根據(jù)被測程序的內(nèi)部結(jié)構(gòu)設(shè)計測試用例,測試者需事先了解被測試程序的結(jié)構(gòu)。,(,3,)從軟件測試的策略和過程的角度分類。,按照軟件測試的策略和過程分類,軟件測試可分為單元測試(,Unit Testing,),集成測試(,Integration Testing,),確認(rèn)測試
14、(,Validation Testing,),系統(tǒng)測試(,System Testing,)和驗收測試(,Verification Testing,),.,單元測試是針對每個單元的測試,是軟件測試的最小單位。它確保每個模塊能正常工作。單元測試多數(shù)使用白盒測試,用以發(fā)現(xiàn)內(nèi)部錯誤。,集成測試是對已測試過的模塊進行組裝,進行集成測試的目的主要在于檢驗與軟件設(shè)計相關(guān)的程序結(jié)構(gòu)問題。集成測試一般通過黑盒測試方法來完成。,確認(rèn)測試是檢驗所開發(fā)的軟件能否滿足所有功能和性能需求的最后手段,通常采用黑盒測試方法。,系統(tǒng)測試的主要任務(wù)是檢測被測軟件與系統(tǒng)的其他部分的協(xié)調(diào)性。,驗收測試是軟件產(chǎn)品質(zhì)量的最后一關(guān)。這一環(huán)
15、節(jié),測試主要從用戶的角度著手,其參與者主要是用戶和少量的程序開發(fā)人員。,9.軟件測試流程,10.軟件測試過程模型,瀑布模型,V,模型,W,模型,H,模型,瀑布測試模型,瀑布模型特點,線性化模型,各階段劃分明確,基于文檔的驅(qū)動,嚴(yán)格的階段評審,V,模型,V,模型是最具有代表意義的測試模型。,V,模型是軟件開發(fā)瀑布模型的變種,它反映了測試活動與分析和設(shè)計的關(guān)系。,從左到右,描述了基本的開發(fā)過程和測試行為,非常明確地標(biāo)明了測試過程中存在的不同級別,并且清楚地描述了這些測試階段和開發(fā)過程期間各階段的對應(yīng)關(guān)系。,箭頭代表了時間方向,左邊下降的是開發(fā)過程各階段,與此相對應(yīng)的是右邊上升的部分,即各測試過程的
16、各個階段。,V,模型存在一定的局限性,它僅僅把測試過程作為在需求分析、概要設(shè)計、詳細(xì)設(shè)計及編碼之后的一個階段。容易使人理解為測試是軟件開發(fā)的最后的一個階段,主要是針對程序進行測試尋找錯誤,而需求分析階段的隱藏的問題一直到后期的驗收測試才被發(fā)現(xiàn)。,在,V,模型中增加軟件各開發(fā)階段應(yīng)同步進行的測試,被演化為一種,W,模型。,開發(fā)是“,V”,,測試也是與此相重疊的“,V”,。,W,模型體現(xiàn)了“盡早地和不斷地進行軟件測試”的原則。,W,模型,相比于,V,模型,,W,模型更科學(xué)。,W,模型可以說是前者自然而然的發(fā)展,它強調(diào):測試伴隨著整個軟件開發(fā)周期,而且測試的對象不僅僅是程序,需求、功能和設(shè)計同樣要測試。,測試與開發(fā)是同步進行的,從而有利于盡早地發(fā)現(xiàn)問題。以需求為例,需求分析一完成,我們就可以對需求進行測試,而不是等到最后才進行針對需求的驗收測試。,測試不僅僅是評定軟件的質(zhì)量,測試還可以盡可能早地找出缺陷所在,從而幫助改進項目內(nèi)部的質(zhì)量。,H,模型,單元測試的時間如何把握?,如果按照項目時間這樣劃分:,1/3,計劃和設(shè)計,,1/6,實現(xiàn),,1/4,組件測試,,1/4,系統(tǒng)測試。則在代碼實現(xiàn)中,