軟件測(cè)試白盒黑盒測(cè)試第2章(1)教材_第1頁(yè)
軟件測(cè)試白盒黑盒測(cè)試第2章(1)教材_第2頁(yè)
軟件測(cè)試白盒黑盒測(cè)試第2章(1)教材_第3頁(yè)
軟件測(cè)試白盒黑盒測(cè)試第2章(1)教材_第4頁(yè)
軟件測(cè)試白盒黑盒測(cè)試第2章(1)教材_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章第二章 軟件測(cè)試基礎(chǔ)軟件測(cè)試基礎(chǔ) 本章要點(diǎn)本章要點(diǎn) 白盒測(cè)試和黑盒測(cè)試的定義; 常見(jiàn)的白盒和黑盒測(cè)試設(shè)計(jì)技術(shù); 白盒測(cè)試與黑盒測(cè)試的區(qū)別; 測(cè)試計(jì)劃和測(cè)試報(bào)告的編制; 測(cè)試用例的定義和編制方法。 本章目標(biāo)本章目標(biāo) u理解并掌握白盒測(cè)試和黑盒測(cè)試,以及二者的優(yōu)缺點(diǎn)和各自的應(yīng)用范圍;u能夠熟練使用幾種常見(jiàn)測(cè)試用例設(shè)計(jì)技術(shù);u了解測(cè)試計(jì)劃和測(cè)試文檔的作用,以及應(yīng)該包含的內(nèi)容和制定方法;u了解測(cè)試報(bào)告的基本內(nèi)容,以及測(cè)試用例的基本內(nèi)容和編制方法。 2.12.1用于測(cè)試的離散數(shù)學(xué)和圖論基礎(chǔ)用于測(cè)試的離散數(shù)學(xué)和圖論基礎(chǔ) 一般而言,在功能性測(cè)試中,通常要用到離散數(shù)學(xué)知識(shí),而在結(jié)構(gòu)性測(cè)試領(lǐng)域中,則要用到

2、一些關(guān)于圖論的知識(shí)。 2.1.1 2.1.1集合論集合論 集合論可分為:自然和不言自明兩種。自然的集合論把集合看作是基本術(shù)語(yǔ),我們把集合看作一個(gè)單位,或一個(gè)整體引用多個(gè)事物。 集合的表示法有以下兩種: 1、將集合所有元素一一列出的表示法叫做“枚舉法”,但有時(shí)也可以只列出一部分元素。 M1=1月,2月,3月,4月 2、用一個(gè)集合所具有的共同性質(zhì)來(lái)刻畫(huà)這個(gè)集合。 N=t:t是等邊三角形 集合的劃分: 劃分的含義就是將一個(gè)整體分成小塊,使得所有事物都在某個(gè)小塊中,不會(huì)遺漏。劃分的定義: 給定集合B,以及B的一組子集A1,A2,A3,An,這些子集是B的一個(gè)劃分,當(dāng)且僅當(dāng)A1A2 An=B, 且 ij

3、=AiAj= 劃分的概念對(duì)于測(cè)試人員非常重要,在測(cè)試中往往一方面要保證B的所有元素都在某個(gè)子集中,另一方面要保證任意一個(gè)元素都不會(huì)同時(shí)出現(xiàn)在兩個(gè)子集中。 有效的劃分可以保證功能測(cè)試時(shí)的完備性與無(wú)冗余性。防止有些內(nèi)容沒(méi)有被測(cè)試,而另一些內(nèi)容被測(cè)試多遍的情況。 功能性測(cè)試的主要困難之一,就是難以找到合適的劃分。 2.1.22.1.2函數(shù)函數(shù) 在數(shù)學(xué)領(lǐng)域函數(shù)是一種關(guān)系,這種關(guān)系使集合里的每一個(gè)元素對(duì)應(yīng)到另一個(gè)集合里的唯一元素。函數(shù)是軟件測(cè)試的核心概念,所有功能性測(cè)試的基礎(chǔ)都是函數(shù)。 函數(shù)是將唯一的輸出值賦予每一輸入的“法則”。函數(shù)最重要的性質(zhì)是其決定性,同一輸入總對(duì)應(yīng)同一輸出(反之未必成立)??梢詫?/p>

