軟件質(zhì)量保證與測試_第1頁
軟件質(zhì)量保證與測試_第2頁
軟件質(zhì)量保證與測試_第3頁
軟件質(zhì)量保證與測試_第4頁
軟件質(zhì)量保證與測試_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件測試基礎(chǔ)第一章:預(yù)備知識Last update: December 23, 2009These slides are copyrighted. They are for use with the Foundations of Software Testing book by Aditya Mathur. Please use the slides but do not remove the copyright notice.Aditya P. MathurPurdue University1.1 人、錯誤和測試Aditya P. Mathur 2009Aditya P. Mathur 20

2、09錯誤(error)錯誤是我們?nèi)粘I畹囊徊糠帧?人們在他們的思考、行為中會犯錯誤,并將體現(xiàn)在他們行為的結(jié)果中。只要有人參與的行動和決策,都有可能會發(fā)生錯誤。人人類類存在的存在的這這些基本事些基本事實實,使,使測測試試成為非常成為非常重要的活重要的活動動。 。 錯誤的例子領(lǐng)域領(lǐng)域錯誤錯誤傾聽醫(yī)學(xué)音樂演奏數(shù)據(jù)分析觀察軟件開發(fā)演講體育運動寫作講的是:He has a garage for reparing foreign cars聽到的是:He has a garage for reparing falling cars不正確地使用抗生素演奏出不正確的音調(diào)采用不正確的算法進(jìn)行矩陣變換操作員沒有發(fā)

3、現(xiàn)壓力倉的安全閥門一直開著錯誤操作符:;正確操作符:錯誤標(biāo)識符:new_line;正確標(biāo)識符:next_line實際說得是:Waple malnut;想說的是:Maple walnut實際說得是:We need a new refrigerator;想說的是。網(wǎng)球比賽中裁判員不正確的判決實際寫出來的是:What kind of pans did you are?想寫的是:What kind of pants did you are?故障(fault)和失效n故障是一個或多個錯誤的表現(xiàn)。n程序員犯的錯誤,表現(xiàn)為含有故障的代碼。n當(dāng)運行一個含有錯誤的代碼時,程序?qū)⒊霈F(xiàn)與預(yù)期的行為不一致的情況。這時

4、,我們稱程序失效。Aditya P. Mathur 2009錯誤, 故障, 失效程序員規(guī)格說明源程序思想或行動中的錯誤故障可觀察的行為觀察到的行為它們是一樣的嗎?預(yù)期的行為測試數(shù)據(jù)編寫代碼產(chǎn)生導(dǎo)致決定了可能導(dǎo)致是的,軟件像預(yù)期的一樣運行不,軟件不像預(yù)期的那樣運行,出現(xiàn)了一個失效測試自動化n大型復(fù)雜軟件、嵌入式軟件的測試是勞動密集型工作。對測試自動化存在巨大的需求。n便于自動化測試的工作:n回歸測試n圖形用戶界面測試nI/O設(shè)備驅(qū)動測試n自動化測試難于通用化n當(dāng)前的一些自動化測試工具nQTPnC+ TesternLoadrunner開發(fā)人員vs.測試人員n開發(fā)人員寫代碼,測試人員測代碼;n兩種人

5、員既有區(qū)別又互相補(bǔ)充;n同一個人在不同階段可能充當(dāng)不同的角色;n測試技術(shù)對兩種人員都有用。1.2 軟件質(zhì)量Aditya P. Mathur 2009Aditya P. Mathur 2009軟件質(zhì)量靜態(tài)質(zhì)量特性靜態(tài)質(zhì)量特性: 結(jié)構(gòu)化的, 可維護(hù)的, 可測試的代碼,以及正確性和完整的文檔。動態(tài)質(zhì)量特性動態(tài)質(zhì)量特性: 軟件可靠性,正確性,完整性,一致性,可用性和效率。軟件質(zhì)量 (續(xù).)可靠性:可靠性:指一個軟件正確運行的概率。正確性:正確性:指一個軟件的正確操作。通常與一些文檔有關(guān)。Aditya P. Mathur 2009軟件質(zhì)量 (續(xù).)完整性完整性指的是所有在需求或用戶手冊中列出的特性都能得

