軟件測試的內(nèi)容_第1頁
軟件測試的內(nèi)容_第2頁
軟件測試的內(nèi)容_第3頁
軟件測試的內(nèi)容_第4頁
軟件測試的內(nèi)容_第5頁
已閱讀5頁,還剩82頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第7章章 軟件測試軟件測試 軟件測試是在軟件投入運(yùn)行之前,對軟件的需求分析、設(shè)軟件測試是在軟件投入運(yùn)行之前,對軟件的需求分析、設(shè)計規(guī)格說明和編碼的最后復(fù)審。計規(guī)格說明和編碼的最后復(fù)審。 由于軟件開發(fā)的各個階段均包含了大量的人的創(chuàng)造性勞動,由于軟件開發(fā)的各個階段均包含了大量的人的創(chuàng)造性勞動,不可避免地會引入錯誤,尤其是大型、復(fù)雜的軟件系統(tǒng)。不可避免地會引入錯誤,尤其是大型、復(fù)雜的軟件系統(tǒng)。本章主要內(nèi)容:本章主要內(nèi)容:n軟件測試的目的和原則軟件測試的目的和原則n軟件測試的方法軟件測試的方法n軟件測試的步驟軟件測試的步驟n調(diào)試調(diào)試n軟件測試工具軟件測試工具第第7章章 軟件測試軟件測試軟件測試的概念

2、和意義軟件測試的概念和意義什么是軟件測試:什么是軟件測試: 軟件測試的軟件測試的定義定義:軟件測試是為了發(fā)現(xiàn)錯誤而運(yùn)行:軟件測試是為了發(fā)現(xiàn)錯誤而運(yùn)行程序的過程。程序的過程。 根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序內(nèi)部結(jié)構(gòu)精根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序內(nèi)部結(jié)構(gòu)精心設(shè)計一批測試用例,并利用這些用例去運(yùn)行程序,以心設(shè)計一批測試用例,并利用這些用例去運(yùn)行程序,以發(fā)現(xiàn)程序中的錯誤。發(fā)現(xiàn)程序中的錯誤。軟件測試的概念和意義軟件測試的概念和意義軟件測試在軟件生命期中跨越兩個階段:軟件測試在軟件生命期中跨越兩個階段: 1.編寫每一個模塊后,進(jìn)行編寫每一個模塊后,進(jìn)行單元測試單元測試。通常模塊的。通常模塊的編寫

3、者和測試者是同一個人。編寫者和測試者是同一個人。 2.每一個模塊完成單元測試后,對軟件進(jìn)行各種每一個模塊完成單元測試后,對軟件進(jìn)行各種綜綜合測試合測試。由專門的測試人員完成。由專門的測試人員完成。軟件測試的概念和意義軟件測試的概念和意義 目前,在軟件開發(fā)過程中,將目前,在軟件開發(fā)過程中,將40%以上的工作量投入到以上的工作量投入到軟件測試軟件測試之中。之中。 幾個典型系統(tǒng)中軟件測試的費(fèi)用幾個典型系統(tǒng)中軟件測試的費(fèi)用 系統(tǒng)名稱系統(tǒng)名稱 測試費(fèi)用占軟件開發(fā)預(yù)算的比例測試費(fèi)用占軟件開發(fā)預(yù)算的比例 SAGE 47% NAVAL TACTICAL 50% DATA SYSTEM GENINI 47% S

4、 ATURN V 44%軟件測試的目的和原則軟件測試的目的和原則軟件測試的軟件測試的目的目的(G.J.Myers提出提出): 1、軟件測試是為了、軟件測試是為了發(fā)現(xiàn)錯誤發(fā)現(xiàn)錯誤而而運(yùn)行程序運(yùn)行程序的過的過程。程。 2、一個、一個好的測試用例好的測試用例能夠能夠發(fā)現(xiàn)發(fā)現(xiàn)至今尚未發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的的錯誤錯誤。 3、一個、一個成功的測試成功的測試是是發(fā)現(xiàn)發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的了至今尚未發(fā)現(xiàn)的錯誤的錯誤的測試測試。軟件測試的目的和原則軟件測試的目的和原則軟件測試的原則:軟件測試的原則:(1)應(yīng)當(dāng)把)應(yīng)當(dāng)把“盡早地和不斷地測試盡早地和不斷地測試”作為開發(fā)者的座右銘作為開發(fā)者的座右銘(2)軟件測試工作應(yīng)該由

5、獨立的專業(yè)軟件測試機(jī)構(gòu)來完成)軟件測試工作應(yīng)該由獨立的專業(yè)軟件測試機(jī)構(gòu)來完成 (3)測試工作要全面,但不可能實現(xiàn))測試工作要全面,但不可能實現(xiàn)“窮舉窮舉”(4)把)把Pareto原理應(yīng)用到軟件測試中原理應(yīng)用到軟件測試中(5)妥善保存一切測試過程文檔)妥善保存一切測試過程文檔(6)制定嚴(yán)格、合理的測試計劃)制定嚴(yán)格、合理的測試計劃(7)錯誤經(jīng)過修改后,相關(guān)的測試必不可少)錯誤經(jīng)過修改后,相關(guān)的測試必不可少測試用例的要求測試用例的要求n測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的輸出數(shù)據(jù)測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的輸出數(shù)據(jù)兩部分組成。兩部分組成。n測試用例不僅選用合理的輸入數(shù)據(jù),還要測試用例不僅選用合理的輸入數(shù)據(jù)

6、,還要選擇不合理的輸入數(shù)據(jù)。選擇不合理的輸入數(shù)據(jù)。n長期保留測試用例。長期保留測試用例。軟件測試的范圍軟件測試的范圍軟件測試的對象軟件測試的對象: 軟件測試不等于程序測試,在軟件定義與軟件開發(fā)的軟件測試不等于程序測試,在軟件定義與軟件開發(fā)的各個階段所得到的各種文檔資料,都是測試對象,包括需各個階段所得到的各種文檔資料,都是測試對象,包括需求規(guī)格說明、概要設(shè)計規(guī)格說明、詳細(xì)設(shè)計規(guī)格說明、源求規(guī)格說明、概要設(shè)計規(guī)格說明、詳細(xì)設(shè)計規(guī)格說明、源程序等。程序等。軟件測試步驟軟件測試步驟 測試過程分為測試過程分為4個步驟:個步驟: 單元測試單元測試 集成測試集成測試 確認(rèn)測試確認(rèn)測試 系統(tǒng)測試系統(tǒng)測試單元

7、單元測試測試單元單元測試測試單元單元測試測試被測模塊被測模塊被測模塊被測模塊被測模塊被測模塊集成集成測試測試設(shè)計信息設(shè)計信息確認(rèn)確認(rèn)測試測試系統(tǒng)系統(tǒng)測試測試已集成的已集成的軟件軟件已確認(rèn)的已確認(rèn)的軟件軟件可交付的可交付的軟件軟件軟件需求軟件需求已測試已測試模塊模塊其他系統(tǒng)元素其他系統(tǒng)元素軟件測試方法軟件測試方法 靜態(tài)測試靜態(tài)測試 (程序不執(zhí)行)(程序不執(zhí)行)軟件測試軟件測試 動態(tài)測試動態(tài)測試 (程序執(zhí)行)(程序執(zhí)行)黑盒測試(測試功能)黑盒測試(測試功能)白盒測試(測試結(jié)構(gòu))白盒測試(測試結(jié)構(gòu))靜態(tài)分析器(自動工具)靜態(tài)分析器(自動工具)代碼審查(人工方式)代碼審查(人工方式)軟件測試方法的分

