軟件工程編碼與測試實現(xiàn)_第1頁
軟件工程編碼與測試實現(xiàn)_第2頁
軟件工程編碼與測試實現(xiàn)_第3頁
軟件工程編碼與測試實現(xiàn)_第4頁
軟件工程編碼與測試實現(xiàn)_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件工程編碼與測試實現(xiàn)軟件工程學(xué)系列2022/8/252編碼和測試編碼就為是用編程(程序)語言把軟件表達(dá)翻譯為計算機(jī)可以理解的形式用某種程序設(shè)計語言書寫的程序。2022/8/253前一頁測試 軟件測試非常重要,它對軟件可靠性產(chǎn)生直接影響。 測試的目的是在軟件投入生產(chǎn)運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤。 目前軟件測試仍然是保證軟件質(zhì)量的關(guān)鍵步驟,它是對軟件規(guī)格說明、設(shè)計和編碼的最后復(fù)審。 軟件測試由兩個階段組成,分別是單元測試和集成測試。2022/8/254測試 軟件測試的工作量往往占軟件開發(fā)總工作量的40%以上,在極端情況,測試那種關(guān)系生命安全的軟件所花費(fèi)的成本,可能相當(dāng)于軟件工程其他開發(fā)步

2、驟總成本的35倍。 測試的目的是發(fā)現(xiàn)錯誤,但軟件生產(chǎn)的最終目的是開發(fā)出高質(zhì)量的完全符合用戶需要的軟件。2022/8/255本章主要內(nèi)容編碼測試基礎(chǔ) 單元測試集成測試 確認(rèn)測試 白盒測試技術(shù)黑盒測試技術(shù) 調(diào)試 軟件可靠性 前一頁2022/8/256編 碼編碼之前的一項重要工作是選擇適當(dāng)?shù)某绦蛟O(shè)計語言適當(dāng)?shù)木幊陶Z言可以減少需要的程序測試量,可以得出更易閱讀和更易維護(hù)的程序匯編語言和高級語言相比,使用高級語言寫的程序更易閱讀、測試、調(diào)試和維護(hù)2022/8/257編 碼在進(jìn)行高級語言的選擇時,應(yīng)該有標(biāo)準(zhǔn)參照系統(tǒng)用戶的要求可以使用的編譯程序可以得到的軟件工具工程規(guī)模程序員的知識軟件可移植性要求軟件的應(yīng)用

3、領(lǐng)域2022/8/258編碼風(fēng)格設(shè)計出易讀易懂程序的規(guī)則:程序內(nèi)部的文檔標(biāo)識符:含義鮮明的名字注解:幫助理解程序程序的視覺組織:程序清單的布局2022/8/259編碼風(fēng)格數(shù)據(jù)說明:數(shù)據(jù)說明的次序應(yīng)該標(biāo)準(zhǔn)化,提高效率按字母順序排列變量使用注解說明復(fù)雜的數(shù)據(jù)結(jié)構(gòu)2022/8/2510編碼風(fēng)格語句構(gòu)造:每個語句都應(yīng)該簡單而直接 可以使用一些規(guī)則使語句構(gòu)造簡單,如:盡量避免復(fù)雜的條件測試,不要為了節(jié)省空間而把多個語句寫在同一行等。2022/8/2511編碼風(fēng)格輸入輸出 在設(shè)計和編寫程序時應(yīng)考慮輸入和輸出風(fēng)格的規(guī)則。2022/8/2512編碼風(fēng)格效率:處理機(jī)時間和存儲器容量 三條基本原則:效率是性能要求

4、,需求分析階段確定效率是靠好設(shè)計來提高的程序的效率和程序的簡單程度是一致的2022/8/2513編碼風(fēng)格效率 程序運(yùn)行時間:寫程序的風(fēng)格對執(zhí)行速度有影響存儲器效率:提供存儲器效率輸入輸出的效率:提高人機(jī)通信的效率2022/8/2514軟件測試基礎(chǔ)前一頁 軟件測試階段的根本目標(biāo)是盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。 2022/8/2515基本概念軟件測試的目標(biāo) 軟件測試準(zhǔn)則測試方法測試步驟 測試階段的信息流 前一頁2022/8/2516前一頁基本概念軟件測試的目標(biāo) (1)測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。 (2)好的測試方案是極可能發(fā)現(xiàn)迄今為止

