軟件測(cè)試方法_第1頁(yè)
軟件測(cè)試方法_第2頁(yè)
軟件測(cè)試方法_第3頁(yè)
軟件測(cè)試方法_第4頁(yè)
軟件測(cè)試方法_第5頁(yè)
已閱讀5頁(yè),還剩120頁(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、Dr. 張德珍張德珍軟件測(cè)試與質(zhì)量保證軟件測(cè)試與質(zhì)量保證第第3章章 軟件測(cè)試的方法軟件測(cè)試的方法第2章回顧Zhu.K軟件缺陷是軟件質(zhì)量的對(duì)立面軟件缺陷是軟件質(zhì)量的對(duì)立面軟件缺陷軟件缺陷(Bug)是什么是什么驗(yàn)證和確認(rèn)驗(yàn)證和確認(rèn)軟件測(cè)試的分類(lèi)和階段軟件測(cè)試的分類(lèi)和階段- 單元、集成、系統(tǒng)(性能、適用性、兼容性)、驗(yàn)收測(cè)試軟件測(cè)試的工作范疇軟件測(cè)試的工作范疇- 策略、計(jì)劃、設(shè)計(jì)、執(zhí)行、報(bào)告、評(píng)估第第3章章 軟件軟件測(cè)試的方法測(cè)試的方法Zhu.K3.1 白盒測(cè)試方法白盒測(cè)試方法3.2 黑盒測(cè)試方法黑盒測(cè)試方法3.3 靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試3.4 主動(dòng)測(cè)試和被動(dòng)測(cè)試主動(dòng)測(cè)試和被動(dòng)測(cè)試3.

2、5 形式化測(cè)試方法形式化測(cè)試方法3.6 基于風(fēng)險(xiǎn)的測(cè)試基于風(fēng)險(xiǎn)的測(cè)試3.7 模糊測(cè)試方法模糊測(cè)試方法3.8 ALAC測(cè)試和隨機(jī)測(cè)試方法測(cè)試和隨機(jī)測(cè)試方法方法論和具體方法方法論和具體方法p 從方法論看,更多體現(xiàn)了一種哲學(xué)的思想,例如辯證統(tǒng)一的方法,在測(cè)試中有許多對(duì)立統(tǒng)一體,如靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試、白盒測(cè)試和黑盒測(cè)試、自動(dòng)化測(cè)試和手工測(cè)試等。p 軟件測(cè)試的方法論來(lái)源于軟件工程的方法論,例如有面向?qū)ο蟮拈_(kāi)發(fā)方法,就有面向?qū)ο蟮臏y(cè)試方法;有敏捷方法,就有和敏捷方法對(duì)應(yīng)的測(cè)試方法。Zhu.K黑盒子和白盒子黑盒子和白盒子功能測(cè)試功能測(cè)試數(shù)據(jù)驅(qū)動(dòng)測(cè)試數(shù)據(jù)驅(qū)動(dòng)測(cè)試 結(jié)構(gòu)測(cè)試結(jié)構(gòu)測(cè)試邏輯驅(qū)動(dòng)測(cè)試邏輯驅(qū)動(dòng)測(cè)試 客戶(hù)

3、需求事件驅(qū)動(dòng)輸入輸出Zhu.K靜態(tài)的和動(dòng)態(tài)的靜態(tài)的和動(dòng)態(tài)的主持人主持人作者記錄員列席人員內(nèi)審員內(nèi)審員技術(shù)專(zhuān)業(yè)人員用戶(hù)代表不正式正式互審 走讀 審查會(huì)議運(yùn)行程序運(yùn)行程序Zhu.K自動(dòng)測(cè)試和手工測(cè)試自動(dòng)測(cè)試和手工測(cè)試手工模擬用戶(hù)手工模擬用戶(hù)操作操作3.1白盒測(cè)試方法白盒測(cè)試方法Zhu.K白盒測(cè)試方法白盒測(cè)試方法n靜態(tài)白盒法靜態(tài)白盒法:是在不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過(guò)程。n侵入式法:侵入式法:在軟件測(cè)試過(guò)程中需要對(duì)軟件系統(tǒng)的代碼進(jìn)行修改的測(cè)試方法。n邏輯覆蓋邏輯覆蓋:以程序的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ),分為語(yǔ)句覆蓋、判定覆蓋、判定-條件覆蓋、條件組合覆蓋等n基