8、類軟件測試方法的分類軟件測試方法軟件測試方法靜態(tài)測試靜態(tài)測試 靜態(tài)測試指被測程序不在機(jī)器上運(yùn)行,而采用人工檢測靜態(tài)測試指被測程序不在機(jī)器上運(yùn)行,而采用人工檢測和計算機(jī)輔助靜態(tài)檢測的手段對程序進(jìn)行測試。和計算機(jī)輔助靜態(tài)檢測的手段對程序進(jìn)行測試。 1、人工檢測:人工審查程序或評審軟件。人工審查程序、人工檢測:人工審查程序或評審軟件。人工審查程序偏重于編碼質(zhì)量的檢驗,而人工評審軟件除了審查編碼還要偏重于編碼質(zhì)量的檢驗,而人工評審軟件除了審查編碼還要對各階段的軟件產(chǎn)品進(jìn)行檢驗。人工檢測可以發(fā)現(xiàn)計算機(jī)不對各階段的軟件產(chǎn)品進(jìn)行檢驗。人工檢測可以發(fā)現(xiàn)計算機(jī)不易發(fā)現(xiàn)的錯誤,據(jù)統(tǒng)計人工檢測可發(fā)現(xiàn)易發(fā)現(xiàn)的錯誤,據(jù)

9、統(tǒng)計人工檢測可發(fā)現(xiàn)30%70%的邏輯的邏輯設(shè)計和編碼錯誤,從而減少系統(tǒng)測試的總工作量。設(shè)計和編碼錯誤,從而減少系統(tǒng)測試的總工作量。 包括包括”辦公室辦公室“檢查、會審、走查(排查)。檢查、會審、走查(排查)。 2、計算機(jī)輔助靜態(tài)檢測:利用靜態(tài)檢測工具對程序進(jìn)行、計算機(jī)輔助靜態(tài)檢測:利用靜態(tài)檢測工具對程序進(jìn)行測試。從程序中提取一些信息,以便檢查程序邏輯的各種缺測試。從程序中提取一些信息,以便檢查程序邏輯的各種缺陷和可疑的程序構(gòu)造。陷和可疑的程序構(gòu)造。 軟件測試工作軟件測試工作動態(tài)測試動態(tài)測試 動態(tài)測試是通過運(yùn)行程序發(fā)現(xiàn)錯誤。動態(tài)測試是通過運(yùn)行程序發(fā)現(xiàn)錯誤。 一般意義上的測試都是動態(tài)測試。為使測試

10、發(fā)現(xiàn)盡可能多的一般意義上的測試都是動態(tài)測試。為使測試發(fā)現(xiàn)盡可能多的錯誤,動態(tài)測試時需采用一些有效的方法。錯誤,動態(tài)測試時需采用一些有效的方法。 一方面通過測試檢查軟件每個功能的執(zhí)行情況,另一方面一方面通過測試檢查軟件每個功能的執(zhí)行情況,另一方面詳細(xì)測試軟件的內(nèi)部結(jié)構(gòu)和處理過程。分別稱為詳細(xì)測試軟件的內(nèi)部結(jié)構(gòu)和處理過程。分別稱為黑盒測試黑盒測試和和白盒白盒測試測試。 軟件測試工作軟件測試工作軟件測試過程中的信息:軟件測試過程中的信息: 測試過程需要三類信息:測試過程需要三類信息: 1、軟件配置軟件配置:包括需求規(guī)格說明、軟件設(shè)計規(guī)格說明、源程序等;:包括需求規(guī)格說明、軟件設(shè)計規(guī)格說明、源程序等;

11、 2、測試配置測試配置:包括測試方案、測試用例、測試驅(qū)動程序等;:包括測試方案、測試用例、測試驅(qū)動程序等; 3、測試工具測試工具:計算機(jī)輔助測試的有關(guān)工具。如測試數(shù)據(jù)自動生成工具、:計算機(jī)輔助測試的有關(guān)工具。如測試數(shù)據(jù)自動生成工具、靜態(tài)分析程序、動態(tài)分析程序、測試結(jié)果分析程序、驅(qū)動測試的測試數(shù)據(jù)庫。靜態(tài)分析程序、動態(tài)分析程序、測試結(jié)果分析程序、驅(qū)動測試的測試數(shù)據(jù)庫。 軟件測試方法軟件測試方法軟件測試信息流:軟件測試信息流: 測試測試結(jié)果結(jié)果分析分析可靠性可靠性分析分析排錯排錯軟件配置軟件配置測試配置測試配置測試結(jié)果測試結(jié)果預(yù)期結(jié)果預(yù)期結(jié)果錯誤錯誤出錯率出錯率數(shù)據(jù)數(shù)據(jù)改正的軟件改正的軟件預(yù)測的可

12、靠性預(yù)測的可靠性測試工具測試工具設(shè)計設(shè)計測試用例測試用例準(zhǔn)備準(zhǔn)備測試數(shù)據(jù)測試數(shù)據(jù)用測試數(shù)據(jù)用測試數(shù)據(jù)運(yùn)行程序運(yùn)行程序測試結(jié)果測試結(jié)果分析分析測試用例測試用例測試報告測試報告預(yù)期結(jié)果預(yù)期結(jié)果測試結(jié)果測試結(jié)果軟件動態(tài)測試過程軟件動態(tài)測試過程白盒測試法白盒測試法n白盒測試法是通過分析程序內(nèi)部的邏輯與執(zhí)白盒測試法是通過分析程序內(nèi)部的邏輯與執(zhí)行路徑來設(shè)計測試用例,并對測試用例進(jìn)行行路徑來設(shè)計測試用例,并對測試用例進(jìn)行測試的方法,也稱做結(jié)構(gòu)測試或邏輯驅(qū)動方測試的方法,也稱做結(jié)構(gòu)測試或邏輯驅(qū)動方法。法。n白盒測試法對程序的執(zhí)行細(xì)節(jié)進(jìn)行測試,驗白盒測試法對程序的執(zhí)行細(xì)節(jié)進(jìn)行測試,驗證程序模塊的每個路徑的執(zhí)行情

13、況。證程序模塊的每個路徑的執(zhí)行情況。軟件測試方法軟件測試方法白盒測試法白盒測試法 白盒測試是結(jié)構(gòu)測試,所以被測對象基本上是源程序,以程序的內(nèi)部結(jié)白盒測試是結(jié)構(gòu)測試,所以被測對象基本上是源程序,以程序的內(nèi)部結(jié)構(gòu)為基礎(chǔ),設(shè)計測試用例。構(gòu)為基礎(chǔ),設(shè)計測試用例。 1、邏輯覆蓋、邏輯覆蓋 追求程序內(nèi)部的邏輯覆蓋程度,當(dāng)程序中有循環(huán)時,覆蓋每條路徑是不追求程序內(nèi)部的邏輯覆蓋程度,當(dāng)程序中有循環(huán)時,覆蓋每條路徑是不可能的,要設(shè)計使覆蓋程度較高的或覆蓋有代表性的路徑的測試用例??赡艿?,要設(shè)計使覆蓋程度較高的或覆蓋有代表性的路徑的測試用例。(A1)AND(B=0)(A=2)OR(X1)語句段語句段1語句段語句段

14、2TFFT12345如右圖:一個被測如右圖:一個被測程序的流程圖。程序的流程圖。軟件測試方法軟件測試方法(1)語句覆蓋:)語句覆蓋: 為了提高發(fā)現(xiàn)錯誤的可能性,在測試時應(yīng)該執(zhí)行到程序中的每一個語為了提高發(fā)現(xiàn)錯誤的可能性,在測試時應(yīng)該執(zhí)行到程序中的每一個語句。語句覆蓋是指設(shè)計足夠的測試用例,使被測程序的每個語句至少執(zhí)行一句。語句覆蓋是指設(shè)計足夠的測試用例,使被測程序的每個語句至少執(zhí)行一次。次。(A1)AND(B=0)(A=2)OR(X1)語句段語句段1語句段語句段2TFFT12345 測試路徑為測試路徑為1-2-4,即可保證每個語,即可保證每個語句至少執(zhí)行一次。所以測試用例為:句至少執(zhí)行一次。所

