軟件測(cè)試基礎(chǔ)授課教案_第1頁(yè)
軟件測(cè)試基礎(chǔ)授課教案_第2頁(yè)
軟件測(cè)試基礎(chǔ)授課教案_第3頁(yè)
軟件測(cè)試基礎(chǔ)授課教案_第4頁(yè)
軟件測(cè)試基礎(chǔ)授課教案_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件測(cè)試基礎(chǔ)授課教案授課內(nèi)容:第四章 白盒測(cè)試技術(shù)授課課次:第2次課授課時(shí)數(shù):2學(xué)時(shí)       授課日期:               上課教室:目的與要求:掌握白盒測(cè)試中基本路經(jīng)測(cè)試的概念和方法;了解程序插樁的概念和方法。教學(xué)重點(diǎn):基本路經(jīng)測(cè)試教學(xué)難點(diǎn):程序插樁教學(xué)方式:1. 運(yùn)用白盒測(cè)試技術(shù)課件進(jìn)行課堂講授,讓學(xué)生理解基本路徑測(cè)試的概念,掌握基本路徑測(cè)試方法;2. 進(jìn)行課堂練習(xí),加深對(duì)基本路

2、徑測(cè)試的理解和使用。教學(xué)內(nèi)容:1程序結(jié)構(gòu)分析2DD路徑測(cè)試3基本路徑測(cè)試4程序插樁內(nèi)容提要及時(shí)間分配:1、課前引導(dǎo)(8分鐘)u 回顧6種覆蓋法的基本思想。u 白盒測(cè)試中有哪些常用方法?2、本課內(nèi)容(75分鐘)u 程序結(jié)構(gòu)分析u DD路徑測(cè)試u 基本路徑測(cè)試u 程序插樁3、課后小結(jié)(5分鐘)4、布置作業(yè)(2分鐘)教學(xué)參考書(shū):1. 軟件測(cè)試方法和技術(shù) 朱少民 清華大學(xué)出版社2. 軟件測(cè)試 Paul C.Jorgensen 機(jī)械工業(yè)出版社討論與思考:把第2章的NextDate問(wèn)題的偽代碼轉(zhuǎn)換成為控制流圖,并簡(jiǎn)化。作 業(yè):1請(qǐng)把下面的程序流程圖轉(zhuǎn)化成控制流圖。2重新編寫(xiě)程序片斷1420,用嵌套if-t

3、hen-else語(yǔ)句替代復(fù)合條件。14. if(a=b)AND (b=c)15. Then Output(“Equilateral”)16. Else If(a<>b)AND(a<>c)AND(b<>c)17. Then Output(“Scalence”)18. Else Output(“Isosecles”)19. EndIf20. EndIf 比較你改寫(xiě)后的程序和上面程序片斷的圈復(fù)雜度。復(fù)問(wèn)題目:序號(hào)題 目學(xué) 生成 績(jī)123教 學(xué) 內(nèi) 容 與 方 法 步 驟4.2.3程序結(jié)構(gòu)分析引言:程序的結(jié)構(gòu)形式是白盒測(cè)試的主要依據(jù)。這一部分將從控制流分析和數(shù)據(jù)流分

4、析的不同方面討論如何分析程序結(jié)構(gòu)。我們的目的是要在程序中找到隱藏的錯(cuò)誤。1 控制流分析由于非結(jié)構(gòu)化程序會(huì)給測(cè)試帶來(lái)許多不必要的困難,所以業(yè)界要求寫(xiě)出的程序具有良好的結(jié)構(gòu)。上個(gè)世紀(jì)70年代以來(lái),結(jié)構(gòu)化程序的概念逐漸被人們普遍接受。體現(xiàn)這一要求對(duì)某些語(yǔ)言并不困難,比如Pascal、C,因?yàn)樗鼈兌季哂蟹从郴究刂平Y(jié)構(gòu)的相應(yīng)得控制語(yǔ)句。但對(duì)于有些開(kāi)發(fā)語(yǔ)言要做到這一點(diǎn),程序人員就要很注意程序結(jié)構(gòu)化的要求,比如說(shuō)匯編語(yǔ)言,若使用匯編語(yǔ)言編寫(xiě)程序,開(kāi)發(fā)人員就尤其要注意程序的結(jié)構(gòu)化要求。正是由于這個(gè)原因,系統(tǒng)地檢查程序的控制結(jié)構(gòu)變得十分有意義了。a) 控制流圖程序流程圖又稱(chēng)框圖,是我們最熟悉,也是最容易理解的

