




已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1,一、白盒測試 二、動態(tài)測試基本概念 三、邏輯覆蓋 四、路徑分析,白盒測試方法,2,一、白盒測試,此方法把測試對象看做一個透明的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。 通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預期的狀態(tài)一致。因此白盒測試又稱為結構測試或邏輯驅動測試。,3,(一)靜態(tài)白盒測試,靜態(tài)白盒測試是在不執(zhí)行的條件下有條理地仔細審查軟件設計、體系結構和代碼,從而找出軟件缺陷的過程。 好處: 盡早發(fā)現(xiàn)軟件缺陷。 為黑盒測試員提供思路。,4,(一)靜態(tài)白盒測試,審查是正式、嚴格、具有深度的技術評審,以便盡可能準確地確定問題之所在。 審查過程的目的: 在軟件開發(fā)過程中盡可能早地發(fā)現(xiàn)問題。 確保對需要重做部分達成一致意見。 驗證任何重做部分滿足預先定義的準則。,此階段主要進行代碼評審,5,(一)靜態(tài)白盒測試,為什么要堅持編碼標準和規(guī)范? 可靠性。 可讀性/維護性 移植性,6,(一)靜態(tài)白盒測試,通用代碼審查清單 數(shù)據(jù)引用錯誤; 數(shù)據(jù)聲明錯誤; 計算錯誤; 比較錯誤; 控制流程錯誤; 子程序參數(shù)錯誤; 輸入/輸出錯誤; 其他檢查。,7,(一)靜態(tài)白盒測試,數(shù)據(jù)引用錯誤 是否引用了未初始化的變量? 數(shù)組和字符串的下標是整數(shù)值嗎? 是否在應該使用常量的地方使用了變量? 變量是否被賦予不同類型的值? 為引用的指針分配內存了嗎? 、,8,(一)靜態(tài)白盒測試,數(shù)據(jù)聲明錯誤 所有變量都賦予正確的長度和類型了嗎? 變量是否在聲明的同時進行了初始化? 存在聲明過、但從未引用或者只引用過一次的變量嗎? 在特定模塊中所有變量都顯示聲明了嗎?,9,(一)靜態(tài)白盒測試,計算錯誤 計算中是否使用了不同數(shù)據(jù)類型的變量? 計算中是否了解和考慮到編譯器對類型或長度不一致的變量的轉換規(guī)則? 在數(shù)值計算過程中是否可能出現(xiàn)溢出? 除數(shù)/模是否可能為零? 變量的值是否超過有意義的范圍? 對于包含多個操作數(shù)的表達式,求值的次序是否混亂,運算優(yōu)先級對嗎?,10,(一)靜態(tài)白盒測試,比較錯誤 比較的正確嗎? 存在分數(shù)或者浮點值之間的比較嗎?如果有,精確問題會影響比較嗎? 每一個邏輯表達式都正確表達了嗎?邏輯計算如期進行了嗎?求值次序有疑問嗎? 邏輯表達式的操作是邏輯值嗎?,11,(一)靜態(tài)白盒測試,控制流程錯誤 如果程序包含beginend和 do while 等語句組,end是否對應? 程序、模塊、子程序和循環(huán)能否終止? 可能存在永遠不停的循環(huán)嗎? 循環(huán)可能從不執(zhí)行嗎?,12,(一)靜態(tài)白盒測試,子程序參數(shù)錯誤 子程序接受的參數(shù)類型和大小與調用代碼發(fā)送的匹配嗎? 如果子程序有多個入口點,引用的參數(shù)是否與當前入口點沒有關聯(lián)? 常量是否當作形參傳遞,意外在子程序中改動?,13,(一)靜態(tài)白盒測試,輸入/輸出錯誤 軟件是否嚴格遵守外部設備讀寫數(shù)據(jù)的專用格式? 文件或者外部不存在或者未準備好的錯誤情況有處理嗎? 軟件是否處理外部設備未連接、不可用,或者讀寫過程中存儲空間占滿等情況?,14,(二)動態(tài)白盒測試,動態(tài)白盒測試是指利用查看代碼功能和實現(xiàn)方式得到的信息來確定哪些要測試,哪些不要測試,如何開展測試。 動態(tài)白盒測試的另一個常用名稱是結構測試,因為軟件測試員可以查看并使用代碼的內部結構,從而設計和執(zhí)行測試。,15,軟件人員使用白盒測試方法,主要想對程序模塊進行如下的檢查: 對程序模塊的所有獨立的執(zhí)行路徑至少測試一次; 對所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次; 在循環(huán)的邊界和運行界限內執(zhí)行循環(huán)體; 測試內部數(shù)據(jù)結構的有效性,等。,16,對一個具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能是天文數(shù)字。給出一個小程序的流程圖,它包括了一個執(zhí)行20次的循環(huán)。 包含的不同執(zhí)行路徑數(shù)達520條,對每一條路徑進行測試需要1毫秒,假定一年工作365 24小時,要想把所有路徑測試完,需3170年。,17,18,二、動態(tài)測試基本概念,控制流圖 環(huán)形復雜性 圖矩陣,19,1. 程序的控制流圖,符號為控制流圖的一個結點,表示一個或多個無分支的語句。箭頭為邊,表示控制流的方向。,20,在選擇或多分支結構中,分支的匯聚處應有一個匯聚結點。 邊和結點圈定的部分叫做區(qū)域,當對區(qū)域計數(shù)時,圖形外的區(qū)域也應記為一個區(qū)域。 如果判斷中的條件表達式是由一個或多個邏輯運算符 (OR, AND, NAND, NOR) 連接的復合條件表達式,則需要改為一系列只有單個條件的嵌套的判斷(針對詳細流程圖)。,21,22,23,2. 程序環(huán)形復雜性,程序的環(huán)形(圈)復雜性給出了程序基本路徑集中的獨立路徑條數(shù),這是確保程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。 從控制流圖來看,一條獨立路徑是從入口到出口至少包含有一條在其它獨立路徑中從未有過的邊的路徑。,24,例如,在圖示的控制流圖中,一組獨立的路徑是 path1:1 - 11 path2:1 - 2 , 3 - 4 , 5 - 10 - 1 - 11 path3:1 - 2 , 3 - 6 - 8 - 9 - 10 - 1 - 11 path4:1 - 2 , 3 - 6 - 7 - 9 - 10 - 1 - 11 路徑 path1,path2,path3,path4組成了控制流圖的一個基本路徑集。,25,環(huán)形復雜性的三種計算方法,1)、流圖G的環(huán)形復雜性V(G)=流圖中區(qū)域的數(shù)量 2)、流圖G的環(huán)形復雜性V(G)E-N+2,E是流圖中邊的數(shù)量,N是流圖中節(jié)點的數(shù)量 3)、流圖G的復雜性V(G)P1,P是流圖中判定節(jié)點的數(shù)量,26,3. 圖矩陣,為便于在機器上表示和處理控制流圖,開發(fā)輔助基本路徑測試的軟件工具,可把流圖轉化為矩陣形式,即圖矩陣。 圖矩陣是一個正方形矩陣,其大小等于流圖的節(jié)點數(shù)。,a,c,b,d,f,e,27,三、邏輯覆蓋,邏輯覆蓋是以程序內部的邏輯結構為基礎的設計測試用例的技術。它屬白盒測試。,語句覆蓋 判定覆蓋 條件覆蓋,判定條件覆蓋 條件組合覆蓋 路徑覆蓋,28,例,29,L1,例,L2,L3,L4,30,31,32,e,33,34,語句覆蓋,語句覆蓋就是設計若干個測試用例,運行被測程序,使得每一可執(zhí)行語句至少執(zhí)行一次。 在圖例中,正好所有的可執(zhí)行語句都在路徑L1上,所以選擇路徑 L1設計測試用例,就可以覆蓋所有的可執(zhí)行語句。,35,如果將第一個條件中的and改為or,或將第二個條件中的or改為and,該測試用例測試不出錯誤。,36,判定覆蓋,判定覆蓋就是設計若干個測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次。 判定覆蓋又稱為分支覆蓋。 對于圖例,如果選擇路徑L1和L2,就可得滿足要求的測試用例:,37,【(2, 0, 4),(2, 0, 3)】覆蓋 ace【L1】 【(1, 1, 1),(1, 1, 1)】覆蓋 abd【L2】,38,如果選擇路徑L3和L4,還可得另一組可用的測試用例: 【(2, 1, 1),(2, 1, 2)】覆蓋 abe【L3】 【(3, 0, 3),(3, 0, 1)】覆蓋 acd【L4】,39,【(2, 1, 1),(2, 1, 2)】覆蓋 abe【L3】 【(3, 0, 3),(3, 0, 1)】覆蓋 acd【L4】,上述兩組測試用例不僅滿足了“判定覆蓋”,同時還做到了“語句覆蓋”.但如果第二個判定條件X1,錯寫成X1,使用上述測試用例(2,1,1),照樣能沿原路徑(abe)執(zhí)行,而不影響結果。,40,例,41,條件覆蓋,條件覆蓋就是設計若干個測試用例,運行被測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。 在圖例中,我們事先可對所有條件的取值加以標記。例如, 對于第一個判斷: 條件 A1 取真為 ,取假為 條件 B0 取真為 ,取假為,42,對于第二個判斷: 條件A2 取真為 ,取假為 條件X1 取真為 ,取假為 測試用例 覆蓋分支 條件取值 【(2, 0, 4),(2, 0, 3)】 L1(c, e) 【(1, 0, 1),(1, 0, 1)】 L2(b, d) 【(2, 1, 1),(2, 1, 2)】 L3(b, e) 或,43,測 試 用 例 覆蓋分支 條件取值 【(1, 0, 3),(1, 0, 4)】 L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e) 判定條件覆蓋 判定條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷中的所有可能取值至少執(zhí)行一次。,44,測試用例 覆蓋分支 條件取值 【(2, 0, 4),(2, 0, 3)】L1(c, e) 【(1, 1, 1),(1, 1, 1)】L2(b, d),45,條件組合覆蓋,條件組合覆蓋就是設計足夠的測試用例,運行被測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。 記 A1, B0 作 A1, B0 作 A1, B0 作 A1, B0 作,46, A2, X1 作 A2, X1 作 A2, X1 作 A2, X1 作 測 試 用 例 覆蓋條件 覆蓋組合 【(2, 0, 4), (2, 0, 3)】(L1) , 【(2, 1, 1), (2, 1, 2)】(L3) , 【(1, 0, 3), (1, 0, 4)】(L3) , 【(1, 1, 1), (1, 1, 1)】(L2) , ,47,路徑測試,路徑測試就是設計足夠的測試用例,覆蓋程序中所有可能的路徑。 測 試 用 例 通過路徑 覆蓋條件 【(2, 0, 4), (2, 0, 3)】 ace (L1) 【(1, 1, 1), (1, 1, 1)】 abd (L2) 【(1, 1, 2), (1, 1, 3)】 abe (L3) 【(3, 0, 3), (3, 0, 1)】 acd (L4),如圖顯示某程序的邏輯結構。試為它設計足夠的測試用例,分別實現(xiàn)對程序的判定覆蓋、條件覆蓋和條件組合覆蓋。,A0 and B=0,S1,S2,49,50,條件測試路徑選擇,當程序中判定多于一個時,形成的分支結構可以分為兩類:嵌套型分支結構和連鎖型分支結構。 對于嵌套型分支結構,若有n個判定語句,需要n+1個測試用例; 對于連鎖型分支結構, 若有n個判定語句,需要有2n個測試用例,覆蓋它的2n條路徑。當n較大時將無法測試。,51,52,循環(huán)測試路徑選擇,循環(huán)分為4種不同類型:簡單循環(huán)、連鎖循環(huán)、嵌套循環(huán)和非結構循環(huán)。 (1) 簡單循環(huán) 零次循環(huán):從循環(huán)入口到出口 一次循環(huán):檢查循環(huán)初始值 二次循環(huán):檢查多次循環(huán) m次循環(huán): 檢查在多次循環(huán) 最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。,53,例:求最小值,k = i; for ( j = i+1; j = n; j+ ) if ( Aj Ak ) then k = j; ,54,a,b,e,c,j=n,k=j,j+,55,測試用例選擇,56,(2) 嵌套循環(huán) 對最內層循環(huán)做簡單循環(huán)的全部測試。所有其它層的循環(huán)變量置為最小值; 逐步外推,對其外面一層循環(huán)進行測試。測試時保持所有外層循環(huán)的循環(huán)變量取最小值,所有其它嵌套內層循環(huán)的循環(huán)變量取“典型”值。 反復進行,直到所有各層循環(huán)測試完畢。,57,58, 對全部各層循環(huán)同時取最小循環(huán)次 數(shù),或者同時取最大循環(huán)次數(shù) (3) 連鎖循環(huán) 如果各個循環(huán)互相獨立,則可以用與簡單循環(huán)相同的方法進行測試。但如果幾個循環(huán)不是互相獨立的,則需要使用測試嵌套循環(huán)的辦法來處理。 (4) 非結構循環(huán) 這一類循環(huán)應該使用結構化程序設計方法重新設計測試用例。,59,四、路徑分析 基本路徑測試,基本路徑測試方法把覆蓋的路徑數(shù)壓縮到一定限度內,程序中的循環(huán)體最多只執(zhí)行一次。 它是在程序控制流圖的基礎上,分析控制構造的環(huán)路復雜性,導出基本可執(zhí)行路徑集合,設計測試用例的方法。設計出的測試用例要保證在測試中,程序的每一個可執(zhí)行語句至少要執(zhí)行一次。,60,1. 程序的控制流圖,符號為控制流圖的一個結點,表示一個或多個無分支的PDL語句或源程序語句。箭頭為邊,表示控制流的方向。,61,在選擇或多分支結構中,分支的匯聚處應有一個匯聚結點。 邊和結點圈定的區(qū)域叫做區(qū)域,當對區(qū)域計數(shù)時,圖形外的區(qū)域也應記為一個區(qū)域。 如果判斷中的條件表達式是由一個或多個邏輯運算符 (OR, AND, NAND, NOR) 連接的復合條件表達式,則需要改為一系列只有單個條件的嵌套的判斷。,62,63,64,2. 程序環(huán)路復雜性,程序的環(huán)路復雜性給出了程序基本路徑集中的獨立路徑條數(shù),這是確保程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。 從控制流圖來看,一條獨立路徑是至少包含有一條在其它獨立路徑中從未有過的邊的路徑。,65,例如,在圖示的控制流圖中,一組獨立的路徑是 path1:1 - 11 path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11 path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11 path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11 路徑 path1,path2,path3,path4組成了控制流圖的一個基本路徑集。,66,3. 導出測試用例,導出測試用例,確保基本路徑集中的每一條路徑的執(zhí)行。 根據(jù)判斷結點給出的條件,選擇適當?shù)?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南省新鄉(xiāng)市新鄉(xiāng)市一中2025屆化學高一下期末質量檢測試題含解析
- 統(tǒng)編版2024-2025學年一年級語文第二學期期末階段質量檢測
- 高考英語寫作萬能模板(素材)
- 北京車輛登記管理辦法
- 北航科技競賽管理辦法
- 非物質文化遺產(chǎn)的保護與傳承
- FPGA信號發(fā)生器原理與應用
- 古代文學作品鑒賞與解讀
- 普通小店晉升管理辦法
- 民航數(shù)據(jù)共享管理辦法
- 酒店前臺案例分析
- 消防應急通信培訓
- 消防應急通信保障
- XX小學預防未成年人違法犯罪工作制度
- 火災自動報警系統(tǒng)查驗報告
- 業(yè)務傭金提成協(xié)議書模板
- GB/T 29469-2024潔凈室及相關受控環(huán)境性能及合理性評價
- 國家開放大學《城市管理學》作業(yè)-“城市病”表現(xiàn)及其治理
- 甄嬛傳電子版劇本第01-10集
- 【中國信科-中信科移動】2023星地融合通信白皮書
- 廚師中暑防范知識講座
評論
0/150
提交評論