4、本路徑測(cè)試基本路徑測(cè)試:在程序控制流程的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例。Zhu.K3.1.1靜態(tài)白盒法靜態(tài)白盒法p靜態(tài)白盒測(cè)試是在不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過(guò)程。u 盡早發(fā)現(xiàn)軟件缺陷。 u 為黑盒測(cè)試員提供思路。Zhu.K靜態(tài)白盒測(cè)試法分類(lèi)靜態(tài)白盒測(cè)試法分類(lèi)n靜態(tài)白盒測(cè)試法一般根據(jù)審查的嚴(yán)格程度分為三種:n1、同行評(píng)審也稱(chēng)為伙伴審查,這種方法大體類(lèi)似于“如果你給我看你的,我也給你看我的”類(lèi)型的討論。同行評(píng)審常常僅在編寫(xiě)代碼或設(shè)計(jì)體系結(jié)構(gòu)的程序員,以及充當(dāng)審查者的其他一兩個(gè)程序員和測(cè)試員之間進(jìn)行。n2、走

5、查比同行評(píng)審更正規(guī)一些的方法,在走查中,編寫(xiě)代碼的程序員向其他程序員和測(cè)試員組成的小組作正式陳述。靜態(tài)白盒測(cè)試法分類(lèi)靜態(tài)白盒測(cè)試法分類(lèi)n3、評(píng)審評(píng)審是最正式的審查類(lèi)型,具有高度組織化,要求每一個(gè)參與者都接受訓(xùn)練。評(píng)審與同行評(píng)審和走查的不同之處在于陳述代碼的人陳述者或者宣讀者不是原來(lái)的程序員。召開(kāi)評(píng)審會(huì)議之后,要準(zhǔn)備一份書(shū)面報(bào)告,明確解決問(wèn)題所必需重做的工作。然后程序員進(jìn)行修改,由會(huì)議協(xié)調(diào)員驗(yàn)證修改結(jié)果。評(píng)審經(jīng)證實(shí)是從設(shè)計(jì)文檔和代碼中發(fā)現(xiàn)軟件缺陷非常有效的方法。通用代碼審查清單通用代碼審查清單通用代碼審查清單(問(wèn)題舉例問(wèn)題舉例):(1)數(shù)據(jù)引用錯(cuò)誤及問(wèn)題羅列 string sTemp; int

6、iC; foreach (DataGridViewRow DGV in csfDataGridView1.Rows) sTemp=“”; for (int i = 0; i = DGV.Cells.Count; ) sTemp= sTemp+DGV.Cellsi.Value.ToString(); iC=iC+1; MessageBox.Show(sTemp+” ”+iC.ToString(); 通用代碼審查清單v數(shù)據(jù)引用錯(cuò)誤是指使用未經(jīng)正確聲明和初始化的變量、常量、數(shù)組、字符串或記錄而導(dǎo)致的軟件缺陷。v是否引用了未初始化的變量?查找遺漏之處與查找錯(cuò)誤同等重要v數(shù)組和字符串的下標(biāo)是整數(shù)值嗎?下

7、標(biāo)總是在數(shù)組和字符串長(zhǎng)度范圍之內(nèi)嗎?v在檢索操作或者引用數(shù)組下標(biāo)時(shí)是否包含“丟掉一個(gè)”這樣的潛在錯(cuò)誤?v是否在應(yīng)該使用常量的地方使用了變量例如在檢查數(shù)組邊界時(shí)?v變量是否被賦予不同類(lèi)型的值?例如,無(wú)意中使代碼為整形變量賦予一個(gè)浮點(diǎn)數(shù)值?v為引用的指針?lè)峙鋬?nèi)存了嗎?v一個(gè)數(shù)據(jù)結(jié)構(gòu)是否在多個(gè)函數(shù)或者子程序中引用,在每一個(gè)引用中明確定義結(jié)構(gòu)了嗎?通用代碼審查清單通用代碼審查清單(問(wèn)題舉例問(wèn)題舉例):(1)數(shù)據(jù)引用錯(cuò)誤及問(wèn)題羅列n例:程序的功能為:求n以?xún)?nèi)的奇數(shù)之和及偶數(shù)和。#includemain() int n,i=1.0,sum,a,b; scanf(%d,&n); while(i 0) for

8、each (DataGridViewRow DGV in GV1.SelectedRows) /foreach (DataGridViewRow DGV2 in GV2.Rows) / / if (DGV2.Cells0.Value = DGV.Cells0.Value) / return; / /int a = GV2.Rows.Count; GV2.Rows.Add(); DataGridViewRow dgvr = GV2.RowsGV2.Rows.Count; for (int i = 0; i R) Q=Q-R; else R=R-Q; return Q; Zhu.K程序插樁測(cè)試程序