15、以測試用例為:A=2、B=0 、X=3。程序每個語句都能程序每個語句都能執(zhí)行,語句覆蓋似乎全面地檢查了每個語執(zhí)行,語句覆蓋似乎全面地檢查了每個語句,但該測試用例只檢查了邏輯表達(dá)式為句,但該測試用例只檢查了邏輯表達(dá)式為“真真”的情況,如將的情況,如將“AND” 錯寫為錯寫為“ OR ”、 X1錯寫為錯寫為X1)AND(B=0)(A=2)OR(X1)語句段語句段1語句段語句段2TFFT12345 測試路徑為測試路徑為1-2-4,1-3-5或或1-2-5,1-3-4,即可達(dá)到覆蓋標(biāo)準(zhǔn)。所以測試用即可達(dá)到覆蓋標(biāo)準(zhǔn)。所以測試用例為:例為:A=3、B=0 、X=1(1-2-5), A=2、B=1、X=2(

16、1-3-4)。對于多對于多分支的判定,判定覆蓋要使得每一個判定分支的判定,判定覆蓋要使得每一個判定表達(dá)式獲得每一個可能的值。判定覆蓋比表達(dá)式獲得每一個可能的值。判定覆蓋比語句覆蓋嚴(yán)格,若通過各個分支,各個語語句覆蓋嚴(yán)格,若通過各個分支,各個語句也執(zhí)行了。但該測試仍不充分,上述數(shù)句也執(zhí)行了。但該測試仍不充分,上述數(shù)據(jù)只覆蓋了全部路徑的一半,如將據(jù)只覆蓋了全部路徑的一半,如將X1錯寫為錯寫為X1 , B=0 ,A=2,X1 要選擇足夠的測試用例,使得:要選擇足夠的測試用例,使得: 判定表達(dá)式判定表達(dá)式1出現(xiàn):出現(xiàn):A1,B=0;A1,B0 判定表達(dá)式判定表達(dá)式2出現(xiàn):出現(xiàn):A=2, X1; A2,

17、 X1 ,B=0, A=2 , X1 通過路徑通過路徑1-2-4) A=1,B=1, X=1(滿足滿足A1,B0, X1, A2通過路徑通過路徑1-3-5 ) (A1)AND(B=0)(A=2)OR(X1)語句段語句段1語句段語句段2TFFT12345軟件測試方法軟件測試方法 以上兩組數(shù)據(jù)不僅覆蓋了判定表達(dá)式中的所有條件的可能以上兩組數(shù)據(jù)不僅覆蓋了判定表達(dá)式中的所有條件的可能取值,而且覆蓋了取值,而且覆蓋了 所有判定的取所有判定的取“真真”分支和取分支和取“假假”分支,分支,在這種情況下條件覆蓋強(qiáng)于判定覆蓋。但也有例外,如選擇以在這種情況下條件覆蓋強(qiáng)于判定覆蓋。但也有例外,如選擇以下兩組數(shù)據(jù):

18、下兩組數(shù)據(jù): A=1,B=0, X=3(滿足滿足A1,B=0,A 2 ,X1) A=2,B=1, X=1(滿足(滿足A1,B0,X 1,A=2) 以上兩組數(shù)據(jù)覆蓋了判定表達(dá)式中的所有條件的可能取值,但以上兩組數(shù)據(jù)覆蓋了判定表達(dá)式中的所有條件的可能取值,但只覆蓋了只覆蓋了 第一個判定表達(dá)式的取第一個判定表達(dá)式的取“假假”分支和第二個判定表達(dá)分支和第二個判定表達(dá)式的取式的取“真真”分支,此例不滿足判定覆蓋。所以滿足條件覆蓋分支,此例不滿足判定覆蓋。所以滿足條件覆蓋不一定滿足判定覆蓋。為了解決此問題,需要對條件和分支兼不一定滿足判定覆蓋。為了解決此問題,需要對條件和分支兼顧。顧。(A1)AND(B=

19、0)(A=2)OR(X1)語句段語句段1語句段語句段2TFFT12345軟件測試方法軟件測試方法(4)判定)判定/條件覆蓋:條件覆蓋: 該覆蓋標(biāo)準(zhǔn)是指設(shè)計足夠的測試用例,使被測程序的每個該覆蓋標(biāo)準(zhǔn)是指設(shè)計足夠的測試用例,使被測程序的每個判定表達(dá)式中每個條件的各種可能的值至少出現(xiàn)一次。并使每判定表達(dá)式中每個條件的各種可能的值至少出現(xiàn)一次。并使每個判定表達(dá)式所有可能的結(jié)果也至少出現(xiàn)一次。對該例程序,個判定表達(dá)式所有可能的結(jié)果也至少出現(xiàn)一次。對該例程序,可選擇以下兩組數(shù)據(jù)達(dá)到判定可選擇以下兩組數(shù)據(jù)達(dá)到判定/條件覆蓋標(biāo)準(zhǔn):條件覆蓋標(biāo)準(zhǔn): A=2,B=0, X=3 A=1,B=1, X=1 從表面上看,

20、判定從表面上看,判定/條件覆蓋測試了所有條件的取值,但條件覆蓋測試了所有條件的取值,但實際上條件組合中的某些條件會抑制其它的條件,如實際上條件組合中的某些條件會抑制其它的條件,如“與與”運(yùn)運(yùn)算的判定表達(dá)式中,第一個條件為算的判定表達(dá)式中,第一個條件為“假假”,則這個表達(dá)式后面,則這個表達(dá)式后面的幾個條件均不起作用,后面的表達(dá)式中的錯誤也就測試不出的幾個條件均不起作用,后面的表達(dá)式中的錯誤也就測試不出來。來。(A1)AND(B=0)(A=2)OR(X1)語句段語句段1語句段語句段2TFFT12345軟件測試方法軟件測試方法(5)條件組合覆蓋:)條件組合覆蓋: 該覆蓋標(biāo)準(zhǔn)是指設(shè)計足夠的測試用例,使

21、被測程序的每個判定表達(dá)式中每該覆蓋標(biāo)準(zhǔn)是指設(shè)計足夠的測試用例,使被測程序的每個判定表達(dá)式中每個條件的各種可能的值的組合至少出現(xiàn)一次。條件組合覆蓋是較強(qiáng)的覆蓋標(biāo)準(zhǔn)。個條件的各種可能的值的組合至少出現(xiàn)一次。條件組合覆蓋是較強(qiáng)的覆蓋標(biāo)準(zhǔn)。該例中,兩個判定表達(dá)式共有該例中,兩個判定表達(dá)式共有4個條件,有個條件,有8種組合:種組合: A1, B=0 ; A1, B0 ; A1,B=0; A1, B0 ; A=2, X1 ; A=2, X1; A2, X1; A2, X1 ; 測試用例測試用例4組數(shù)據(jù):組數(shù)據(jù): A=2, B=0, X=2;覆蓋條件組合覆蓋條件組合 ,路徑,路徑1-2-4 A=2, B=1

