Ch03-軟件測試方法-軟件測試方法和技術-朱少民_第1頁
Ch03-軟件測試方法-軟件測試方法和技術-朱少民_第2頁
Ch03-軟件測試方法-軟件測試方法和技術-朱少民_第3頁
Ch03-軟件測試方法-軟件測試方法和技術-朱少民_第4頁
Ch03-軟件測試方法-軟件測試方法和技術-朱少民_第5頁
已閱讀5頁,還剩109頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 軟件測試方法和技術軟件測試方法和技術第第3章章 軟件測試的方法軟件測試的方法朱少民 K http:/ 第2章 回顧p軟件缺陷是軟件質量的對立面p軟件缺陷(Bug)是什么p驗證和確認p軟件測試的分類p靜態測試與動態測試p主動測試與被動測試p黑盒測試與白盒測試p測試級別:單元、集成、系統和驗收p軟件測試計劃與用例p專業測試人員的責任和要求第3章 軟件測試的方法3.1 基于直覺和經驗的方法3.2 基于輸入域的方法3.3 基于組合及其優化的技術3.4 基于邏輯覆蓋的方法3.5 基于故障模式的測試方法3.6 基于模型的測試方法3.7 形式化方法方法論和具體方法p從方法論看,更多體現了一種哲學的思想從方

2、法論看,更多體現了一種哲學的思想,例如辯證統一的方法,在測試中有許多對立統一體,如靜態測試和動態測試、白盒測試和黑盒測試、自動化測試和手工測試等。p軟件測試的方法論來源于軟件工程的方法論,例如有面向對象的開發方法,就有面向對象的測試方法;有敏捷方法,就有和敏捷方法對應的敏捷測試。測試領域Domains under TestApplied toDNF: Disjunctive Normal Form(析取范式) FSM: Finite Status Machine測試方法 SWEBOK 3.06具體方法或技術7等價類、邊界值、兩兩組合等價類、邊界值、兩兩組合(pairwisepairwise)、

3、隨機測試)、隨機測試黑盒測試黑盒測試基于控制流的標準、基于數據流的標準、CBT參考模型白盒測試故障模型、錯誤猜測法、變異測試操作配置(operational profile)、用戶觀察啟發黑盒測試決策表、有限狀態機、形式化驗證、TTCN3、工作流模型OOS、web、real-time、SOA、embedded、safe-critical應用領域過去常提“黑盒和白盒”方法8黑盒方法白盒方法其它方法 world93.1 基于直覺和經驗的方法Ad-hoc測試方法和ALAC測試 錯誤推測法 3.1.1 ALAC測試和隨機測試ALAC,是Act-like-a-customer(象客戶那樣做)的簡寫,AL

4、AC測試方法是一種基于客戶使用產品的知識開發出來的測試方法,它的出發點是著名的Pareto 80/20規律3.1.2 錯誤猜測法錯誤推測法是測試者根據經驗、知識和直覺來發現軟件錯誤,來推測程序中可能存在的各種錯誤,從而有針對性的進行測試。 單元測試中發現的模塊錯誤;單元測試中發現的模塊錯誤; 產品的以前版本曾經發現的錯誤;產品的以前版本曾經發現的錯誤; 輸入數據為輸入數據為0 0或字符為空;或字符為空; 當軟件要求輸入時當軟件要求輸入時( (比如在文本框中比如在文本框中),),不是沒有輸入正確的信不是沒有輸入正確的信息,而是根本沒有輸入任何內容,單單按了息,而是根本沒有輸入任何內容,單單按了E

5、nterEnter鍵;鍵; 3.2 基于輸入域的測試方法3.2.1 等價類劃分方法設計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理的數據,也要能經受異常數據的考驗。經過正反的測試才能確保軟件具有更高的可靠性。all inputsi1i4i2i3確定等價類的方法in rangegreater than rangeless than rangevaluegreater than valueless than value在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類。在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無

