軟件白盒測試技術(shù) 2_第1頁
軟件白盒測試技術(shù) 2_第2頁
軟件白盒測試技術(shù) 2_第3頁
軟件白盒測試技術(shù) 2_第4頁
軟件白盒測試技術(shù) 2_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件測試課程 軟件白盒測試 概覽 在本章中,我們將學(xué)習(xí): 結(jié)構(gòu)性白盒測試概述 程序結(jié)構(gòu)分析 邏輯覆蓋 結(jié)構(gòu)性測試案例 目標(biāo) 完成此課程之后,學(xué)員將具備以下能力: 了解結(jié)構(gòu)性測試的含義 進(jìn)行程序結(jié)構(gòu)分析 使用邏輯覆蓋的方法進(jìn)行白盒測試 了解Devpartner進(jìn)行白盒測試 課程目錄 結(jié)構(gòu)測試結(jié)構(gòu)測試概述概述 程序結(jié)構(gòu)分析 邏輯覆蓋 結(jié)構(gòu)測試案例分析 結(jié)構(gòu)測試工具 結(jié)構(gòu)測試定義 把測試對象看做一個透明的盒子 白盒測試是根據(jù)被測程序的內(nèi)部結(jié)構(gòu)設(shè)計測 試用例并完成測試的一種測試方法 白盒測試或邏輯驅(qū)動測試 基于一個應(yīng)用代碼的內(nèi)部邏輯知識,測試覆 蓋全部代碼、分支、路徑和條件 結(jié)構(gòu)測試特點(diǎn) 可以構(gòu)成測試

2、數(shù)據(jù)使特定程序部分得到 測試 有一定的充分性度量手段 可獲得較多工具支持 通常只用于單元測試 結(jié)構(gòu)測試的方法 靜態(tài)測試方法: 程序結(jié)構(gòu)分析 代碼走查 代碼審查 控制流分析 數(shù)據(jù)流分析 信息流分析 動態(tài)測試方法: 邏輯覆蓋 語句覆蓋 分支覆蓋 條件覆蓋 分支-條件覆蓋 路徑覆蓋 代碼覆蓋率 采用白盒法進(jìn)行測試時,考慮的是測試 用例對程序內(nèi)部邏輯的覆蓋程度 最徹底的白盒法是覆蓋程序中的每一條 路徑,但這往往無法實(shí)現(xiàn) 采用其它一些標(biāo)準(zhǔn)來量度覆蓋的程度, 并希望覆蓋程度盡可能高些 課程目錄 結(jié)構(gòu)測試概述 程序結(jié)構(gòu)分析程序結(jié)構(gòu)分析 邏輯覆蓋 結(jié)構(gòu)測試案例分析 結(jié)構(gòu)測試工具使用 程序結(jié)構(gòu)分析 代碼走查 代

3、碼審查 控制流分析 數(shù)據(jù)流分析 信息流分析 代碼走查 含義 代碼走查是由一組程序和錯誤檢查技術(shù)組成,并以代碼審查組方式 進(jìn)行 人員 組長(有威信的資深程序員擔(dān)任):負(fù)責(zé)分配資料、安排計劃、主 持會議、記錄并保存被發(fā)現(xiàn)的錯誤 資深程序員 測試人員 程序開發(fā)員(可做會議主持) 重點(diǎn)探討代碼編寫思路:比如算法,基于對象的編程,類設(shè)計。 但是代碼走查非常枯燥,現(xiàn)在變成了關(guān)注于強(qiáng)制代碼標(biāo)準(zhǔn) 代碼審查 內(nèi)容 檢查代碼和設(shè)計的一致性 檢查代碼對標(biāo)準(zhǔn)的遵循、可讀性 檢查代碼的邏輯表達(dá)的正確性 檢查代碼結(jié)構(gòu)的合理性 形成公司積累變成容易出錯的checklist 代碼審查 步驟 準(zhǔn)備 程序閱讀 審查會 跟蹤及報告

4、 控制流分析 非結(jié)構(gòu)化程序會給測試、排錯、和程 序的維護(hù)帶來許多困難 要求寫出的程序結(jié)構(gòu)良好 檢查程序的控制結(jié)構(gòu)成為十分有意義 的工作 程序流程圖 1 3 2 5 控制流圖 1 2 4 3 5 a b c d e f 控制流圖 節(jié)點(diǎn) 標(biāo)有編號的圓圈 程序流程圖中矩形框所表示的處理 菱形表示的兩個甚至多個出口判斷 多條流線相交的匯合點(diǎn) 控制流圖 控制流線或弧 箭頭 與程序流程圖中的流線一致,表明了控制的 順序 控制流線通常標(biāo)有名字 控制流圖矩陣 12345 1 2 3 4 5 控制流圖矩陣 便于機(jī)器表示和處理控制流圖 連接弧的節(jié)點(diǎn)的號碼決定了矩陣中元素 的位置 注意控制流的方向(行-列) 兩個節(jié)