5、尚未發(fā)現(xiàn)的錯誤的測試方案。 (3)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。2022/8/2517軟件測試的定義測試的正確定義:為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程錯誤觀念:測試是為了表明程序是正確的測試應(yīng)由專門的測試小組來完成測試只能查找程序中的錯誤,不能證明程序中沒有錯誤2022/8/2518軟件測試準(zhǔn)則所有測試都能追溯到用戶需求應(yīng)該盡早開始測試計劃的制定應(yīng)用Pareto原理定位錯誤測試應(yīng)該有“小”到“大”窮舉測試不可能應(yīng)該由獨(dú)立的第三方從事測試工作2022/8/2519前一頁測試方法 黑盒測試是在程序接口進(jìn)行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)

6、地接收輸入數(shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息(如:數(shù)據(jù)庫或文件)的完整性。黑盒測試又稱為功能測試 。測試任何產(chǎn)品都有兩種方法:黑盒測試和白盒測試2022/8/2520基本概念前一頁白盒測試 白盒測試法是可以把程序看成裝在一個透明的白盒子里,了解程序的結(jié)構(gòu)和處理過程。這種方法按照程序內(nèi)部的邏輯測試程序,檢驗程序中的每條通路是否能按預(yù)定要求正確工作。白盒測試又稱為結(jié)構(gòu)測試。 2022/8/2521前一頁測試步驟 大型軟件系統(tǒng)通常由若干個子系統(tǒng)組成,每個子系統(tǒng)又由許多模塊組成。因此,大型軟件的測試基本上由下述幾個步驟組成: 1、模塊測試 2、子系統(tǒng)測試 3、系統(tǒng)測試 4、驗收測試5、平行運(yùn)行

7、2022/8/2522軟件測試的步驟前一頁模塊測試 模塊測試的目的是保證每個模塊作為一個單元能正確運(yùn)行,所以模塊測試通常又稱為單元測試。 在這個測試步驟中所發(fā)現(xiàn)的往往是編碼和詳細(xì)設(shè)計的錯誤。 2022/8/2523前一頁子系統(tǒng)測試 子系統(tǒng)測試是把經(jīng)過單元測試的模塊放在一起形成一個子系統(tǒng)來測試。模塊相互間的協(xié)調(diào)和通信是這個測試過程中的主要問題。 這個步驟著重測試模塊的接口。 軟件測試的步驟2022/8/2524前一頁系統(tǒng)測試 系統(tǒng)測試是把經(jīng)過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來測試。在這個過程中不僅應(yīng)該發(fā)現(xiàn)設(shè)計和編碼的錯誤,還應(yīng)該驗證系統(tǒng)確實能提供需求說明書中指定的功能,而且系統(tǒng)的動態(tài)特性也要符合

8、預(yù)定要求。 在這個測試步驟中發(fā)現(xiàn)的往往是軟件設(shè)計中的錯誤,也可能發(fā)現(xiàn)需求說明中的錯誤。 軟件測試的步驟2022/8/2525前一頁驗收測試 驗收測試把軟件系統(tǒng)作為單一的實體進(jìn)行測試,測試內(nèi)容與系統(tǒng)測試基本類似,但是它是在用戶積極參與下進(jìn)行的,而且可能主要使用實際數(shù)據(jù)進(jìn)行測試。 驗收測試的目的是驗證系統(tǒng)確實能夠滿足用戶的需要,在這個測試步驟中發(fā)現(xiàn)的往往是系統(tǒng)需求說明書中的錯誤。 軟件測試的步驟2022/8/2526前一頁平行測試 所謂平行運(yùn)行就是同時運(yùn)行新開發(fā)出來的系統(tǒng)和舊系統(tǒng),以便比較新舊兩個系統(tǒng)的處理結(jié)果,其優(yōu)點是: (1)可以在準(zhǔn)生產(chǎn)環(huán)境中運(yùn)行新系統(tǒng)而又不冒風(fēng)險; (2)用戶能有一段熟悉新

9、系統(tǒng)的時間; (3)可以驗證用戶指南和使用手冊之類的文檔 ; (4)能夠以準(zhǔn)生產(chǎn)模式對新系統(tǒng)進(jìn)行全負(fù)荷測試,可以用測試結(jié)果驗證性能指標(biāo)。 軟件測試的步驟2022/8/2527測試階段的信息流輸入軟件配置:需求說明書、設(shè)計說明書和程序清單測試配置:測試計劃和測試方案調(diào)試測試發(fā)現(xiàn)錯誤之后排除錯誤的過程,由程序編者負(fù)責(zé)可靠性模型使用錯誤率數(shù)據(jù)估計未來出現(xiàn)錯誤的情況2022/8/2528前一頁測試階段的信息流2022/8/2529前一頁單元測試測試重點代碼審查計算機(jī)測試 主要內(nèi)容2022/8/2530前一頁單元測試測試重點 模塊接口 局部數(shù)據(jù)結(jié)構(gòu) 重要的執(zhí)行通路 出錯處理通路邊界條件 2022/8/2

10、531前一頁單元測試的考慮模塊接口 首先應(yīng)該對通過模塊接口的數(shù)據(jù)流進(jìn)行測試。如果數(shù)據(jù)不能適當(dāng)?shù)剡M(jìn)出,所有其他測試都是不切實際的。在對接口進(jìn)行測試時主要檢查下述各點: (1)參數(shù)數(shù)目和調(diào)用的變元的數(shù)目是否相等; (2)參數(shù)的屬性和變元的屬性是否匹配; (3)參數(shù)和變元的單位系統(tǒng)是否匹配; (4)傳送給被調(diào)用模塊的變元的數(shù)目是否等于那個模塊的參數(shù)的數(shù)目。 2022/8/2532前一頁模塊接口 (5)傳送給被調(diào)用模塊的變元屬性和參數(shù)的屬性是 否一致? (6)傳送給被調(diào)用的變元的單位系統(tǒng)和該模塊參數(shù)的單位系統(tǒng)是否一致? (7)傳送給內(nèi)部函數(shù)的變元屬性、數(shù)目和次序是否正確? (8)是否修改了只做輸入用的