6、效等價類確定等價類的方法(2)not member of setmember of setBooleanNon-Boolean確定等價類的方式 (3)有什么具體案例?等價類測試用例-Example等價類1: Integer等價類2: Decimal fraction等價類3: Negative等價類4: Invalid input根據等價類創建測試用例的步驟a) 建立等價類表,列出所有劃分出的等價類:b) 為每個等價類規定一個唯一的編號;c) 設計一個新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類d) 重復c),最后使得所有有效等價類均被測試用例所覆蓋;e) 設計一個新的測試用例,使其只

7、覆蓋一個無效等價類。f) 重復e)使所有無效等價類均被覆蓋。輸入條件有效等價類無效等價類3.2.2 邊界值分析方法 確定邊界情況(輸入或輸出等價類的邊界) 選取正好等于、剛剛大于或小于邊界值作為測試數據確定邊界值的方法如果輸入條件規定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數據。如果輸入條件規定了值的個數,則用最大個數、最小個數、比最小個數少一、比最大個數多一的數作為測試數據。a ab ba ab b確定邊界值的方法(2)如果程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最后一個元素作為測試用例。如果程序中使用了一個內部數據

8、結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例。n Test cases for ABS(x) :class x = 0, arbitrary value x = 100classes x = 0, on boundary :x = 0classes x = 0, below and above: x = -1, x = 1正常值(有效類)正常值(有效類): X1 = 123123邊界值邊界值: X2 = 12345邊界值邊界值: X3 = 1234567邊界值邊界值: X4 = 1邊界值邊界值: X5 = 0無效類的值無效類的值: X6 = -123123無效類的值無效類的值: X

9、7 = asdasd其它其它?BVA 示例2 測試測試 限制性用戶輸入:限制性用戶輸入:6位正整數位正整數 無效值無效值: X8 = 000123 X9 = asd123 X10 = EmptyBVA 示例3Test cases :任意的正常值: 隨機選擇幾個選項 邊界值: 選擇所有選項 邊界值: 一個都不選邊界值: 選擇一個選項二進制Term 取值范圍取值范圍BitNibbleByteWordKiloMegaGigaTera0 or 10-15 0-2550-65535 or 0-42949672951024104857610737418241099511627776ASCII TableC

10、haracterASCII ValueCharacter ASCII ValueNullSpace/0129;A0324748495057586465BYZabyz66899091969798121122123字符編輯域一些特殊的邊界值First-1/Last+1Min-1/max+1Start-1/Finish+1Less than empty/ more than fulljust Over/Just Under有什么具體案例?3.3 基于組合技術和組合優化的方法3.3.1 判定表方法判定表元素判定表方法步驟條件樁動作樁規則判定表 示例1IDID項目名稱項目名稱R1R1R2R2R3R3R4

11、R4R5R5條件項C1此商品在經營范圍NYYYYC2此商品可以發貨YYNNC3此客戶沒有拖欠過付款YNYN動作項A1貨到后允許客戶轉賬1A2貨到客戶必須立即付款1A3重新組織貨源11A4電話通知1A5書面通知11判定表示例判定表示例23.3.2 因果圖法 分析軟件規格說明文檔描述的哪些是原因(輸入條件),哪些是結果(輸出條件),給每個原因和結果賦予一個標示符。 找出原因與結果,原因與原因之間的對應關系,劃出因果圖 在因果圖上標上哪些不可能發生的因果關系,表明約束或限制條件 根據因果圖,創建判定表,將復雜的邏輯關系和多種條件組合很具體明確的表示出來 把判定表的每一行作為依據設計測試用例。ijij

12、因果圖的基本符合n或或- -關系:關系:如果因 i1 或或因 i2 或或因 in 存在時,結果 j 才出現。n與與- -關系:關系:只有當因 i1 與與因 i2 與與因 in 同時存在時,結果 j 才出現。j i1i2inj i1i2in因果圖法示例(1)有效等價類有效等價類:輸入條件有效類 .abs(N) N 0, N 0maxint k maxint, k maxint測試用例測試用例:maxintNresult maxint Nresult55105510000 5410error100-11 56105510011 000給定maxint 和 N ,如果結果 0 and b 0) th