9、插樁測(cè)試(略略)根據(jù)程序繪制出其流程圖為了記錄改程序中語(yǔ)句的執(zhí)行次數(shù),使用插樁技術(shù)插入如下語(yǔ)句:C(i)=C(i)+1,i=1,2,6插樁之后的流程圖如右Zhu.K在程序入口處插入在程序入口處插入對(duì)計(jì)數(shù)器對(duì)計(jì)數(shù)器C(i)的初的初始化語(yǔ)句始化語(yǔ)句在程序出口處在程序出口處加入打印語(yǔ)句加入打印語(yǔ)句程序插樁測(cè)試程序插樁測(cè)試(略略)圖中虛線(xiàn)框中的內(nèi)容并不是源程序的內(nèi)容,而是為了記錄語(yǔ)句的執(zhí)行次數(shù)而插入的。虛線(xiàn)框中的程序就是為了完成計(jì)數(shù)。形式為 C(n)=C(n)+1 ; n = 1,2,3,n ; 該程序從入口開(kāi)始,到出口執(zhí)行結(jié)束。凡經(jīng)歷的計(jì)數(shù)語(yǔ)句都能記錄下該程序點(diǎn)的執(zhí)行次數(shù)。 如果在程序的入口處還插入

10、了對(duì)計(jì)數(shù)器C(i)初始化的語(yǔ)句,在出口處插入了打印這些計(jì)數(shù)器的語(yǔ)句,就構(gòu)成了完整的插樁程序。它就能記錄并輸出在各程序點(diǎn)上語(yǔ)句的實(shí)際執(zhí)行次數(shù)。Zhu.K程序插樁測(cè)試程序插樁測(cè)試(略略)Zhu.K右圖為插樁之后的程序,箭頭所指為插入的語(yǔ)句。源程序的語(yǔ)句已略去。程序插樁測(cè)試程序插樁測(cè)試設(shè)計(jì)插樁程序時(shí)需要考慮的問(wèn)題包括: 探測(cè)哪些信息; 在程序的什么部位設(shè)置探測(cè)點(diǎn); 需要設(shè)置多少個(gè)探測(cè)點(diǎn); 程序中特定部位插入某些用以判斷變量特性的語(yǔ)句。Zhu.K程序插樁測(cè)試程序插樁測(cè)試第1個(gè)問(wèn)題具體問(wèn)題具體分析。第2個(gè)問(wèn)題,在實(shí)際測(cè)試通常在下面一些部位設(shè)置探測(cè)點(diǎn): 程序塊的第1個(gè)可執(zhí)行語(yǔ)句之前 for,do ,do-

11、while,do until 等循環(huán)語(yǔ)句處。if, else if, else及end if等條件語(yǔ)句各分支處。輸入/輸出語(yǔ)句之后。函數(shù)、過(guò)程、子程序調(diào)用語(yǔ)句之后。return語(yǔ)句之后goto語(yǔ)句之后Zhu.K程序插樁測(cè)試程序插樁測(cè)試第3個(gè)問(wèn)題,需要考慮如何設(shè)置最少探測(cè)點(diǎn)方案。第4個(gè)問(wèn)題,是如何在程序中特定部位插入斷言語(yǔ)句。在應(yīng)用程序插樁技術(shù)時(shí),可在程序中特定部位插入某些用以判斷變量特性的語(yǔ)句,使得程序執(zhí)行中這些語(yǔ)句得以證實(shí)。Zhu.K程序插樁測(cè)試程序插樁測(cè)試插裝技術(shù)在軟件測(cè)試中主要有以下幾個(gè)應(yīng)用:v 覆蓋分析:程序插裝可以估計(jì)程序控制流圖中被覆蓋的程度,確定測(cè)試執(zhí)行的充分性,從而設(shè)計(jì)更好的測(cè)