11、變元? (9)全程變量的定義和用法在各個模塊中是否一致? 單元測試的考慮2022/8/2533前一頁 對于一個模塊而言,局部數(shù)據(jù)結(jié)構(gòu)是常見的錯誤來源。應(yīng)該仔細(xì)設(shè)計測試方案,以便發(fā)現(xiàn)局部數(shù)據(jù)說明、初始化、默認(rèn)值等方面的錯誤。局部數(shù)據(jù)結(jié)構(gòu)單元測試的考慮2022/8/2534前一頁重要的執(zhí)行通路 由于通常不可能進(jìn)行窮盡測試,因此,在單元測試期間選擇最有代表性、最可能發(fā)現(xiàn)錯誤的執(zhí)行通路進(jìn)行測試就是十分關(guān)鍵的。應(yīng)該設(shè)計測試方案用來發(fā)現(xiàn)由于錯誤的計算、不正確的比較或不適當(dāng)?shù)目刂屏鞫斐傻腻e誤。在計算中比較常見的錯誤是: (1)計算次序不對或誤解了運(yùn)算符的優(yōu)先次序; (2)混合運(yùn)算(運(yùn)算對象的類型彼此不相容

12、); (3)變量初始值不正確; (4)精度不夠; (5)表達(dá)式的符號表示錯誤。 單元測試的考慮2022/8/2535前一頁出錯處理通路 好的設(shè)計應(yīng)該能預(yù)見出現(xiàn)錯誤的條件,并且設(shè)置適當(dāng)?shù)奶幚礤e誤的通路,以便在真的出現(xiàn)錯誤時執(zhí)行相應(yīng)的出錯處理通路或干凈地結(jié)束處理。不僅應(yīng)該在程序中包含出錯處理通路,而且應(yīng)該認(rèn)真測試這種通路。單元測試的考慮2022/8/2536前一頁出錯處理通路 當(dāng)評價出錯處理通路時,應(yīng)該著重測試下述一些可能發(fā)生的錯誤: (1)對錯誤的描述是難于理解的; (2)記下的錯誤與實際遇到的錯誤不同; (3)在對錯誤進(jìn)行處理之前,錯誤條件已經(jīng)引起系統(tǒng)干預(yù); (4)對錯誤的處理不正確; (5)