13、en4. c = c / a5.end if6.if (a 1 or c 1) then7. c = c + 18.end if9.c = b + c程序控制流圖示例:語句覆蓋可發現的問題(a, b ,c)= (1, 1, 2)3689IFIFENDIFENDIFfeicbad457jh程序源代碼1.dim a, b as integer2.dim c as double3.if (a 0 or b 0) then4. c = c / a5.end if6.if (a 1 and c 1) then7. c = c + 18.end if9.c = b + c程序控制流圖示例:語句覆蓋不能發現

14、的問題(a, b ,c)= (1, 1, 2)andor3.4.1 判定覆蓋p判定覆蓋法的基本思想是設計若干用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經歷一次,即判斷真假值均曾被滿足。p一個判定代表著程序的一個分支, 所以判定覆蓋也被稱為分支覆蓋。示例:繪制控制圖示例:設計測試用例(a, b ,c)= (1, 1, 2)(a, b ,c)= (-1, 1, 0)3.4.2 條件覆蓋p條件覆蓋的基本思想是設計若干測試用例,執行被測程序以后,要使每個判斷中每個條件的可能取值至少滿足一次。(a0 and b0) a0b0 示例:列出所有條件判定條件判定條件M:條件a0: 取.T.

15、時為T1取.F.時為F1條件b0: 取.T.時為T2取.F.時為F2;判定條件判定條件N:條件a1: 取.T.時為T3取.F.時為F3條件c1: 取.T.時為T4取.F.時為F4示例:覆蓋所有條件(a, b ,c)= (2, -1, 0)(a, b ,c)= (-1, 1, 2)T1, F2, T3, F4F1, T2, F3, T4但有什么問題嗎?但有什么問題嗎?3.4.3 判定條件覆蓋p判定-條件覆蓋是判定和條件覆蓋設計方法的交集,即設計足夠的測試用例,使得判斷條件中的所有條件可能取值至少執行一次,同時,所有判斷的可能結果至少執行一次條件條件取值條件取值條件分支分支判定條件判定條件a0,

16、b0, a1,c1T1,T2,T3,T4a0 AND b0M=.T.N=.T.a=0, b=0, a=1, c1 OR c1M=.F.N=.F.示例:覆蓋判定/條件(a, b ,c)= (2, 1, 2)(a, b ,c)= (-1, 0, 1)T1, T2, T3, T4F1, F2, F3, F43.4.4 條件組合測試p條件組合覆蓋的基本思想是設計足夠的測試用例,使得判斷中每個條件的所有可能至少出現一次,并且每個判斷本身的判定結果也至少出現一次。p它與條件覆蓋的差別是它不是簡單地要求每個條件都出現“真”與“假”兩種結果,而是要求讓這些結果的所所有可能組合都至少出現一次有可能組合都至少出現

17、一次示例 (1)組合編號 覆蓋條件取值判定 條 件 取值判定-條件組合1T1,T2M=.T.a0,b0,M取真2T1,F2M=.F.a0,b=0,M取假3F1,T2M=.F.a0,M取假4F1,F2M=.F.a=0,b1,c1,N取真6T3,F4N=.T.a1,c=1,N取真7F3,T4N=.T.a1,N取真8F3,F4N=.F.a=1,c= n+1 test cases for a decision with n inputs. 示例組合編號 覆蓋條件取值判定條件取值1T1,T2M=.T.2T1,F2M=.F.3F1,T2M=.F.4F1,F2M=.F.5T3,T4N=.T.6T3,F4N=

