檢查設計和**
靜態測試是指測試非執行部分——檢查和審查。白盒測試是指訪問**,能夠檢視和審查。靜態白盒測試實在不執行的條件下有條理地仔細審查軟體設計、體系結構和**,從而找出軟體缺陷的過程。有時也稱為結構分析。
進行靜態白盒子測試的首要原因就是盡早發現軟體缺陷,以找出動態黑盒子測試難以揭示或遇到的軟體缺陷;另乙個好處是為接受該軟體測試的黑盒測試員的測試案例提供思路,他們不必了解**細節,但是根據審查備註,可以確定似乎有問題或者存在軟體缺陷的特性範圍。
正式審查
正式審查就是進行靜態白盒子測試的過程。正式審查含義廣泛,從程式設計師之間的交談,到**的嚴格檢查均屬於此過程。
有4個基本要素:
確定問題。審查的目標是找出軟體的問題,不僅是出錯的專案,還包括遺漏的專案。全部的批評應直指**,而不是其建立者。合作者不應該互相指責。個人情緒化感覺要保留。
遵守規則。 審查要遵守一套固定的規則,規則可能設定要審查的**量、花費多少時間、哪些內容要做備註等等。其重要性在於合作者了解自己的作用和目標,這有助於使審查進展的更加順利。
準備。每個合作者需要了解自己的責任和義務,並積極參與審查。在審查過程中找出問題大部分的缺陷是在準備期間發現的,而不是實際審查期間。
編寫報告。審查小組必須做出總結審查結果的書面報告,並使報告便於開發小組使用。審查結果必須盡快告訴別人,比如發現多少問題,在哪發現的。
用一句話來概括,動態白盒測試是指利用檢視**功能和實現方式得到的資訊來確定哪些要測試,哪些不要測試,如何開展測試。動態白盒測試的另乙個常用名稱是結構化測試,因為軟體測試員可以檢視並使用**的內部結構,從而設計和執行測試。
動態白盒測試不僅僅是檢視**,還包括直接引數和控制軟體。它包括四部分:
1.直接測試底層功能、過程、子程式和庫。即應用程式介面(api)
2.以完整程式的方式從頂層測試軟體,但是要根據對軟體執行的了解調整測試案例。
3.從軟體獲得讀取變數和狀態資訊的訪問權,以便確定測試與預期結果是否相符,同時,強制軟體以正常測試難以實現的方式執行。
4. 估算執行測試時「命中」的**量和具體**,然後調整測試,去掉多餘的,補充遺漏的。
桌面檢查
變數的交叉引用表
標號的交叉引用表
子程式、巨集、函式
等價性檢查
常量檢查
**審查
標準檢查
風格檢查
走查對照程式的規格說明,詳細閱讀源**,逐字逐句進行分析和思考,比較實際的**和期望的**,從它們的差異中發現程式的問題和錯誤。
補充文件。
邏輯覆蓋是通過對程式邏輯結構的遍歷實現程式的覆蓋。它是一系列測試過程的總稱 ,這組測試過程逐漸進行越來越完整的通路測試
邏輯覆蓋法又可分為
語句覆蓋
設計足夠的測試用例,執行被測程式,使得程式中每乙個可執行語句至少執行一次。
執行路徑:abd 測試資料:[x=4,y=5,z=9]
判斷覆蓋
設計足夠的測試用例,執行被測程式,使得每個判定的取真分支和取假分支至少執行一次.
執行路徑:abe,acd 測試資料:[x=5,y=5,z=9]、[x=4,y=5,z=10]
條件覆蓋
設計足夠多的測試用例,執行被測程式,使得每一判定語句中每 個邏輯條件的可能取值至少執行一次。
執行路徑: (t1, t2,t3,-t4)acd、(-t1,t2,-t3,t4)acd
測試資料: [x=4,y=5,z=10]、 [x=3,y=6,z=9]
判斷-條件覆蓋
設計足夠多的測試用例,使得判定中的每個條件的所有可能(真假分支)至少執行-次,並且每個判定本身的判定結果也至少執行次。
執行路徑:(t1, t2,t3,t4)abd、(-t1, -t2,-t3,-t4)ace
測試資料:[x=4,y=6,z=9]、[x=3,y=5,z=10]
條件組合覆蓋
設計足夠多的測試用例,使得每個判定中條件的各種可能組合都至少執行次。
執行路徑:(t1,t2,t3,t4)abd、(-t1,-t2,-t3,-t4)ace、 (t1,-t2,t3, t4)acd、(-t1,t2,-t3,t4)acd
測試資料:[x=4,y=6,z=9]、[x=3,y=5,z=10]、 [x=4,y=5,z=10]、 [x=3,y=6,z=9]
路徑補充覆蓋
針對條件組合覆蓋,如果發現丟失路徑的情況存在,則補充丟失的路徑。
執行路徑:abe
測試資料:[x=5,y=5,z=9]
程式的控制流程圖如下:
例子:
mccabe複雜性度量
有以下兩種方法計算圈複雜度:
控制流程圖:
以詳細設計或源**作為基礎,匯出程式的控制流圖。
計算得到的控制流圖g的環路複雜性v(g)。
確定線性無關的路徑的基本集。
生成測試用例,確保基本路徑集中每條路徑的執行。
簡單覆蓋
其中n是允許通過迴圈的最大次數
整個跳過迴圈;
只有一次通過迴圈;
兩次通過迴圈;
m次通過迴圈,其中mn-1 , n次通過迴圈。
巢狀覆蓋
從最內層迴圈開始,將其它迴圈設定為最小值。
對最內層迴圈使用簡單迴圈,而使外層迴圈的疊代引數(即迴圈計數) 最小,並為範圍外或排除的值增加其它測試。
由內向外構造下乙個迴圈的測試,但其它的外層迴圈為最小值,並使其它的巢狀迴圈為"典型」值。
繼續直到測試所有的迴圈。
串接迴圈
如果串接迴圈的迴圈都彼此獨立,可是使用簡單迴圈策略測試。
如果第乙個迴圈是第 個迴圈的初始值,則這兩個迴圈並不是獨立的則推薦使用的巢狀迴圈的方法進行測試。
不規則迴圈
不能測試,盡量重新設計成結構化的程式結構後再進行測試。
白盒測試用例設計
1.1.1.1 靜態白盒測試 評審 檢查 1.1.1.2 動態白盒測試 邏輯覆蓋 基本路徑覆蓋 迴圈覆蓋 1.1.2.1 檢查方式 桌面檢查 審查 走查1.1.2.2 檢查專案 變數的交叉引用表 標號的交叉引用表 子程式 巨集 函式 等價性檢查 常量檢查 標準檢查 風格檢查 對照程式的規格說明,詳細...
原創 白盒測試用例設計方法
原創 白盒測試用例設計方法 白盒測試用例設計方法主要分為邏輯覆蓋測試和基本路徑測試.其中邏輯覆蓋包括 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋,具體見下所示 語句覆蓋就是設計若干個測試用例,執行被測程式,使得每一可執行語句至少執行一次。判定覆蓋就是設計若干個測試用例,執行被...
白盒測試的測試用例設計有哪些方法
白盒測試用例設計技術可分為邏輯覆蓋和路徑覆蓋,邏輯覆蓋又可分為以下幾種,從弱到強 語句覆蓋 sc 設計足夠多的測試用例,確保每條語句都被執行過。判定覆蓋 dc 設計足夠多的測試用例,確保每個判定都分別取真值與假值。條件覆蓋 cc 設計足夠多的測試用例,確保每個條件都分別取真值與假值。乙個判定裡可能包...