12、試用例,提高測(cè)試覆蓋率。v 監(jiān)控在程序的特定位置設(shè)立插裝點(diǎn),插入用于記錄動(dòng)態(tài)特性的語(yǔ)句,用來(lái)監(jiān)控程序運(yùn)行時(shí)的某些特性,從而排除軟件故障。v 查找數(shù)據(jù)流異常程序插裝可以記錄在程序執(zhí)行中某些變量值的變化情況和變化范圍。掌握了數(shù)據(jù)變量的取值狀況,就能準(zhǔn)確地判斷是否發(fā)生數(shù)據(jù)流異常。雖然數(shù)據(jù)流異??梢杂渺o態(tài)分析器來(lái)發(fā)現(xiàn),但是使用插裝技術(shù)可以更經(jīng)濟(jì)更簡(jiǎn)便,畢竟所有信息的獲取是隨著測(cè)試過(guò)程附帶得到的。Zhu.K斷言測(cè)試斷言測(cè)試v斷言測(cè)試用于檢查在程序運(yùn)行過(guò)程出現(xiàn)的一些本“不應(yīng)該”發(fā)生的情況。也就是在一個(gè)應(yīng)該正確的地方,加一條判斷來(lái)驗(yàn)證程序運(yùn)行時(shí),它是否真正如當(dāng)初預(yù)料的那樣,具有預(yù)期的正確性。 v斷言測(cè)試就是

13、在程序中插入斷言,插入斷言的根本目的是用于幫助程序的調(diào)試與排錯(cuò),因此本質(zhì)上它是屬于測(cè)試代碼,是一種特殊的插樁語(yǔ)句,而不是屬于真正的應(yīng)用程序模塊的一部分。 Zhu.K斷言測(cè)試斷言測(cè)試v例:Zhu.K缺陷種植測(cè)試缺陷種植測(cè)試缺陷種植測(cè)試是一種用來(lái)估計(jì)駐留在程序中的缺陷數(shù)量的技術(shù)。工作原理是向一個(gè)軟件中“種植”缺陷,然后運(yùn)行測(cè)試集,以檢查發(fā)現(xiàn)了多少個(gè)種植的缺陷,還有多少個(gè)種植的缺陷沒(méi)有被發(fā)現(xiàn),以及已經(jīng)發(fā)現(xiàn)了多少個(gè)新的非種植的缺陷。然后就可以預(yù)測(cè)殘留的缺陷數(shù)量。Zhu.K缺陷種植測(cè)試案例缺陷種植測(cè)試案例如果種植了100個(gè)種子缺陷,而在測(cè)試中只找到75個(gè)種植的缺陷,那么種子發(fā)現(xiàn)率為75%。如果已經(jīng)發(fā)現(xiàn)了

14、450個(gè)真實(shí)的缺陷,那么可以通過(guò)種子發(fā)現(xiàn)率,推出這450個(gè)真實(shí)的缺陷只代表了現(xiàn)在存在所有真實(shí)缺陷的75%。那么,真實(shí)的缺陷總數(shù)估計(jì)為600個(gè)。所以還有150個(gè)真實(shí)的缺陷需要測(cè)試出來(lái)。Zhu.K白盒測(cè)試是根據(jù)程序內(nèi)部的結(jié)構(gòu)來(lái)測(cè)試程序。程序的內(nèi)部結(jié)構(gòu)可以用流程圖來(lái)表示。從流程圖上,可以看出,程序的內(nèi)部結(jié)構(gòu)包含以下這些元素:語(yǔ)句,判定,條件,循環(huán),路徑等,通過(guò)對(duì)這些元素的測(cè)試就形成了以下不同的白盒測(cè)試方法:v語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋(統(tǒng)稱(chēng)為邏輯覆蓋法)。v循環(huán)測(cè)試v基本路徑測(cè)試Zhu.K3.1.3語(yǔ)句覆蓋語(yǔ)句覆蓋p語(yǔ)句覆蓋法的基本思想是設(shè)計(jì)若干測(cè)試用例,運(yùn)

15、行被測(cè)程序,使程序中的每個(gè)可執(zhí)行語(yǔ)句至少被執(zhí)行一次Zhu.K3.1.3語(yǔ)句覆蓋語(yǔ)句覆蓋Zhu.Kdbas入口入口返回返回(y1)&(z=0)(y=2)|(x1)x = x / yx = x +1ceTTFF3.1.3語(yǔ)句覆蓋的測(cè)試用例語(yǔ)句覆蓋的測(cè)試用例Zhu.K語(yǔ)句覆蓋并不充分:語(yǔ)句覆蓋并不充分: 當(dāng)?shù)谝粋€(gè)判定中的當(dāng)?shù)谝粋€(gè)判定中的&寫(xiě)成寫(xiě)成|時(shí),對(duì)于時(shí),對(duì)于CASE1程序仍按程序仍按sacbed執(zhí)行。執(zhí)行。dbas入口入口返回返回(y1)&(z=0)(y=2)|(x1)x = x / yx = x +1ce3.1.4判定覆蓋判定覆蓋p判定覆蓋法的基本思想是設(shè)計(jì)若干用例,運(yùn)行被測(cè)程序,使得程序中

