【正文】
7 參考例子流程圖 T 開始 x =0 ( a) AN D (b OR c) x =1 結(jié)束 F int function1( bool a, bool b, bool c) { int x。 從覆蓋源程序語句的詳細程度分析 , 邏輯覆蓋標準有語句覆蓋 、 判定覆蓋 、 條件覆蓋 、 條件判定組合覆蓋 、 多條件覆蓋和修正條件判定覆蓋 。 這一方法要求測試人員對程序的邏輯結(jié)構(gòu)有清楚的了解 , 甚至要能掌握源程序的所有細節(jié) 。 下面以求兩個非負數(shù) NUM和DEN之商的 Wensley迭代算法為例 , 對斷言語句的作用做一簡要說明 。 我們把插入的這些語句稱為斷言 。 入口 C(1) =C(1)+1 Q=X R=Y C(2) =C(2)+1 C(6) =C(6)+1 Q ≠ R C(4) =C(4)+1 C(3) =C(3)+1 Q ≠ R 出口 C(5) =C(5)+1 Q=Q – R R=R – Q 圖33 插樁后求最大公約數(shù)程序的流程圖 設計插樁程序時需要考慮的問題包括: ① 探測哪些信息; ② 在程序的什么部位設置探測點; ③ 需要設置多少個探測點 。這里僅以計算整數(shù) X和整數(shù) Y的最大公約數(shù)程序為例,說明插樁方法的要點。 1. 方法簡介 程序插樁方法是借助往被測程序中插入操作 , 來實現(xiàn)測試目的的方法 。 下面將介紹幾種實用的白盒測試用例設計方法 , 包括程序插樁 、 邏輯覆蓋 、 基本路徑測試等 。 它顯示了一個系統(tǒng)在檢查狀態(tài)下是正確還是不正確 。 它瞄準的是糾正軟件系統(tǒng)在描述 、表示和規(guī)格上的錯誤 , 是任何進一步測試的前提 。 白盒測試方法又可分為靜態(tài)測試和動態(tài)測試 。通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預期的狀態(tài)一致。 2. 白盒測試 白盒測試是根據(jù)軟件產(chǎn)品的內(nèi)部工作過程,在計算機上進行測試,以證實每種內(nèi)部操作是否符合設計規(guī)格要求,所有內(nèi)部成分是否已經(jīng)過檢查。 1. 黑盒測試 黑盒測試是根據(jù)軟件產(chǎn)品的功能設計規(guī)格 , 在計算機上進行測試 , 以證實每個已經(jīng)實現(xiàn)的功能是否符合要求 。第 3 章 軟件測試的方法和技術 軟件測試方法概述 白 盒 測 試 黑 盒 測 試 測 試 用 例 設 計 軟件測試方法概述 軟件測試的種類大致可分為人工測試和基于計算機的測試。而基于計算機的測試又可分為黑盒測試和白盒測試。 黑盒測試意味著測試要在軟件的接口處進行 。白盒測試把測試對象看做一個打開的盒子,允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。 白 盒 測 試 白盒測試也稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試,前提是知道產(chǎn)品內(nèi)部工作過程,可通過測試來檢測產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行,按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗程序中的每條通路是否都能夠按預定要求正確工作,而不管產(chǎn)品的功能,主要用于軟件驗證。 靜態(tài)測試是一種不通過執(zhí)行程序而進行測試的技術 , 其關鍵功能是檢查軟件的表示和描述是否一致 , 沒有沖突或者沒有歧義 。 而動態(tài)測試需要軟件的執(zhí)行 , 當軟件系統(tǒng)在模擬的或真實的環(huán)境中執(zhí)行之前 、 之中和之后 , 對軟件系統(tǒng)行為的分析是動態(tài)測試的主要特點 。 白盒測試的動態(tài)測試要根據(jù)程序的控制結(jié)構(gòu)設計測試用例 , 其原則是: ( 1) 保證一個模塊中的所有獨立路徑至少被使用一次; ( 2) 對所有邏輯值均需測試 true和 false; ( 3) 在上下邊界及可操作范圍內(nèi)運行所有循環(huán); ( 4) 檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性 。 程序插樁 在軟件動態(tài)測試中 , 程序插樁是一種基本的測試手段 , 有著廣泛的應用 。 如果我們想要了解一個程序在某次運行中所有可執(zhí)行語句被覆蓋的情況,或是每個語句的實際執(zhí)行次數(shù),最好的辦法是利用插樁技術。圖 33給出了這一程序的流程圖。 2. 斷言語句 在程序中特定部位插入某些用以判斷變量特性的語句 , 使得程序執(zhí)行中這些語句得以證實 , 從而使程序的運行特性得到證實 。 這一做法是程序正確性證明的基本步驟 , 盡管算不上嚴格的證明 , 但方法本身仍然是很實用的 。 p ro cedu re D IV ID E(N U M,DE N ,E,Q ) * E is the acc u racy req u ired .E ≥ 0 .Q is b o th * * the res u lt at exit and at a n y interim stage. * * A .B and W ar e the o ther elem ents of the p ro g ram vecto r .* Q :=0 A :=0 B:= D EN /2 W :=1 u n til WE loo p if (N U M – A – B) ≥ 0 then Q :=Q+W /2 A := A +B end if B:= B/2 W :=W/2 end loo p end 圖35 計算非負數(shù)之商的迭代程序 p r o ce d u r e D I V I D E ( N U M,D E N ,E,Q ) * E is th e ac c u r ac y r eq u ir ed .E ≥ 0 .Q is b o th * * th e r es u lt at ex it an d at an y in ter im stag e. * * A .B an d W ar e th e o th er elem en ts o f th e p r o g r am v ec to r .* Q :=0 A :=0 B:=D E N /2 W :=1 K :=0 u n til W E lo o p as se r t W =1 /2 * * K as se r t A =D E N * Q as se r t B=D E N * W /2 as se r t N U M/D E N ? W Q an d Q ≤ N U M/D E N if ( N U M ? A ? B) ≥ 0 th en Q :=Q +W /2 A :=A +B en d if B:=B/2 W :=W /2 K :=K +1 en d lo o p as se r t N U M/D E N ? W Q an d Q ≤ N U M/D E N en d 圖36 插入斷言后的迭代程序 邏輯覆蓋 邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎的設計測試用例的技術 , 是通過對程序邏輯結(jié)構(gòu)的遍歷實現(xiàn)程序的覆蓋 , 它是一系列測試過程的總稱 , 這組測試過程逐漸進行越來越完整的通路測試 。它屬于動態(tài)測試 。 為便于理解,使用如下所示的程序,圖 37所示的是其流程圖。 x=0。amp。 return x。 所以 , 語句覆蓋的含義是:選擇