5、一種程序控制結(jié)構(gòu)的圖形表示了。在這種圖上的框里面常常標(biāo)明了處理要求或者條件,但是,這些標(biāo)注在做路徑分析時(shí)是不重要的。為了了更加突出控制流的結(jié)構(gòu),需要對(duì)程序流程圖做一些簡(jiǎn)化。在圖4-2種我們給出了簡(jiǎn)化的例子。其中(a)圖示一個(gè)含有兩個(gè)出口判斷和循環(huán)的程序流程圖,我們把它簡(jiǎn)化成(b)的形式,稱(chēng)這種簡(jiǎn)化了的程序流程圖叫做控制流圖。在控制流圖中只有兩種圖形符號(hào),它們是:l 節(jié)點(diǎn):以標(biāo)有編號(hào)的圓圈表示。它代表了程序流程圖中矩形框表示的處理、菱形表示的兩個(gè)到多個(gè)出口判斷以及兩條到多條流線(xiàn)相交的匯合點(diǎn)。l 控制流線(xiàn)或弧:以箭頭表示。它與程序流程圖中的流線(xiàn)是一致的,表明了控制的順序。為了方便討論,控制流線(xiàn)通常

6、標(biāo)有名字,如圖中所標(biāo)的a、b、c等。為了使控制流圖在機(jī)器上表示,我們可以把它表示成矩陣的形式,稱(chēng)為控制流圖矩陣。圖4-3表示了圖4-2的控制流圖矩陣,這個(gè)矩陣有5行5列,是由該控制圖中5個(gè)節(jié)點(diǎn)決定的。矩陣中6個(gè)元素a、b、c、d、e和f的位置決定了它們所連接節(jié)點(diǎn)的號(hào)碼。例如,弧d在矩陣中處于第3行第4列,那是因?yàn)樗诳刂屏鲌D中連接了節(jié)點(diǎn)3至節(jié)點(diǎn)4。這里必須注意方向,圖中節(jié)點(diǎn)4到節(jié)點(diǎn)3沒(méi)有弧,所以矩陣中第4行第3列也就沒(méi)有元素。 (a) (b)圖4-2程序流程圖和控制流圖 圖4-3 控制流圖矩陣除了用程序流程圖可以轉(zhuǎn)化成控制流圖以外,還可以把偽代碼表示的處理過(guò)程轉(zhuǎn)化成控制流圖。根據(jù)程序建構(gòu)控制流

7、圖很容易,如圖4-4所示,我們把三角形偽代碼實(shí)現(xiàn)過(guò)程轉(zhuǎn)化成了控制流圖。對(duì)于不可執(zhí)行語(yǔ)句我們不把它映射成節(jié)點(diǎn),比如變量和類(lèi)型說(shuō)明語(yǔ)句。1. Program triangle2 version of simple2. Dim a,b,c As Integer3. Dim IsATriangle As Boolean4. Output(“Enter 3 integers which are sides of a triangle”)5. Input(a,b,c)6. Output(“Side A is ”,a)7. Output(“Side B is ”,b)8. Output(“Side C is

8、 ”,c)9. If (a<b+c) AND(b<a+c)AND(c<a+b)10. Then IsATriangle =True11. Else IsATriangle =False12. EndIf13. If IsATrangle14. Then if(a=b)AND (b=c)15. Then Output(“Equilateral”)16. Else If(a<>b)AND(a<>c)AND(b<>c)17. Then Output(“Scalence”)18. Else Output(“Isosecles”)19. EndIf2

9、0. EndIf21Else Output(“NOT a Triangle”)22EndIf23End triangle2圖4-4 三角形偽代碼映射成的控制流圖我們有的時(shí)候?yàn)榱朔奖銜?huì)把一條偽代碼語(yǔ)句做為一個(gè)節(jié)點(diǎn),但有的時(shí)候,我們可以把幾個(gè)節(jié)點(diǎn)合并成一個(gè),合并的原則是:若在一個(gè)節(jié)點(diǎn)序列中沒(méi)有分支,則我們可以把這個(gè)序列的節(jié)點(diǎn)都合并成一個(gè)節(jié)點(diǎn)。比如圖4-4我們可以合并成如圖4-5的形式。對(duì)于不可執(zhí)行語(yǔ)句我們不把它映射成節(jié)點(diǎn),比如變量和類(lèi)型說(shuō)明語(yǔ)句。當(dāng)過(guò)程設(shè)計(jì)中包含復(fù)合條件時(shí),生成控制流圖的方法要復(fù)雜一些。在這種情況下,我們要把復(fù)合條件拆開(kāi)成一個(gè)個(gè)簡(jiǎn)單條件,讓每一個(gè)簡(jiǎn)單條件對(duì)應(yīng)流圖中一個(gè)節(jié)點(diǎn)。這樣的節(jié)