16、每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿(mǎn)足。p一個(gè)判定往往代表著程序的一個(gè)分支, 所以判定覆蓋也被稱(chēng)為分支覆蓋。Zhu.K3.1.4判定覆蓋判定覆蓋Zhu.K判定判定覆蓋包含語(yǔ)句覆蓋,覆蓋包含語(yǔ)句覆蓋,判定覆蓋也不充分:判定覆蓋也不充分: 當(dāng)?shù)诋?dāng)?shù)?個(gè)判定中的個(gè)判定中的x1寫(xiě)成寫(xiě)成x1)&(z=0)(y=2)|(x1)x = x / yx = x +1ce3.1.5條件覆蓋條件覆蓋p條件覆蓋的基本思想是設(shè)計(jì)若干測(cè)試用例,執(zhí)行被測(cè)程序以后,要使每個(gè)判斷中每個(gè)條件的可能取值至少滿(mǎn)足一次。Zhu.K3.1.5條件覆蓋條件覆蓋目標(biāo)目標(biāo): 保證測(cè)試到每個(gè)邏輯條件取值為保證測(cè)試到每個(gè)

17、邏輯條件取值為 true 和和 false簡(jiǎn)單條件簡(jiǎn)單條件:(a rel-op b) where rel-op= (和NOT連用), 即 ab; NOT(ab)組合條件組合條件: 由 AND, OR連接的多個(gè)簡(jiǎn)單條件,即(ab) AND (c(a+b+c)測(cè)試發(fā)現(xiàn)的錯(cuò)誤測(cè)試發(fā)現(xiàn)的錯(cuò)誤:布爾操作符 關(guān)系操作符布爾變量 算術(shù)表達(dá)式布爾括弧Zhu.KZhu.Kv對(duì)判定1:(y1)&(z=0) 條件 y1 取真、假分別記為 T1 ,-T1 條件 z=0 取真、假分別記為 T2 ,-T2v判定2:(y=2)|(x1) 條件 y=2取真、假分別記為 T3 ,-T3 條件 x1 取真、假分別記為 T4 ,-

18、T4條件覆蓋并不能包含條件覆蓋并不能包含判判定定覆蓋覆蓋,對(duì)于下述測(cè)試用對(duì)于下述測(cè)試用例,分支例,分支bd并未出現(xiàn)。并未出現(xiàn)。3.1.6判定判定/條件覆蓋條件覆蓋p判定-條件覆蓋是判定和條件覆蓋設(shè)計(jì)方法的交集,即設(shè)計(jì)足夠的測(cè)試用例,使得判斷條件中的所有條件可能取值至少執(zhí)行一次,同時(shí),所有判斷的可能結(jié)果至少執(zhí)行一次Zhu.KZhu.K判定判定/條件覆蓋的測(cè)試用例條件覆蓋的測(cè)試用例v對(duì)判定對(duì)判定1:(y1)&(z=0) 條件條件 y1 取真、假分別記為取真、假分別記為 T1 ,-T1 條件條件 z=0 取真、假分別記為取真、假分別記為 T2 ,-T2v判定判定2:(y=2)|(x1) 條件條件 y

19、=2取真、假分別記為取真、假分別記為 T3 ,-T3 條件條件 x1 取真、假分別記為取真、假分別記為 T4 ,-T4判定判定/條件條件覆蓋同時(shí)包含覆蓋同時(shí)包含判定判定覆蓋覆蓋,和條件覆蓋。和條件覆蓋。3.1.7條件組合測(cè)試條件組合測(cè)試p條件組合覆蓋的基本思想是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能至少出現(xiàn)一次,并且每個(gè)判斷本身的判定結(jié)果也至少出現(xiàn)一次。p它與條件覆蓋的差別是它不是簡(jiǎn)單地要求每個(gè)條件都出現(xiàn)“真”與“假”兩種結(jié)果,而是要求讓這些結(jié)果的所有可能組合都至少出現(xiàn)一次所有可能組合都至少出現(xiàn)一次Zhu.K條件組合覆蓋的測(cè)試用例條件組合覆蓋的測(cè)試用例條件組合覆蓋條件組合覆蓋包含包含

20、前述前述4種覆蓋。種覆蓋。邏輯覆蓋法各覆蓋標(biāo)準(zhǔn)的包含關(guān)系邏輯覆蓋法各覆蓋標(biāo)準(zhǔn)的包含關(guān)系Zhu.K組合覆蓋判斷/條件覆蓋判斷覆蓋條件覆蓋語(yǔ)句覆蓋3.1.8路徑覆蓋路徑覆蓋p顧名思義,路徑覆蓋就是設(shè)計(jì)所有的測(cè)試用例,來(lái)覆蓋程序中的所有可能的執(zhí)行路徑。Zhu.KZhu.K路徑覆蓋的測(cè)試用例路徑覆蓋的測(cè)試用例路徑覆蓋實(shí)際上考慮了程序中各種判定結(jié)果的所有可能路徑覆蓋實(shí)際上考慮了程序中各種判定結(jié)果的所有可能組合,但它并未考慮判定中的條件組合。因此,雖然說(shuō)組合,但它并未考慮判定中的條件組合。因此,雖然說(shuō)路徑覆蓋是一種非常強(qiáng)的覆蓋度量標(biāo)準(zhǔn),但并不能代替路徑覆蓋是一種非常強(qiáng)的覆蓋度量標(biāo)準(zhǔn),但并不能代替條件組合覆

21、蓋。條件組合覆蓋。課堂練習(xí)課堂練習(xí)1void DoWork (int x,int y,int z) int k=0,j=0; if ( (x3)&(z5) ) j=x*y+10; /語(yǔ)句塊語(yǔ)句塊2 j=j%3; /語(yǔ)句塊語(yǔ)句塊3對(duì)上述程序試用邏輯覆蓋法設(shè)計(jì)測(cè)試用例。對(duì)上述程序試用邏輯覆蓋法設(shè)計(jì)測(cè)試用例。畫(huà)出流程圖畫(huà)出流程圖X3 & z5執(zhí)行語(yǔ)句塊執(zhí)行語(yǔ)句塊3FFTTabdce(1)語(yǔ)句覆蓋測(cè)試用例語(yǔ)句覆蓋測(cè)試用例n測(cè)試用例輸入為: x=4、y=5、z=5 n程序執(zhí)行的路徑是:abdX3 & z5執(zhí)行語(yǔ)句塊執(zhí)行語(yǔ)句塊3FFTTabdce(2)判定覆蓋測(cè)試用例判定覆蓋測(cè)試用例n要實(shí)現(xiàn)DoWork函

22、數(shù)的判定覆蓋,需要設(shè)計(jì)兩個(gè)測(cè)試用例:測(cè)試用例的輸入為: x=4、y=5、z=5; x=2、y=5、z=5程序執(zhí)行的路徑分別是:abd;aceX3 & z5執(zhí)行語(yǔ)句塊執(zhí)行語(yǔ)句塊3FFTTabdce(3)條件覆蓋測(cè)試用例條件覆蓋測(cè)試用例1對(duì)DoWork函數(shù)的各個(gè)判定的各種條件取值加以標(biāo)記。對(duì)于第一個(gè)判定( (x3)&(z3 取真值記為T(mén)1,取假值記為-T1 條件z5) ): 條件x=4 取真值記為T(mén)3,取假值記為-T3 條件y5 取真值記為T(mén)4,取假值記為-T4(3)條件覆蓋測(cè)試用例條件覆蓋測(cè)試用例2對(duì)DoWork函數(shù)的各個(gè)判定的各種條件取值加以標(biāo)記。對(duì)于第一個(gè)判定( (x3)&(z3 取真值記為

23、T1,取假值記為-T1 條件z5) ): 條件x=4 取真值記為T(mén)3,取假值記為-T3 條件y5 取真值記為T(mén)4,取假值記為-T4(4)判定判定/條件覆蓋測(cè)試用例條件覆蓋測(cè)試用例X3 & z5執(zhí)行語(yǔ)句塊執(zhí)行語(yǔ)句塊3FFTTabdce(5)條件組合覆蓋測(cè)試用例條件組合覆蓋測(cè)試用例組合覆蓋的目的是要使設(shè)計(jì)的測(cè)試用例能覆蓋每一個(gè)判定的所有可能的條件取值組合。對(duì)DoWork函數(shù)中的各個(gè)判定的條件取值組合加以標(biāo)記: 1、x3, z3, z=10 記做T1 -T2,第一個(gè)判定的取假分支 3、x=3, z10 記做-T1 T2,第一個(gè)判定的取假分支 4、x=10 記做-T1 -T2,第一個(gè)判定的取假分支 5

24、、x=4, y5 記做T3 T4,第二個(gè)判定的取真分支 6、x=4, y5 記做-T3 T4,第二個(gè)判定的取真分支 8、x!=4, y3 & z5執(zhí)行語(yǔ)句塊執(zhí)行語(yǔ)句塊3FFTTabdce課堂練習(xí)課堂練習(xí) 2(1)語(yǔ)句覆蓋測(cè)試用例語(yǔ)句覆蓋測(cè)試用例(2)判定覆蓋測(cè)試用例判定覆蓋測(cè)試用例(3)條件覆蓋測(cè)試用例條件覆蓋測(cè)試用例(4)判定判定/條件覆蓋測(cè)試用例條件覆蓋測(cè)試用例(5)條件組合覆蓋測(cè)試用例條件組合覆蓋測(cè)試用例(6)路徑覆蓋測(cè)試用例路徑覆蓋測(cè)試用例3.1.9 基本路徑測(cè)試基本路徑測(cè)試Zhu.Kv完成路徑測(cè)試的理想情況是做到路徑覆蓋,但對(duì)于復(fù)雜性大的程序要做到所有路徑覆蓋(測(cè)試所有可執(zhí)行路徑)是

25、不可能的。v在不能做到所有路徑覆蓋的前提下,如果某一程序的每一個(gè)獨(dú)立路徑都被測(cè)試過(guò),那么可以認(rèn)為程序中的每個(gè)語(yǔ)句都已經(jīng)檢驗(yàn)過(guò)了,即達(dá)到了語(yǔ)句覆蓋。這種測(cè)試方法就是通常所說(shuō)的基本路徑測(cè)試方法。 基本路徑測(cè)試并不是測(cè)試所有路徑的組合,僅僅保證每條基本路徑被執(zhí)行一次3.1.9 基本路徑測(cè)試基本路徑測(cè)試依據(jù)代碼繪制流程圖確定流程圖的圈復(fù)雜度(cyclomatic complexity )確定線(xiàn)性獨(dú)立路徑的基本集合( basis set )設(shè)計(jì)測(cè)試用例覆蓋每條基本路徑Zhu.K(1)控制流圖控制流圖v控制流圖(可簡(jiǎn)稱(chēng)流圖)是對(duì)程序流程圖進(jìn)行簡(jiǎn)化后得到的,它可以更加突出的表示程序控制流的結(jié)構(gòu)。v控制流圖中

26、包括兩種圖形符號(hào):節(jié)點(diǎn)和控制流線(xiàn)。節(jié)點(diǎn)由帶標(biāo)號(hào)的圓圈表示,可代表一個(gè)或多個(gè)語(yǔ)句、一個(gè)處理框序列和一個(gè)條件判定框??刂屏骶€(xiàn)由帶箭頭的弧或線(xiàn)表示,可稱(chēng)為邊。它代表程序中的控制流。常見(jiàn)結(jié)構(gòu)的流程圖與控制流圖常見(jiàn)結(jié)構(gòu)的流程圖與控制流圖控制流圖實(shí)例控制流圖實(shí)例其中,包含條件的節(jié)點(diǎn)被稱(chēng)為判定節(jié)點(diǎn)判定節(jié)點(diǎn)(也叫謂詞節(jié)點(diǎn)),由判定節(jié)點(diǎn)發(fā)出的邊必須終止于某一個(gè)節(jié)點(diǎn),由邊和節(jié)點(diǎn)所限定的范圍被稱(chēng)為區(qū)域區(qū)域5節(jié)點(diǎn)邊區(qū)域2如何根據(jù)流程圖得到控制流圖?如何根據(jù)流程圖得到控制流圖? 136258(a)程序流程圖)程序流程圖(b)控制流圖)控制流圖25836如何根據(jù)流程圖得到控制流圖?(續(xù))如何根據(jù)

