軟件工程ppt講課教案_第1頁
軟件工程ppt講課教案_第2頁
軟件工程ppt講課教案_第3頁
軟件工程ppt講課教案_第4頁
軟件工程ppt講課教案_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件工程PPT[本章目標(biāo)]理解并掌握白盒測試和黑盒測試,以及二者的優(yōu)缺點(diǎn)和各自的應(yīng)用范圍;能夠熟練使用幾種常見測試用例設(shè)計(jì)技術(shù);了解測試計(jì)劃和測試文檔的作用,以及應(yīng)該包含的內(nèi)容和制定方法;了解測試報(bào)告的基本內(nèi)容,以及測試用例的基本內(nèi)容和編制方法。

2.1用于測試的離散數(shù)學(xué)和圖論基礎(chǔ)一般而言,在功能性測試中,通常要用到離散數(shù)學(xué)知識,而在結(jié)構(gòu)性測試領(lǐng)域中,則要用到一些關(guān)于圖論的知識。2.1.1集合論集合論可分為:自然和不言自明兩種。自然的集合論把集合看作是基本術(shù)語,我們把集合看作一個(gè)單位,或一個(gè)整體引用多個(gè)事物。

集合的表示法有以下兩種:1、將集合所有元素一一列出的表示法叫做“枚舉法”,但有時(shí)也可以只列出一部分元素。

M1={1月,2月,3月,4月‥‥‥}2、用一個(gè)集合所具有的共同性質(zhì)來刻畫這個(gè)集合。N={t:t是等邊三角形}集合的劃分:劃分的含義就是將一個(gè)整體分成小塊,使得所有事物都在某個(gè)小塊中,不會遺漏。劃分的定義:給定集合B,以及B的一組子集A1,A2,A3,‥‥,An,這些子集是B的一個(gè)劃分,當(dāng)且僅當(dāng)A1∪A2∪‥‥∪An=B,且i≠j=>Ai∩Aj=Ф

劃分的概念對于測試人員非常重要,在測試中往往一方面要保證B的所有元素都在某個(gè)子集中,另一方面要保證任意一個(gè)元素都不會同時(shí)出現(xiàn)在兩個(gè)子集中。有效的劃分可以保證功能測試時(shí)的完備性與無冗余性。防止有些內(nèi)容沒有被測試,而另一些內(nèi)容被測試多遍的情況。功能性測試的主要困難之一,就是難以找到合適的劃分。

2.1.2函數(shù)在數(shù)學(xué)領(lǐng)域函數(shù)是一種關(guān)系,這種關(guān)系使集合里的每一個(gè)元素對應(yīng)到另一個(gè)集合里的唯一元素。函數(shù)是軟件測試的核心概念,所有功能性測試的基礎(chǔ)都是函數(shù)。函數(shù)是將唯一的輸出值賦予每一輸入的“法則”。函數(shù)最重要的性質(zhì)是其決定性,同一輸入總對應(yīng)同一輸出(反之未必成立)??梢詫⒑瘮?shù)理解成“機(jī)器”或者“黑盒”。

2.1.3關(guān)系通俗的講,關(guān)系就是客觀世界一定范圍的對象之間的某種特定聯(lián)系。關(guān)系表示事物之間的某種聯(lián)系,二元關(guān)系表示兩個(gè)事物之間的關(guān)系,如果把這兩個(gè)事物分別放在一邊,如果某兩個(gè)元素有關(guān)系,那么就在它們之間畫一條有向線,用這種方式表示關(guān)系,稱作關(guān)系圖。2.1.4命題邏輯凡是能分辨其真假的語句都叫做命題。命題邏輯有著和集合論相似的操作,表達(dá)式和標(biāo)識。命題的真值只有兩種,T代表真,而F代表假。

2.1.5概率論

概率是隨機(jī)事件發(fā)生的可能性的數(shù)量指標(biāo)。在獨(dú)立隨機(jī)事件中,如果某一事件在全部事件中出現(xiàn)的頻率,在更大的范圍內(nèi)比較明顯的穩(wěn)定在某一固定常數(shù)附近。就可以認(rèn)為這個(gè)事件發(fā)生的概率為這個(gè)常數(shù)。對于任何事件的概率值一定介于0和1之間。2.1.6用于測試的圖