4、函數(shù)理解成“機(jī)器”或者“黑盒”。 2.1.3 2.1.3關(guān)系關(guān)系 通俗的講,關(guān)系就是客觀世界一定范圍的對(duì)象之間的某種特定聯(lián)系。 關(guān)系關(guān)系表示事物之間的某種聯(lián)系,二元關(guān)系表示兩個(gè)事物之間的關(guān)系,如果把這兩個(gè)事物分別放在一邊,如果某兩個(gè)元素有關(guān)系,那么就在它們之間畫(huà)一條有向線,用這種方式表示關(guān)系,稱作關(guān)系圖。 2.1.42.1.4命題邏輯命題邏輯 凡是能分辨其真假的語(yǔ)句都叫做命題。命題邏輯有著和集合論相似的操作,表達(dá)式和標(biāo)識(shí)。命題的真值只有兩種,T代表真,而F代表假。 2.1.52.1.5概率論概率論 概率是隨機(jī)事件發(fā)生的可能性的數(shù)量指標(biāo)。 在獨(dú)立隨機(jī)事件中,如果某一事件在全部事件中出現(xiàn)的頻率,在

5、更大的范圍內(nèi)比較明顯的穩(wěn)定在某一固定常數(shù)附近。就可以認(rèn)為這個(gè)事件發(fā)生的概率為這個(gè)常數(shù)。對(duì)于任何事件的概率值一定介于 0和 1之間。 2.1.6 2.1.6用于測(cè)試的圖用于測(cè)試的圖 圖(又叫做線性圖)是一種由兩種集合定義的抽象數(shù)據(jù)結(jié)構(gòu),即一個(gè)節(jié)點(diǎn)集合和一個(gè)構(gòu)成節(jié)點(diǎn)之間連接的集合。 圖中節(jié)點(diǎn)的度節(jié)點(diǎn)的度是以該節(jié)點(diǎn)作為端點(diǎn)的邊的條數(shù)。 在本節(jié)中將介紹的兩種圖: 程序圖 有限狀態(tài)機(jī) 1、程序圖 程序圖定義:節(jié)點(diǎn)要么是整個(gè)語(yǔ)句,要么是語(yǔ)句的一部分,邊表示控制流(從節(jié)點(diǎn)i到節(jié)點(diǎn)j有一條邊,當(dāng)且僅當(dāng)對(duì)應(yīng)節(jié)點(diǎn)j的語(yǔ)句或語(yǔ)句的一部分,可以立即在節(jié)點(diǎn)i對(duì)應(yīng)的語(yǔ)句或語(yǔ)句的一部分之后執(zhí)行)。 程序的有向圖公式化能夠非

6、常準(zhǔn)確地描述基本結(jié)構(gòu)化程序設(shè)計(jì)的構(gòu)造,例如:串行、選擇和循環(huán)等可以用有向圖表示。串行If-Then-ElseIf-Then條件前測(cè)試環(huán)路后測(cè)試環(huán)路圖2-1 結(jié)構(gòu)化程序設(shè)計(jì)構(gòu)造的有向圖 2、有限狀態(tài)機(jī) 有限狀態(tài)機(jī)是需求規(guī)格說(shuō)明的一種標(biāo)準(zhǔn)的表示方法。有限狀態(tài)機(jī)是一種有向圖,其中狀態(tài)是節(jié)點(diǎn),轉(zhuǎn)移是邊。 圖2-2是一個(gè)簡(jiǎn)單的自動(dòng)柜員機(jī)(SATM)系統(tǒng)。該圖描述了用于個(gè)人標(biāo)識(shí)編號(hào)PIN嘗試部分的有限狀態(tài)機(jī)。這種機(jī)器包含5 個(gè)狀態(tài)(空閑、等待第一次PIN嘗試等等)和8個(gè)用邊表示的轉(zhuǎn)移。轉(zhuǎn)移上的標(biāo)簽所遵循的規(guī)則是,“分子”是引起轉(zhuǎn)移的事件,“分母”是與該轉(zhuǎn)移關(guān)聯(lián)的行為??臻e等待第一次PIN輸入嘗試等待事務(wù)選