6、到,一個不完整的軟件是沒有完整實現(xiàn)所有的需要的特征的軟件。一致性一致性是指遵循一套共同的約定和假設(shè)。例如,在用戶界面上的所有按鈕可能會遵循一個共同的顏色編碼約定。不一致的一個例子是當(dāng)一個數(shù)據(jù)庫應(yīng)用程序顯示一個人在數(shù)據(jù)庫中的出生日期。Aditya P. Mathur 2009軟件質(zhì)量 (續(xù).)實用性:實用性:指的是一個應(yīng)用程序在使用時是否容易。這本身就是一個可用性測試存在的技術(shù)領(lǐng)域。心理學(xué)在可用性測試設(shè)計中起著重要的作用。性能:性能:指的是應(yīng)用程序需要執(zhí)行請求的任務(wù)的時間。它被認(rèn)為是一個非功能性要求。它是在諸如指定“這個任務(wù)必須在一臺速度為Y,具有ZG字節(jié)內(nèi)存機(jī)器,上以X單位每秒的速度執(zhí)行”Ad

7、itya P. Mathur 2009軟件可靠性:兩種定義軟件可靠性軟件可靠性 ANSI/IEEE Std 729-1983: 是軟件在給定的時間間隔和在給定條件下的無故障操作概率。軟件可靠性:軟件可靠性:是軟件在預(yù)期環(huán)境下無故障運行的可能性。1.3 需求、運行結(jié)果和正確性Aditya P. Mathur 2009Aditya P. Mathur 2009需求、行為、正確性需求1:請寫一個 程序,輸入兩個整數(shù),并輸出這兩個整數(shù)中最大的那一個。需求2:請寫一個 程序,它輸入一個整數(shù)序列,并輸出該序列的排序的版本。下面兩個需求將得到不同的兩個程序: Aditya P. Mathur 2009需求的

8、不完整性假設(shè)開發(fā)了程序maxmax,以滿足需求1。最大的預(yù)期的輸出,當(dāng)輸入整數(shù)是13和19可以很容易地確定為19?,F(xiàn)在假設(shè)測試人員想知道,兩個整數(shù)在輸入到該程序時,是在同一行中輸入然后加一個回車,還是在兩行中輸入,每個整數(shù)后面都要鍵入回車。而上述要求未能提供這個問題的答案。Aditya P. Mathur 2009需求的二義性需求2是有歧義的。目前尚不清楚輸入的序列是按升序還是按降序排列。滿足需求2的排序程序,它的具體行為將依賴于寫排序的程序員。Aditya P. Mathur 2009輸入域(輸入空間)所有可能輸入到程序P的集合,被稱為P的輸入域輸入域或輸入空間輸入空間。對于上面提到的需求1

9、,我們發(fā)現(xiàn)max的輸入域是所有的成對整數(shù)的集合,其中在成對整數(shù)的每個元素的范圍是從-32,768到32,767的。對于需求2,是不可能找到的排序程序的輸入域。Aditya P. Mathur 2009輸入域(續(xù))修改需求2: 請寫一個程序,輸入一個整數(shù)序列,并按升序或降序排列輸出這個序列中的。輸出序列的順序由一個需求字符決定,該參數(shù)為“A”輸出一個遞增序列,為“D”則輸出遞減序列。 同時,在提供到程序中輸入序列,需求字符首先輸入,然后是進(jìn)行排序的整數(shù)序列,序列使用句號作為結(jié)束符。Aditya P. Mathur 2009輸入域(續(xù))基于上述修改后的需求,對于排序的輸入域是“對”的集合。每一“對

10、”的第一個元素是一個字符,第二元素是由零個或多個整數(shù)構(gòu)成的序列,并以句號結(jié)束。軟件正確性n如果軟件針對其輸入域的所有元素都如期望的方式運行,那么這個軟件是正確的。Aditya P. Mathur 2009有效/無效輸入修改后的排序需求提到,要求字符可以是“A”和“D”,但沒有回答這個問題:“如果用戶輸入了一個不同的字符該怎么辦?”當(dāng)使用sort程序時,用戶絕對有可能鍵入其他字符而不是“A”和“D”等。sort程序除“A”和“D”外的任何字符都被認(rèn)為是無效的輸入無效的輸入。然而對于排序的需求并沒有指定遇到一個無效的輸入時應(yīng)該采取什么行動。1.4 正確性與可靠性Aditya P. Mathur 2