22、, X=1;覆蓋條件組合覆蓋條件組合 ,路徑,路徑1-3-4 A=1, B=1, X=1;覆蓋條件組合覆蓋條件組合 ,路徑,路徑1-3-5 A=1, B=0, X=2;覆蓋條件組合覆蓋條件組合 ,路徑,路徑1-3-4 顯然,滿足條件組合覆蓋的測試,一定滿足判定覆蓋、條件覆蓋、判定顯然,滿足條件組合覆蓋的測試,一定滿足判定覆蓋、條件覆蓋、判定/條件條件覆蓋,但該測試沒有覆蓋程序所有可能的執(zhí)行路徑,覆蓋,但該測試沒有覆蓋程序所有可能的執(zhí)行路徑,1-2-5路徑?jīng)]有覆蓋。路徑?jīng)]有覆蓋。(A1)AND(B=0)(A=2)OR(X1)語句段語句段1語句段語句段2TFFT12345軟件測試方法軟件測試方法(

23、6)路徑覆蓋:)路徑覆蓋: 該覆蓋標(biāo)準(zhǔn)是指設(shè)計足夠的測試用例,覆蓋被測程序中所有可能路徑:該覆蓋標(biāo)準(zhǔn)是指設(shè)計足夠的測試用例,覆蓋被測程序中所有可能路徑: 該例可選擇以下測試用例,覆蓋程序中的該例可選擇以下測試用例,覆蓋程序中的4條路徑:條路徑: A=2, B=0, X=2;覆蓋路徑覆蓋路徑1-2-4,條件組合,條件組合 ; A=2, B=1, X=1;覆蓋路徑覆蓋路徑1-3-4,條件組合,條件組合 ; A=1, B=1, X=1;覆蓋路徑覆蓋路徑1-3-5,條件組合,條件組合 ; A=3, B=0, X=1;覆蓋路徑覆蓋路徑1-2-5,條件組合,條件組合 ; 顯然,該測試滿足路徑覆蓋,但沒有滿

24、足條件組合覆蓋。顯然,該測試滿足路徑覆蓋,但沒有滿足條件組合覆蓋。(A1)AND(B=0)(A=2)OR(X1)語句段語句段1語句段語句段2TFFT12345軟件測試方法軟件測試方法發(fā)發(fā) 現(xiàn)現(xiàn) 錯錯 誤誤 能能 力力語句覆蓋語句覆蓋每條語句至少執(zhí)行一次每條語句至少執(zhí)行一次判定覆蓋判定覆蓋每個判定的每個分支至少執(zhí)行一次每個判定的每個分支至少執(zhí)行一次條件覆蓋條件覆蓋每個判定的每個條件應(yīng)取到各種可能的值每個判定的每個條件應(yīng)取到各種可能的值判定判定/條件覆條件覆蓋蓋同時滿足判定覆蓋和條件覆蓋同時滿足判定覆蓋和條件覆蓋條件組合覆蓋條件組合覆蓋每個判定中各條件的每一種組合至少出現(xiàn)每個判定中各條件的每一種組

25、合至少出現(xiàn)一次一次路徑覆蓋路徑覆蓋使程序中每一條可能的路徑至少執(zhí)行一次使程序中每一條可能的路徑至少執(zhí)行一次強(qiáng)強(qiáng)弱弱六種覆蓋標(biāo)準(zhǔn)的對比六種覆蓋標(biāo)準(zhǔn)的對比六種覆蓋標(biāo)準(zhǔn)的對比六種覆蓋標(biāo)準(zhǔn)的對比n語句覆蓋語句覆蓋發(fā)現(xiàn)錯誤能力弱;發(fā)現(xiàn)錯誤能力弱;n判定覆蓋判定覆蓋包含語句覆蓋,但可能會使一些條件得不到測試;包含語句覆蓋,但可能會使一些條件得不到測試;n條件覆蓋條件覆蓋對每一條件進(jìn)行單獨檢查,一般情況下其檢錯能力對每一條件進(jìn)行單獨檢查,一般情況下其檢錯能力較判定覆蓋強(qiáng),但有時達(dá)不到判定覆蓋的要求;較判定覆蓋強(qiáng),但有時達(dá)不到判定覆蓋的要求;n判定判定/條件覆蓋條件覆蓋包含了判定覆蓋與條件覆蓋的要求,但受軟件

26、包含了判定覆蓋與條件覆蓋的要求,但受軟件的影響,有時達(dá)不到判定覆蓋的標(biāo)準(zhǔn);的影響,有時達(dá)不到判定覆蓋的標(biāo)準(zhǔn);n條件組合覆蓋條件組合覆蓋發(fā)現(xiàn)錯誤能力較強(qiáng);發(fā)現(xiàn)錯誤能力較強(qiáng);n路徑覆蓋路徑覆蓋查錯能力強(qiáng)。查錯能力強(qiáng)。總結(jié):總結(jié):在實際的邏輯覆蓋測試中,一般以在實際的邏輯覆蓋測試中,一般以條件組合覆蓋條件組合覆蓋為主設(shè)為主設(shè)計測試用例,然后再補(bǔ)充部分用例,以達(dá)到計測試用例,然后再補(bǔ)充部分用例,以達(dá)到路徑覆蓋路徑覆蓋測試標(biāo)測試標(biāo)準(zhǔn)。準(zhǔn)。軟件測試方法軟件測試方法 2、基本路徑測試、基本路徑測試 基本路徑測試是在基本路徑測試是在程序圖程序圖的基礎(chǔ)上,通過分析的基礎(chǔ)上,通過分析環(huán)環(huán)路復(fù)雜度路復(fù)雜度,導(dǎo)出,導(dǎo)

27、出獨立路徑的基本集合獨立路徑的基本集合,從而設(shè)計,從而設(shè)計測試用測試用例,例,保證這些路徑至少被執(zhí)行一次。保證這些路徑至少被執(zhí)行一次。 基本路徑測試的步驟基本路徑測試的步驟n畫出程序圖畫出程序圖 以詳細(xì)設(shè)計或源程序為基礎(chǔ),導(dǎo)出程序流程圖的拓?fù)浣Y(jié)以詳細(xì)設(shè)計或源程序為基礎(chǔ),導(dǎo)出程序流程圖的拓?fù)浣Y(jié)構(gòu)構(gòu)-程序圖。程序圖。 程序圖是退化了的程序流程圖,是反映控制流程的有向程序圖是退化了的程序流程圖,是反映控制流程的有向圖。圖。 稱為稱為結(jié)點結(jié)點,代表程序流程圖的每個處理符號;,代表程序流程圖的每個處理符號; 稱為稱為邊邊或者或者路徑路徑,表示控制流向。,表示控制流向。n n n計算程序環(huán)路復(fù)雜度計算程序

28、環(huán)路復(fù)雜度 環(huán)路復(fù)雜度是度量程序圖環(huán)路復(fù)雜度是度量程序圖G復(fù)雜度的方法。復(fù)雜度的方法。 三種計算方法:三種計算方法:(1) V(G)=P+1,其中其中 P為判定結(jié)點為判定結(jié)點 (2) V(G)=E-N+2,其中其中E為邊數(shù),為邊數(shù),N為結(jié)點數(shù)為結(jié)點數(shù) (3) V(G)為區(qū)域數(shù)為區(qū)域數(shù) n確定獨立路徑的基本集合確定獨立路徑的基本集合n 一條獨立路徑至少包含有一條在其他獨立路徑中沒一條獨立路徑至少包含有一條在其他獨立路徑中沒有的邊。有的邊。n獨立路徑的基本集合不唯一。獨立路徑的基本集合不唯一。 n設(shè)計測試用例設(shè)計測試用例 確保每一條路徑的執(zhí)行。確保每一條路徑的執(zhí)行?;韭窂綔y試的步驟基本路徑測試的

29、步驟void mergelist(list la,list lb,list &lc)1: initlist(lc); i=j=1; k=0; la_len=listlength(la); lb_len=listlength(lb);2: while (i=la_len) 3: & (j=lb_len)4: getelem(la,i,ai); getelem(lb,j,bj);5: if (ai=bj)6: listinsert(lc,+k,ai);+i; listinsert(lc,+k,bj); +j; 例:合并兩個有序線形表例:合并兩個有序線形表la、lb,生成有序線形,生