27、流程圖得到控制流圖?(續(xù)) (a) (b)關(guān)于復(fù)合條件的處理關(guān)于復(fù)合條件的處理n如何畫(huà)復(fù)合條件的控制流圖 ?如何由源程序直接得到控制流圖?如何由源程序直接得到控制流圖?1main ()23 int num1=0, num2=0, score=100;4 int i;5 char str;6 scanf (“%d, %cn”, &i, &str);7 while (i 0 )n5 n6 If ( iType=0 )n7x=y+2;break;n8 elsen9 If ( iType=1 )n10 x=y+10;n11 elsen12 y=x+20;n13 n14 printf(“x=%d,y=%

28、d”,x,y);基本路徑測(cè)試案例基本路徑測(cè)試案例1(續(xù))(續(xù))v畫(huà)出控制流圖: 467910121314void Sort ( int iRecordNum, int iType )1 2 int x=0;3 int y=0;4 while ( iRecordNum- 0 )5 6 If ( iType=0 )7x=y+2;break;8 else9 If ( iType=1 )10 x=y+10;11 else12 y=x+20;13 14 printf(“x=%d,y=%d”,x,y);基本路徑測(cè)試案例基本路徑測(cè)試案例1(續(xù))(續(xù))計(jì)算環(huán)形復(fù)雜度: 10(條邊)- 8(個(gè)節(jié)點(diǎn))+ 2 =

