Ch14-測試用例設計_第1頁
Ch14-測試用例設計_第2頁
Ch14-測試用例設計_第3頁
Ch14-測試用例設計_第4頁
Ch14-測試用例設計_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件測試方法和技術軟件測試方法和技術 - Ch.14 測試用例的設計測試用例的設計主講教師:郭曉燕主講教師:郭曉燕第14章 軟件測試用例的設計14.1 測試用例概述測試用例概述14.2 白盒測試用例設計方法白盒測試用例設計方法14.3 黑盒測試用例設計方法黑盒測試用例設計方法14.4 測試用例的組織和跟蹤測試用例的組織和跟蹤 測試用例概述p如何以最少的人力、資源投入,在最短的時間內(nèi)完成測試,發(fā)現(xiàn)軟件系統(tǒng)的缺陷,保證軟件的優(yōu)良品質(zhì),則是軟件公司探索和追求的目標。p測試用例是測試工作的指導,是軟件測試的必須遵守的準則,更是軟件測試質(zhì)量穩(wěn)定的根本保障。 什么是測試用例p測試用例可以獨立進行測試執(zhí)行的

2、最小單元p測試內(nèi)容的一系列情景和每個情景中必須依靠輸入和輸出,而對軟件的正確性進行判斷的測試文檔,稱為測試用例。p測試用例就是將軟件測試的行為活動,做一個科學化的組織歸納。p軟件測試是有組織性、步驟性和計劃性的,為了能將軟件測試的行為轉換為可管理的、具體量化的模式,需要創(chuàng)建和維護測試用例為什么需要測試用例n在開始實施測試之前設計好測試用例,避免盲目測試并提高測試效率,減少測試的不完全性;n測試用例的使用令軟件測試的實施重點突出、目的明確;n根據(jù)測試用例的多少和執(zhí)行難度,估算測試工作量,便于測試項目的時間和資源管理與跟蹤;n減少回歸測試的復雜程度,在軟件版本更新后只需修正少量的測試用例便可展開測

3、試工作,降低工作強度、縮短項目周期;為什么需要測試用例(2)n功能模塊的測試用例的通用化和復用化則會使軟件測試易于開展,并隨著測試用例的不斷細化其效率也不斷攀升;n根據(jù)測試用例的操作步驟和執(zhí)行結果,為分析軟件缺陷和程序模塊質(zhì)量提供依據(jù);可以方便地書寫軟件測試缺陷報告;n可以根據(jù)測試用例的執(zhí)行等級,實施不同級別的測試;n便于大型軟件測試項目外包測試指導基礎;良好測試用例的特征n可以最大程度地找出軟件隱藏的缺陷n可以最高效率的找出軟件缺陷n可以最大程度地滿足測試覆蓋要求n既不過分復雜、也不能過分簡單n使軟件缺陷的表現(xiàn)可以清楚的判定n測試用例包含期望的正確的結果n待查的輸出結果或文件必須盡量簡單明了

4、n不包含重復的測試用例n測試用例內(nèi)容清晰、格式一致、分類組織測試用例的組成元素與范例n測試用例編號IDn測試用例標題n測試的模塊測試輸入條件期望的輸出結果其它說明ID類型類型標題標題測試步驟測試步驟期望的結果期望的結果說明說明001登錄輸入正確密碼用戶在登錄界面輸入正確的密碼后,按回車鍵程序提示登錄成功002登錄輸入錯誤密碼用戶在登錄界面輸入錯誤的密碼后,按回車鍵程序提示輸入密碼錯誤,請重新輸入003登錄不輸入的空密碼用戶在登錄界面沒有輸入任何密碼使密碼為空后,按回車鍵程序提示用戶沒有輸入密碼,請輸入程序應該告知用戶沒有輸入密碼,而不是密碼錯誤白盒測試用例設計方法n白盒測試用例的設計方法白盒測

5、試用例的設計方法n邏輯覆蓋:以程序的內(nèi)部邏輯結構為基礎,分為語句覆蓋、判定覆蓋、判定-條件覆蓋、條件組合覆蓋等n基本路徑測試:在程序控制流程的基礎上,分析控制構造的環(huán)路復雜性,導出基本可執(zhí)行路徑集合,從而設計測試用例。n白盒測試用例注意事項白盒測試用例注意事項n由于測試路徑可能非常多,由于時間和資源問題,選出足夠多的路徑測試n由于深入到程序編碼,通常開發(fā)人員協(xié)助測試人員書寫白盒測試用例基本路徑測試Goal: exercise each independent path at least once.1.Using the code, draw a corresponding flow graph

