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

下載本文檔

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

文檔簡介

軟件工程與項目管理,第6章 軟件測試,掌握:白盒測試、黑盒測試、測試用例、邏輯覆蓋、等價類劃分、邊界值分析、錯誤推測法、因果圖法、單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試、Alpha測試和Beta測試。,6.1 軟件測試概述,6.1.1 軟件測試的概念,軟件測試是在軟件投入運(yùn)行之前對軟件需求分析、設(shè)計規(guī)格說明及編碼的最終審查,是軟件質(zhì)量保證的關(guān)鍵步驟,是為了發(fā)現(xiàn)錯誤而執(zhí)行軟件的過程。,6.1.2 軟件測試的目的,軟件測試的目的就是為了發(fā)現(xiàn)錯誤并糾正錯誤,可以將其總結(jié)為以下幾點(diǎn): (1)測試是一個程序的執(zhí)行過程,它的目的在于發(fā)現(xiàn)錯誤。 (2)一個好的測試用例極可能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤。 (3)一個成功的測試是發(fā)現(xiàn)了至今末發(fā)現(xiàn)的錯誤的測試。,6.1.3 軟件測試的原則,(1)測試前要認(rèn)定被測試軟件有錯,不要認(rèn)為軟件沒有錯。 (2)要避免由程序編寫者自己進(jìn)行測試。 (3)要注意測試用例的合理設(shè)計和選擇,預(yù)期結(jié)果的定義要有利于錯誤的檢測。 (4)軟件測試要以軟件需求規(guī)格說明書為標(biāo)準(zhǔn)。 (5)測試是相對的,不能窮盡所有的測試,要根據(jù)人力物力安排測試。 (6)應(yīng)當(dāng)制定嚴(yán)格的測試計劃。 (7)妥善保存測試計劃與測試用例,為以后的維護(hù)提供方便。,6.2 軟件測試方法,6.2.1 軟件測試方法分類,1.按測試步驟與策略分類 可分為單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試、測試和測試。 2.按測試技術(shù)分類 可分為白盒測試與黑盒測試。 3.按測試的環(huán)境分類 可分為靜態(tài)測試與動態(tài)測試。 4.按測試的功能分 可分為配置測試、兼容性測試、語言測試、易用性測試、文檔測試、特殊測試等。,6.2.2 白盒測試,白盒測試是把程序看做一個透明的盒子,能夠了解它的內(nèi)部結(jié)構(gòu)和處理過程,即對程序的所有邏輯路徑進(jìn)行測試,檢查是否都能按預(yù)定要求正確工作。 用白盒測試方法不可能進(jìn)行完全測試,因為企圖遍歷所有的路徑也是不可能做到的。,圖6-1 一個程序的控制流程圖,6.2.3 黑盒測試,黑盒測試法是把程序看成一個黑盒子,不考慮程序的內(nèi)部邏輯結(jié)構(gòu)和處理過程,只著眼于程序的外部特性 很顯然,因為企圖遍歷所有的輸入數(shù)據(jù)是不可能做到的,所以用黑盒測試法也不可能進(jìn)行完全的測試。,圖6-2 一個簡單的程序模型,6.3 測試用例,6.3.1 測試用例概述,測試用例是為特定目的而設(shè)計的一組測試輸入、執(zhí)行條件和預(yù)期的結(jié)果。測試用例是執(zhí)行的最小實體。 以在圖6-1的程序模型為例,輸入變量為A、B、C,輸出變量為b,假設(shè)程序體為: b = A + B + C 則一個可能的測試用例為: A=1,B=2,C=3,b=6 “A=1,B=2,C=3”為測試輸入,“b=6”為預(yù)期結(jié)果,沒有執(zhí)行條件。,在實際測試工作中常存在以下誤區(qū): (1)好用例就是能發(fā)現(xiàn)到目前為止沒有發(fā)現(xiàn)的缺陷的用例。 (2)測試用例應(yīng)該詳細(xì)記錄所有的操作信息,即使一個以前沒有接觸過此系統(tǒng)的人員也能進(jìn)行測試。,6.3.2 邏輯覆蓋,1.語句覆蓋 語句覆蓋就是選擇足夠多的測試用例,使得被測程序中的每個可執(zhí)行語句至少執(zhí)行一次。這是一種最基本的覆蓋要求。,例如,某PASCAL源程序如下: IF (A1) AND (B=0) THEN X:= X/A; IF (A=2) OR (X1) THEN X:=X+1; 為方便問題的討論,圖6-3給出了該段程序的流程圖,其中共有兩個判定,將判定“(A1) AND (B=0)”記為P1,判定“(A=2) OR (X1)”記為P2;有4個條件,即“A1”記為C1,“B=0”記為C2,“A=2”記為C3,“X1”記為C4;有5條路徑,分別用a、b、c、d、e表示。,圖6-3 本節(jié)例子程序的流程圖,為了使每個語句都執(zhí)行一次,程序執(zhí)行的路徑應(yīng)該是acbed”,b、,d這兩個流程無論條件是否成立都會經(jīng)過。為此,可以設(shè)計以下一組測試用例: A2,B=0,X=5,此時,覆蓋路徑為acbed 。,2.判定覆蓋 判定覆蓋就是選擇足夠的測試用例,使得程序中的每個判定至少都獲得一次“真”值和一次“假”值,從而使得程序的每個分支至少都執(zhí)行一次。 對于“1.語句覆蓋”中的例子,如果能夠測試路徑acbed和abd或acbd和abed,就可滿足判定覆蓋要求,為此,可設(shè)計以下兩組測試用例: (1)A=3,B=0,X=1,此時,P1為T,P2為F。 (2)A=2,B=1,X=1,此時,P1為F,P2為T。,3.條件覆蓋 條件覆蓋就是要設(shè)計足夠多的測試用例,使被測試程序中的每個判斷語句中的每個邏輯條件的可能值至少被滿足一次。 仍以“1.語句覆蓋”中的例子為例,為滿足條件覆蓋的要求,必須使條件C1、C2、C3、C4都能取到“真”值和“假”值,為此,可設(shè)計以下測試用例: (1)A=0,B=0,X=1,此時,C1為F,C2為T,C3為F,C4為F,P1為F,P2為F,覆蓋路徑為abd。 (2)A=2,B=1,X=2,此時,C1為T,C2為F,C3為T,C4為T,P1為F,P2為T,覆蓋路徑為abed。,4.判定/條件覆蓋 設(shè)計足夠多的測試用例,使得被測試程序中的每個判斷本身的判定結(jié)果(真/假)至少滿足一次,同時,每個邏輯條件的可能值也至少滿足一次。 (1)A=0,B=0,X=1,此時,C1為F,C2為T,C3為F,C4為F,P1為F,P2為F,覆蓋路徑為abd。 (2)A=2,B=1,X=2,此時,C1為T,C2為F,C3為T,C4為T,P1為F,P2為T,覆蓋路徑為abed。 (3)A=2,B=0,X=2,此時,C1為T,C2為T,C3為T,C4為T,P1為T,P2為T,覆蓋路徑為acbed。,5.條件組合覆蓋 條件組合覆蓋要求設(shè)計足夠多的測試用例,使得被測試程序中的每個判斷的所有可能條件取值的組合至少被滿足一次。 (1)A=0,B=0,X=1,此時,C1為F,C2為T,C3為F,C4為F,P1為F,P2為F,覆蓋路徑為abd。 (2)A=2,B=1,X=2,此時,C1為T,C2為F,C3為T,C4為T,P1為F,P2為T,覆蓋路徑為abed。 (3)A=2,B=0,X=1,此時,C1為T,C2為T,C3為T,C4為F,P1為T,P2為T,覆蓋路徑為acbed。 (4)A=0,B=1,X=2,此時,C1為F,C2為F,C3為F,C4為T,P1為F,P2為T,覆蓋路徑為abed。,6.路徑覆蓋 路徑覆蓋要求設(shè)計足夠多的測試用例,使得被測試程序中的每條路徑至少被覆蓋一次。 (1)A=0,B=0,X=1,此時,C1為F,C2為T,C3為F,C4為F,P1為F,P2為F,覆蓋路徑 abde。 (2)A=2,B=1,X=2,此時,C1為T,C2為F,C3為T,C4為T,P1為F,P2為T,覆蓋路徑abe。 (3)A=2,B=0,X=1,此時,C1為T,C2為T,C3為T,C4為F,P1為T,P2為T,覆蓋路徑acbe。 (4)A=3,B=0,X=1,此時,C1為T,C2為T,C3為F,C4為F,P1為T,P2為F,覆蓋路徑acde。,語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件覆蓋以及路徑覆蓋對于程序邏輯覆蓋的要求是由弱到強(qiáng)的,在實際測試工作中,應(yīng)根據(jù)具體情況選擇適合的邏輯覆蓋測試技術(shù)。 邏輯覆蓋是一種白盒測試方法。,6.3.3 等價類劃分,等價類劃分方法是把被測試的程序的所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個等價類,從而把無限的隨機(jī)測試變成有針對性的等價類測試 等價類劃分屬于黑盒測試方法 等價類劃分的測試一般分為兩步進(jìn)行: 第一步:劃分等價類并給出定義。 第二步:選擇測試用例。,劃分初等價類以后,根據(jù)等價類設(shè)計測試用例時可以按照以下兩個步驟進(jìn)行: (1)設(shè)計一個新的測試用例,以盡可能多地覆蓋尚未覆蓋的有效等價類,重復(fù)這一步驟直到所有有效等價類都被覆蓋為止。 (2)設(shè)計一個新的測試用例,使它覆蓋一個且只覆蓋一個尚未覆蓋的無效等價類,重復(fù)這一步驟直到所有無效等價類都被覆蓋為止。 注意,為避免因測試用例發(fā)現(xiàn)一個錯誤而掩蓋其他錯誤的情況發(fā)生,應(yīng)該是每個測試用例只覆蓋一個無效等價類。,例如,某城市的電話號碼由3部分組成,分別是: (1)地區(qū)碼:空白或3位數(shù)字; (2)前綴:非“0”或“1”開頭的3位數(shù); (3)后綴:4位數(shù)字。 假定被調(diào)試的程序能接受一切符合上述規(guī)定的電話號碼,拒絕所有不符合規(guī)定的號碼,就可用等價分類法來設(shè)計它的測試用例。,第一步:劃分等價類,包括4個有效等價類,11個無效等價類,表6-1列出了劃分的結(jié)果。在每一等價類之后加有編號,以便識別。,第二步:確定測試用例。表6-1中有4個有效等價類,可選擇如表6-2所示的兩個測試用例。,對11個無效等價類,可選擇如表6-3所示的11個測試用例。,6.3.4 邊界值分析,經(jīng)驗表明,程序在處理邊界值時最容易發(fā)生錯誤,例如,許多程序錯誤出現(xiàn)在下標(biāo)、數(shù)據(jù)結(jié)構(gòu)和循環(huán)等邊界附近。因此,設(shè)計使程序運(yùn)行邊界值的測試方案,可能會暴露出更多的錯誤。邊界值分析方法正是根據(jù)這一思路而提出的,它通過使程序在邊界值處運(yùn)行,以判斷程序是否存在錯誤。 按照邊界值分析法,應(yīng)該選取剛好等于、稍小于和稍大于等價類邊界值的數(shù)據(jù)作為測試數(shù)據(jù),而不是選取每個等價類內(nèi)的典型值作為測試數(shù)據(jù)。,在使用邊界值分析方法設(shè)計測試用例時,可以參照以下: (1)如果輸入條件規(guī)定了值的范圍,可以選擇正好等于邊界值的數(shù)據(jù)作為合理值的測試用例,同時還要選擇剛好越過邊界值的數(shù)據(jù)作為不合理值的測試用例。例如,輸入值的范圍是1,100,可取0、1、100、101等值作為測試數(shù)據(jù)。 (2)如果輸入條件指出了輸入數(shù)據(jù)的個數(shù),則按最大個數(shù)、最小個數(shù)、比最小個數(shù)少1、比最大個數(shù)多1等情況分別設(shè)計測試用例。例如,一個輸入文件可包括1255個記錄,則分別設(shè)計有1個記錄、255個記錄,以及0個記錄的輸入文件的測試用例。,(3)對每個輸出條件分別按照以上(1)或(2)的原則確定輸出值的邊界情況。例如,一個學(xué)生成績管理系統(tǒng)規(guī)定,只能查詢9598級大學(xué)生的各科成績,既應(yīng)設(shè)計測試用例測試此查詢范圍內(nèi)的某一屆或四屆學(xué)生的成績,還需設(shè)計查詢94級、99級學(xué)生成績的測試用例(不合理輸入等價類)。 (4)如果程序的規(guī)格說明給出的輸入或輸出域是個有序集合(如順序文件、線性表、鏈表等),則應(yīng)選取集合的第一個元素和最后一個元素作為測試用例。,6.3.5 錯誤推測法,在測試程序時,人們可能根據(jù)經(jīng)驗或直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的測試用例,這就是錯誤推測法。 例如,當(dāng)對一個排序程序進(jìn)行測試時,可先用邊界值分析法設(shè)計測試用例: (1)輸入表為空表。 (2)輸入表中僅有一個數(shù)據(jù)。 (3)輸入表為滿表。,根據(jù)排序問題的具體描述,使用錯誤推測法可以補(bǔ)充以下測試用例: (1)輸入表已經(jīng)排序。 (2)輸入表的排序恰與所要求的順序相反。 (3)輸入表中的所有數(shù)據(jù)全部相同。 此外,經(jīng)驗證明,在一段程序中已經(jīng)發(fā)現(xiàn)的錯誤數(shù)量往往與尚未發(fā)現(xiàn)的錯誤數(shù)量成正比。因此,在進(jìn)一步測試時要著重測試那些已發(fā)現(xiàn)較多錯誤的程序段。,6.3.6 因果圖法,考慮輸入條件之間的相互組合,程序可能會產(chǎn)生一些新的錯誤,但要檢查輸入條件的組合不是一件容易的事情,即使把所有輸入條件劃分成等價類,它們之間的組合情況也相當(dāng)多。因此必須考慮采用一種對于多種條件的組合相應(yīng)產(chǎn)生多個動作的形式來設(shè)計測試用例,這就需要利用因果圖(邏輯模型)。,因果圖方法用4種符號分別表示了規(guī)格說明中的4種因果關(guān)系,如圖6-4所示,左結(jié)點(diǎn)表示輸入狀態(tài)(或稱原因),右結(jié)點(diǎn)表示輸出狀態(tài)(或稱結(jié)果)。ci表示原因,通常置于圖的左部;ei表示結(jié)果,通常在圖的右部。ci和ei均可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。,圖6-4 因果圖法表示的4種因果關(guān)系,6.4 軟件測試策略,6.4.1 測試流程與測試計劃,測試計劃一般由項目負(fù)責(zé)人制定,一般來說,應(yīng)包括以下幾方面: 1.項目基本情況 這部分應(yīng)包括產(chǎn)品的一些基本情況介紹。例如,產(chǎn)品的運(yùn)行平臺和應(yīng)用領(lǐng)域,產(chǎn)品的特點(diǎn)和主要功能模塊等。對于大的測試項目,還要包括測試的目的和側(cè)重點(diǎn)。 2.測試任務(wù) 對測試任務(wù)進(jìn)行簡要描述,主要包括測試的目標(biāo)、程序運(yùn)行環(huán)境、測試要求等內(nèi)容。 3.測試策略 這是整個測試計劃的重點(diǎn)所在,既要描述如何公正、客觀地開展測試,又要考慮模塊、功能、整體、系統(tǒng)、版本、壓力、性能、配置和安裝等各個方面的測試用例。應(yīng)盡可能地考慮到細(xì)節(jié),越詳細(xì)越好,并制作測試記錄文檔的模板,為即將開始的測試做準(zhǔn)備。還應(yīng)詳細(xì)、具體地描述測試用例的目的、輸入數(shù)據(jù)、預(yù)期輸出、測試步驟、進(jìn)度安排、條件等。,4.測試組織 測試的組織首先要考慮測試的方法及測試用例的選擇原則;其次對測試資源進(jìn)行配置,包括測試人員、測試環(huán)境、設(shè)備等;最后要制定調(diào)試進(jìn)度安排,即計劃表。 5.測試評價 主要是說明所進(jìn)行的各項測試的范圍、局限性及評價測試結(jié)果的準(zhǔn)則。 通常一個軟件是由若干個子系統(tǒng)構(gòu)成的,每個子系統(tǒng)又由許多模塊組成。與開發(fā)過程類似,測試過程也必須分步驟進(jìn)行,只有在前一個步驟完成后,才能進(jìn)入下一個步驟的測試。具體來說,軟件的測試通常分為4個階段:單元測試、集成測試、確認(rèn)測試與系統(tǒng)測試,如圖6-5所示。,圖6-5 軟件測試流程圖,6.4.2 單元測試,單元測試也稱模塊測試,它是軟件測試的第一步,通常在編碼階段就開始進(jìn)行。單元測試以詳細(xì)設(shè)計為指南對模塊進(jìn)行正確性檢驗,其目的在于發(fā)現(xiàn)模塊內(nèi)部可能存在的各種錯誤。 單元測試的內(nèi)容主要有以下5個方面: 1模塊接口測試 2局部數(shù)據(jù)結(jié)構(gòu)測試 3路徑測試 4錯誤處理測試 5邊界測試,6.4.3 集成測試,實踐表明,一些模塊雖然在單獨(dú)運(yùn)行時能正常工作,但并不能保證連接起來也能正常工作。程序在某些局部不能反映出來的問題,在全局上可能會暴露出來,影響系統(tǒng)功能的實現(xiàn)。因此,有必要在單元測試的基礎(chǔ)上,將所有模塊按照設(shè)計要求組裝成為子系統(tǒng)或系統(tǒng),隨后進(jìn)行測試,這樣的測試方法即為集成測試。 集成測試的策略有很多種,如自底向上集成測試、自頂向下集成測試、Big-Bang集成測試、三明治集成測試、核心集成測試、分層集成測試、基于使用的集成測試等。,6.4.4 確認(rèn)測試,確認(rèn)測試又稱為有效性測試。在整體測試通過之后,應(yīng)開始對軟件進(jìn)行有效性測試,通常采用黑盒測試法來驗證軟件功能是否與用戶要求相一致。因此,確認(rèn)測試的測試計劃和測試過程的設(shè)計都是用來驗證軟件是否達(dá)到了功能要求,文檔資料是否正確、完整,以及軟件的可移植性、兼容性和可維護(hù)性等性能是否滿足要求。 確認(rèn)測試可以包括以下測試內(nèi)容:安裝測試、功能測試、可靠性測試、安全性測試、時間及空間性能測試、易用性測試、可移植性測試、可維護(hù)性測試、文檔測試。,6.4.5 系統(tǒng)測試,系統(tǒng)測試是將已經(jīng)確認(rèn)的軟件與計算機(jī)硬件、外設(shè)、網(wǎng)絡(luò)等其他元素結(jié)合在一起,進(jìn)行信息系統(tǒng)的各種組裝測試和確認(rèn)測試,其目的是通過與系統(tǒng)的需求相比較,發(fā)現(xiàn)所開發(fā)的系統(tǒng)與用戶需求不符或矛盾的地方。 1. 恢復(fù)測試 恢復(fù)測試用于測試計算機(jī)系統(tǒng)在出現(xiàn)錯誤后是否具有在一定時間內(nèi)恢復(fù)并繼續(xù)運(yùn)行的能力。 2安全性測試 安全性測試用于測試計算機(jī)系統(tǒng)內(nèi)的保護(hù)機(jī)制能否保護(hù)系統(tǒng)不受到非法侵入。 3壓力測試 無論是白盒測試,還是黑盒測試都對軟件正常的程序與性能進(jìn)行檢查,而壓力測試正好相反,它是測試軟件對非正常情況的處理能力。 4性能測試 性能測試就是要測試軟件在集成系統(tǒng)中的運(yùn)行性能。,6.4.6 Alpha測試和Beta測試,Alpha測試是指軟件開發(fā)公司組織內(nèi)部人員模擬各類用戶對即將面市的軟件產(chǎn)品(稱為Alpha版本)進(jìn)行測試,試圖發(fā)現(xiàn)并修正錯誤。 Beta測試是指軟件開發(fā)公司組織各方面的典型用戶在日常工作中實際使用Beta版本,并要求用戶報告異常情況、提出批評意見,然后軟件開發(fā)公司再對Beta版本進(jìn)行改錯和完善。,6.4.7 軟件測試自動化,軟件測試自動化是一項讓計算機(jī)代替測試人員進(jìn)行軟件測試的技術(shù),它可以將測試人員從繁瑣和重復(fù)的測試活動中解脫出來,專

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論