5、點(diǎn)沒有弧線,所對應(yīng)的位置也就 沒有元素 程序結(jié)構(gòu)的基本要求 寫出的程序不應(yīng)包含: 轉(zhuǎn)向并不存在的標(biāo)號 沒有用的語句標(biāo)號 從程序入口進(jìn)入后無法達(dá)到的語句 不能達(dá)到停機(jī)語句的語句 目前對這四種情況的檢測主要通過編譯器和程序分 析工具來實(shí)現(xiàn)。 可以利用控制流圖分析出來,是否存在以上情況。 例如:1-2-3、4-4-5(結(jié)束) 數(shù)據(jù)流分析 查找引用未定義變量等程序錯誤 查找對以前未曾使用的變量再次賦值等 數(shù)據(jù)流異常的情況 常見的錯誤表現(xiàn)形式 錯拼名字 名字混淆 語句丟失 數(shù)據(jù)流 如果程序中某一語句執(zhí)行時能改變某程 序變量V的值,則稱V被該語句定義 如果一語句的執(zhí)行引用了內(nèi)存中變量V的 值,則稱V被該語

6、句引用 例如: X=Y+Z;-X被定義,Y和Z被引用 if YZ then return;-Y和Z被引用 控制流圖與數(shù)據(jù)流表 1 2 3 410 6 7 5 8 9 11 Z的 值被 送給 外部 環(huán)境 例如:假定某 個變量的值在 使用以前被錯 誤的改寫了( 對輸出沒有任 何作用),這 個語句就會被 發(fā)現(xiàn) 信息流分析 通過對輸入數(shù)據(jù)、輸出數(shù)據(jù)、語句之間的關(guān) 系的分析來檢查程序錯誤 信息流分析用來分析,是否存在無用的語句。 整除算法例子 輸入:in_m是被除數(shù),in_n是除數(shù) 輸出:out_q是商,out_r是余數(shù) 整除算法例子 n out_q = 0; n out_r = in_m; n Whi

7、le(out_r = in_n) n out_q +; n out_r = out_r in_n; 信息流關(guān)系圖 in_min_n 1 2 3 4 5 out_q out_r 1 2 3 4 5 out_q out_r in_m In_n (1)輸入變量影響語句(2)語句影響到輸出變量 (3) 輸入影響到輸出 信息流分析 能夠列出對輸入變量的所有可能的引用 在程序的任何指定點(diǎn)檢查其執(zhí)行可能影 響某一輸出變量值的語句 輸入輸出關(guān)系提供一種檢查,看每個輸 出值是否由相關(guān)的輸入值,而不是其他 值導(dǎo)出 課程目錄 白盒測試概述 程序結(jié)構(gòu)分析 邏輯覆蓋邏輯覆蓋 結(jié)構(gòu)測試案例分析 結(jié)構(gòu)測試工具使用 覆蓋準(zhǔn)則

8、 測試到什么地步可以結(jié)束測試? 覆蓋準(zhǔn)則 被測小程序 if (A 1 if (A = 2 | X 1) X = X + 1; 被測程序段流程圖 A 1 i3) statement; 語句覆蓋率的問題 能達(dá)到很高的語句覆蓋率 語句覆蓋率看似很高,卻有嚴(yán)重缺陷 if(x!=1) statements; ; else statement; 99句 1句 測試用例 x = 2 語句覆蓋率99% 50%的分支沒有達(dá)到 分支覆蓋 設(shè)計若干測試用例,運(yùn)行被測程序,使得程序 中每個判斷的真假分支至少經(jīng)歷一次 又稱判定覆蓋 while語句、switch語句、異常處理、跳轉(zhuǎn)語句 等等同樣可以使用分支覆蓋來測試 分

9、支覆蓋率 已取過“真”和“假”兩個值的判定占程序中所有條件 判定個數(shù)的百分比 分支覆蓋測試用例 路徑ace A=2 B=0 X=3 路徑abd A=1 B=0 X=1 路徑acd A=3 B=0 X=3 路徑abe A=2 B=1 X=2 或 分支覆蓋的利弊 分支覆蓋要比語句覆蓋查錯能力強(qiáng)一些: 執(zhí)行了分支覆蓋,實(shí)際也就執(zhí)行了語句 覆蓋 分支覆蓋與語句覆蓋存在同樣的缺點(diǎn) 不能查出條件語句錯誤 不能查出邏輯運(yùn)算錯誤 不能查出循環(huán)次數(shù)錯誤 不能查出循環(huán)條件錯誤 條件覆蓋 設(shè)計若干測試用例,執(zhí)行被測程序以后, 要使每個判斷中的每個條件的可能取值 至少滿足一次 條件覆蓋分析 第1個判斷應(yīng)考慮 A 1,

