版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第七章:實現(xiàn)第七章:實現(xiàn) 朱梅霞朱梅霞 著名的軟件測試失敗案例 1、迪斯尼的獅子王迪斯尼的獅子王 1994年迪斯尼公司發(fā)布了第一個面向兒童的多媒體 兒童游戲LionKing Animated Storybook(獅子王動畫故事書)。 盡管已經(jīng)有許多其他公司在兒童游戲市場上運作多年,但是 這次是迪斯尼公司首次進軍這個市場。他們進行了大力宣傳 促銷。結(jié)果,銷售額非??捎^。該游戲成為孩子們那個夏季 的“必買游戲”。后來卻飛來橫禍。12月26日,圣誕節(jié)后的 一天,迪斯尼公司的客戶支持部電話開始響個不停。很快, 電話支持部門就淹沒在憤怒的家長和哭訴玩不成游戲的孩子 們的電話狂潮之中。報紙和電視中涌現(xiàn)了各
2、種故事。 原因:原因:迪斯尼公司沒有對市場上投入使用的各種PC機型進 行正確的測試。軟件在少數(shù)系統(tǒng)中工作正常例如迪斯尼 的程序員用于開發(fā)游戲的系統(tǒng)但在大眾使用的常見系統(tǒng) 中卻不行。 愛國者導彈防御系統(tǒng),愛國者導彈防御系統(tǒng),1991 美國愛國者導彈防御系統(tǒng)是里根總統(tǒng)提出的主動戰(zhàn)略防 御(即星球大戰(zhàn))程序的縮略版本。它首次應用在海 灣戰(zhàn)爭中對抗伊拉克飛毛腿導彈的防御戰(zhàn)爭中。盡管 關于此系統(tǒng)的贊譽不絕于耳,但是它確實在幾次對抗 導彈戰(zhàn)役中失利,其中一枚在沙特阿拉伯的多哈擊斃 28名美國士兵。 原因:原因:存在一個軟件缺陷。一個很 小的系統(tǒng)時鐘錯誤積累起來就可能 拖延14小時,造成跟蹤系統(tǒng)失去準 確度
3、。在多哈襲擊戰(zhàn)中,系統(tǒng)被拖 延100多小時。 千年蟲問題Y2K 廣泛地講,“千年蟲”還包括以下兩個方面的問題: 一個是在一 些計算機系統(tǒng)中,對于閏年的計算和識別出現(xiàn)問題,不能把 2000年識別為閏年,即在該計算機系統(tǒng)的日歷中沒有2000年2月29日這一 天,而是直接由2000年2月28日過渡到了2000年3月1 日; 另一個是在一些比較老的計算機系統(tǒng)中,在程序中使用了數(shù)字串99(或 99/99等)來表示文件結(jié)束、永久性過期、刪除等一些特殊意義的自動操 作,這樣當1999年9月9日(或1999年4 月9日即1999年的第99天)來臨時, 計算機系統(tǒng)在處理到內(nèi)容中有日期的文件時,就會遇到99或99
4、/99等數(shù)字 串,從而將文件誤認為已經(jīng)過期或者將文件刪除等錯誤操作,引發(fā)系統(tǒng) 混亂甚至崩潰等故障。 千年蟲,大約千年蟲,大約1974 20世紀70年代某位程序員假設他叫Dave 負責本公司的工資系統(tǒng)。他使用的計算機存儲 空間很小,迫使他盡量節(jié)省每一個字節(jié)。Dave自 豪地將自己的程序壓縮得比其他人都小。他使用 的其中一個辦法是把4位數(shù)日期,例如1973縮減 為2位數(shù),例如73。因為工資系統(tǒng)極度依賴數(shù)據(jù) 處理,Dave得以節(jié)省可觀的存儲空間。他主要認 為只有在到達2000年時程序計算00或01這樣的年 份時才會出現(xiàn)問題。他知道這樣會出問題,但是 在25年之內(nèi)程序肯定會更改或升級,而且眼前的 任務
5、比現(xiàn)在計劃遙不可及的未來更加重要。這一 天畢竟是要到來的。1995年, Dave的程序仍然 在使用,而Dave退休了,誰也不會想到進入程序 檢查2000年兼容問題,更不用說去修改了。 估計世界各地更換或升級類似Dave程序以解決 原有2000年錯誤的費用以及超過數(shù)億美元了。 黑盒測試黑盒測試: 如果已經(jīng)知道軟件應該具有的功能,可以通過如果已經(jīng)知道軟件應該具有的功能,可以通過 測試來檢驗測試來檢驗是否每個功能都能正常使用是否每個功能都能正常使用,這種,這種 測試稱黑盒測試。也稱測試稱黑盒測試。也稱功能功能測試。測試。 7.2.3 測試方法測試方法 白盒測試白盒測試: 如果知道軟件如果知道軟件內(nèi)部
6、內(nèi)部工作過程工作過程(程序流程圖(程序流程圖 VAR X : REAL) ; BEGIN IF (A1) AND (B=0) THEN X : = X / A; IF (A=2) OR (X1) THEN X : = X + 1 END 入口入口 返回返回 A1 and B=0 or A=2 or X1 and X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 圖圖7.5 被測試模塊的流程圖被測試模塊的流程圖 選取測試用例:選取測試用例: ,程序執(zhí)行路徑為:,程序執(zhí)行路徑為:sacbed。 它它只關注只關注判定表達式的判定表達式的值值,而,而檢查不出檢
7、查不出表達式中表達式中邏輯運算符邏輯運算符出現(xiàn)的出現(xiàn)的 錯誤錯誤 2. 不僅不僅每個語句至少執(zhí)行一次,每個語句至少執(zhí)行一次,而且每個判而且每個判 斷斷的的每種每種可能可能結(jié)果結(jié)果都都至少至少執(zhí)行執(zhí)行一次一次 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 圖圖7.5 被測試模塊的流程圖被測試模塊的流程圖 對于上例,選取如下測試用例:對于上例,選取如下測試用例: I. (TF 覆蓋覆蓋sacbd) II. (FT 覆蓋覆蓋sabed) 不能保證一定能查出在判斷的條件中判斷的條件中存在的錯誤。
8、 例如,在該例子中,若第二個分支X1錯寫成X1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 圖圖7.5 被測試模塊的流程圖被測試模塊的流程圖 上例中,有兩個判定上例中,有兩個判定 表達式,每個表達式有表達式,每個表達式有 兩個條件,為了做到條兩個條件,為了做到條 件覆蓋,應該選取測試件覆蓋,應該選取測試 數(shù)據(jù)使得數(shù)據(jù)使得a點出現(xiàn)如下點出現(xiàn)如下 結(jié)果:結(jié)果: 在在b點出現(xiàn)如下結(jié)果:點出現(xiàn)如下結(jié)果: 選取如下測試用例:選取如下測試用例: I . (滿足滿足A1,B=0,A=2 和和X1,執(zhí)行路徑為執(zhí)行路徑為 sac
9、bed TT) II. (滿足滿足A1,B0,A2 和和X1,執(zhí)行路徑為執(zhí)行路徑為 sabd FF) 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 圖圖7.5 被測試模塊的流程圖被測試模塊的流程圖 判定覆蓋不一定包含條件覆蓋,判定覆蓋不一定包含條件覆蓋, 條件覆蓋也不一定包含判定覆蓋條件覆蓋也不一定包含判定覆蓋 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 圖圖7.5 被測試模塊的
10、流程圖被測試模塊的流程圖 如:如: I (滿足滿足A1,B=0, A=2和和X1,執(zhí)行路徑執(zhí)行路徑 為為sacbed TT) II (滿足滿足A1,B0, A2和和X1,執(zhí)行路徑執(zhí)行路徑 為為sabed FT) 只滿足條件覆蓋,并只滿足條件覆蓋,并 不滿足判定覆蓋。不滿足判定覆蓋。 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 圖圖7.5 被測試模塊的流程圖被測試模塊的流程圖 4. 選取足夠的測試用例使得同時滿足判定覆蓋選取足夠的測試用例使得同時滿足判定覆蓋 和條件覆蓋的要求:和條件覆蓋
11、的要求: (1)每個)每個表達式的真假結(jié)果表達式的真假結(jié)果都取到都取到 (2)表達式中每個)表達式中每個條件的真假結(jié)果條件的真假結(jié)果也取到也取到 對于上例,選取如下測對于上例,選取如下測 試用例:試用例: IA=2,B=0,X=4 (滿滿 足足A1,B=0,A=2和和X1, 執(zhí)行路徑為執(zhí)行路徑為sacbed TT) I I A = 1 , B = 1 , X = 1 (滿足滿足A1,B0,A2和和 X1,執(zhí)行路徑為執(zhí)行路徑為sabd FF) 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7
12、圖圖7.5 被測試模塊的流程圖被測試模塊的流程圖 判定判定/條件覆蓋并不比條件覆蓋更強,也不會條件覆蓋并不比條件覆蓋更強,也不會 比判定覆蓋更強。比判定覆蓋更強。 5. 選取足夠的測試用例,使得選取足夠的測試用例,使得每個每個判定表達式判定表達式 中中條件的條件的各種各種可能可能的的組合組合都都至少至少出現(xiàn)出現(xiàn)一次一次。 對于上例,共有對于上例,共有8 種可能的條件組合:種可能的條件組合: 1)A1,B=0 TT 2)A1,B0 TF 3)A1,B=0 FT 4)A1,B0 FF 5)A=2,X1 TT 6)A=2,X1 TF 7)A2,X1 FT 8)A2,X1 FF 入口入口 返回返回 A
13、1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 圖圖7.5 被測試模塊的流程圖被測試模塊的流程圖 選取如下測試用例:選取如下測試用例: I (滿足滿足1、5組合:組合: A1,B=0,A=2, X 1 , 執(zhí) 行 路 徑執(zhí) 行 路 徑 sacbed) II (滿足滿足2、6組合:組合: A1,B0,A=2, X1,執(zhí)行路徑執(zhí)行路徑sabed) 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 圖圖7.5 被測
14、試模塊的流程圖被測試模塊的流程圖 III (滿足滿足3、7組合:組合:A1, B=0,A2,X1,執(zhí)執(zhí) 行路徑行路徑sabed) IV (滿足滿足4、8組合:組合:A1, B0,A2,X1,執(zhí)執(zhí) 行路徑行路徑sabd) 入口入口 返回返回 A1 and B=0 A=2 or X1 X=X/A X=X+1 s a b d c e T T F F 1 2 3 4 5 6 7 圖圖7.5 被測試模塊的流程圖被測試模塊的流程圖 注意:滿足條件組合滿足條件組合覆蓋標準的測覆蓋標準的測 試數(shù)據(jù)試數(shù)據(jù)不一定不一定能能使使程序中的程序中的每條路每條路 徑徑都都執(zhí)行到執(zhí)行到 1. 流圖流圖 “退化退化”的程序流
15、程圖,僅描繪程序的控的程序流程圖,僅描繪程序的控 制流程,不表現(xiàn)對數(shù)據(jù)的具體操作及循環(huán)、制流程,不表現(xiàn)對數(shù)據(jù)的具體操作及循環(huán)、 選擇的條件。選擇的條件。 6.5.1 McCabe方法方法 一個圓代表一條或多條語句;一個圓代表一條或多條語句; 一個順序結(jié)構(gòu)可以合并成一個結(jié)點;一個順序結(jié)構(gòu)可以合并成一個結(jié)點; 匯點也是結(jié)點;匯點也是結(jié)點; 一個順序處理框序列和一個判斷框可一個順序處理框序列和一個判斷框可 映射成一個結(jié)點。映射成一個結(jié)點。 復合條件:復合條件: 包含了一個或包含了一個或 多個布爾運算符多個布爾運算符 (OR、AND、 NOR等)。等)。 應把復合條件應把復合條件 分解為簡單條件,分解
16、為簡單條件, 每個條件對應一每個條件對應一 個結(jié)點。個結(jié)點。 如果從對程序路徑的覆蓋程度分如果從對程序路徑的覆蓋程度分 析,可以提出下面一些邏輯覆蓋析,可以提出下面一些邏輯覆蓋 標準:標準: 6. 點覆蓋點覆蓋 程序執(zhí)行程序執(zhí)行路徑路徑至少至少經(jīng)過經(jīng)過流圖中流圖中 的的每個結(jié)點一次每個結(jié)點一次 s a b d c e 1 2 3 4 5 6 7 圖圖7.5 對應的程序圖對應的程序圖 7. 邊覆蓋邊覆蓋 使得程序執(zhí)行使得程序執(zhí)行路徑路徑至少至少經(jīng)過經(jīng)過程序圖中程序圖中每條邊一次每條邊一次。 s a b d c e 1 2 3 4 5 6 7 圖圖7.5 對應的程序圖對應的程序圖 選取如下測試用例
17、:選取如下測試用例: I (執(zhí)行路徑執(zhí)行路徑1453) (執(zhí)行路徑執(zhí)行路徑1267) 8. 路徑覆蓋路徑覆蓋 選取足夠多的測試用例,使得程序的選取足夠多的測試用例,使得程序的每條可每條可 能路徑能路徑都都至少執(zhí)行一次至少執(zhí)行一次。 s a b d c e 1 2 3 4 5 6 7 圖圖7.5 對應的程序圖對應的程序圖 選取如下測試用例:選取如下測試用例: I (執(zhí)行路徑執(zhí)行路徑123) II (執(zhí)行路徑執(zhí)行路徑1267) (執(zhí)行路徑執(zhí)行路徑1453) IV (執(zhí)行路徑執(zhí)行路徑14567) 7.6.2 控制結(jié)構(gòu)測試控制結(jié)構(gòu)測試 (自學自學) 7.7 黑盒測試技術黑盒測試技術(功能測試)(功能測
18、試) 等價類等價類:在數(shù)學中,給定一個集合 A 和在 A 上的一個等價關系 ,則 A 中的一 個元素 a 的等價類是在 A中等價于 a 的所有元素的子集: a = y|y ay A 等價關系等價關系:設是集合A上的一個二元關系,若R滿足: 自反性:任意x A, (x, x) ; 對稱性:任意x, y A, (x, y) (y, x) ; 傳遞性:任意x, y, z A, (x, y) (y, z ) ) (x, z) 則稱是定義在A上的一個等價關系。設是一個等價關系,若(x,y) ,則稱x 等價于y,記作x xy. . 7.7.1 等價劃分(等價類劃分)等價劃分(等價類劃分) 例子:等價關系
19、對稱性: 任意x, y A, (x, y) (y, x) ; 傳遞性:任意x, y, z A, (x, y) (y, z ) ) (x, z) (2)假設a表示一輛紅顏色的轎車,則 a=y|y是X中一輛紅顏色的轎車 等價類劃分的思想等價類劃分的思想: 如果將所有可能的輸入數(shù)據(jù)(有效的和無效如果將所有可能的輸入數(shù)據(jù)(有效的和無效 的)的)劃分為若干個等價類劃分為若干個等價類,就可以假定用每一,就可以假定用每一 個個等價類中的代表值等價類中的代表值作為測試用例來進行測試作為測試用例來進行測試 時,時,等價于用該類中所有值等價于用該類中所有值進行了測試。進行了測試。 有效等價類:有效等價類:合理的、
20、有意義的輸入數(shù)據(jù)所構(gòu)成的集合 無效等價類:無效等價類:不合理的、無意義的輸入數(shù)據(jù)所構(gòu)成的集合 用等價類劃分設計測試用例時,主要分兩步:用等價類劃分設計測試用例時,主要分兩步: 劃分等價類劃分等價類、確定測試用例確定測試用例。 1)等價類劃分等價類劃分 劃分等價類需要經(jīng)驗,以下給出一些規(guī)則:劃分等價類需要經(jīng)驗,以下給出一些規(guī)則: A如果如果某輸入條件規(guī)定了輸入的范圍某輸入條件規(guī)定了輸入的范圍,那么可以,那么可以 劃分為劃分為一個有效的一個有效的等價類和等價類和兩個無效的兩個無效的等價類。等價類。 如如X的值的輸入范圍是的值的輸入范圍是1,99,那么測試,那么測試X時,可以這樣劃分:有效時,可以這
21、樣劃分:有效 等價類為等價類為1,99,無效等價類為(,無效等價類為(-,1)和()和(99,+)。)。 B 如果輸入條件規(guī)定了輸入值的集合,或規(guī)定了如果輸入條件規(guī)定了輸入值的集合,或規(guī)定了“必須如必須如 何何”的條件,則可以確定的條件,則可以確定一個有效一個有效等價類和等價類和一個無效一個無效等等 價類。價類。 例如:例如:“標識符是一字母打頭的標識符是一字母打頭的串。串?!?則則字母打頭的字母打頭的-為一個有效等價類為一個有效等價類, 而而其余的其余的-為一個無效等價類為一個無效等價類. C如果某個輸入條件如果某個輸入條件規(guī)定了一組可能的值規(guī)定了一組可能的值,且程序可以,且程序可以 對不同
22、的值作出不同的處理對不同的值作出不同的處理,那么可以,那么可以為每種值確定為每種值確定 一個有效一個有效的等價類,同時的等價類,同時還有一個無效還有一個無效等價類。等價類。 如,如,“職稱職稱”這個量可能的值是:教授、副教授、講師、助教。這個量可能的值是:教授、副教授、講師、助教。 那么可以這樣劃分:四類有效等價類分別為教授、副教授、講師、那么可以這樣劃分:四類有效等價類分別為教授、副教授、講師、 助教,無效等價類為四種職稱以外的所有值。助教,無效等價類為四種職稱以外的所有值。 2)確定測試用例確定測試用例 A給給每個等價類規(guī)定一個每個等價類規(guī)定一個唯一的編號唯一的編號; B設計一個新的測試用
23、例,使其設計一個新的測試用例,使其盡可能多盡可能多地覆蓋地覆蓋 未未被覆蓋過的被覆蓋過的有效有效等價類等價類。重復重復此步,直至所有有效此步,直至所有有效 等價類被覆蓋;等價類被覆蓋; C設計一個新的測試用例,使其設計一個新的測試用例,使其覆蓋而覆蓋而且只且只覆蓋覆蓋一個一個尚尚 未被覆蓋未被覆蓋的的無效無效等價類。重復此步,直到所有無效等價等價類。重復此步,直到所有無效等價 類被覆蓋。類被覆蓋。 通常程序發(fā)現(xiàn)一類錯誤后,就報出錯信息,不再檢查其它類錯誤,通常程序發(fā)現(xiàn)一類錯誤后,就報出錯信息,不再檢查其它類錯誤, 所以設計測試用例時,一次只覆蓋一個無效等價類。所以設計測試用例時,一次只覆蓋一個
24、無效等價類。 實例:一個把數(shù)字串變成整數(shù)的函數(shù)。運行程序的計算機字實例:一個把數(shù)字串變成整數(shù)的函數(shù)。運行程序的計算機字 長長16位,用位,用二進制補碼二進制補碼表示整數(shù)。函數(shù)由表示整數(shù)。函數(shù)由PASCAL語言編寫。語言編寫。 function strtoint ( dstr: shortstr ): integer type shortstr = array1.6 of char; /字符串字符串6位位/ 原碼: 將最高位作為符號位(以0代表正,1代表負),其余各位代表數(shù)值本身的絕對值(以二進制表示)。 反碼: 一個數(shù)如果為正,則它的反碼與原碼相同;一個數(shù)如果為負,則符號位為1,其余各位是對原
25、碼取反。 補碼: 正數(shù)為原碼,負數(shù)為求反碼再加1 原碼 反碼 補碼 70000 0111 0000 0111 0000 0111 -7 1000 0111 1111 1000 1111 1001 利用溢出,我們可以將減法變成加法。對于十進制數(shù),如果從9得到結(jié)果5,可以用減法: 9-4=5 因為4+6=10,我們將6作為4的補數(shù),將上式的減法改寫為加法:9+6=15 去掉高位1(也就是減去10),得到結(jié)果5. 題外話:16位二進制補碼的最小負整數(shù)為什么是-32768? 原碼: 負整數(shù)集合-32767,-0, 正整數(shù)集合0,32767;總共2的16次方個編碼方式; 負整數(shù)集合1111 1111 1
26、111 1111, 1000 0000 0000 0000 正整數(shù)集合0000 0000 0000 0000, 0111 1111 1111 1111 補碼: 負整數(shù)集合-32767,-0, 正整數(shù)集合0,32767;總共2的16次方個編碼方式; 負整數(shù)集合1000 0000 0000 0001, 0000 0000 0000 0000 正整數(shù)集合0000 0000 0000 0000, 0111 1111 1111 1111 由此可見+0和-0在補碼系統(tǒng)中的編碼是一樣的,因此補碼比原碼多了一 個編碼出來,即1000 0000 0000 0000,于是人為的規(guī)定這個補碼為-32768 有效輸入
27、的等價類有:有效輸入的等價類有: (1)16個數(shù)字字符組成的數(shù)字串(最高位數(shù)字不為零);個數(shù)字字符組成的數(shù)字串(最高位數(shù)字不為零); 如:如: 0 , 999999 (2)最高位數(shù)字是零的數(shù)字串;)最高位數(shù)字是零的數(shù)字串; 如:如:“012345”“”“001234”“”“000123”“”“000012”“”“000001”“”“000000” (3)最高位數(shù)字左鄰是負號的數(shù)字串;)最高位數(shù)字左鄰是負號的數(shù)字串; 如:如:“12345”“”“-01234”“”“-00123”“”“-00012”“”“-000001” 無效輸入的等價類有:無效輸入的等價類有: (4)空字符串(全是空格);如)
28、空字符串(全是空格);如“ ”; (5)左部填充的字符既不是零,又不是空格;)左部填充的字符既不是零,又不是空格; 如:如:“A12345” (6)最高位數(shù)字右面由數(shù)字和空格混合而成;最高位數(shù)字右面由數(shù)字和空格混合而成; 如:如:“123 45” (7)最高位數(shù)字右面由數(shù)字和其他字符混合而成;)最高位數(shù)字右面由數(shù)字和其他字符混合而成; 如:如:“12A345” (8)負號與最高位數(shù)字之間有空格;負號與最高位數(shù)字之間有空格; 如:如:“- 1234” 合法輸出的等價類有:合法輸出的等價類有: (9)在計算機能表示的最小負整數(shù)和零之間的負整數(shù);)在計算機能表示的最小負整數(shù)和零之間的負整數(shù); 如:如
29、: -32768 , 0 ) (10)零;)零; (11)在零和計算機能表示的最大正整數(shù)之間的正整數(shù);)在零和計算機能表示的最大正整數(shù)之間的正整數(shù); 如:如: (0 , 32767 非法輸出的等價類有:非法輸出的等價類有: (12)比計算機能表示的最小負整數(shù)還小的負整數(shù);)比計算機能表示的最小負整數(shù)還小的負整數(shù); 如:如:“32769” (13)比計算機能表示的最大正整數(shù)還大的正整數(shù);)比計算機能表示的最大正整數(shù)還大的正整數(shù); 如:如:“123456” (14) 無效輸入無效輸入 ,如:,如:“123 45” (15)負號位置錯,如:)負號位置錯,如:“- 12” (16)填充錯,如:)填充錯
30、,如:“a1aaa9”. 根據(jù)劃分的等價類,設計出測試方案根據(jù)劃分的等價類,設計出測試方案11個:個: (1)16個數(shù)字組成的字符串;個數(shù)字組成的字符串; 輸入:輸入: 1 預期的輸出:預期的輸出:1 (2)最高位數(shù)字是零的數(shù)字串;最高位數(shù)字是零的數(shù)字串; 輸入:輸入:000001 預期的輸出:預期的輸出:1 (3)負號與最高位數(shù)字相鄰;)負號與最高位數(shù)字相鄰; 輸入:輸入:00001 預期的輸出:預期的輸出:1 (4)最高位數(shù)字是零的特例;)最高位數(shù)字是零的特例; 輸入:輸入:000000 預期的輸出:預期的輸出:0 (5)太小的負整數(shù);)太小的負整數(shù); 輸入:輸入:47561 預期的輸出:
31、錯誤無效輸入預期的輸出:錯誤無效輸入 (6)太大的正整數(shù);)太大的正整數(shù); 輸入:輸入:132767 預期的輸出:錯誤無效輸入預期的輸出:錯誤無效輸入 (7)空字符串;)空字符串; 輸入:輸入: 預期的輸出:錯誤沒有數(shù)字預期的輸出:錯誤沒有數(shù)字 (8)字符串左部字符既不是零又不是空格;)字符串左部字符既不是零又不是空格; 輸入:輸入:AAAAA1 預期的輸出:錯誤非數(shù)字預期的輸出:錯誤非數(shù)字 (9)最高位數(shù)字后面有空格;)最高位數(shù)字后面有空格; 輸入:輸入:1 2 預期的輸出:錯誤無效輸入預期的輸出:錯誤無效輸入 (10)最高位數(shù)字后面有其他字符;)最高位數(shù)字后面有其他字符; 輸入:輸入:1A
32、AA23 預期的輸出:錯誤無效輸入預期的輸出:錯誤無效輸入 (11)負號和最高位數(shù)字之間有空格;負號和最高位數(shù)字之間有空格; 輸入:輸入: 12 預期的輸出:錯誤負號位置錯。預期的輸出:錯誤負號位置錯。 程序通常在處理邊緣情況時容易出現(xiàn)錯誤,如等價類程序通常在處理邊緣情況時容易出現(xiàn)錯誤,如等價類 與等價類之間的邊界值。與等價類之間的邊界值。 所以在設計測試用例時,使用所以在設計測試用例時,使用正好等于正好等于、正好大于正好大于、 正好小于邊界值正好小于邊界值的數(shù)據(jù)進行測試,發(fā)現(xiàn)程序錯誤的概率的數(shù)據(jù)進行測試,發(fā)現(xiàn)程序錯誤的概率 較大。較大。 7.7.2 邊界值分析邊界值分析 邊界值分析測試法屬黑
33、盒測試。邊界值分析測試法屬黑盒測試。 在實際設計測試方案時,常常在實際設計測試方案時,常常結(jié)合使用結(jié)合使用等價劃等價劃 分和邊界值分析分和邊界值分析兩種技術,把一些等價類的邊兩種技術,把一些等價類的邊 界值作為測試用例進行測試。界值作為測試用例進行測試。 上例中設計了上例中設計了11個測試用例,還應該用邊界值分個測試用例,還應該用邊界值分 析補充測試用例:析補充測試用例: (12)使輸出)使輸出剛好等于最小剛好等于最小負整數(shù);負整數(shù); 輸入:輸入:32768 預期的輸出:預期的輸出:32768 (13)使輸出)使輸出剛好等于最大剛好等于最大的正整數(shù);的正整數(shù); 輸入:輸入: 32767 預期的
34、輸出:預期的輸出:32767 (14)使輸出)使輸出剛剛小于最小剛剛小于最小的負整數(shù);的負整數(shù); 輸入:輸入:32769 預期的輸出:錯誤無效輸入預期的輸出:錯誤無效輸入 (15)使輸出)使輸出剛剛大于最大剛剛大于最大正整數(shù);正整數(shù); 輸入:輸入: 32768 預期的輸出:錯誤無效輸入預期的輸出:錯誤無效輸入 :8180/index.jsp 軟工空間首頁的軟工服務欄里有測試服務 一欄,大家編了Java或C+程序后,可以用 它里面提供的一系列工具進行測試 7.8 調(diào)試調(diào)試 7.8.1 調(diào)試過程調(diào)試過程 調(diào)試是在測試發(fā)現(xiàn)錯誤之后排除錯誤的過程。調(diào)試是在測試
35、發(fā)現(xiàn)錯誤之后排除錯誤的過程。 測試用例測試用例 結(jié)果結(jié)果 調(diào)試調(diào)試 附加測試附加測試 糾正且回歸測試糾正且回歸測試 已識別原因已識別原因 被懷疑原因被懷疑原因 1. 蠻干法蠻干法:打印內(nèi)存的內(nèi)容,從中尋找錯誤的線索,是效率打印內(nèi)存的內(nèi)容,從中尋找錯誤的線索,是效率 最低的程序調(diào)試方法。最低的程序調(diào)試方法。 2. 回溯法回溯法:從發(fā)現(xiàn)問題的程序段開始人工地往回追蹤分析程從發(fā)現(xiàn)問題的程序段開始人工地往回追蹤分析程 序代碼,直到找到錯誤。序代碼,直到找到錯誤。 3. 原因排除法原因排除法 包括:對分查找法、歸納法、演繹法包括:對分查找法、歸納法、演繹法 7.8.2 調(diào)試途徑調(diào)試途徑 7.9 軟件可靠
36、性軟件可靠性(了解,可自學)(了解,可自學) 1. 軟件可靠性定義軟件可靠性定義 是程序在給定的是程序在給定的時間間隔時間間隔內(nèi),內(nèi),按照按照規(guī)格說明書的規(guī)定規(guī)格說明書的規(guī)定成成 功功地運行的地運行的概率概率。 7.9.1 基本概念基本概念 2. 軟件的可用性軟件的可用性 對故障可修復系統(tǒng),應同時使用對故障可修復系統(tǒng),應同時使用可靠性可靠性和和可用性可用性來衡量。來衡量。 軟件可用性軟件可用性是:程序在給定的是:程序在給定的時間點時間點,按照規(guī)格說明書的規(guī),按照規(guī)格說明書的規(guī) 定,成功地運行的概率。定,成功地運行的概率。 可靠性和可用性的區(qū)別可靠性和可用性的區(qū)別是:可靠性是在是:可靠性是在0到
37、到t時間間隔內(nèi),系統(tǒng)時間間隔內(nèi),系統(tǒng) 沒有失效的概率。而可用性是在沒有失效的概率。而可用性是在t時刻,系統(tǒng)是正常運行的概率。時刻,系統(tǒng)是正常運行的概率。 如果在如果在t時刻,系統(tǒng)是可用的,則有兩種可能:時刻,系統(tǒng)是可用的,則有兩種可能: 1)在)在0到到t時刻這段時間內(nèi),系統(tǒng)一直沒有失效(可靠);時刻這段時間內(nèi),系統(tǒng)一直沒有失效(可靠); 2)在)在0到到t時刻這段時間內(nèi)失效過,但是系統(tǒng)修復后運行到時刻這段時間內(nèi)失效過,但是系統(tǒng)修復后運行到t時刻時刻 時情況良好。時情況良好。 如果在一段時間內(nèi),軟件系統(tǒng)故障停機時間分別為:如果在一段時間內(nèi),軟件系統(tǒng)故障停機時間分別為: td1 , td2 ,
38、,正常運行時間分別為:正常運行時間分別為:tu1 , tu2 , ,則系統(tǒng)的則系統(tǒng)的 穩(wěn)態(tài)可用性定義為:穩(wěn)態(tài)可用性定義為: downup up ss TT T A 其中其中Tup= tui , Tdown= tdi 如果引入系統(tǒng)平均無故障時間如果引入系統(tǒng)平均無故障時間MTTF和平均維修時間和平均維修時間 MTTR的概念,則上面公式的系統(tǒng)穩(wěn)態(tài)可用性變成:的概念,則上面公式的系統(tǒng)穩(wěn)態(tài)可用性變成: MTTRMTTF MTTF A ss MTTR是修復一個故障平均需要用的時是修復一個故障平均需要用的時 間,取決于維護人員的技術水平和對系統(tǒng)熟悉程度。間,取決于維護人員的技術水平和對系統(tǒng)熟悉程度。 MTT
39、F是系統(tǒng)按照規(guī)格說明書規(guī)定成是系統(tǒng)按照規(guī)格說明書規(guī)定成 功地運行的平均時間,取決于系統(tǒng)中潛伏的錯誤數(shù)量。功地運行的平均時間,取決于系統(tǒng)中潛伏的錯誤數(shù)量。 1. 符號符號 估算估算MTTF時使用到下列符號時使用到下列符號 ET測試之前程序中故障總數(shù);測試之前程序中故障總數(shù); IT程序長度(機器指令總數(shù));程序長度(機器指令總數(shù)); 測試(包括調(diào)試)時間;測試(包括調(diào)試)時間; Ed() 在在0至至期間發(fā)現(xiàn)的錯誤數(shù);期間發(fā)現(xiàn)的錯誤數(shù); Ec() 在在0至至期間改正的錯誤數(shù);期間改正的錯誤數(shù); 7.9.2 估算平均無故障時間估算平均無故障時間MTTF的方法的方法 2. 基本假定基本假定 可作出下列假
40、定:可作出下列假定: 1)單位長度里的故障數(shù)單位長度里的故障數(shù)ET/ IT近似為常數(shù)近似為常數(shù)。一些統(tǒng)計。一些統(tǒng)計 數(shù)字表明,通常有:數(shù)字表明,通常有:0.510-2ET/ IT210-2。 2)失效率正比于軟件中剩余的(潛藏的)故障數(shù),而失效率正比于軟件中剩余的(潛藏的)故障數(shù),而 平均無故障時間平均無故障時間MTTF與剩余的故障數(shù)成反比與剩余的故障數(shù)成反比。 3)調(diào)試過程沒有引入新的故障調(diào)試過程沒有引入新的故障,即,即Ec()= Ed()。 由于系統(tǒng)剩余的故障數(shù)為:由于系統(tǒng)剩余的故障數(shù)為: Er() = ET- Ec() 所以單位長度程序中剩余的故障數(shù)為:所以單位長度程序中剩余的故障數(shù)為:
41、 r () = ET / IT - Ec()/ IT 3. 估算平均無故障時間估算平均無故障時間MTTF 因為平均無故障時間與單位長度程序中剩余的故障因為平均無故障時間與單位長度程序中剩余的故障 數(shù)數(shù)r ()成反比,所以:成反比,所以: / )(/ 1 )( TcTT r IEIEK MTTF 其中:其中:K為常數(shù),它的值根據(jù)經(jīng)驗選取,為常數(shù),它的值根據(jù)經(jīng)驗選取, 經(jīng)典值是經(jīng)典值是200。 由上式變換后得到程序中改正的錯誤數(shù):由上式變換后得到程序中改正的錯誤數(shù): 根據(jù)對軟件平均無故障時間的要求,可以估計根據(jù)對軟件平均無故障時間的要求,可以估計 需要改正多少個錯誤后,測試工作就可以結(jié)束。需要改正
42、多少個錯誤后,測試工作就可以結(jié)束。 MTTFK I EE T Tc 4. 估計故障總數(shù)估計故障總數(shù)ET的方法的方法 1)植入故障法植入故障法 假設人為地植入的故障數(shù)為假設人為地植入的故障數(shù)為Ns,經(jīng)過一段時間的測試之后發(fā)現(xiàn)經(jīng)過一段時間的測試之后發(fā)現(xiàn) ns個植入的故障,同時還發(fā)現(xiàn)了個植入的故障,同時還發(fā)現(xiàn)了n個原有的故障,則可以估計出程個原有的故障,則可以估計出程 序中原有的故障總數(shù):序中原有的故障總數(shù): s s N n n N 其中:其中: 是故障總數(shù)是故障總數(shù)ET的估計值;的估計值; N 植入錯誤法人為植入的錯誤與原有程序錯誤可能植入錯誤法人為植入的錯誤與原有程序錯誤可能 性質(zhì)很不相同,發(fā)現(xiàn)它們的難度也不同,用此法性質(zhì)很不相同,發(fā)現(xiàn)它們的難度也不同,用此法 估計的錯誤數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廠房出租安全風險評估與報告協(xié)議4篇
- 個人信用貸款協(xié)議范本(2024年版)版B版
- 論文寫作全攻略
- 2025年度國際貿(mào)易代理風險控制合同范本4篇
- 2025年度高端裝備制造廠區(qū)租賃合同協(xié)議4篇
- 2025年度醫(yī)療設施場地租賃合同范本6篇
- 2025年度常年法律顧問服務合同企業(yè)勞動爭議解決報價4篇
- 專項經(jīng)濟分析與信息咨詢服務協(xié)議版B版
- 2024經(jīng)濟中介服務合同格式
- 2025年度環(huán)保設備銷售與環(huán)保技術服務合同4篇
- 增強現(xiàn)實技術在藝術教育中的應用
- TD/T 1060-2021 自然資源分等定級通則(正式版)
- 《創(chuàng)傷失血性休克中國急診專家共識(2023)》解讀
- 倉庫智能化建設方案
- 海外市場開拓計劃
- 2024年度國家社會科學基金項目課題指南
- 供應鏈組織架構(gòu)與職能設置
- 幼兒數(shù)學益智圖形連線題100題(含完整答案)
- 七上-動點、動角問題12道好題-解析
- 2024年九省聯(lián)考新高考 數(shù)學試卷(含答案解析)
- 紅色歷史研學旅行課程設計
評論
0/150
提交評論