6、 (First drawing the activity diagram for the code may help, but is not required)2.Determine the cyclomatic complexity of the flow graph.3.Determine a basis set of linearly independent paths.4.Prepare test cases that force the execution of each path in the basis set.Example Procedure: process records

7、1.Do While records remain2.Read record;3.If record field 1 = 0 Then4.store in buffer;5.increment counter;6.Else If record field 2 = 0 Then7.reset counter;8.Else store in file;9.End If10.End If11. End DoEndExample (continued)1910112457836V(G) = 4基本路徑測試:流程圖12,387694,51011流程圖復雜度確定流程圖復雜度確定 V(G) =number

8、of regions (areas bounded by nodes and edgesarea outside the graph is also a region) V(G) = number of edges - the number of nodes + 2 V(G) = number of (simple) predicate nodes + 1 Cyclomatic complexity: a quantitative measure of the logical complexity of code, provides an upper bound on the number o

9、f paths that need to be tested in the codeV(G)modulesmodules in this range are more error prone 流程圖復雜度例子流程圖復雜度例子V(G)=412,378694,51011Region 1Region 2Region 3Region 4確定線性獨立的路徑集合確定線性獨立的路徑集合 Independent path any path that introduces at least one new set of processing statements or a new condition Basis

10、 set set of independent paths through the code Test cases derived from a basis set are guaranteed to execute every statement at least one time during testing Basis set is not unique Path1: 1-2-3-6-7-9-10-1-11Basis path test example Path2: 1-2-3-6-8-9-10-1-11 Path3: 1-2-3-4-5-10-1-11Path4: 1-11191011

11、2458736測試用例覆蓋集合中每條路徑測試用例覆蓋集合中每條路徑Basis path testing does not test all possible combinations of all paths through the code; it just tests every path at least once. you do not need an activity diagram, but the picture will help when you trace component paths count each logical testcompound tests count

12、 as the number of Boolean operators + 1 (i.e., count each simple predicate) basis path testing should be applied to all components, if possible, and to critical components always條件測試條件測試Goal: further exercises the true and false value of each simple logical condition in a component.nLogical conditio