10、記為T1 A 1,記為T4 X 1, B = 0, 記為T1, T2 (2) A 1, B != 0, 記為T1, F2 (3) A = 1, B = 0, 記為F1, T2 (4) A 1, 記為T3, T4 (6) A = 2, X 1, 記為F3, T4 (8) A != 2, X 0 ) 5 6 If ( iType=0 ) 7x=y+2; 8 else 9 If ( iType=1 ) 10 x=y+10; 11 else 12 x=y+20; 13 14 基本路徑測試方法(續(xù)) 畫出控制流圖: 如右圖所示 計算環(huán)形復(fù)雜度: 10(條邊)- 8(個節(jié)點(diǎn))+ 2 = 4 導(dǎo)出獨(dú)立路徑(

11、用語句編號表示) 路徑1:414 路徑2:46714 路徑3:4691013414 路徑4:4691213414 4 6 79 1012 1314 路徑覆蓋的利弊 實(shí)現(xiàn)了所有路徑的測試,發(fā)現(xiàn)錯誤能力 強(qiáng) 某些條件錯誤可能無法發(fā)現(xiàn) 路徑數(shù)龐大,不可能覆蓋所有路徑 用例數(shù)量的增加 循環(huán)測試路徑覆蓋 0次循環(huán) 檢查跳出循環(huán) 1次循環(huán) 檢查循環(huán)初始值 2次循環(huán) 檢查多次循環(huán) m次循環(huán) 檢查某次循環(huán) 最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次循環(huán) 檢查循環(huán)次數(shù)邊界 簡化循環(huán)路徑 循環(huán)使路徑數(shù)量急劇增長 簡化 無論循環(huán)的形式和實(shí)際執(zhí)行循環(huán)體的次數(shù)多少,只 考慮循環(huán)一次和0次 兩種情況 進(jìn)入循環(huán)體一次 跳出循環(huán)

12、體 循環(huán)程序流程圖 C B C B (1) (2) 簡化循環(huán)路徑圖 (1)和(2)都可簡化為(3) C B 最少測試用例數(shù)計算 對于具體的程序,至少要設(shè)計多少測試 用例? 估算最少測試用例數(shù) 幫助執(zhí)行測試 有助于估算測試的時間 結(jié)構(gòu)化程序與N-S圖 結(jié)構(gòu)化程序是由3種基本控制結(jié)構(gòu)組成 順序型 選擇型(條件分支) 重復(fù)型(循環(huán)) 測試時考慮的結(jié)構(gòu) 順序型 選擇型(條件分支) 程序結(jié)構(gòu)與測試用例數(shù) 并行 串行 程序結(jié)構(gòu)與測試用例數(shù) 當(dāng)程序中判定多于一個時,形成的分支 結(jié)構(gòu)可以分為兩類:嵌套型分支結(jié)構(gòu)和 連鎖型分支結(jié)構(gòu) 對于嵌套型分支結(jié)構(gòu),若有n個判定語句, 需要n+1個測試用例 對于連鎖型分支結(jié)構(gòu)

13、,若有n個判定語句, 需要有2n個測試用例,覆蓋它的2n條路徑 最少測試用例數(shù)計算實(shí)例 計算最少測試 用例數(shù) 最少測試用例數(shù)計算實(shí)例 最少測試用例數(shù)計算實(shí)例 測試覆蓋準(zhǔn)則 Foster的ESTCA覆蓋準(zhǔn)則 錯誤敏感測試用例分析(Error Sensitive Test Cases Analysis) 問題 ESTCA覆蓋準(zhǔn)則 對于分支A(, = , =, =)B,測試時應(yīng)選 擇AB的情況分別測試一次 對于分支A (, C時,選擇A=C小正數(shù) 當(dāng)AC時,選擇A=C小正數(shù) 對于測試用例取值,在每個測試用例中盡量不 同的值或符號 覆蓋率要求 對單元測試來說,語句覆蓋和分支覆蓋是最基 本的要求 由于程序中錯誤(異常)處理工作的重要性以 及其結(jié)構(gòu)相對簡單,要求錯誤處理要做到路徑 覆蓋 對質(zhì)量要求高的軟件單元,可根據(jù)情況提出條 件覆蓋、分支-條件覆蓋以及路徑覆蓋要求 課程目錄 結(jié)構(gòu)測試概述 程序結(jié)構(gòu)分析 邏輯覆蓋 結(jié)構(gòu)測試案例分析結(jié)構(gòu)測試案例分析 結(jié)構(gòu)測試工具使用 結(jié)構(gòu)測試案例 求最小值 求數(shù)組中的

溫馨提示

  • 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

提交評論