10、點(diǎn)我們把它叫判定節(jié)點(diǎn),它會(huì)引出兩條或者多條邊。如圖4-6所示。圖4-5 簡(jiǎn)化后的三角形控制流圖 圖4-6 包含復(fù)合條件的偽代碼轉(zhuǎn)化成控制流圖b) 程序結(jié)構(gòu)的基本要求我們對(duì)于程序結(jié)構(gòu)提出以下4點(diǎn)基本要求,這些要求是,寫(xiě)出的程序不應(yīng)該包含:l 轉(zhuǎn)向并不存在的標(biāo)號(hào);l 沒(méi)有用過(guò)的語(yǔ)句標(biāo)號(hào);l 從程序入口進(jìn)入后無(wú)法達(dá)到的語(yǔ)句;l 不能達(dá)到停機(jī)語(yǔ)句的語(yǔ)句。顯然,這些要求是合理的。目前,對(duì)這些情況的檢測(cè)主要通過(guò)編譯器和程序分析工具來(lái)實(shí)現(xiàn)。2 數(shù)據(jù)流分析在單元測(cè)試中,數(shù)據(jù)僅僅在一個(gè)模塊或者一個(gè)函數(shù)種流通。但是,數(shù)據(jù)流的通路往往涉及多個(gè)集成模塊,甚至于整個(gè)軟件,所以我們有必要進(jìn)行數(shù)據(jù)流的測(cè)試,盡管它非常耗時(shí)。

11、數(shù)據(jù)流分析最初是隨著編譯系統(tǒng)要生成有效的目標(biāo)代碼而出現(xiàn)的,這類(lèi)方法主要用于優(yōu)化代碼。數(shù)據(jù)流測(cè)試是指一個(gè)基于通過(guò)程序的控制流,從建立的數(shù)據(jù)目標(biāo)狀態(tài)的序列中發(fā)現(xiàn)異常的結(jié)構(gòu)測(cè)試方法。數(shù)據(jù)流測(cè)試用作路徑測(cè)試的“真實(shí)性檢查”。早期的數(shù)據(jù)流分析常常集中于現(xiàn)在叫做定義/引用異常的缺陷:l 變量杯定義,但是從來(lái)沒(méi)有使用。l 所使用的變量沒(méi)有被定義。l 變量在使用之前被定義了兩次。因?yàn)槌绦騼?nèi)的語(yǔ)句因變量的定義和使用而彼此相關(guān),所以用數(shù)據(jù)流測(cè)試方法更能有效地發(fā)現(xiàn)軟件缺陷。但是,在度量測(cè)試覆蓋率和選擇測(cè)試路徑的時(shí)候,數(shù)據(jù)流測(cè)試很困難。4.2.4 DD-路徑測(cè)試引言:DD路徑測(cè)試,即決策到?jīng)Q策路徑測(cè)試。在討論DD-路

12、徑測(cè)試之前,我們先要了解什么叫做鏈,在這里,鏈出現(xiàn)在有向圖中,是一條起始節(jié)點(diǎn)和終止節(jié)點(diǎn)不同的路徑,并且每個(gè)節(jié)點(diǎn)的出度=1,入度=1。也有一種長(zhǎng)度為0的退化鏈情況,意思就是這條連只有一個(gè)節(jié)點(diǎn)和0條邊。1 DD路徑概念:DD-路徑是控制流圖中的一條鏈,只要滿(mǎn)足下列五種情況之一:(1) 由一個(gè)節(jié)點(diǎn)組成,入度=0;(2) 由一個(gè)節(jié)點(diǎn)組成,出度=0;(3) 由一個(gè)節(jié)點(diǎn)組成,入度>=2或者出度>=2;(4) 由一個(gè)節(jié)點(diǎn)組成,入度=1并且出度=1;(5) 長(zhǎng)度>=的最大鏈。2 舉例為了便于理解,我們用圖3-4三角形偽代碼映射成的控制流圖來(lái)說(shuō)明這五種情況。很顯然,我們可以看出節(jié)點(diǎn)4的入度為0

13、,是DD-路徑的第一種情況,我們把它叫做“第一”;節(jié)點(diǎn)5-8是第五種情況,我們可以把這4個(gè)節(jié)點(diǎn)合成一個(gè)DD-路徑,為什么是5-8,而不是5-7或者5-9呢?因?yàn)槿羰?-9的話(huà),就會(huì)違反入度=出度=1的原則,若是5-7,就會(huì)違反“最大”的原則;節(jié)點(diǎn)10、11、15、17、18、21是情況4的DD-路徑;節(jié)點(diǎn)9、12、13、14、16、19、20、22是情況3的DD-路徑;而節(jié)點(diǎn)23的出度為0,是DD-路徑的第二種情況,我們把它叫做“最后”。根據(jù)圖4-4,我們畫(huà)出圖4-8對(duì)應(yīng)的三角形程序DD-路徑圖,它包括的路徑名都列舉在表4-8中。控制流圖節(jié)點(diǎn)DD-路徑名稱(chēng)定義情況4第一15-8A59B310C