13、nsSimple condition:(a rel-op b) where rel-op= (may be negated with NOT), e.g., ab; NOT(ab)Compound condition: two or more simple conditions connected with AND, OR, e.g., (ab) AND (c(a+b+c)nerrors to test for include (incorrect/missing/extra):nBoolean operator relational operatornBoolean variable ari

14、thmetic expressionnBoolean parenthesis條件測試條件測試 (2)Domain testingnfor an expression E1 rel-op E2, test for E1 = E2nguarantees detection of rel-op error if E1 and E2 are correctnto detect errors in E1 / E2, the difference between E1 and E2 for the tests E1 than E2 should be as small as possiblenfor an

15、 expression with n variables, 2n tests are requiredBranch testingfor a compound condition C, test true and false branches of C and every simple condition of Ce.g., for C = (ab) AND (cb TRUE, FALSEcd TRUE, FALSEC TRUE, FALSETrue AND TrueT. And F., F. And T.,F. And F.條件測試條件測試 - ExampleBut ( i = result

16、 = 0 ) :maxint N iN result=maxint -1 1 true false 1 0 false truegives condition coveragefor all conditionsBut it does not preservedecision coverage always take care thatcondition coveragepreserves decision coverage :decision / condition coveragei:=i+1;result:=result+i;(iN) and(result=maxint)result=m

17、axintN 0N := -N;output(result);output(too large);exitstartyesnonoyesyesno 分支測試分支測試Branch CoverageExecute the enough test cases,attempting to cover all the paths in the software:- Get both “True” and “False”- Go through each branch。For exampleIF b THEN s1 ELSE s2CASE x OF1 : .2 : .3 : .分支測試分支測試 - exa

18、mple1PROGRAM som ( maxint, N : INT )2INT result := 0 ; i := 0 ;3IF N 04THEN N := - N ;5WHILE ( i N ) AND ( result = maxint )6DOi := i + 1 ;7result := result + i ;8OD;9IF result = maxint10THEN OUTPUT ( result )11ELSE OUTPUT ( “too large” )12END.分支測試分支測試 - continuedi:=i+1;result:=result+i;(iN) and(res

19、ult=maxint)result=maxintN 0N := -N;output(result);output(too large);exitstartyesnonoyesyesnoN =0)result=0 i=0nGoal: execute loops at their boundaries and within their bounds.循環(huán)測試循環(huán)測試 11.Simple Loops (n iterations) skip the loop entirely only one pass through the loop two passes through the loop m pa

20、sses through the loop where m n n-1, n, n+1 passes through the loop循環(huán)測試循環(huán)測試 22. Nested LoopsBeizerBEI90 Conduct simple loop tests for the innermost loop while holding the outer loops at their minimum iteration Work outward, conducting tests for the nextinnermost loop Continue until all the loops hav

21、e been testedtests grow geometrically as the level of nesting increases循環(huán)測試循環(huán)測試 34.Unstructured Loops redesign!3. Concatenated Loopsindependent loops simple loop testingdependent loops nested loop testing等價類測試用例設計方法n黑黑盒測試用例的設計方法之一盒測試用例的設計方法之一n等價類劃分等價類劃分:n在分析需求規(guī)格說明的基礎上劃分等價類,列出等價類表。 n將程序可能的輸入數(shù)據(jù)分成若干個子集

22、,從每個子集選取一個代表性的數(shù)據(jù)作為測試用例,等價類是某個輸入域的子集,在該子集中每個輸入數(shù)據(jù)的作用是等效的。n等價類的分類:有效等價類和無效等價類。有效等價類是有意義的、合理的輸入數(shù)據(jù),可以檢查程序是否實現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。無效等價類與有效等價類的意義相反。設計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗。經(jīng)過正反的測試才能確保軟件具有更高的可靠性。all inputsi1i4i2i3確定等價類的方法n在輸入條件規(guī)定了取值范圍或值的個數(shù)的情況下,則可以確立一個有效等價類和兩個無效等價類。in rangegreater than ran

23、geless than rangevaluegreater than valueless than valuen在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類。n在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類確定等價類的方法(2)not member of setmember of setBooleanNon-Boolean確定等價類的方式 (3)n在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個),并且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。n在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一

24、個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。 個人月收入- x 稅率 x =1600 0% 1600 x 2100 5% 500 = x 3600 10% 3600 = x 6600 15% 6600 = x 21600 20% 21600 = x 101600 45%等價類測試用例-Example等價類1: Integer等價類2: Decimal fraction等價類3: Negative等價類4: Invalid input根據(jù)等價類創(chuàng)建測試用例的步驟n建立等價類表,列出所有劃分出的等價類:輸入條件有效等價類無效等價類 為每個等價類規(guī)定一個唯一的編號; 設計一個新

25、的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類。重復這一步,最后使得所有有效等價類均被測試用例所覆蓋; 設計一個新的測試用例,使其只覆蓋一個無效等價類。重復這一步使所有無效等價類均被覆蓋。邊界值測試用例設計方法n程序的很多錯誤發(fā)生在輸入或輸出范圍的邊界上,因此針對各種邊界情況設置測試用例,可以發(fā)現(xiàn)不少程序缺陷。n設計方法:n確定邊界情況(輸入或輸出等價類的邊界)n選取正好等于、剛剛大于或剛剛小于邊界值作為測試數(shù)據(jù)確定邊界值的方法n如果輸入條件規(guī)定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù)。n如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)、比

26、最小個數(shù)少一、比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù)。abab確定邊界值的方法(2)n如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最后一個元素作為測試用例。n如果程序中使用了一個內(nèi)部數(shù)據(jù)結構,則應當選擇這個內(nèi)部數(shù)據(jù)結構的邊界上的值作為測試用例。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 = 1nTest cases :Class arbitrar

27、y value: X1 = 123123Class boundary value: X2 = 12345Class boundary value: X3 = 1234567Class boundary value: X4 = 1Class boundary value: X5 = 0Class invalid value: X6 = -123123Class invalid value: X7 = asdasdOthers?BVA Example 2Test a function which limit user input to 6-digit positive integer Class

28、invalid value: X8 = 000123 X9 = asd123 X10 = EmptyBVA Example 3Test cases :Class arbitrary value: Random select some options Class boundary value: Select all options Class boundary value: Select none option Class boundary value: Select 1 option二進制二進制Term Range or Value BitNibbleByteWordKiloMegaGigaT