30、成有序線形表表lc,代碼如下所示。要求寫出其基本路徑測試,代碼如下所示。要求寫出其基本路徑測試的步驟。的步驟。7: else if (aibj)8: listinsert(lc,+k,ai);+i;9: else listinsert(lc,+k,bj);+j;10: 11: while (i=la_len) 12: getelem(la,i+,ai); listinsert(lc,+k,ai); 13: while (j=lb_len) 14: getelem(lb,j+,bj); listinsert(lc,+k,bj); 15: 124567101112131415第第1步:畫出程序圖步

31、:畫出程序圖開始結(jié)點開始結(jié)點結(jié)束結(jié)點結(jié)束結(jié)點3判定結(jié)點判定結(jié)點981245671011121314153判定結(jié)點判定結(jié)點98第第2步:步:計算環(huán)路復(fù)雜度計算環(huán)路復(fù)雜度3741256n第第2步:計算環(huán)路復(fù)雜度步:計算環(huán)路復(fù)雜度n(1)判定結(jié)點為)判定結(jié)點為2,3,5,7,11,13 V(G)=P+1=7 (2)V(G)=E-N+2=20-15+27 (3)區(qū)域個數(shù)為)區(qū)域個數(shù)為7個,個, V(G)=7n第第3步:步:確定獨立路徑的基本集合確定獨立路徑的基本集合 路徑路徑1:1-2-11-13-15 路徑路徑2:1-2-11-13-14-13-15 路徑路徑3:1-2-3-11-12-11-13-

32、15 路徑路徑4:1-2-3-4-5-6-10-2-11-13-15 路徑路徑5:1-2-3-4-5-7-8-10-2-11-13-14-13-15 路徑路徑6:1-2-3-4-5-7-9-10-2-3-11-12-11-13-15 路徑路徑7: 1-2-3-4-5-6-10-2-3-11-11-12-11-13-15n第第4步:步:設(shè)計測試用例設(shè)計測試用例路徑路徑1用例:用例:la=, lb=, lc=路徑路徑2用例:用例:la=, lb=3,5, lc=3,5路徑路徑3用例:用例:la=2,4, lb=, lc=2,4路徑路徑4用例:用例:la=2,3,4, lb=2,3,4, lc=2,

33、2,3,3,4,4路徑路徑5用例:用例:la=2,3,4, lb=5,6, lc=2,3,4,5,6 路徑路徑6用例:用例:la=2,3,4, lb=0,1, lc=0,1,2,3,4路徑路徑7用例:用例:la=2,3,4, lb=2,3, lc=2,2,3,3,4軟件測試方法軟件測試方法 3、條件測試、條件測試 條件測試重點測試程序中的每個條件,條件測試重點測試程序中的每個條件,測試組成條件的各測試組成條件的各個成分的正確性,個成分的正確性,通過檢測程序條件中的錯誤,發(fā)現(xiàn)程序中的通過檢測程序條件中的錯誤,發(fā)現(xiàn)程序中的其它錯誤其它錯誤 。 條件可能是一個布爾變量、一個關(guān)系表達(dá)式或是由兩個或條件

34、可能是一個布爾變量、一個關(guān)系表達(dá)式或是由兩個或多個簡單條件、布爾運(yùn)算符和括弧組成的復(fù)雜條件。多個簡單條件、布爾運(yùn)算符和括弧組成的復(fù)雜條件。 最簡單的條件測試策略應(yīng)該是分支測試,分支測試主要是最簡單的條件測試策略應(yīng)該是分支測試,分支測試主要是保證條件中的每個簡單條件,以及取真、取假的分支都至少執(zhí)保證條件中的每個簡單條件,以及取真、取假的分支都至少執(zhí)行一次。行一次。軟件測試方法軟件測試方法 4、循環(huán)測試、循環(huán)測試 根據(jù)循環(huán)的復(fù)雜性,可分為簡單循環(huán)、嵌套循環(huán)和串接循環(huán)。根據(jù)循環(huán)的復(fù)雜性,可分為簡單循環(huán)、嵌套循環(huán)和串接循環(huán)。 1)簡單循環(huán)簡單循環(huán)簡單循環(huán)可依據(jù)以下順序分別設(shè)計測試用例進(jìn)行測試:簡單循環(huán)

35、可依據(jù)以下順序分別設(shè)計測試用例進(jìn)行測試:執(zhí)行零次循環(huán):從循環(huán)入口到出口;執(zhí)行零次循環(huán):從循環(huán)入口到出口;只執(zhí)行一次循環(huán):檢查循環(huán)初始值;只執(zhí)行一次循環(huán):檢查循環(huán)初始值;m次循環(huán):檢查次循環(huán):檢查m次循環(huán),其中次循環(huán),其中m小于最大次數(shù)減小于最大次數(shù)減1;執(zhí)行最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。執(zhí)行最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。軟件測試方法軟件測試方法2)嵌套循環(huán)嵌套循環(huán)對最內(nèi)層循環(huán)做簡單循環(huán)的全部測試,所有其它外層的循對最內(nèi)層循環(huán)做簡單循環(huán)的全部測試,所有其它外層的循環(huán)變量置為最小值;環(huán)變量置為最小值;逐步外推,對其外面一層循環(huán)進(jìn)行測試。測試時保持當(dāng)前逐步外推,對其外

36、面一層循環(huán)進(jìn)行測試。測試時保持當(dāng)前層的所有外層循環(huán)的循環(huán)變量取最小值,所有其它嵌套內(nèi)層層的所有外層循環(huán)的循環(huán)變量取最小值,所有其它嵌套內(nèi)層循環(huán)的循環(huán)變量取循環(huán)的循環(huán)變量取“典型典型”值,同時考慮增加越界值和非法值,同時考慮增加越界值和非法值的測試。值的測試。反復(fù)進(jìn)行,直到所有各層循環(huán)測試完畢。反復(fù)進(jìn)行,直到所有各層循環(huán)測試完畢。軟件測試方法軟件測試方法3)串接循環(huán)串接循環(huán) 如果各個循環(huán)互相獨立,則可以用與簡單循環(huán)相同如果各個循環(huán)互相獨立,則可以用與簡單循環(huán)相同的方法進(jìn)行測試。但如果幾個循環(huán)不是互相獨立的,第的方法進(jìn)行測試。但如果幾個循環(huán)不是互相獨立的,第二個循環(huán)的執(zhí)行與第一個循環(huán)的某個值有關(guān),

37、則需要使二個循環(huán)的執(zhí)行與第一個循環(huán)的某個值有關(guān),則需要使用測試嵌套循環(huán)的辦法來處理。用測試嵌套循環(huán)的辦法來處理。黑盒測試法黑盒測試法n黑盒測試法根據(jù)輸入黑盒測試法根據(jù)輸入/輸出數(shù)據(jù)條件設(shè)計測試輸出數(shù)據(jù)條件設(shè)計測試用例,驗證程序的功能是否正確或滿足要求,用例,驗證程序的功能是否正確或滿足要求,不需考慮程序的內(nèi)部細(xì)節(jié)及執(zhí)行路徑。不需考慮程序的內(nèi)部細(xì)節(jié)及執(zhí)行路徑。n黑盒測試法在接口上也驗證輸入黑盒測試法在接口上也驗證輸入/輸出信息的輸出信息的正確性。正確性。軟件測試方法軟件測試方法黑盒測試法黑盒測試法 “黑盒黑盒”測試又稱功能測試,測試又稱功能測試,檢查程序的功能是否符合檢查程序的功能是否符合規(guī)格說