7、擇等待第三次PIN輸入嘗試等待第二次PIN輸入嘗試合法卡顯示屏幕S2正確PIN顯示屏幕S5不正確的PIN顯示屏幕S4非法卡顯示屏幕S1;退卡不正確的PIN顯示屏幕S3不正確的PIN顯示屏幕S3正確PIN顯示屏幕S5圖2-2 用于PIN嘗試的有限狀態(tài)機(jī) 車(chē)庫(kù)門(mén)有限狀態(tài)機(jī)假設(shè)由兩個(gè)按鈕來(lái)控制門(mén):一個(gè)稱為開(kāi)鈕而另一個(gè)稱為關(guān)鈕。當(dāng)門(mén)是在關(guān)閉狀態(tài),按住開(kāi)鈕會(huì)使得門(mén)進(jìn)入上升狀態(tài),于此期間在馬達(dá)控制之下,門(mén)將逐漸的開(kāi)啟。在門(mén)完全打開(kāi)之后,即進(jìn)入打開(kāi)狀態(tài)。再按住關(guān)鈕會(huì)使門(mén)進(jìn)入下降狀態(tài),于此期間門(mén)將逐漸的關(guān)閉。從狀態(tài)途中可以清楚的看出門(mén)不能立即地從打開(kāi)狀態(tài)至關(guān)閉狀態(tài),反過(guò)來(lái)亦如此。而且,也可能輪流的按開(kāi)鈕與關(guān)扭

8、,使門(mén)在上升與下降狀態(tài)之間轉(zhuǎn)變,使得門(mén)的動(dòng)作像玩偶一樣。最后,此模型說(shuō)明當(dāng)門(mén)是在關(guān)閉狀態(tài)時(shí)按關(guān)鈕或者門(mén)是在打開(kāi)狀態(tài)時(shí)按開(kāi)鈕,將不會(huì)引起任何狀態(tài)的改變,所以什么事情都不會(huì)發(fā)生。下降下降關(guān)狀態(tài)關(guān)狀態(tài)開(kāi)狀態(tài)開(kāi)狀態(tài)上升上升按開(kāi)鈕按開(kāi)鈕上升上升按開(kāi)鈕按開(kāi)鈕上升上升按開(kāi)鈕按開(kāi)鈕上升上升按關(guān)鈕按關(guān)鈕下降下降按關(guān)鈕按關(guān)鈕下降下降按關(guān)鈕按關(guān)鈕下降下降按關(guān)鈕按關(guān)鈕無(wú)動(dòng)作無(wú)動(dòng)作按開(kāi)鈕按開(kāi)鈕無(wú)動(dòng)作無(wú)動(dòng)作 有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換應(yīng)用程序有兩大類(lèi): 1. 一種是數(shù)據(jù)處理的程序,我們常常用算法來(lái)描述它,程序?qū)δ承┹斎霐?shù)據(jù)進(jìn)行預(yù)定的處理,以便得到某些輸出的數(shù)據(jù),程序目前的狀態(tài)可以用資料目前的狀態(tài)來(lái)描

9、述,例如:人事薪資系統(tǒng)、倉(cāng)儲(chǔ)物流系統(tǒng)等等; 有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換 2. 另外一類(lèi)是與外界環(huán)境互動(dòng)的系統(tǒng),例如:操作系統(tǒng)、文書(shū)處理系統(tǒng)、航空管制系統(tǒng)、交通管制系統(tǒng)、游戲等等,這一類(lèi)系統(tǒng)一般來(lái)說(shuō)沒(méi)有明確的輸入/輸出數(shù)據(jù),但是有很多與外界不預(yù)期的互動(dòng),通常系統(tǒng)響應(yīng)的方法與系統(tǒng)內(nèi)部的狀態(tài)有密切的關(guān)聯(lián),系統(tǒng)內(nèi)部通常有許多記錄狀態(tài)的變量。 有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換 針對(duì)這兩大類(lèi)的程序,通常描述它們的方法也不太一樣,對(duì)于前者,我們通常用控制流程圖或是數(shù)據(jù)流程圖來(lái)描述,對(duì)于后者則常用有限狀態(tài)機(jī)或狀態(tài)圖來(lái)描述。 流程圖中最重要的部份是 “處理過(guò)程 單元,程序由