29、4導(dǎo)出獨(dú)立路徑(用語(yǔ)句編號(hào)表示) 路徑1:414 路徑2:46714 路徑3:46910134 路徑4:46912134注:“”表示后面剩下的路徑是可以選擇的。原因在于存在循環(huán)結(jié)構(gòu)。467910121314基本路徑測(cè)試案例基本路徑測(cè)試案例1 (續(xù))(續(xù))設(shè)計(jì)測(cè)試用例:設(shè)計(jì)測(cè)試用例:案例案例2下例程序流程圖描述了最多輸入50個(gè)值(以1作為輸入結(jié)束標(biāo)志),計(jì)算其中有效的學(xué)生分?jǐn)?shù)的個(gè)數(shù)、總分?jǐn)?shù)和平均值。開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和678910111

30、2123456789111012R1R2R3R4R5R6開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和6789101112步驟1:導(dǎo)出程序的流圖。步驟2:確定環(huán)形復(fù)雜性度量V(G):1)V(G)= 6 (個(gè)區(qū)域)2)V(G)=EN+2=1612+2=6其中E為流圖中的邊數(shù),N為結(jié)點(diǎn)數(shù);3)V(G)=P+1=5+1=6 其中P為謂詞結(jié)點(diǎn)的個(gè)數(shù)。在流圖中,結(jié)點(diǎn)2、3、5、6、9是謂詞結(jié)點(diǎn)。123456789111012R1R2R3R4R5R6步驟3:確定基本路徑集