圖(又叫做線性圖)是一種由兩種集合定義的抽象數(shù)據(jù)結(jié)構(gòu),即一個(gè)節(jié)點(diǎn)集合和一個(gè)構(gòu)成節(jié)點(diǎn)之間連接的集合。圖中節(jié)點(diǎn)的度是以該節(jié)點(diǎn)作為端點(diǎn)的邊的條數(shù)。在本節(jié)中將介紹的兩種圖:程序圖有限狀態(tài)機(jī)

1、程序圖

程序圖定義:節(jié)點(diǎn)要么是整個(gè)語句,要么是語句的一部分,邊表示控制流(從節(jié)點(diǎn)i到節(jié)點(diǎn)j有一條邊,當(dāng)且僅當(dāng)對應(yīng)節(jié)點(diǎn)j的語句或語句的一部分,可以立即在節(jié)點(diǎn)i對應(yīng)的語句或語句的一部分之后執(zhí)行)。程序的有向圖公式化能夠非常準(zhǔn)確地描述基本結(jié)構(gòu)化程序設(shè)計(jì)的構(gòu)造,例如:串行、選擇和循環(huán)等可以用有向圖表示。圖2-1結(jié)構(gòu)化程序設(shè)計(jì)構(gòu)造的有向圖2、有限狀態(tài)機(jī)有限狀態(tài)機(jī)是需求規(guī)格說明的一種標(biāo)準(zhǔn)的表示方法。有限狀態(tài)機(jī)是一種有向圖,其中狀態(tài)是節(jié)點(diǎn),轉(zhuǎn)移是邊。圖2-2是一個(gè)簡單的自動柜員機(jī)(SATM)系統(tǒng)。該圖描述了用于個(gè)人標(biā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)的行為。圖2-2用于PIN嘗試的有限狀態(tài)機(jī)車庫門有限狀態(tài)機(jī)假設(shè)由兩個(gè)按鈕來控制門:一個(gè)稱為開鈕而另一個(gè)稱為關(guān)鈕。當(dāng)門是在關(guān)閉狀態(tài),按住開鈕會使得門進(jìn)入上升狀態(tài),于此期間在馬達(dá)控制之下,門將逐漸的開啟。在門完全打開之后,即進(jìn)入打開狀態(tài)。再按住關(guān)鈕會使門進(jìn)入下降狀態(tài),于此期間門將逐漸的關(guān)閉。從狀態(tài)途中可以清楚的看出門不能立即地從打開狀態(tài)至關(guān)閉狀態(tài),反過來亦如此。而且,也可能輪流的按開鈕與關(guān)扭,使門在上升與下降狀態(tài)之間轉(zhuǎn)變,使得門的動作像玩偶一樣。最后,此模型說明當(dāng)門是在關(guān)閉狀態(tài)時(shí)按關(guān)鈕或者門是在打開狀態(tài)時(shí)按開鈕,將不會引起任何狀態(tài)的改變,所以什么事情都不會發(fā)生。下降關(guān)狀態(tài)開狀態(tài)上升按開鈕上升按開鈕上升按開鈕上升按關(guān)鈕下降按關(guān)鈕下降按關(guān)鈕下降按關(guān)鈕無動作按開鈕無動作

有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換應(yīng)用程序有兩大類:

1.一種是數(shù)據(jù)處理的程序,我們常常用算法來描述它,程序?qū)δ承┹斎霐?shù)據(jù)進(jìn)行預(yù)定的處理,以便得到某些輸出的數(shù)據(jù),程序目前的狀態(tài)可以用資料目前的狀態(tài)來描述,例如:人事薪資系統(tǒng)、倉儲物流系統(tǒng)等等;

有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換2.另外一類是與外界環(huán)境互動的系統(tǒng),例如:操作系統(tǒng)、文書處理系統(tǒng)、航空管制系統(tǒng)、交通管制系統(tǒng)、游戲等等,這一類系統(tǒng)一般來說沒有明確的輸入/輸出數(shù)據(jù),但是有很多與外界不預(yù)期的互動,通常系統(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)換

針對這兩大類的程序,通常描述它們的方法也不太一樣,對于前者,我們通常用控制流程圖或是數(shù)據(jù)流程圖來描述,對于后者則常用有限狀態(tài)機(jī)或狀態(tài)圖來描述。流程圖中最重要的部份是“處理過程"單元,程序由幾個(gè)主要的處理單元組合而成,有限狀態(tài)機(jī)中最主要的是程序目前的狀態(tài),每一個(gè)狀態(tài)總結(jié)記錄程序由開始到目前所有接到的輸入。