10、幾個(gè)主要的處理單元組合而成,有限狀態(tài)機(jī)中最主要的是程序目前的狀態(tài),每一個(gè)狀態(tài)總結(jié)記錄程序由開(kāi)始到目前所有接到的輸入。 有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換 有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換 有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換 狀態(tài)圖明顯在架構(gòu)上比流程圖要簡(jiǎn)單,包容的模型也比較豐富,需做的假設(shè)比較少。另外,狀態(tài)圖比較重視事件/動(dòng)作的完成,比較不在意是哪一個(gè)程序完成的。流程圖則很在意動(dòng)作是如何完成的。 2.2 2.2白盒測(cè)試白盒測(cè)試 白盒測(cè)試是一種可視的測(cè)試軟件的方法,即它把測(cè)試對(duì)象看作一個(gè)透明的盒子,測(cè)試人員要了解程序結(jié)構(gòu)和處理過(guò)程,按照程序內(nèi)部邏輯測(cè)試

11、程序,檢查程序中的每條通路是否按照預(yù)定要求正確工作。白盒測(cè)試的過(guò)程如圖2-7所示: 2.2 2.2白盒測(cè)試白盒測(cè)試 源程序測(cè)試用例被測(cè)程序執(zhí)行路徑分析覆蓋情況分析圖2-7 白盒測(cè)試過(guò)程示意圖 白盒測(cè)試主要對(duì)程序進(jìn)行的檢查點(diǎn): ()保證一個(gè)模塊中的所有獨(dú)立執(zhí)行路徑至少測(cè)試一次; ()對(duì)所有邏輯判定取值“true”和“false”的兩種情況都至少測(cè)試一次; ()在循環(huán)邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體; ()測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。 在軟件測(cè)試領(lǐng)域,白盒測(cè)試可以用在三種測(cè)試類(lèi)型中: 1、單元測(cè)試 2、集成測(cè)試 3、回歸測(cè)試 2.2.12.2.1白盒測(cè)試與調(diào)試的異同白盒測(cè)試與調(diào)試的異同 1、從承擔(dān)的任務(wù)來(lái)

12、看,白盒測(cè)試同其他類(lèi)型測(cè)試一樣,它的任務(wù)是發(fā)現(xiàn)所開(kāi)發(fā)的項(xiàng)目中的缺陷;但是,調(diào)試不屬于測(cè)試,其任務(wù)是糾正軟件中的缺陷。 2、從最終的結(jié)果來(lái)看,白盒測(cè)試有預(yù)知的結(jié)果,不可預(yù)知的只是程序是否通過(guò)測(cè)試,并且成功測(cè)試的結(jié)果是發(fā)現(xiàn)錯(cuò)誤的癥狀,從而引起調(diào)試的進(jìn)行;而調(diào)試的結(jié)果是消除項(xiàng)目中的錯(cuò)誤。 3、從執(zhí)行的過(guò)程來(lái)看,測(cè)試是一個(gè)發(fā)現(xiàn)錯(cuò)誤、改正錯(cuò)誤、重新測(cè)試的過(guò)程;而調(diào)試是一個(gè)推理過(guò)程。 4、從準(zhǔn)備工作來(lái)看,測(cè)試從已知的條件開(kāi)始,使用預(yù)先定義的程序;調(diào)試一般是以不可知的內(nèi)部條件開(kāi)始,做統(tǒng)一性調(diào)試 。 5、從執(zhí)行的計(jì)劃性來(lái)看,測(cè)試是有計(jì)劃的并要進(jìn)行測(cè)試設(shè)計(jì);而調(diào)試則不受時(shí)間約束。 6、從執(zhí)行的人員來(lái)看,測(cè)試經(jīng)常