11、009Aditya P. Mathur 2009正確性雖然大家都很渴望一個程序的正確性,但這幾乎從來都不是測試的目標(biāo)。 通過測試確認(rèn)的正確性,將意味著測試程序輸入域中的所有元素。在實踐中遇到的大多數(shù)情況下,這是不可能完成的任務(wù)。因此,正確性是通過程序的數(shù)學(xué)因此,正確性是通過程序的數(shù)學(xué)證明成立。證明成立。Aditya P. Mathur 2009正確性和測試正確性嘗試確認(rèn)一個程序沒有錯誤沒有錯誤,而測試是嘗試發(fā)現(xiàn)程序中是否有錯誤。 因此,測試的完整性并不一定證明程序沒有錯誤。測試,調(diào)試和錯誤清除過程一起增加我們對被測試,調(diào)試和錯誤清除過程一起增加我們對被測程序的正常運行的信心。測程序的正常運行的

12、信心??煽啃詎軟件可靠性:軟件可靠性:是軟件在預(yù)期環(huán)境下無故障運行的可能性。n軟件可靠性與軟件正確性的關(guān)系:一個是二元度量,一個是連續(xù)度量;Aditya P. Mathur 2009操作剖面操作剖面操作剖面是程序怎樣被使用的數(shù)值描述??紤]一個排序程序,它允許兩種類型的輸入序列。對該程序的一個操作剖面如下所示。Aditya P. Mathur 2009操作剖面輸入序列輸入序列概率概率只包含數(shù)字的輸入序列只包含數(shù)字的輸入序列0.9包含字母數(shù)字串的輸入序列包含字母數(shù)字串的輸入序列0.1Aditya P. Mathur 2009操作剖面輸入序列輸入序列概率概率只包含數(shù)字的輸入序列只包含數(shù)字的輸入序列0

13、.1包含字母數(shù)字串的輸入序列包含字母數(shù)字串的輸入序列0.91.5 測試與調(diào)試Aditya P. Mathur 2009Aditya P. Mathur 2009測試和調(diào)試測試是確定一個程序是否有任何錯誤的過程。當(dāng)測試揭示了一個錯誤,確定此錯誤的原因,并消除它的過程,被稱為調(diào)試。Aditya P. Mathur 2009一個測試/調(diào)試的周期輸入域構(gòu)造測試輸入運行程序操作剖面測試計劃運行結(jié)果如預(yù)期的那樣嗎?結(jié)束測試嗎?編寫測試報告錯誤的原因現(xiàn)在已檢查出來了嗎?規(guī)格說明糾正錯誤現(xiàn)在糾正錯誤嗎?編寫未處理錯誤報告輸入數(shù)據(jù)測試用例運行結(jié)果修改嗎?采用采用是否是否否是否采用調(diào)試軟件是Aditya P. M

14、athur 2009測試計劃一個測試周期通常是由一個測試計劃指導(dǎo)。例如:要測試一個排序程序,看它是否滿足前面給出的要求。那么,需要做下面這些事情。至少執(zhí)行兩個輸入序列進(jìn)行排序,其中一個用“A”另一個用“D”作為請求字符。Aditya P. Mathur 2009測試計劃(續(xù))用空的輸入序列執(zhí)行程序一次。測試程序的魯棒性,即給出一個錯誤的輸入,例如鍵入“R”作為請求字符。測試程序過程中出現(xiàn)的所有失效應(yīng)該被記錄在使用公司失效報告格式的一個合適的文件中。Aditya P. Mathur 2009測試用例/數(shù)據(jù) 測試用例是由測試數(shù)據(jù)將被輸入到程序和預(yù)期的輸出構(gòu)成的對。測試數(shù)據(jù)是一個值的集合,每個值對應(yīng)

15、一個輸入變量。測試集是零個或多個測試用例的集合。sort的測試用例的例子: 測試數(shù)據(jù): 期望輸出: -29 12 32運行被測軟件n運行被測軟件是一個重要步驟;n軟件運行的實際復(fù)雜性依賴于軟件本身;n為運行被測軟件,測試人員常常要搭建測試床。n初始化全局變量;n輸入測試用例;n運行被測軟件;n記錄產(chǎn)生的輸出;Aditya P. Mathur 2009程序行為n程序行為可以用幾種方法來描述:純自然語言,狀態(tài)圖,形式化的數(shù)學(xué)形式。n狀態(tài)圖描述了程序狀態(tài)以及程序是如何根據(jù)輸入序列或輸入改變狀態(tài)。程序行為的例子n可以用軟件狀態(tài)來定義軟件行為;n軟件的一個狀態(tài),是指軟件當(dāng)中所有變量當(dāng)前值的集合,以及下一