有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換

有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換

有限狀態(tài)機(jī)與流程圖的轉(zhuǎn)換狀態(tài)圖明顯在架構(gòu)上比流程圖要簡單,包容的模型也比較豐富,需做的假設(shè)比較少。另外,狀態(tài)圖比較重視事件/動作的完成,比較不在意是哪一個(gè)程序完成的。流程圖則很在意動作是如何完成的。

2.2白盒測試

白盒測試是一種可視的測試軟件的方法,即它把測試對象看作一個(gè)透明的盒子,測試人員要了解程序結(jié)構(gòu)和處理過程,按照程序內(nèi)部邏輯測試程序,檢查程序中的每條通路是否按照預(yù)定要求正確工作。白盒測試的過程如圖2-7所示:2.2白盒測試

圖2-7白盒測試過程示意圖白盒測試主要對程序進(jìn)行的檢查點(diǎn):

(1)保證一個(gè)模塊中的所有獨(dú)立執(zhí)行路徑至少測試一次;(2)對所有邏輯判定取值“true”和“false”的兩種情況都至少測試一次;(3)在循環(huán)邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;(4)測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。

在軟件測試領(lǐng)域,白盒測試可以用在三種測試類型中:1、單元測試2、集成測試3、回歸測試

2.2.1白盒測試與調(diào)試的異同1、從承擔(dān)的任務(wù)來看,白盒測試同其他類型測試一樣,它的任務(wù)是發(fā)現(xiàn)所開發(fā)的項(xiàng)目中的缺陷;但是,調(diào)試不屬于測試,其任務(wù)是糾正軟件中的缺陷。2、從最終的結(jié)果來看,白盒測試有預(yù)知的結(jié)果,不可預(yù)知的只是程序是否通過測試,并且成功測試的結(jié)果是發(fā)現(xiàn)錯誤的癥狀,從而引起調(diào)試的進(jìn)行;而調(diào)試的結(jié)果是消除項(xiàng)目中的錯誤。

3、從執(zhí)行的過程來看,測試是一個(gè)發(fā)現(xiàn)錯誤、改正錯誤、重新測試的過程;而調(diào)試是一個(gè)推理過程。4、從準(zhǔn)備工作來看,測試從已知的條件開始,使用預(yù)先定義的程序;調(diào)試一般是以不可知的內(nèi)部條件開始,做統(tǒng)一性調(diào)試。

5、從執(zhí)行的計(jì)劃性來看,測試是有計(jì)劃的并要進(jìn)行測試設(shè)計(jì);而調(diào)試則不受時(shí)間約束。6、從執(zhí)行的人員來看,測試經(jīng)常是由獨(dú)立的測試組在不了解軟件設(shè)計(jì)的條件下完成的,而調(diào)試必須由程序員來完成。

7、從所使用的工具來看,大多數(shù)白盒測試的執(zhí)行和設(shè)計(jì)可有工具支持,而調(diào)試程序員能利用的工具主要是調(diào)試器。

2.2.2白盒測試的用例設(shè)計(jì)白盒測試用例設(shè)計(jì)技術(shù)就是研究如何用最少的測試用例最大限度地發(fā)現(xiàn)軟件中的錯誤,目前主要有基本路徑測試、等價(jià)類劃分/邊界值分析測試、覆蓋測試、循環(huán)測試、數(shù)據(jù)流測試、程序插樁測試、變異測試等等方法。2.2.2白盒測試的用例設(shè)計(jì)

一、基本路徑測試概念:基本路徑測試就是在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)形復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測試用例的方法。設(shè)計(jì)出的測試用例要保證在測試中,程序的每一個(gè)可執(zhí)行語句至少執(zhí)行一次。

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