29、era0 or 10-15 0-2550-65535 or 0-42949672951024104857610737418241099511627776ASCII TableCharacterASCII ValueCharacter ASCII ValueNullSpace/0129;A0324748495057586465BYZabyz66899091969798121122123字符編輯域一些特殊的邊界值一些特殊的邊界值First-1/Last+1Min-1/max+1Start-1/Finish+1Less than empty/ more than fulljust Over/Just

30、 Under錯誤推測法測試用例設計n基于經(jīng)驗和直覺推測程序中所有可能存在的各種錯誤,從而有針對性地設計測試用例。n發(fā)現(xiàn)程序經(jīng)常出現(xiàn)的錯誤的方法:n單元測試中發(fā)現(xiàn)的模塊錯誤;n產(chǎn)品的以前版本曾經(jīng)發(fā)現(xiàn)的錯誤;n輸入數(shù)據(jù)為0或字符為空;n當軟件要求輸入時(比如在文本框中),不是沒有輸入正確的信息,而是根本沒有輸入任何內(nèi)容,單單按了Enter鍵;n這種情況在產(chǎn)品說明書中常常忽視,程序員也可能經(jīng)常遺忘,但是在實際使用中卻時有發(fā)生。程序員總會習慣性的認為用戶要么輸入信息,不管是看起來合法的或非法的信息,要不就會選擇Cancel鍵放棄輸入,測試場景法設計測試用例n現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事

31、件觸發(fā)時的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結果就形成事件流。這種在軟件設計方面的思想也可引入到軟件測試中,可以比較生動地描繪出事件觸發(fā)時的情景,有利于測試設計者設計測試用例,同時使測試用例更容易理解和執(zhí)行。因果圖法測試用例設計n多種輸入條件的組合,產(chǎn)生多種結果設計測試用例。n設計方法:n分析軟件規(guī)格說明文檔描述的哪些是原因(輸入條件),哪些是結果(輸出條件),給每個原因和結果賦予一個標示符。n找出原因與結果,原因與原因之間的對應關系,劃出因果圖n在因果圖上標上哪些不可能發(fā)生的因果關系,表明約束或限制條件n根據(jù)因果圖,創(chuàng)建判定表,將復雜的邏輯關系和多種條件組合很具體明確的表示出來

32、n把判定表的每一行作為依據(jù)設計測試用例。因果圖法Sample 1n Valid equivalence classes :conditionvalid eq. classes .abs(N) N 0, N 0maxint k maxint, k maxintn Test Cases :maxintNresult maxint Nresult55105510000 5410error100-11 56105510011 000Given inputs maxint and N compute result :K=0|N|kresult = if this 0,B0,C0,且A+BC,B+CA,A

33、+CB;如果是等腰的,還要判斷A=B,或B=C,或A=C;如果是等邊的,則需判斷是否A=B,且B=C,且A=C。案例研究1:判斷三角形的形狀(續(xù)1)創(chuàng)建等價類表:創(chuàng)建等價類表:輸入條件有效等價類無效等價類是否三角形的三條邊(A0), (1)(B0), (2)(C0), (3)(A+BC), (4)(B+CA), (5)(A+CB), (6)(A0), (7)(B0), (8)(C0), (9)(A+BC), (10)(B+CA), (11)(A+CB), (12)是否等腰三角形(A=B), (13)(B=C), (14)(C=A), (15)(AB)and(BC)and(CA) (16)是否等

34、邊三角形(A=B)and(B=C)and(C=A) (17)(AB), (18)(BC), (19)(CA), (20)案例研究1:判斷三角形的形狀(續(xù)2)確定等價類輸入數(shù)據(jù):確定等價類輸入數(shù)據(jù):序號序號【A A,B B,C C】覆蓋等價類覆蓋等價類輸出輸出1【3,4,5】(1),(2),(3),(4),(5),(6)一般三角形2【0,1,2】(7)不能構成三角形3【1,0,2】(8)4【1,2,0】(9)5【1,2,3】(10)6【1,3,2】(11)7【3,1,2】(12)8【3,3,4】(1),(2),(3),(4),(5),(6),(13)等腰三角形9【3,4,4】(1),(2),(3

35、),(4),(5),(6),(14)10【3,4,3】(1),(2),(3),(4),(5),(6),(15)11【3,4,5】(1),(2),(3),(4),(5),(6),(16)非等腰三角形12【3,3,3】(1),(2),(3),(4),(5),(6),(17)是等邊三角形13【3,4,4】(1),(2),(3),(4),(5),(6),(14),(18)非等邊三角形14【3,4,3】(1),(2),(3),(4),(5),(6),(15),(19)15【3,3,4】(1),(2),(3),(4),(5),(6),(13),(20)案例研究2:測試用戶登錄對話框的功能測試場景:測試場景