31、合(即獨(dú)立路徑集合)。于是可確定6條獨(dú)立的路徑:路徑1:1-2-9-10-12路徑2:1-2-9-11-12路徑3:1-2-3-9-10-12路徑4:1-2-3-4-5-8-2路徑5:1-2-3-4-5-6-8-2路徑6:1-2-3-4-5-6-7-8-2注: “”表示后面剩下的路徑是可以選擇的。原因在于存在循環(huán)結(jié)構(gòu)。123456789111012R1R2R3R4R5R6步驟4:為每一條獨(dú)立路徑各設(shè)計(jì)一組測(cè)試用例,以便強(qiáng)迫程序沿著該路徑至少執(zhí)行一次。1)路徑1(1-2-9-10-12)的測(cè)試用例:不滿(mǎn)足條件2,滿(mǎn)足條件9 score1=60; score2=-1; 期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)

32、算出正確的分?jǐn)?shù)個(gè)數(shù) n 1 = 1 、 n 2 = 1 、 總 分s u m = 6 0 和 平 均 分average=60。n1:有效分?jǐn)?shù);n2:所有分?jǐn)?shù)。開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和67891011122)路徑2(1-2-9-11-12)的測(cè)試用例:不滿(mǎn)足條件2,不滿(mǎn)足條件9 score 1 = 1 ; 期望的結(jié)果:average = 1 ,其他量保持初值。開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 A

33、ND scorei0average=sum/n1average= 1 返回FFFTTT12和345和67891011123)路徑3(1-2-3-9-10-12)的測(cè)試用例:滿(mǎn)足條件2,不滿(mǎn)足條件3,滿(mǎn)足條件9輸入多于50個(gè)有效分?jǐn)?shù),即試圖處理51個(gè)分?jǐn)?shù)期望結(jié)果:n1=50、且算出正確的總分和平均分。開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和67891011124)路徑4(1-2-3-4-5-8-2)的測(cè)試用例:滿(mǎn)足條件2,滿(mǎn)足條件3,不滿(mǎn)足條件5 s c

34、o r e 1 = - 0 . 5 ;s c o r e 2 = 6 0 , score3=-1 ;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1=1、總分 s u m = 6 0 和 平 均 分average=60。開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和67891011125)路徑5(1-2-3-4-5-6-8-2)的測(cè)試用例:滿(mǎn)足條件2,滿(mǎn)足條件3,滿(mǎn)足條件5,不滿(mǎn)足條件6 score1=101 score2=60, score3=-1 ; 期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1=1、總分sum=60和平均分average=60。開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和67

溫馨提示

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