14、411D412E313F314H315I416J317K418L419M320N321G422O323最后2圖4-8 三角形程序DD-路徑圖如果每一條DD-路徑都被遍歷,則我們知道每個(gè)判斷分支都被執(zhí)行,其實(shí)就是遍歷DD-路徑圖中每條邊。對(duì)于if類(lèi)的 語(yǔ)句,這意味著真、假分支都要覆蓋。對(duì)于CASE語(yǔ)句,則每個(gè)子句都要覆蓋。4.2.5基本路徑測(cè)試引言:基本路徑測(cè)試法是在程序控制流圖的基礎(chǔ)上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例的方法。設(shè)計(jì)出的測(cè)試用例要保證在測(cè)試中程序的每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次?;韭窂綔y(cè)試法包括以下5個(gè)方面:(1) 程序的控制流圖:描述程序控制

15、流的一種圖示方法。(2) 程序環(huán)境復(fù)雜性:環(huán)形復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測(cè)度的軟件度量,將該度量用于計(jì)算程序的基本獨(dú)立路徑數(shù)目邊。例如:圖4-8中的復(fù)雜性度量,我們用V(G)表示,用n代表節(jié)點(diǎn)數(shù)目,用e代表控制流線(xiàn)的數(shù)目,那么:V(G)=e-n+2=20-17+2=5。由此,我們可以得到三角形程序段的基本路徑集中最多有5條獨(dú)立路徑。(3) 導(dǎo)出測(cè)試用例:通過(guò)程序的控制流圖導(dǎo)出基本路徑集,列出程序的獨(dú)立路徑。(4) 準(zhǔn)備測(cè)試用例,確保基本路徑集中的每一條路徑的執(zhí)行。(5) 圖形矩陣:是在基本路徑測(cè)試中起輔助作用的軟件工具,利用它可以實(shí)現(xiàn)自動(dòng)地確定一個(gè)基本路徑集。下面我們通過(guò)一個(gè)實(shí)例來(lái)說(shuō)

16、明基本路徑測(cè)試。例:請(qǐng)看以下代碼,它由C+語(yǔ)言書(shū)寫(xiě)。,把它轉(zhuǎn)化成圖形矩陣,最后請(qǐng)使用基本路徑測(cè)試法為變量temp設(shè)計(jì)測(cè)試用例,使之滿(mǎn)足基本路徑覆蓋要求。1 void ReadPara( CString temp)2 3 if ( temp = = ">=")4 m_oper.SetCurSel(0);5 else6 7 if (temp = = ">")8 m_oper.SetCurSel(1);9 else1011if ( temp = = "= =")12m_oper.SetCurSel(2);13else1415if

17、( temp = = "<=")16m_oper.SetCurSel(3);17else1819if ( temp = = "<")20m_oper.SetCurSel(4);21else22m_oper.SetCurSel(5);2324 25 26 27 return;28 1畫(huà)出這段代碼的控制流圖,如4-9所示:圖4-9 例題控制流圖2根據(jù)控制流圖,計(jì)算環(huán)路復(fù)雜度V(G)=22-18+2=6。3導(dǎo)出測(cè)試用例,列出路徑:Path1:2-3-4-27-28Path2:2-3-7-8-26-27-28Path3:2-3-7-11-12-25-

18、26-27-28Path4:2-3-7-11-15-16-24-25-26-27-28Path5:2-3-7-11-15-19-20-23-24-25-26-27-28Path6:2-3-7-11-15-19-22-23-24-25-26-27-284設(shè)計(jì)測(cè)試用例根據(jù)第3步中給出的路徑,下面設(shè)計(jì)測(cè)試用例列在表3-9中。傳入?yún)?shù)預(yù)期調(diào)用Path 1ReadPara(”>=”)m_oper.SetCurSel(0)Path 2ReadPara(”>”)m_oper.SetCurSel(1)Path 3ReadPara(”=”)m_oper.SetCurSel(2)Path 4ReadP

19、ara(”<”)m_oper.SetCurSel(3)Path 5ReadPara(”<=”)m_oper.SetCurSel(4)Path 6ReadPara(”+”)m_oper.SetCurSel(5)5.圖形矩陣的畫(huà)法在前面我們已經(jīng)講過(guò),這里不再贅述。4.2.6 程序插樁在軟件測(cè)試中,常常要用到一種“插樁”技術(shù),通過(guò)在源代碼中加入記錄信息語(yǔ)句,以便進(jìn)行運(yùn)行信息的追蹤和調(diào)試,統(tǒng)計(jì)有關(guān)的運(yùn)行資源狀況。  想做插樁,可以思考以下幾點(diǎn):   (1)如果出現(xiàn)在語(yǔ)句中包含了return語(yǔ)句,怎么在它前面插入指定語(yǔ)句?同時(shí)保證語(yǔ)句的語(yǔ)法合法性?   例如:   for ( j=0;j<10000;j+) 

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論