38、明書的要求,程序是否接收輸入數(shù)據(jù)而產(chǎn)生正確的輸規(guī)格說明書的要求,程序是否接收輸入數(shù)據(jù)而產(chǎn)生正確的輸出信息。出信息。測試測試方法:等價類劃分法、邊界值分析法、錯誤推測法。方法:等價類劃分法、邊界值分析法、錯誤推測法。 n1、等價類劃分、等價類劃分 程序的輸入域總可以劃分成若干個不同性質(zhì)的程序的輸入域總可以劃分成若干個不同性質(zhì)的等價類,每個等價類中的一個典型值在測試中的作等價類,每個等價類中的一個典型值在測試中的作用與該類所有其他值的作用相同。用與該類所有其他值的作用相同。 因此,可以從每個等價類中只取一組數(shù)據(jù)作為因此,可以從每個等價類中只取一組數(shù)據(jù)作為測試數(shù)據(jù),這樣選取的數(shù)據(jù)最具有代表性,從而減

39、測試數(shù)據(jù),這樣選取的數(shù)據(jù)最具有代表性,從而減少測試成本和提高測試效率。少測試成本和提高測試效率。軟件測試方法軟件測試方法 等價類,指某個輸入域的子集合,在該集合中,各個輸入等價類,指某個輸入域的子集合,在該集合中,各個輸入數(shù)據(jù)對暴露程序中的錯誤是等效的。即如果使用某個等價類中數(shù)據(jù)對暴露程序中的錯誤是等效的。即如果使用某個等價類中的一個輸入條件,作為測試數(shù)據(jù)檢測出了錯誤,則用這一等價的一個輸入條件,作為測試數(shù)據(jù)檢測出了錯誤,則用這一等價類中的其它數(shù)據(jù)進(jìn)行測試會發(fā)現(xiàn)同樣的錯誤,反之亦然。類中的其它數(shù)據(jù)進(jìn)行測試會發(fā)現(xiàn)同樣的錯誤,反之亦然。 將輸入數(shù)據(jù)域按有效的或無效的(或稱合理的或不合理的)將輸入數(shù)

40、據(jù)域按有效的或無效的(或稱合理的或不合理的)劃分成若干類,通過測試每個類的代表值相當(dāng)于對于該類其他劃分成若干類,通過測試每個類的代表值相當(dāng)于對于該類其他數(shù)據(jù)值進(jìn)行測試。數(shù)據(jù)值進(jìn)行測試。 如果某個等價類中任選一個測試用例,未發(fā)現(xiàn)程序錯誤,如果某個等價類中任選一個測試用例,未發(fā)現(xiàn)程序錯誤,則該類中的其他測試用例,也不會發(fā)現(xiàn)程序錯誤。這樣用少量則該類中的其他測試用例,也不會發(fā)現(xiàn)程序錯誤。這樣用少量有代表性的例子可代替大量測試目的相同的例子,有效地提高有代表性的例子可代替大量測試目的相同的例子,有效地提高測試效率。測試效率。 如何劃分等價類如何劃分等價類n若某個輸入條件規(guī)定了取值范圍或值的個數(shù),則可確

41、若某個輸入條件規(guī)定了取值范圍或值的個數(shù),則可確定一個有效等價類和兩個無效等價類。定一個有效等價類和兩個無效等價類。n若規(guī)定了輸入數(shù)據(jù)的一組值,且程序?qū)Σ煌妮斎胫等粢?guī)定了輸入數(shù)據(jù)的一組值,且程序?qū)Σ煌妮斎胫底霾煌奶幚恚瑒t每個允許的輸入值是一個有效等價做不同的處理,則每個允許的輸入值是一個有效等價類,另外還有一個無效等價類。類,另外還有一個無效等價類。n若規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可確定一個有效若規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可確定一個有效等價類和若干個無效等價類。等價類和若干個無效等價類。n若已劃分的等價類中各元素在程序中的處理方式不同,若已劃分的等價類中各元素在程序中的處理方式不同,

42、則將此等價類進(jìn)一步劃分為更小的等價類。則將此等價類進(jìn)一步劃分為更小的等價類。n等價類劃分法的基本目標(biāo):等價類劃分法的基本目標(biāo): 用一個測試用例能獨立地發(fā)現(xiàn)一類錯誤;用一個測試用例能獨立地發(fā)現(xiàn)一類錯誤; 理想情況下,一個測試用例能夠發(fā)現(xiàn)多類錯誤,理想情況下,一個測試用例能夠發(fā)現(xiàn)多類錯誤,從而減少測試成本、提高測試效率。從而減少測試成本、提高測試效率。軟件測試方法軟件測試方法 等價類劃分法的執(zhí)行步驟:等價類劃分法的執(zhí)行步驟: 1)為每個等價類規(guī)定一個唯一的編號;)為每個等價類規(guī)定一個唯一的編號; 2)設(shè)計一個測試用例,使其盡可能多的覆蓋尚未)設(shè)計一個測試用例,使其盡可能多的覆蓋尚未被覆蓋的有效等價

43、類,重復(fù)此步,直到所有的有效等價被覆蓋的有效等價類,重復(fù)此步,直到所有的有效等價類均被覆蓋為止;類均被覆蓋為止; 3)設(shè)計一個測試用例,使其只覆蓋一個無效等價)設(shè)計一個測試用例,使其只覆蓋一個無效等價類,重復(fù)此步,直到所有的無效等價類均被覆蓋為止。類,重復(fù)此步,直到所有的無效等價類均被覆蓋為止。 4)執(zhí)行所設(shè)計的一系列測試用例,分析是否得到)執(zhí)行所設(shè)計的一系列測試用例,分析是否得到預(yù)期結(jié)果。預(yù)期結(jié)果。 例題例題:n某報表處理系統(tǒng)。要求用戶輸入的日期為某報表處理系統(tǒng)。要求用戶輸入的日期為2000年年1月月2005年年12月,日期長度為月,日期長度為6位,位,前前4位表示年代,后位表示年代,后2位

44、表示月份。位表示月份。n使用等價類劃分法設(shè)計測試用例,測試用戶使用等價類劃分法設(shè)計測試用例,測試用戶輸入日期的合法性。輸入日期的合法性。n步驟步驟1:劃分等價類并編號。劃分為:劃分等價類并編號。劃分為3個有效個有效等價類,等價類,7個無效等價類。個無效等價類。輸入等價類輸入等價類有效等價類有效等價類無效等價類無效等價類報表日期的類型報表日期的類型及長度及長度1. 6位數(shù)字字符位數(shù)字字符2.有非數(shù)字字符有非數(shù)字字符3.少于少于6個數(shù)字字符個數(shù)字字符4.多于多于6個數(shù)字字符個數(shù)字字符年份范圍年份范圍5.在在20002005 之間之間6.小于小于20007.大于大于2005月份范圍月份范圍8.在在1

45、12之間之間9.等于等于010.大于大于12n步驟步驟2:為有效等價類設(shè)計測試用例。對于表中編號為:為有效等價類設(shè)計測試用例。對于表中編號為1,5,8的有效等價類設(shè)計一個測試用例覆蓋。的有效等價類設(shè)計一個測試用例覆蓋。測試數(shù)據(jù)測試數(shù)據(jù)期望結(jié)果期望結(jié)果覆蓋范圍覆蓋范圍200511輸入有效輸入有效1,5,8n步驟步驟3:為每一個無效等價類至少設(shè)計一個測試用例。:為每一個無效等價類至少設(shè)計一個測試用例。測試數(shù)據(jù)測試數(shù)據(jù)期望結(jié)果期望結(jié)果覆蓋范圍覆蓋范圍005MAY輸入無效輸入無效220055輸入無效輸入無效32005005輸入無效輸入無效4199905輸入無效輸入無效6200605輸入無效輸入無效72