13、描述錯誤的信息不足以幫助確定造成錯誤的位置。 單元測試的考慮2022/8/2537前一頁邊界條件 邊界測試是單元測試中最后的也可能是最重要的任務(wù)。軟件常常在它的邊界上失效,例如,處理n元數(shù)組的第n個元素時,或做到i次循環(huán)中的第i次重復(fù)時,往往會發(fā)生錯誤。使用剛好小于、剛好等于和剛好大于最大值或最小值的數(shù)據(jù)結(jié)構(gòu)、控制量和數(shù)據(jù)值的測試方案,非常可能發(fā)現(xiàn)軟件中的錯誤。 單元測試的考慮2022/8/2538前一頁代碼審查 人工測試源程序可以由編寫者本人非正式地進(jìn)行。后者稱為代碼審查,它是一種非常有效的程序驗證技術(shù),對于典型的程序來說,可以查處30%-70%的邏輯設(shè)計錯誤和編碼錯誤 。單元測試過程202

14、2/8/2539代碼審查過程:審查之前,由設(shè)計者簡要介紹設(shè)計說明書和對程序的設(shè)計審查會上程序的編寫者解釋怎樣實現(xiàn)設(shè)計對照程序錯誤清單,分析審查程序2022/8/2540代碼審查代碼審查的優(yōu)勢:一次審查會上可以發(fā)現(xiàn)許多錯誤,同時可以減少系統(tǒng)驗證的工作量人工測試和計算機(jī)測試相互補(bǔ)充,相輔相成2022/8/2541前一頁計算機(jī)測試 模塊并不是一個獨(dú)立的程序,因此必須為每個單元測試開發(fā)驅(qū)動軟件和(成)存根軟件。通常驅(qū)動程序也就是一個“主程序”,它接收測試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測試的模塊,并打印出有關(guān)的結(jié)果。 單元測試過程2022/8/2542前一頁本小節(jié)結(jié)束2022/8/2543前一頁集成測試 由模

15、塊組裝成程序時有兩種方法。 一種是先分別測試每個模塊,再把所有模塊按設(shè)計要求放在一起結(jié)合成所要的程序。這種方法稱為非漸增式測試方法。 另一種方法是把下一個要測試的模塊同已經(jīng)測試好的那些模塊結(jié)合起來進(jìn)行測試,測試完以后再把下一個應(yīng)該測試的模塊結(jié)合進(jìn)來測試。這種每次增加一個模塊的方法稱為漸增式測試。 2022/8/2544集成測試 自頂向下結(jié)合 自底向上結(jié)合 不同集成測試策略的比較 主要內(nèi)容前一頁2022/8/2545前一頁集成測試自頂向下結(jié)合 自頂向下的結(jié)合方法是從主控制模塊開始,沿著軟件的控制層次向下移動,從而逐漸把各個模塊結(jié)合起來?;蛘呤褂蒙疃葍?yōu)先的策略,或者使用寬度優(yōu)先的策略 第一步 對主

16、控制模塊進(jìn)行測試,測試時用存根程序代替所有直接附屬于主控制模塊的模塊。 第二步 根據(jù)選定的結(jié)合策略(深度優(yōu)先或?qū)挾葍?yōu)先),每次用一個實際模塊代換一個存根程序。 第三步 在結(jié)合進(jìn)一步模塊的同時進(jìn)行測試。 第四步 為了保證加入模塊沒有引進(jìn)新的錯誤,可能需要進(jìn)行回歸測試(即,全部或部分的重復(fù)以前做過的測試)。2022/8/2546前一頁自頂向下結(jié)合2022/8/2547自底向上結(jié)合集成測試前一頁 自底向上測試從“原子”模塊(即在軟件結(jié)構(gòu)最底層的模塊)開始組裝和測試。因為是從底部向上結(jié)合模塊,總能得到需要的下層模塊處理功能,所以不需要存根程序。 2022/8/2548自底向上結(jié)合前一頁2022/8/2