控制流圖的符號在介紹基本路徑方法之前,必須先介紹一種簡單的控制流表示方法,即流圖。流圖是對待測試程序過程處理的一種表示。流圖使用下面的符號描述邏輯控制流,每一種結(jié)構(gòu)化構(gòu)成元素有一個(gè)相應(yīng)的流圖符號。順序結(jié)構(gòu)if結(jié)構(gòu)Case結(jié)構(gòu)while結(jié)構(gòu)until結(jié)構(gòu)控制流圖流圖只有二種圖形符號圖中的每一個(gè)圓稱為流圖的結(jié)點(diǎn),代表一條或多條語句。流圖中的箭頭稱為邊或連接,代表控制流。任何過程設(shè)計(jì)都要被翻譯成控制流圖??刂屏鲌D在將程序流程圖簡化成控制流圖時(shí),應(yīng)注意:在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域,當(dāng)對區(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)封閉起來的區(qū)域計(jì)算區(qū)域:不要忘記區(qū)域外的部分待測試程序用流圖表示的待測試程序控制流圖如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符(OR,AND,NAND,NOR)連接的復(fù)合條件表達(dá)式,則需要改為一系列只有單條件的嵌套的判斷。例如:

1ifaorb2x3else4y對應(yīng)的邏輯為:獨(dú)立路徑獨(dú)立路徑:至少沿一條新的邊移動的路徑路徑1:1-11路徑2: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對以上路徑的遍歷,就是至少一次地執(zhí)行了程序中的所有語句?;韭窂綔y試第一步:畫出控制流圖流程圖用來描述程序控制結(jié)構(gòu)??蓪⒘鞒虉D映射到一個(gè)相應(yīng)的流圖(假設(shè)流程圖的菱形決定框中不包含復(fù)合條件)。在流圖中,每一個(gè)圓,稱為流圖的結(jié)點(diǎn),代表一個(gè)或多個(gè)語句。一個(gè)處理方框序列和一個(gè)菱形決測框可被映射為一個(gè)結(jié)點(diǎn),流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個(gè)結(jié)點(diǎn),即使該結(jié)點(diǎn)并不代表任何語句。由邊和結(jié)點(diǎn)限定的范圍稱為區(qū)域。計(jì)算區(qū)域時(shí)應(yīng)包括圖外部的范圍。例用基本路徑測試法進(jìn)行測試

voidSort(intiRecord,intiType){intx=0;inty=0;while(iRecord-->0){if(0==iType) {x=y+2;break;}elseif(1==iType) x=y+10;else x=y+20;}}基本路徑測試畫出其程序流程圖和對應(yīng)的控制流圖如下基本路徑測試-計(jì)算圈復(fù)雜度第二步:計(jì)算圈復(fù)雜度 圈復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測度的軟件度量,將該度量用于計(jì)算程序的基本的獨(dú)立路徑數(shù)目。有以下三種方法計(jì)算圈復(fù)雜度:流圖中區(qū)域的數(shù)量對應(yīng)于環(huán)型的復(fù)雜性;給定流圖G的圈復(fù)雜度V(G),定義為V(G)=E-N+2,E是流圖中邊的數(shù)量,N是流圖中結(jié)點(diǎn)的數(shù)量;給定流圖G的圈復(fù)雜度V(G),定義為V(G)=P+1,P是流圖G中判定結(jié)點(diǎn)的數(shù)量。基本路徑測試-計(jì)算圈復(fù)雜度對應(yīng)上面圖中的圈復(fù)雜度,計(jì)算如下:流圖中有四個(gè)區(qū)域;V(G)=10條邊-8結(jié)點(diǎn)+2=4;V(G)=3個(gè)判定結(jié)點(diǎn)+1=4?;韭窂綔y試-導(dǎo)出測試用例第三步:導(dǎo)出測試用例根據(jù)上面的計(jì)算方法,可得出四個(gè)獨(dú)立的路徑。(一條獨(dú)立路徑是指,和其他的獨(dú)立路徑相比,至少引入一個(gè)新處理語句或一個(gè)新判斷的程序通路。V(G)值正好等于該程序的獨(dú)立路徑的條數(shù)。)路徑1:4-14路徑2:4-6-7-14路徑3:4-6-8-10-13-4-14路徑4:4-6-8-11-13-4-14