16、步要執(zhí)行的語句的指稱。n軟件狀態(tài)的轉(zhuǎn)換序列被稱為軟件行為。Aditya P. Mathur 2009程序行為的例子一個菜單應(yīng)用程序Aditya P. Mathur 2009程序行為的例子(續(xù))啟動程序用戶執(zhí)行的操作程序狀態(tài)等待用戶輸入用戶鼠標(biāo)點擊“File”顯示出下拉菜單用戶選擇“Open”用戶釋放鼠標(biāo)加亮顯示“Open”在一個窗口中顯示出當(dāng)前目錄下的文件名稱s3Aditya P. Mathur 2009對程序行為的觀察和分析用于檢查所觀察到的行為是否正確的實體被稱為測試預(yù)言測試預(yù)言(Oracle)。步驟一:測試人員觀察程序的行為。 步驟二:測試人員分析觀察到的行為,以檢查它是否是正確與否。對

17、大型商業(yè)程序而言,這兩個步驟都可能相當(dāng)復(fù)雜。Aditya P. Mathur 2009測試預(yù)言的例子輸入測試預(yù)言觀察到的運行結(jié)果與預(yù)期結(jié)果一致嗎?被測軟件觀察到的運行結(jié)果Yes或No并給出解釋Aditya P. Mathur 2009測試預(yù)言:程序測試預(yù)言還可以設(shè)計成一個用來檢查其他程序的行為的程序。例如,一個人可能使用矩陣乘法程序來檢查一個矩陣求逆程序是否已經(jīng)生成了正確的輸出。在這種情況下,矩陣求逆程序把給定矩陣A和所生成B(A的逆矩陣)作為輸出到矩陣乘法的參數(shù)。Aditya P. Mathur 2009測試預(yù)言的構(gòu)造自動化測試預(yù)言的構(gòu)造,如一個Oracle用于檢查一個矩陣乘法程序或排序程序

18、,需要確定程序的輸入輸出關(guān)系。在一般情況下,自動化測試預(yù)言的構(gòu)造是一個相當(dāng)復(fù)雜的任務(wù)。Aditya P. Mathur 2009測試預(yù)言的構(gòu)造(續(xù))輸入數(shù)據(jù)生成器HVideo測試預(yù)言數(shù)據(jù)庫1.6 測試度量Aditya P. Mathur 2009測試度量n測試度量是一些測量標(biāo)準(zhǔn),用于在測試過程中定量描述軟件測試的進(jìn)度、質(zhì)量、資源和規(guī)模。n軟件測試可以在組織、過程、項目、產(chǎn)品等級別對測試進(jìn)行度量。產(chǎn)品級度量:通用度量n針對具體的產(chǎn)品,可以用一些度量來描述產(chǎn)品的相關(guān)特性。n圈復(fù)雜度:基于程序控制流圖,用于描述程序的復(fù)雜性。公式:V(G) = E-N+2p。其中,E是節(jié)點數(shù),N是邊數(shù),p是G中強(qiáng)連通

19、分支數(shù)。V(G)值越大,說明程序的復(fù)雜性越高。nHalstead復(fù)雜性度量:用軟件規(guī)模和功耗/工作量,估算在軟件開發(fā)中出現(xiàn)的缺陷數(shù)量。n公式:B=7.6E0.667S0.333其中,E是工作量,S是軟件的規(guī)模。組織級、項目級和過程級度量n組織級度量n針對整體項目的規(guī)劃和管理。這類度量部分來源于匯聚多個跨項目的相容度量。n這些度量有利于高層管理進(jìn)行資源配置。n項目級度量n與具體項目有關(guān)的度量。用于對項目的跟蹤和控制。n過程級度量n用于評價測試過程。產(chǎn)品級度量:面向?qū)ο筌浖現(xiàn)代程序設(shè)計語言,不完全符合Halstead復(fù)雜性度量。因此引入了其他一些方法對軟件可靠性進(jìn)行度量。度量度量含義含義可靠性缺