17、549不同集成測試策略的比較集成測試前一頁 自頂向下測試方法的主要優(yōu)點是不需要測試驅(qū)動程序,能夠在測試階段的早期實現(xiàn)并驗證系統(tǒng)的主要功能,而且能在早期發(fā)現(xiàn)上層模塊的接口錯誤。 自頂向下測試方法的主要缺點是需要存根程序,可能遇到與此相聯(lián)系的測試?yán)щy,低層關(guān)鍵模塊中的錯誤發(fā)現(xiàn)較晚,而且用這種方法在早期不能充分展開人力。 自頂向上測試方法的優(yōu)缺點與上述自頂向下測試方法的優(yōu)缺點剛好相反。 混合法:對軟件結(jié)構(gòu)中較上層,使用的是自頂向下方法;對軟件結(jié)構(gòu)中較下層,使用的是自底向下方法,兩者相結(jié)合。 2022/8/2550驗收測試驗收測試的范圍軟件配置復(fù)查 主要內(nèi)容前一頁2022/8/2551驗收測試軟件有效

18、性:如果軟件的功能和性能如同用戶所合理期待的那樣,軟件就是有效的。驗收測試又稱為確認(rèn)測試,目標(biāo)是驗證軟件的有效性。2022/8/2552驗收測試前一頁驗收測試的范圍 (1)某些已經(jīng)測試過的純粹技術(shù)性的特點可能不需要再次測 試; (2)對用戶特別感興趣的功能或性能,可能需要增加一些測試; (3)通常主要使用生產(chǎn)中的實際數(shù)據(jù)進(jìn)行測試; (4)可能需要設(shè)計并執(zhí)行一些與用戶使用步驟有關(guān)的測試。 2022/8/2553驗收測試前一頁驗收測試的范圍 驗收測試一般使用黑盒測試法.應(yīng)該仔細(xì)設(shè)計測試計劃和測試過程,測試計劃包括要進(jìn)行的測試的種類和進(jìn)度安排,測試過程規(guī)定用來檢驗軟件是否與需要一致的測試方案。通過測

19、試要保證軟件能滿足所有功能,能達(dá)到每個性能要求,文檔資料是準(zhǔn)確而完整的。此外,還應(yīng)該保證軟件能滿足其他預(yù)定的要求(例如:可移植性、兼容性、可靠性、安全性和可維護(hù)性等等)。 2022/8/2554驗收測試前一頁驗收測試的范圍驗收測試有兩種可能的結(jié)果: (1)功能和性能與用戶要求一致,軟件是可以接受的。 (2)功能或性能與用戶的要求有差距。 2022/8/2555驗收測試前一頁軟件配置復(fù)查 驗收測試的一個重要內(nèi)容是復(fù)查軟件配置。復(fù)查的目的是保證軟件配置的所有成分都齊全,各方面的質(zhì)量都符合要求,文檔與程序一致。 在驗收測試的過程中應(yīng)該嚴(yán)格遵守用戶指南以及其他操作程序,以便檢驗這些使用手冊的完整性和正

20、確性。必須仔細(xì)記錄發(fā)現(xiàn)的遺漏或錯誤,并且適當(dāng)?shù)匮a(bǔ)充和改正。 2022/8/2556設(shè)計測試方案前一頁 設(shè)計測試方案的基本目標(biāo)是確定一組最可能發(fā)現(xiàn)某個錯誤或某類錯誤的測試數(shù)據(jù)。 2022/8/2557設(shè)計測試方案邏輯覆蓋 等價劃分 邊界值分析 錯誤推測 實用測試策略 前一頁主要內(nèi)容2022/8/2558設(shè)計測試方案前一頁邏輯覆蓋 所謂邏輯覆蓋是對一系列測試過程的總稱,這組測試過程逐漸進(jìn)行越來越完整的通路測試。大致有以下一些不同的覆蓋標(biāo)準(zhǔn): 1、語句覆蓋 2、判定覆蓋3、條件覆蓋 4、判定/條件覆蓋5、條件組合覆蓋 6、點覆蓋7、邊覆蓋 8、路徑覆蓋2022/8/2559設(shè)計測試方案前一頁邏輯覆蓋