36、:在各種輸入條件下,測試程序的登錄對話框功能用戶名和密碼的規(guī)則如下:用戶名和密碼的規(guī)則如下: 用戶名長度為6至10位(含6位和10位) 用戶名由字符(a-z、A-Z)和數(shù)字(0-9)組成 不能為空、空格和特殊字符 密碼規(guī)則同用戶名規(guī)則案例研究2:登錄對話框的功能(續(xù)1)確定輸入數(shù)據(jù)的情形:確定輸入數(shù)據(jù)的情形:操作步驟操作步驟預期結果預期結果輸入正確的用戶名和口令(均為6位),點擊OK按鈕進入系統(tǒng)輸入正確的用戶名和口令(均為10位) ,點擊OK按鈕進入系統(tǒng)輸入正確的用戶名和口令(均為6至8位之間),進入系統(tǒng)用戶名為空,提示輸入用戶名不能進入系統(tǒng)用戶名為空格,提示無效用戶名不能進入系統(tǒng)用戶名小于6

37、位,提示用戶名太短不能進入系統(tǒng)案例研究2:登錄對話框的功能(續(xù)2)確定具體的輸入數(shù)據(jù):確定具體的輸入數(shù)據(jù):“用戶名用戶名”“口令口令”“預期結果預期結果”說明說明“user10”“pass10”進入系統(tǒng)正確的用戶名和口令(6位)“user789”“pass789”進入系統(tǒng)正確的用戶名和口令(7-9位)“user000010”“pass000010”進入系統(tǒng)正確的用戶名和口令(10位)“”“pass”提示輸入用戶名不能進入系統(tǒng)用戶名為空“空格”“pass”提示無效用戶名不能進入系統(tǒng)用戶名為空格“user”“userpass”提示用戶名太短不能進入系統(tǒng)用戶名小于6位“user0000011”“us

38、erpass”提示用戶名太長不能進入系統(tǒng)用戶名大于10位案例研究3:壓力/負載測試用例設計設計目的設計目的: 驗證程序在承受某種負載或壓力下是否能夠正常運行 找出程序安全運行的臨界值適用情形適用情形: 服務器/客戶機局域網(wǎng) 服務器/瀏覽器互聯(lián)網(wǎng)設計方法設計方法:設計出不同等級的壓力條件壓力壓力/負載分類與代號負載分類與代號: CPU速度CSCPU使用量CU磁盤空間DS物理內(nèi)存PM虛擬內(nèi)存使用量VM登錄用戶的數(shù)量UN傳輸帶寬BW傳輸數(shù)據(jù)的大小DN案例研究3:壓力/負載測試用例設計(續(xù)1)編號編號CSCUDSPMVMUNBWDN應該產(chǎn)生的行為應該產(chǎn)生的行為結果結果說明說明01PIII 80010%

39、50MB64MB50%301M5M正常02PIV180080%100MB128MB30%1000.5M10M無法響應03PII 50025%600MB256MB15%102.5M20M正常04PIV280035%400MB512MB80%5000.5M50M無法響應05PIV320050%200MB1024MB65%20001.5M100M無法響應案例研究4:測試軟件對話框的界面設計Deployment Testcase Test Case ID:62Title:UserExitFormPath:DeploymentGeneralAuthor: xxxxxPurpose : make sure

40、 the dialog to test is properly designed, look for truncations, wrong tab orders, duplicated hotkeys, overlappings and any other possible issues Steps: Pre-steps:1. Launch App.2. Go to “Tools” / “Import/Export Settings”3. Select “General development settings”4. Click Reset Settings5. If you are prom

41、pted to save your settings, click “Dont save”6. A dialog appears telling you that the operation had been successful 案例研究5:測試中斷安裝軟件的功能Purpose:Verify the app can be canceled during installationTest Steps:1. Launch App Name2. From the drop down menu select File, New and Project3. The New project Dialog box should appear4. In “Project Types”, select “Other Project Types” and under this, “Setup and deployment”. From the “Templates” select a setup pr

溫馨提示

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

評論

0/150

提交評論