根據(jù)上面的獨(dú)立路徑,去設(shè)計(jì)輸入數(shù)據(jù),使程序分別執(zhí)行到上面四條路徑?;韭窂綔y試-準(zhǔn)備測試用例第四步:準(zhǔn)備測試用例 為了確?;韭窂郊现械拿恳粭l路徑的執(zhí)行,根據(jù)判斷結(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測試到.基本路徑測試-準(zhǔn)備測試用例路徑1:4-14輸入數(shù)據(jù):iRecord=0,或者 取iRecord<0的某一個(gè)值預(yù)期結(jié)果:x=0路徑2:4-6-7-14輸入數(shù)據(jù):iRecord=1,iType=0預(yù)期結(jié)果:x=2路徑3:4-6-8-10-13-4-14輸入數(shù)據(jù):iRecord=1,iType=1預(yù)期結(jié)果:x=10路徑4:4-6-8-11-13-4-14輸入數(shù)據(jù):iRecord=1,iType=2預(yù)期結(jié)果:x=20voidSort(intiRecord,intiType){intx=0;inty=0;while(iRecord-->0){ if(0==iType){x=y+2;break;}else if(1==iType) x=y+10;else x=y+20;}}基本路徑測試再舉例 例:下例程序流程圖描述了最多輸入50個(gè)學(xué)生分?jǐn)?shù)(以–1作為輸入結(jié)束標(biāo)志),計(jì)算其中有效的學(xué)生分?jǐn)?shù)的個(gè)數(shù)、總分?jǐn)?shù)和平均值。開始

i=1,n1=n2=0,sum=0Score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1返回FFFTTT12和345和6789101112123456789111012R1R2R3R4R5R6開始

i=1,n1=n2=0,sum=0Score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1返回FFFTTT12和345和6789101112步驟1:導(dǎo)出過程的流圖。步驟2:確定環(huán)形復(fù)雜性度量V(G):1)V(G)=6(個(gè)區(qū)域)2)V(G)=E–N+2=16–12+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試再舉例123456789111012R1R2R3R4R5R6基本路徑測試再舉例步驟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-8-2…123456789111012R1R2R3R4R5R6步驟4:為每一條獨(dú)立路徑各設(shè)計(jì)一組測試用例,以便強(qiáng)迫程序沿著該路徑至少執(zhí)行一次。1)路徑1(1-2-9-10-12)的測試用例:

score[k]=有效分?jǐn)?shù)值,k<i;

score[i]=–1,2≤i≤50; 期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。開始

i=1,n1=n2=0,sum=0Score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1返回FFFTTT12和345和67891011122)路徑2(1-2-9-11-12)的測試用例:

score[1]=–1;期望的結(jié)果:average=-1,其他量保持初值。3)路徑3(1-2-3-9-10-12)的測試用例: 輸入多于50個(gè)有效分?jǐn)?shù),即試圖處理51個(gè)分?jǐn)?shù),要求前51個(gè)為有效分?jǐn)?shù); 期望結(jié)果:n1=50、且算出正確的總分和平均分。開始

i=1,n1=n2=0,sum=0Score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1返回FFFTTT12和345和67891011124)路徑4(1-2-3-4-5-8-2…)的測試用例:

score[i]=有效分?jǐn)?shù),當(dāng)i<50;

score[k]<0,k<i; 期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。5)路徑5(1-2-3-4-5-6-8-2…)的測試用例:

score[i]=有效分?jǐn)?shù),當(dāng)i<50;

score[k]>100,k<i; 期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。開始

i=1,n1=n2=0,sum=0Score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1返回FFFTTT12和345和67891011126)路徑6(1-2-3-4-5-6-7-8-2…)的測試用例:

score[i]=有效分?jǐn)?shù),當(dāng)i<50; 期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。開始

i=1,n1=n2=0,sum=0Score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1返回FFFTTT12和345和6789101112基本路徑測試必須注意,一些獨(dú)立的路徑,往往不是完全孤立的,有時(shí)它是程序正常的控制流的一部分,這時(shí),這些路徑的測試可以是另一條路徑測試的一部分。

voidReadName(CStringname)

{

if(name=="zhao")

Operation(0);

else

{

if(name=="qian")

Operation(1);

else

{

if(name=="sun")

Operation(2);

else

{

if(name=="li")

Operation(3);

else

{

if(name=="zhou")

Operation(4);

else

Operation(5);

}

}

}

}

return;

}

基本路徑法練習(xí)題【問題1】

請畫出以上代碼的流程框圖和控制流圖(自由設(shè)計(jì)流程編號)。【問題2】

請根據(jù)公式計(jì)算上述控制流圖的圈復(fù)雜度V(G)。【問題3】

請給出路徑,并使用基本路徑測試法設(shè)計(jì)測試用例,使之滿足基本路徑覆蓋要求。

voidReadName(CStringname)

{

if(nam

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論