18、.T.7F3,T4N=.T.8F3,F4N=.F.3.4.5 基本路徑覆蓋p顧名思義,路徑覆蓋就是設計所有的測試用例,來覆蓋程序中的所有可能的執行路徑。測試用例覆蓋路徑覆蓋條件覆蓋組合輸入:a=2,b=1,c=6輸出:a=2,b=1,c=5P1(1-2-4)T1,T2,T3,T41,5輸入:a=1,b=1,c=-3輸出:a=1,b=1,c=-2P2(1-2-5)T1,T2,F3,F41,8輸入:a=2,b=-1,c=-2輸出:a=2,b=-1,c=-2P3(1-3-4)T1,F2,T3,F42,6輸入:a=-1,b=2,c=3 輸出:a=-1,b=2,c=6P3(1-3-4)F1,T2,F3,

19、T43,7輸入:a=-1,b=-2,c=-3輸出:a=-1,b=-2,c=-5P4(1-3-5)F1,F2,F3,F44,8基本路徑覆蓋的設計過程1.依據代碼繪制流程圖2.確定流程圖的圈復雜度(cyclomatic complexity )3.確定線性獨立路徑的基本集合( basis set )4.設計測試用例覆蓋每條基本路徑示例 源代碼Procedure: process records1.Do While records remain2.Read record;3.If record field 1 = 0 Then4.store in buffer;5.increment counter

20、;6.Else If record field 2 = 0 Then7.reset counter;8.Else store in file;9.End If10.End If11. End DoEnd示例 流程圖1910112457836基本路徑測試:流程圖簡化12,387694,51011流程圖的圈復雜度 V(G) = 區域數量(由節點、連線包圍的區域,包括圖形外部區域) V(G) = 連線數量 - 節點數量 + 2 V(G) = 簡單可預測節點數量 + 1圈復雜度(圈復雜度(Cyclomatic complexity):代碼邏輯復雜度的 度量,提供了被測代碼的路徑數量。復雜度越高,出錯的

21、概率越大V(G)modules流程圖復雜度例子V(G)=412,378694,51011Region 1Region 2Region 3Region 4確定線性獨立的路徑集合p Path1: 1-2-3-6-7-9-10-1-11示例:基本路徑測試用例 Path2: 1-2-3-6-8-9-10-1-11 Path3: 1-2-3-4-5-10-1-11Path4: 1-111910112458736測試用例覆蓋集合中每條路徑基本路徑測試并不是測試所有路徑的組合,僅僅保證每條基本路徑被執行一次 不需要活動圖, 但最好繪制程序流程圖 計算每個邏輯測試,也就是布爾操作符數加1 最好每個單元都進行基

22、本路徑測試,對關鍵組件則是必要的小結語句覆蓋判定覆蓋DC條件覆蓋CC判定/條件覆蓋DC/CC條件組合覆蓋MCC基本路徑覆蓋BPCl Condition Coverage (CC)l Decision Coverage (DC)l Multiple Condition Coverage (MCC)l Modified Condition/Decision Coverage (MC/DC)MC/DC作業DC/CCBPCMC/DC1. Testwell CTC+2. CoverageMeter3. BullseyeCoverage4. GCT5. CppUnit6. Dynamic Code Cov

23、erage7. TCAT C/C+8. COVTOOL9. gocv10. xCover+找一合適的函數代碼 + 選擇一覆蓋率工具 完成三種覆蓋率的測試小結:方法的靈活運用代碼中循環結構如何測試?從數據輸入和結構兩方面來考慮n目標目標: 在循環內部及邊界上執行測試在循環內部及邊界上執行測試循環測試 11.簡單循環簡單循環(迭代次數n) 完全跳過循環 只經過循環一次 經過循環兩次 經過循環m( m 1push height max-1toptop說明push *示例:狀態圖 輸入輸入狀態狀態initpushpopdeletetopinitialemptyemptyfillederrordelet

24、ederrorfilledfilled(1)full(2)empty(3)filled(4)errorfilledfullfullfillederrorfulldeleted(1)-push height 1狀態表initpush initialempty empty deleted filled filled filledfullfullfilledfulldeletepushpushpoptoptoppush *poppop ERRORpop ERRORtop ERRORdelete filled ERRORdelete狀態轉化樹生成測試用例EFSM工具 - FSME補充:基于用戶場景的測試w也稱作基于用戶場景測試(user scenario

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論