20、陷密度缺陷嚴(yán)重程度測試覆蓋度圈復(fù)雜度類加權(quán)方法類耦合響應(yīng)集直接子類數(shù)軟件在給定條件下針對特定操作剖面失效的概率。每千行代碼的缺陷數(shù)根據(jù)嚴(yán)重性對缺陷的劃分可測項所占的比例一個程序基于CFG的復(fù)雜性被測類中所有方法的復(fù)雜度之和與特定類耦合的類的數(shù)量當(dāng)向?qū)ο驩發(fā)送一消息,能夠直接或間接激發(fā)的方法集合。在類層次中,一個類的直接子類數(shù)量進(jìn)度跟蹤與趨勢n在開發(fā)或測試過程中,按照固定時間間隔進(jìn)行測試度量。測試結(jié)果將提供一種趨勢。n通過統(tǒng)計這些度量的結(jié)果,可以總結(jié)出產(chǎn)品的狀態(tài)。n例如統(tǒng)計累積發(fā)現(xiàn)的缺陷數(shù)目,可以得到一條累積缺陷數(shù)目隨時間變化的曲線,當(dāng)曲線趨于飽和時,說明產(chǎn)品質(zhì)量趨于穩(wěn)定。靜態(tài)度量與動態(tài)度量n靜

21、態(tài)度量不需要執(zhí)行軟件。n動態(tài)度量需要執(zhí)行軟件??蓽y試性nIEEE定義:系統(tǒng)或組件有助于建立測試準(zhǔn)則,執(zhí)行測試以便判斷這些準(zhǔn)則是否滿足的程度。n軟件越復(fù)雜,軟件可測試性越低。1.7 軟件測試與硬件測試Aditya P. Mathur 2009軟件測試VS.硬件測試n軟件測試與硬件測試存在相似之處,也有差異。n軟件不會磨損,不會因時間的推移而衰老。硬件不是這樣。n軟件錯誤主要是設(shè)計和開發(fā)時產(chǎn)生;硬件缺陷主要在制造階段或后期產(chǎn)生。硬件設(shè)計可以采用內(nèi)置自檢技術(shù)。n硬件測試采用基于故障模型來設(shè)計測試;軟件測試無統(tǒng)一的故障模型。n硬件測試和軟件測試的另一個主要差別是測試域的不同。軟件測試VS.硬件測試n測

22、試覆蓋率問題:對于大型和復(fù)雜的軟件和硬件而言,都不可能進(jìn)行完全測試。n硬件測試中產(chǎn)生“可接受的測試覆蓋率”。通過測試覆蓋的故障數(shù)和理論的故障數(shù)的比率來度量測試的情況。n這種思想在軟件測試中產(chǎn)生了變異測試方法。1.8 測試與驗證Aditya P. Mathur 2009Aditya P. Mathur 2009測試和驗證程序驗證的目的是通過展示它不包含任何錯誤來證明程序的正確性。這與測試的目的非常不同,因為測試是揭露在一個程序中的錯誤。程序驗證與測試最好視為互補(bǔ)的技術(shù)。在實踐中,人們可以擺脫程序驗證,但不能略過測試。Aditya P. Mathur 2009測試和檢驗(續(xù))測試是不是完美的技術(shù),

23、一個程序盡管成功地完成了一組測試,但可能還是包含錯誤。驗證看起來似乎是完美的技術(shù),因為它承諾以驗證程序沒有錯誤。然而,驗證程序的人可能在驗證過程中犯錯誤;有可能是輸入條件的不正確假設(shè),而不正確的假設(shè)可能作出程序界面有關(guān)組件的,等等。有已驗證和發(fā)布的程序被證明是不正確的。有已驗證和發(fā)布的程序被證明是不正確的。1.9 缺陷管理Aditya P. Mathur 2009缺陷管理n缺陷管理是軟件開發(fā)和測試的重要組成部分。n缺陷管理包括:缺陷預(yù)防、缺陷發(fā)現(xiàn)、缺陷記錄和報告、缺陷分類、缺陷糾正、缺陷預(yù)測等。n存在一些用于缺陷管理的工具。1.10 執(zhí)行歷史Aditya P. Mathur 2009執(zhí)行歷史n