13、是由獨(dú)立的測(cè)試組在不了解軟件設(shè)計(jì)的條件下完成的,而調(diào)試必須由程序員來(lái)完成。 7、從所使用的工具來(lái)看,大多數(shù)白盒測(cè)試的執(zhí)行和設(shè)計(jì)可有工具支持,而調(diào)試程序員能利用的工具主要是調(diào)試器。 2.2.2 2.2.2白盒測(cè)試的用例設(shè)計(jì)白盒測(cè)試的用例設(shè)計(jì) 白盒測(cè)試用例設(shè)計(jì)技術(shù)就是研究如何用最少的測(cè)試用例最大限度地發(fā)現(xiàn)軟件中的錯(cuò)誤,目前主要有基本路徑測(cè)試、等價(jià)類(lèi)劃分/邊界值分析測(cè)試、覆蓋測(cè)試、循環(huán)測(cè)試、數(shù)據(jù)流測(cè)試、程序插樁測(cè)試、變異測(cè)試等等方法。 2.2.2 2.2.2白盒測(cè)試的用例設(shè)計(jì)白盒測(cè)試的用例設(shè)計(jì) 一、基本路徑測(cè)試 概念:基本路徑測(cè)試就是在程序控制流圖的基礎(chǔ)上,通過(guò)分析控制構(gòu)造的環(huán)形復(fù)雜性,導(dǎo)出基本可執(zhí)

14、行路徑集合,從而設(shè)計(jì)測(cè)試用例的方法。 設(shè)計(jì)出的測(cè)試用例要保證在測(cè)試中,程序的每一個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。 基本路徑測(cè)試 前提條件測(cè)試進(jìn)入的前提條件是在測(cè)試人員已經(jīng)對(duì)被測(cè)試對(duì)象有了一定的了解,基本上明確了被測(cè)試軟件的邏輯結(jié)構(gòu)。 測(cè)試過(guò)程過(guò)程是通過(guò)針對(duì)程序邏輯結(jié)構(gòu)設(shè)計(jì)和加載測(cè)試用例,驅(qū)動(dòng)程序執(zhí)行,以對(duì)程序路徑進(jìn)行測(cè)試。測(cè)試結(jié)果是分析實(shí)際的測(cè)試結(jié)果與預(yù)期的結(jié)果是否一致。 基本路徑測(cè)試包括以下4個(gè)步驟:1. 程序的控制流圖:描述程序控制流的一種圖示方法。2. 程序圈復(fù)雜度:從程序的環(huán)路復(fù)雜性可導(dǎo)出程序基本路徑集合中的獨(dú)立路徑條數(shù),這是確定程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次所必須的測(cè)試用例數(shù)目的上界。3

15、. 導(dǎo)出測(cè)試用例:根據(jù)圈復(fù)雜度和程序結(jié)構(gòu)設(shè)計(jì)用例數(shù)據(jù)輸入和預(yù)期結(jié)果。4. 準(zhǔn)備測(cè)試用例:確保基本路徑集中的每一條路徑的執(zhí)行。 控制流圖的符號(hào) 在介紹基本路徑方法之前,必須先介紹一種簡(jiǎn)單的控制流表示方法,即流圖。流圖是對(duì)待測(cè)試程序過(guò)程處理的一種表示。流圖使用下面的符號(hào)描述邏輯控制流,每一種結(jié)構(gòu)化構(gòu)成元素有一個(gè)相應(yīng)的流圖符號(hào)。順序結(jié)構(gòu)if 結(jié)構(gòu)Case 結(jié)構(gòu)while 結(jié)構(gòu)until 結(jié)構(gòu)控制流圖 流圖只有二種圖形符號(hào)圖中的每一個(gè)圓稱為流圖的結(jié)點(diǎn),代表一條或多條語(yǔ)句。流圖中的箭頭稱為邊或連接,代表控制流。 任何過(guò)程設(shè)計(jì)都要被翻譯成控制流圖。 控制流圖 在將程序流程圖簡(jiǎn)化成控制流圖時(shí),應(yīng)注意:在選擇

16、或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域,當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為一個(gè)區(qū)域??刂屏鲌D1762,38910114,5 76 231 8 4 511 910節(jié)點(diǎn)邊區(qū)域區(qū)域:由邊和解點(diǎn)封閉起來(lái)的區(qū)域計(jì)算區(qū)域:不要忘記區(qū)域外的部分待測(cè)試程序用流圖表示的待測(cè)試程序控制流圖如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符 (OR, AND, NAND, NOR) 連接的復(fù)合條件表達(dá)式,則需要改為一系列只有單條件的嵌套的判斷。例如: 1 if a or b 2 x 3 else 4 y對(duì)應(yīng)的邏輯為:獨(dú)立路徑獨(dú)立路徑:至少沿一條新的邊移動(dòng)的路徑路徑1:1-11路徑2:

17、1-2-3-4-5-10-1-11路徑3:1-2-3-6-8-9-10-1-11路徑4:1-2-3-6-7-9-10-1-111762,38910114,5對(duì)以上路徑的遍歷,就是至少一次地執(zhí)行了程序中的所有語(yǔ)句?;韭窂綔y(cè)試第一步:畫(huà)出控制流圖 流程圖用來(lái)描述程序控制結(jié)構(gòu)??蓪⒘鞒虉D映射到一個(gè)相應(yīng)的流圖(假設(shè)流程圖的菱形決定框中不包含復(fù)合條件)。在流圖中,每一個(gè)圓,稱為流圖的結(jié)點(diǎn),代表一個(gè)或多個(gè)語(yǔ)句。一個(gè)處理方框序列和一個(gè)菱形決測(cè)框可被映射為一個(gè)結(jié)點(diǎn),流圖中的箭頭,稱為邊或連接,代表控制流,類(lèi)似于流程圖中的箭頭。一條邊必須終止于一個(gè)結(jié)點(diǎn),即使該結(jié)點(diǎn)并不代表任何語(yǔ)句。由邊和結(jié)點(diǎn)限定的范圍稱為區(qū)域

18、。計(jì)算區(qū)域時(shí)應(yīng)包括圖外部的范圍。例例 用基本路徑測(cè)試法進(jìn)行測(cè)試用基本路徑測(cè)試法進(jìn)行測(cè)試 void void Sort(intSort(int iRecord,intiRecord,int iTypeiType) )1.1. 2.2. intint x=0; x=0;3.3. intint y=0; y=0;4.4. while ( while (iRecordiRecord- 0)- 0)5.5. 6.6. if(0= = if(0= =iTypeiType) )7.7. x=y+2; break; x=y+2; break;8.8. else else9.9. if (1= = if (1=

19、 =iTypeiType) )10.10.x=y+10;x=y+10;11.11. else else12.12. x=y+20;x=y+20;13.13. 14.14. 基本路徑測(cè)試 畫(huà)出其程序流程圖和對(duì)應(yīng)的控制流圖如下467810111314467148101113程序流程圖 控制流圖基本路徑測(cè)試 - 計(jì)算圈復(fù)雜度第二步:計(jì)算圈復(fù)雜度圈復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測(cè)度的軟件度量,將該度量用于計(jì)算程序的基本的獨(dú)立路徑數(shù)目。有以下三種方法計(jì)算圈復(fù)雜度:1. 流圖中區(qū)域的數(shù)量對(duì)應(yīng)于環(huán)型的復(fù)雜性;2. 給定流圖G的圈復(fù)雜度V(G),定義為V(G)=E-N+2,E是流圖中邊的數(shù)量,N是流圖中

20、結(jié)點(diǎn)的數(shù)量;3. 給定流圖G的圈復(fù)雜度V(G),定義為V(G)=P+1,P是流圖G中判定結(jié)點(diǎn)的數(shù)量。 基本路徑測(cè)試 - 計(jì)算圈復(fù)雜度對(duì)應(yīng)上面圖中的圈復(fù)雜度,計(jì)算如下:流圖中有四個(gè)區(qū)域;V(G)=10條邊-8結(jié)點(diǎn)+2=4;V(G)=3個(gè)判定結(jié)點(diǎn)+1=4。4671481011132134基本路徑測(cè)試 - 導(dǎo)出測(cè)試用例 第三步:導(dǎo)出測(cè)試用例根據(jù)上面的計(jì)算方法,可得出四個(gè)獨(dú)立的路徑。(一條獨(dú)立路徑是指,和其他的獨(dú)立路徑相比,至少引入一個(gè)新處理語(yǔ)句或一個(gè)新判斷的程序通路。V(G)值正好等于該程序的獨(dú)立路徑的條數(shù)。)路徑1:4-14路徑2:4-6-7-14路徑3:4-6-8-10-13-4-14路徑4:4