46、00500輸入無效輸入無效9200513輸入無效輸入無效10軟件測試方法軟件測試方法黑盒測試法黑盒測試法2、邊界值分析法、邊界值分析法 邊界值分析也是一種黑盒測試法,是對等價類劃分法的邊界值分析也是一種黑盒測試法,是對等價類劃分法的補(bǔ)充。補(bǔ)充。 實踐經(jīng)驗表明,程序往往在處理邊界情況時發(fā)生錯誤。實踐經(jīng)驗表明,程序往往在處理邊界情況時發(fā)生錯誤。邊界情況指輸入等價類、輸出等價類邊界上的情況。檢查邊邊界情況指輸入等價類、輸出等價類邊界上的情況。檢查邊界情況的測試用例是比較高效的,可以查出更多的錯誤。界情況的測試用例是比較高效的,可以查出更多的錯誤。 選取剛好等于、剛好大于、剛好小于邊界的值作為測試選取

47、剛好等于、剛好大于、剛好小于邊界的值作為測試用例。用例。 n若輸入條件規(guī)定了值的范圍,測試用例可選擇若輸入條件規(guī)定了值的范圍,測試用例可選擇邊界邊界值值,或者,或者邊界值的周圍數(shù)據(jù)邊界值的周圍數(shù)據(jù)。n若輸入條件指出了值的個數(shù),則按若輸入條件指出了值的個數(shù),則按最大個數(shù)、最小最大個數(shù)、最小個數(shù)、比最大個數(shù)多個數(shù)、比最大個數(shù)多1、最小個數(shù)少、最小個數(shù)少1等情況設(shè)計測等情況設(shè)計測試用例。試用例。n對于每個輸出條件按照以上兩個原則確定輸出值的對于每個輸出條件按照以上兩個原則確定輸出值的邊界。邊界。n若程序的需求說明給出的輸入域或輸出域是一個有若程序的需求說明給出的輸入域或輸出域是一個有序集合(如順序文

48、件、線性表、鏈表),應(yīng)選擇集序集合(如順序文件、線性表、鏈表),應(yīng)選擇集合的合的第一個元素及最后一個元素第一個元素及最后一個元素作為測試用例。作為測試用例。邊界值分析法設(shè)計原則邊界值分析法設(shè)計原則輸入等價類輸入等價類測試用例說明測試用例說明測試數(shù)據(jù)測試數(shù)據(jù) 期望結(jié)果期望結(jié)果選取理由選取理由報表日期的類型報表日期的類型及長度及長度6個數(shù)字字符個數(shù)字字符5,7個數(shù)字字符個數(shù)字字符1個個/全部非數(shù)字全部非數(shù)字字符字符有效有效無效無效無效無效年份范圍年份范圍20002002200519992006有效有效有效有效有效有效無效無效無效無效月份范圍月份范圍112612有效有效有效有效有效有效無效無效無效無

49、效軟件測試方法軟件測試方法黑盒測試法黑盒測試法3、錯誤推測法、錯誤推測法 錯誤推測法的基本思想:列舉出程序中可能存在的錯錯誤推測法的基本思想:列舉出程序中可能存在的錯誤和容易發(fā)生錯誤的特殊情況,并根據(jù)它們選擇測試方案。誤和容易發(fā)生錯誤的特殊情況,并根據(jù)它們選擇測試方案。 有經(jīng)驗的程序員通??筛鶕?jù)程序的特點和功能選擇測有經(jīng)驗的程序員通??筛鶕?jù)程序的特點和功能選擇測試數(shù)據(jù),這些數(shù)據(jù)可能導(dǎo)致程序出現(xiàn)錯誤。試數(shù)據(jù),這些數(shù)據(jù)可能導(dǎo)致程序出現(xiàn)錯誤。例:排序程序例:排序程序n輸入表為空。輸入表為空。n輸入表只包含一個元素。輸入表只包含一個元素。n輸入表中所有元素均相同。輸入表中所有元素均相同。n輸入表已有序

50、。輸入表已有序。軟件測試步驟軟件測試步驟 測試過程分為測試過程分為4個步驟:個步驟: 單元測試單元測試 集成測試集成測試 確認(rèn)測試確認(rèn)測試 系統(tǒng)測試系統(tǒng)測試單元單元測試測試單元單元測試測試單元單元測試測試被測模塊被測模塊被測模塊被測模塊被測模塊被測模塊集成集成測試測試設(shè)計信息設(shè)計信息確認(rèn)確認(rèn)測試測試系統(tǒng)系統(tǒng)測試測試已集成的已集成的軟件軟件已確認(rèn)的已確認(rèn)的軟件軟件可交付的可交付的軟件軟件軟件需求軟件需求已測試已測試模塊模塊其他系統(tǒng)元素其他系統(tǒng)元素軟軟件件測測試試與與軟軟件件開開發(fā)發(fā)的的關(guān)關(guān)系系用戶要求用戶要求系統(tǒng)測試系統(tǒng)測試確認(rèn)測試確認(rèn)測試集成測試集成測試模塊測試模塊測試編碼編碼詳細(xì)設(shè)計詳細(xì)設(shè)計

51、需求分析需求分析概要設(shè)計概要設(shè)計軟件測試步驟軟件測試步驟1、單元測試、單元測試 單元測試也稱模塊測試,是針對軟件設(shè)計的最小單元單元測試也稱模塊測試,是針對軟件設(shè)計的最小單元程序模塊進(jìn)行的測試,目的是發(fā)現(xiàn)模塊內(nèi)部的錯誤程序模塊進(jìn)行的測試,目的是發(fā)現(xiàn)模塊內(nèi)部的錯誤。單元測試主要從以下五個方面進(jìn)行。單元測試主要從以下五個方面進(jìn)行。 (1)模塊接口測試)模塊接口測試(2)局部數(shù)據(jù)結(jié)構(gòu)測試)局部數(shù)據(jù)結(jié)構(gòu)測試(3)路徑測試)路徑測試(4)程序異常測試)程序異常測試(5)邊界條件測試)邊界條件測試軟件測試步驟軟件測試步驟2、集成測試、集成測試 集成測試也稱組裝測試,它的任務(wù)是按照一定的策略對單元測集成測試也

52、稱組裝測試,它的任務(wù)是按照一定的策略對單元測試的模塊進(jìn)行組裝,并在組裝過程中進(jìn)行模塊接口與系統(tǒng)功能測試。試的模塊進(jìn)行組裝,并在組裝過程中進(jìn)行模塊接口與系統(tǒng)功能測試。 (需考慮幾個問題(需考慮幾個問題P171)(1)一次性組裝方式)一次性組裝方式 一次性組裝方式的基本思想是首先分別測試每個模塊,然后將一次性組裝方式的基本思想是首先分別測試每個模塊,然后將所有模塊全部組裝起來進(jìn)行測試,形成最終的軟件系統(tǒng)。所有模塊全部組裝起來進(jìn)行測試,形成最終的軟件系統(tǒng)。 缺點:缺點: 一次將所有模塊組裝后的程序會很龐大,各模塊之間相互影響,一次將所有模塊組裝后的程序會很龐大,各模塊之間相互影響,情況十分復(fù)雜。情況

53、十分復(fù)雜。 在測試過程中會同時出現(xiàn)很多錯誤,對這些錯誤的定位難度增在測試過程中會同時出現(xiàn)很多錯誤,對這些錯誤的定位難度增大,修改的過程中可能又會引發(fā)其它錯誤或激發(fā)其它潛在的錯誤大,修改的過程中可能又會引發(fā)其它錯誤或激發(fā)其它潛在的錯誤. . 測試工作十分的漫長。測試工作十分的漫長。 軟件測試步驟軟件測試步驟(2)增殖式組裝方式)增殖式組裝方式 增殖式組裝方式是采用循序漸進(jìn)的方式,每次增加一個模塊到已測增殖式組裝方式是采用循序漸進(jìn)的方式,每次增加一個模塊到已測試好的模塊中試好的模塊中 , ,錯誤的范圍會縮小,錯誤的修改和定位難度相對降低。錯誤的范圍會縮小,錯誤的修改和定位難度相對降低。1)自頂向下