24、又稱執(zhí)行軌跡,是程序一次執(zhí)行中收集到的程序各方面信息的有序集合。n可以用多種方法表示執(zhí)行軌跡n語句的執(zhí)行序列;n對象方法的訪問序列;n程序變量值的變化的序列;1.11 測試生成策略Aditya P. Mathur 2009Aditya P. Mathur 2009測試生成任何形式的測試生成都使用源文檔。最非正規(guī)的測試方法,測試人員也在腦海里駐留了一個基于知識和需求的源文檔。在大多數(shù)的商業(yè)環(huán)境中,測試過程更正式一些。測試會通過正式和非正式的混合方法直接從作為源的需求文檔產(chǎn)生。在更先進(jìn)的測試過程中,需求將作為開發(fā)過程中的正規(guī)模型的來源。Aditya P. Mathur 2009測試生成策略基于模型

25、的:基于模型的:要求需求的一個子集使用了正式的符號(通常為圖形界面)來建模。模型:有限狀態(tài)機(jī),時間自動機(jī),Petri網(wǎng)等?;谝?guī)范的:基于規(guī)范的:要求需求的一個子集使用一個正式的數(shù)學(xué)符號進(jìn)行建模。例如:B,Z,和Larch?;诖a:基于代碼:直接從代碼中生成的測試。Aditya P. Mathur 2009測試生成策略 (總結(jié))需求有窮狀態(tài)機(jī)狀態(tài)圖Petri網(wǎng)時間I/O自動機(jī)代數(shù)和邏輯規(guī)范代碼運行時數(shù)據(jù)測試生成算法測試生成算法測試生成算法測試生成算法測試生成算法測試生成算法測試生成算法測試用例1.12 靜態(tài)測試Aditya P. Mathur 2009靜態(tài)測試n靜態(tài)測試最大特點是不需要執(zhí)行被

26、測軟件;n走查:走查:非正式的過程,對源代碼和文檔的檢查。n審查:審查:更加正規(guī)的檢查過程。使用靜態(tài)代碼分析工具n通過靜態(tài)代碼分析工具得到代碼的相關(guān)信息。如:控制流信息、數(shù)據(jù)流信息等。n有商業(yè)化和開源的靜態(tài)分析工具。軟件復(fù)雜性和靜態(tài)測試n通過分析軟件的復(fù)雜性,在靜態(tài)測試中對較復(fù)雜的模型給予更多的關(guān)注。n可以用不同的復(fù)雜性度量來計算模塊復(fù)雜性。n同時需要考慮模塊功能的重要性。1.13 基于模型的測試與模型檢驗Aditya P. Mathur 2009基于模型的測試n基于模型的測試:對軟件行為進(jìn)行建模,以及根據(jù)軟件的形式化模型設(shè)計測試活動。模型檢測n模型檢測是指用于驗證特定模型的一個或多個特性的技

27、術(shù)。1.14 控制流圖Aditya P. Mathur 2009Aditya P. Mathur 2009程序表示:基本塊在程序P的一個基本塊是只有一個入口和一個出口點的連續(xù)的語句序列。因此,一個塊都有唯一的入口點和出口點。程序的控制總是在基本塊的入口點進(jìn)入,并從其出口點退出。除了在基本塊的出口點外,不可能在基本塊內(nèi)的任何點退出或停止。當(dāng)一個基本塊的入口和出口點重合時,該塊只包含一個語句。Aditya P. Mathur 2009基本塊的例子Example: 求X的Y次冪的程序Aditya P. Mathur 2009基本塊的例子(續(xù))Basic blocksAditya P. Mathur

28、2009控制流程圖(CFG)一個控制流圖(或流圖)G 被定義為一個有限的點的集合N和一個有限的邊的集合E。E中的一條邊(i, j)連接N中的兩個結(jié)點ni和nj 。我們經(jīng)常用G= (N, E)來表達(dá)一個點集為N,邊集為E的流圖。Aditya P. Mathur 2009控制流程圖(CFG)一個程序的流圖中,每個基本塊成為一個節(jié)點,而邊被用來表示控制在塊之間的流動。塊和節(jié)點被標(biāo)記,使得塊bi對應(yīng)于結(jié)點Ni。 一條邊 (i, j) 連接基本塊 bi和bj說明控制可以從塊bi到達(dá)塊bj。 我們還假設(shè)在N中有一個節(jié)點標(biāo)記為Start,它沒有進(jìn)入的邊,而另一個節(jié)點標(biāo)記為End,它沒有離開的邊。Aditya P. Mathur 2009CFG 例子N=Start, 1, 2, 3, 4, 5, 6, 7, 8, 9, EndE=(Start,1), (1, 2), (1, 3), (2,4), (3, 4), (4, 5), (5, 6

溫馨提示

  • 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

提交評論