21、-6-8-11-13-4-14根據(jù)上面的獨(dú)立路徑,去設(shè)計(jì)輸入數(shù)據(jù),使程序分別執(zhí)行到上面四條路徑。4671481011132134基本路徑測(cè)試 - 準(zhǔn)備測(cè)試用例 第四步:準(zhǔn)備測(cè)試用例 為了確?;韭窂郊现械拿恳粭l路徑的執(zhí)行,根據(jù)判斷結(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測(cè)試到.基本路徑測(cè)試 - 準(zhǔn)備測(cè)試用例路徑1:4-14輸入數(shù)據(jù):iRecord0,或者取iRecord 0)5. 6. if(0= =iType)7. x=y+2; break;8. else9. if(1= =iType)10. x=y+10;11. else12. x=y+20;13. 14. 基本路徑測(cè)試再舉

22、例例:下例程序流程圖描述了最多輸入50個(gè)學(xué)生分?jǐn)?shù)(以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和6789101112123456789111012R1R2R3R4R5R6開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和6789101112步驟1:導(dǎo)出過(guò)程的流圖

23、。步驟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)?;韭窂綔y(cè)試再舉例123456789111012R1R2R3R4R5R6基本路徑測(cè)試再舉例步驟3:確定基本路徑集合(即獨(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

24、-8-2123456789111012R1R2R3R4R5R6步驟4:為每一條獨(dú)立路徑各設(shè)計(jì)一組測(cè)試用例,以便強(qiáng)迫程序沿著該路徑至少執(zhí)行一次。1)路徑1(1-2-9-10-12)的測(cè)試用例: scorek=有效分?jǐn)?shù)值,k i; scorei=1,2i50;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。開(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è)試用例: sco

25、re 1 = 1 ; 期望的結(jié)果:average = -1 ,其他量保持初值。3)路徑3(1-2-3-9-10-12)的測(cè)試用例: 輸入多于50個(gè)有效分?jǐn)?shù),即試圖處理51個(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è)試用例: scorei=有效分?jǐn)?shù),當(dāng)i50; scorek0, k i ;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算

26、出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。5)路徑5(1-2-3-4-5-6-8-2)的測(cè)試用例: scorei=有效分?jǐn)?shù),當(dāng)i100,k i ;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和67891011126)路徑6(1-2-3-4-5-6-7-8-2)的測(cè)試用例: scorei=有效分?jǐn)?shù), 當(dāng)i50;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總

27、分sum和平均分average。開(kāi)始 i =1,n1=n2=0,sum=0Score i -1 AND n20 AND scorei0average=sum/n1average= 1 返回FFFTTT12和345和6789101112基本路徑測(cè)試 必須注意,一些獨(dú)立的路徑,往往不是完全孤立的,有時(shí)它是程序正常的控制流的一部分,這時(shí),這些路徑的測(cè)試可以是另一條路徑測(cè)試的一部分。void void ReadNameReadName( ( CStringCString name) name) if (name = if (name = zhaozhao) )Operation(0);Operatio

28、n(0);elseelse if (name = if (name = qianqian) )Operation(1);Operation(1);elseelse if (name = sun)if (name = sun)Operation (2);Operation (2);elseelse if(nameif(name = = li li) )Operation (3);Operation (3);elseelse if (name = if (name = zhouzhou) )Operation (4);Operation (4);elseelseOperation (5);Oper

29、ation (5); return;return; 基本路徑法練習(xí)題基本路徑法練習(xí)題【問(wèn)題問(wèn)題1 1】請(qǐng)畫(huà)出以上代碼的請(qǐng)畫(huà)出以上代碼的流程框圖和控制流圖流程框圖和控制流圖(自由設(shè)計(jì)流程編號(hào))。(自由設(shè)計(jì)流程編號(hào))?!締?wèn)題問(wèn)題2 2】請(qǐng)根據(jù)公式計(jì)算上請(qǐng)根據(jù)公式計(jì)算上述控制流圖的圈復(fù)雜度述控制流圖的圈復(fù)雜度V(G)V(G)?!締?wèn)題問(wèn)題3 3】請(qǐng)給出路徑,并使請(qǐng)給出路徑,并使用基本路徑測(cè)試法設(shè)計(jì)用基本路徑測(cè)試法設(shè)計(jì)測(cè)試用例,使之滿足基測(cè)試用例,使之滿足基本路徑覆蓋要求。本路徑覆蓋要求。void void ReadNameReadName( ( CStringCString name) name) if (name = if (name = zhaozhao) )Operation(0);Operation(0);elseelse if (name = if (name = qianqian) )Operation(1);

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論