21、1.語句覆蓋 為了暴露程序中的錯誤,至少每個語句應(yīng)該執(zhí)行一次。語句覆蓋的含義是,選擇足夠多的測試數(shù)據(jù),使被測試程序中的每個語句至少執(zhí)行一次。2.判定覆蓋 判定覆蓋又叫分支覆蓋,它的含義是,不僅每個語句必須至少執(zhí)行一次,而且每個判定的每種可能的餓結(jié)果都應(yīng)該至少執(zhí)行一次,也就是每個判定的每個分支都至少執(zhí)行一次 。2022/8/2560設(shè)計測試方案前一頁邏輯覆蓋3.條件覆蓋 條件覆蓋的含義是,不僅每個語句至少執(zhí)行一次,而且使判定表達(dá)式中的每個條件都取到各種可能的結(jié)果。4.判定/條件覆蓋 它的含義是,選取足夠多的測試數(shù)據(jù),使得判定表達(dá)式中的每個條件都取到各種可能值,而且每個判定表達(dá)式也都取到各種可能的

22、結(jié)果。 2022/8/2561設(shè)計測試方案前一頁邏輯覆蓋5.條件組合覆蓋 條件組合覆蓋是更強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn),它要求選取足夠多的測試數(shù)據(jù),使得每個判定表達(dá)式中條件的各種可能組合至少出現(xiàn)一次。6.點覆蓋 在正常情況下程序圖是連通的有向圖,圖中每個節(jié)點相當(dāng)于程序流程圖的一個框滿足點覆蓋標(biāo)準(zhǔn)要求選取足夠多的測試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過程序圖中每個節(jié)點一次。顯然,點覆蓋標(biāo)準(zhǔn)和語句覆蓋標(biāo)準(zhǔn)是相同的。 2022/8/2562設(shè)計測試方案前一頁邏輯覆蓋7.邊覆蓋 為了滿足邊覆蓋的測試標(biāo)準(zhǔn),要求選取足夠多測試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過程序圖中每條邊一次。2022/8/2563設(shè)計測試方案前一頁邏輯覆蓋

23、8.路徑覆蓋 路徑覆蓋的含義是,選取足夠多測試數(shù)據(jù),使程序的每條可能路徑至少執(zhí)行一次。 路徑覆蓋是相當(dāng)強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn),它保證程序中每條可能的路徑都至少執(zhí)行一次,因此這樣的測試數(shù)據(jù)更有代表性,暴露錯誤的能力也比較強(qiáng)。 2022/8/2564控制結(jié)構(gòu)測試根據(jù)程序的控制結(jié)構(gòu)進(jìn)行測試用例的選擇基本路徑測試條件測試循環(huán)測試2022/8/2565控制結(jié)構(gòu)測試基本思路:計算程序的環(huán)形復(fù)雜度,根據(jù)該復(fù)雜度定義執(zhí)行路徑的基本集合,從該集合導(dǎo)出的測試用例??梢员WC程序中的每條語句至少執(zhí)行一次,而且每個條件在執(zhí)行時都將分別取真、假兩種值?;韭窂綔y試2022/8/2566控制結(jié)構(gòu)測試步驟:根據(jù)過程設(shè)計結(jié)果畫出流圖

24、計算流圖的環(huán)形復(fù)雜度確定線性獨(dú)立路徑的基本集合設(shè)計可強(qiáng)制執(zhí)行基本集合中每條路徑的測試用例基本路徑測試2022/8/2567基本路徑測試流圖:“退化了的”程序流程圖,只描繪程序的控制流程,數(shù)據(jù)的具體操作及分支或循環(huán)的條件無須畫出。流圖畫法:一個圓(即結(jié)點)表示一條或多條語句,將程序流程圖中的處理框或菱形框映射為結(jié)點;箭頭線(即邊)表示控制流;點和邊圍成的面積稱為域。步驟詳細(xì)分析2022/8/2568procedure:sort do while records remain read record; if record field 1=0 then process record; store i

25、n buffer; increment counter; elseif record field 2=0 then reset counter; else process record; store in file;7a. endif endif7b. enddo8. end 程序流程圖轉(zhuǎn)化為流圖舉例2022/8/25691236458711910例:程序流程圖2022/8/257012,39784,561011流圖2022/8/2571基本路徑測試圖7.6將PDL描述的程序轉(zhuǎn)換為流圖下面進(jìn)入第二步:計算環(huán)形復(fù)雜度V(G)V = 流圖中的域數(shù)V = E N + 2 (E:邊數(shù), N:結(jié)點數(shù))V