54、增殖方式(圖自頂向下增殖方式(圖P173)具體的實施步驟如下:具體的實施步驟如下: 先測試先測試主控制模塊主控制模塊,測試時使用存根模塊代替所有直接附屬主控,測試時使用存根模塊代替所有直接附屬主控制模塊的功能模塊;制模塊的功能模塊; 用某種用某種結(jié)合策略結(jié)合策略,用實際模塊代替相應(yīng)的存根模塊;,用實際模塊代替相應(yīng)的存根模塊; 對結(jié)合后的模塊進(jìn)行對結(jié)合后的模塊進(jìn)行測試測試; 為了保證加入的模塊沒有引進(jìn)新的錯誤,需要進(jìn)行為了保證加入的模塊沒有引進(jìn)新的錯誤,需要進(jìn)行回歸測試;回歸測試; 重復(fù)操作重復(fù)操作2 2、3 3、4 4步,完成集成測試。步,完成集成測試。 軟件測試步驟軟件測試步驟2、集成測試(

55、2)增殖式組裝方式)增殖式組裝方式 2)自底向上增殖方式自底向上增殖方式(圖(圖P173)具體的結(jié)合策略如下:具體的結(jié)合策略如下: 將底層模塊組合成實現(xiàn)某個將底層模塊組合成實現(xiàn)某個子功能子功能的簇;的簇; 寫一個寫一個驅(qū)動程序驅(qū)動程序,用來提供該功能簇的執(zhí)行入口和輸入,用來提供該功能簇的執(zhí)行入口和輸入/輸出界面;輸出界面; 對該功能簇進(jìn)行對該功能簇進(jìn)行測試測試; 在低層繼續(xù)尋找模塊,將該功能簇擴(kuò)大,重新修改驅(qū)動程序,以在低層繼續(xù)尋找模塊,將該功能簇擴(kuò)大,重新修改驅(qū)動程序,以適應(yīng)對當(dāng)前功能簇的測試。適應(yīng)對當(dāng)前功能簇的測試。 不斷重復(fù)第不斷重復(fù)第3、4步,完成測試。步,完成測試。 軟件測試步驟軟件

56、測試步驟2、集成測試 (3)混合增殖式測試混合增殖式測試 自頂向下增殖方式和自底向上增殖方式各有優(yōu)缺點,在實際的自頂向下增殖方式和自底向上增殖方式各有優(yōu)缺點,在實際的測試過程中測試過程中,可根據(jù)具體情況將兩種方法結(jié)合起來使用。可根據(jù)具體情況將兩種方法結(jié)合起來使用。(回歸測試回歸測試) 1)改進(jìn)的自頂向下的增殖測試:它的基本思想是對涉及輸入改進(jìn)的自頂向下的增殖測試:它的基本思想是對涉及輸入輸出模塊和復(fù)雜算法的模塊先采用自底向上的測試方法,將這些模輸出模塊和復(fù)雜算法的模塊先采用自底向上的測試方法,將這些模塊組裝成為功能相對完整且相對獨立的子系統(tǒng),然后由主模塊開始塊組裝成為功能相對完整且相對獨立的子

57、系統(tǒng),然后由主模塊開始自頂向下進(jìn)行增殖測試。自頂向下進(jìn)行增殖測試。 2)混合測試法:它首先對軟件結(jié)構(gòu)中較低層的模塊自底向上組混合測試法:它首先對軟件結(jié)構(gòu)中較低層的模塊自底向上組裝測試,然后對軟件結(jié)構(gòu)中較上層的模塊采用自頂向下的方法進(jìn)行裝測試,然后對軟件結(jié)構(gòu)中較上層的模塊采用自頂向下的方法進(jìn)行組裝與測試。組裝與測試。軟件測試步驟軟件測試步驟3、確認(rèn)測試確認(rèn)測試 確認(rèn)測試也稱有效性測試,目的是驗證軟件的有效性,即驗確認(rèn)測試也稱有效性測試,目的是驗證軟件的有效性,即驗證軟件的功能和性能及其它特性是否符合用戶要求證軟件的功能和性能及其它特性是否符合用戶要求 。確認(rèn)測試是確認(rèn)測試是軟件交付使用前一項很重

58、要的活動,它最終決定用戶對該軟件的軟件交付使用前一項很重要的活動,它最終決定用戶對該軟件的認(rèn)可程度。認(rèn)可程度。(1)確認(rèn)測試內(nèi)容確認(rèn)測試內(nèi)容(2)測試和測試和測試測試 測試是邀請用戶參加,在開發(fā)場地進(jìn)行的測試,由開發(fā)組測試是邀請用戶參加,在開發(fā)場地進(jìn)行的測試,由開發(fā)組成員或用戶實際操作運(yùn)行,對測試過程中出現(xiàn)的問題,由開發(fā)者成員或用戶實際操作運(yùn)行,對測試過程中出現(xiàn)的問題,由開發(fā)者記錄下來,作為修改的依據(jù)。記錄下來,作為修改的依據(jù)。 它的最大特點是整個測試過程是在受控環(huán)境下進(jìn)行。它的最大特點是整個測試過程是在受控環(huán)境下進(jìn)行。軟件測試步驟軟件測試步驟3、確認(rèn)測試確認(rèn)測試測試和測試和測試測試 測試是由

59、部分用戶在實際的使用環(huán)境下進(jìn)行的測試。測試測試是由部分用戶在實際的使用環(huán)境下進(jìn)行的測試。測試過程中開發(fā)者不在現(xiàn)場,由用戶獨立操作,驗證程序的各項功能,過程中開發(fā)者不在現(xiàn)場,由用戶獨立操作,驗證程序的各項功能,用戶發(fā)現(xiàn)的問題全部記錄下來,反饋給程序開發(fā)者,開發(fā)者對軟用戶發(fā)現(xiàn)的問題全部記錄下來,反饋給程序開發(fā)者,開發(fā)者對軟件進(jìn)行必要的修改,并準(zhǔn)備最終的軟件產(chǎn)品發(fā)布。件進(jìn)行必要的修改,并準(zhǔn)備最終的軟件產(chǎn)品發(fā)布。 測試的最大特點是實際的使用環(huán)境下進(jìn)行的測試。測試的最大特點是實際的使用環(huán)境下進(jìn)行的測試。(3)確認(rèn)測試的結(jié)果可分為兩種情況:確認(rèn)測試的結(jié)果可分為兩種情況:測試結(jié)果與預(yù)期結(jié)果相符,程序的功能和

60、性能滿足用戶需求;測試結(jié)果與預(yù)期結(jié)果相符,程序的功能和性能滿足用戶需求;測試結(jié)果與預(yù)期結(jié)果不相符,將存在的問題列出清單,提供給測試結(jié)果與預(yù)期結(jié)果不相符,將存在的問題列出清單,提供給開發(fā)者作為修改依據(jù)。開發(fā)者作為修改依據(jù)。軟件測試步驟軟件測試步驟4、系統(tǒng)測試系統(tǒng)測試 系統(tǒng)測試的任務(wù)主要有:測試軟件系統(tǒng)是否能與硬件協(xié)調(diào)工作,系統(tǒng)測試的任務(wù)主要有:測試軟件系統(tǒng)是否能與硬件協(xié)調(diào)工作,測試與其它軟件協(xié)調(diào)運(yùn)行的狀況。測試與其它軟件協(xié)調(diào)運(yùn)行的狀況。 系統(tǒng)測試的系統(tǒng)測試的目的是充分運(yùn)行系統(tǒng),驗證系統(tǒng)各部件是否都能正常工目的是充分運(yùn)行系統(tǒng),驗證系統(tǒng)各部件是否都能正常工作并完成所賦予的任務(wù)。作并完成所賦予的任務(wù)。 (1)恢復(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

提交評論