26、 = P + 1 (P : 判定結(jié)點數(shù)) 任何一種方法求得的V均為62022/8/2572123456879101211132022/8/2573基本路徑測試第三步:根據(jù)V確定獨(dú)立路徑的集合獨(dú)立路徑:至少包含一條在定義該路徑之前不曾用過的邊獨(dú)立路徑的集合中的路徑條數(shù)=V2022/8/2574基本路徑測試第四步:設(shè)計測試用例根據(jù)判定結(jié)點的條件進(jìn)行設(shè)計2022/8/2575黑盒測試技術(shù)黑盒測試技術(shù)與白盒測試技術(shù)互為補(bǔ)充力圖發(fā)現(xiàn)錯誤的類型:功能不正確或遺漏了功能界面錯誤數(shù)據(jù)結(jié)構(gòu)錯誤或外部數(shù)據(jù)庫訪問錯誤性能錯誤初始化和終止錯誤2022/8/2576前一頁等價劃分 選取少量最有代表性的輸入數(shù)據(jù)作為測試數(shù)

27、據(jù),以期用較小的代價暴露出較多的程序錯誤。等價劃分便是把程序的輸入域劃分為若干個數(shù)據(jù)類,從每個類中選出測試用例。 如果把所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個等價類,則可以合理地做出下述假定:每類中的一個典型值在測試中的作用與這一類中所有其他值的作用相同。因此,可以從每個等價類中只取一組數(shù)據(jù)作為測試數(shù)據(jù)。這樣選取的測試數(shù)據(jù)最有代表性,最可能發(fā)現(xiàn)程序中的錯誤。 2022/8/2577等價劃分劃分的規(guī)則:如果規(guī)定了輸入值的范圍,則可劃分出一個有效的等價類和兩個無效的等價類如果規(guī)定了輸入數(shù)據(jù)的類型,也可劃分出相應(yīng)的有效等價類如果處理的對象是表格,則應(yīng)該使用空表,以及含一項或多項的表 202

28、2/8/2578等價劃分應(yīng)該使每個測試方案只覆蓋一個無效的等價類舉例把數(shù)字串轉(zhuǎn)換成整數(shù)的函數(shù)劃分的一個有效等價類為:16個數(shù)字字符組成的數(shù)字串(高位不為0)最高位數(shù)字是零的數(shù)字串最高位數(shù)字左鄰是負(fù)號的數(shù)字串2022/8/2579前一頁邊界值分析 經(jīng)驗表明,處理邊界情況時程序最容易發(fā)生錯誤。例如,許多程序錯誤出現(xiàn)在下標(biāo)、純量、數(shù)據(jù)結(jié)構(gòu)和循環(huán)等等的邊界附近。因此,設(shè)計使程序運(yùn)行在邊界情況附近的測試方案,暴露出程序錯誤的可能性更大一些。 選取的測試數(shù)據(jù)應(yīng)該剛好等于、剛剛小于和剛剛大于等價類的邊界。2022/8/2580設(shè)計測試方案前一頁錯誤推測 錯誤推測法在很大程度上靠直覺和經(jīng)驗進(jìn)行?;舅枷胧橇信e出程序中可能有的錯誤和容易發(fā)生的特殊情況,并且根據(jù)它們選擇測試方案。 經(jīng)驗表明,在一段程序中已經(jīng)發(fā)現(xiàn)的錯誤數(shù)目往往和尚未發(fā)現(xiàn)的錯誤數(shù)成正比。因此著重測試已發(fā)現(xiàn)錯誤的程序段。2022/8/2581錯誤推測等價劃分和邊界值分析只考慮各個輸入數(shù)據(jù)的測試功效,沒有考慮多個輸入數(shù)據(jù)的組合效應(yīng)。選擇輸入組合的一種方法是利用判定表或判定樹,判定表的每一列至少設(shè)計一個測試用例。另一種有效方法是把計算機(jī)測試和人工檢查代碼結(jié)合起來。2022/8/2582前一頁調(diào)試 問題的外部現(xiàn)象稱為錯誤,問題的內(nèi)在原因稱為故障 調(diào)試就是把癥狀和原因聯(lián)系起來的智力過程。2022/8/2583調(diào)試調(diào)試過程 調(diào)試途徑 主要

溫馨提示

  • 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

提交評論