測試用例設(shè)計指導手冊_圖文_第1頁
測試用例設(shè)計指導手冊_圖文_第2頁
測試用例設(shè)計指導手冊_圖文_第3頁
測試用例設(shè)計指導手冊_圖文_第4頁
測試用例設(shè)計指導手冊_圖文_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、測試用例設(shè)計指導 目錄1. 測試用例基本概念 (31.1 測試用例的定義 (31.2 測試用例的特征. 錯誤!未定義書簽。1.3 測試用例設(shè)計原則 (32. 測試用例設(shè)計方法 (42.1 等價類劃分方法 (42.2 邊界值分析方法 (102.3 錯誤推測法 (172.4 因果圖方法 (182.5 判定表分析方法 (222.6 正交實驗設(shè)計方法 (302.7 功能圖分析方法(可以忽略 (362.8 場景設(shè)計方法 (382.9 基本路徑分析法 (40 2.10 Pairwise法(成對測試 (423 測試用例設(shè)計綜合策略 (443.1 綜合策略 (443.2 測試用例的設(shè)計步驟 (453.3 優(yōu)化

2、測試用例的方法 (45 1. 測試用例基本概念1.1 測試用例的定義測試用例是為特定的目的而設(shè)計的一組測試輸入、執(zhí)行條件和預期的結(jié)果。測試用例是執(zhí)行的最小實體。簡單地說,測試用例就是設(shè)計一個場景,使軟件程序在這種場景下,必須能夠正常運行并且達到程序所設(shè)計的執(zhí)行結(jié)果。1.2 測試用例的特征1最有可能抓住錯誤的;2不是重復的、多余的;3一組相似測試用例中最有效的;4既不是太簡單,也不是太復雜。1.3 測試用例設(shè)計原則1 對于系統(tǒng)業(yè)務(wù)流程要能夠完整說明整個系統(tǒng)的業(yè)務(wù)需求、系統(tǒng)由幾個子系統(tǒng)組成以及它們之間的關(guān)系;2 對于模塊業(yè)務(wù)流程要能夠說明清楚子系統(tǒng)內(nèi)部功能、重要功能點以及它們之間的關(guān)系;1 對于系

3、統(tǒng)業(yè)務(wù)流程來說,各個子系統(tǒng)之間是如何連接在一起,如果需要接口,各個子系統(tǒng)之間是否有正確的接口;如果是依靠頁面鏈接,頁面鏈接是否正確;2 對于模塊業(yè)務(wù)流程來說,同級模塊以及上下級模塊是如何構(gòu)成一個子系統(tǒng),其內(nèi)部功能接口是否連貫;1 應盡可能覆蓋程序的各種路徑2 應盡可能覆蓋系統(tǒng)的各個業(yè)務(wù)3 應考慮存在跨年、跨月、跨天的數(shù)據(jù)4 大量數(shù)據(jù)并發(fā)測試的準備5 系統(tǒng)中各功能、業(yè)務(wù)的異常情況1 輸入用戶實際數(shù)據(jù)以驗證系統(tǒng)是否滿足需求規(guī)格說明書的需求2 測試用例中的預期結(jié)果應與需求規(guī)格說明書中的要求相符1 測試數(shù)據(jù)應符合用戶實際工作業(yè)務(wù)流程2 兼顧各種業(yè)務(wù)的變化3 要符合當前業(yè)務(wù)行業(yè)法律、法規(guī)如非針對格式、異

4、常場景等進行特定驗證需要,人名、地名、電話號碼等應具有模擬功能,符合一般的命名慣例。 1 測試用例中的操作步驟應具有可執(zhí)行性,預期結(jié)果應具有可驗證的具體方法;2 涉及多個操作步驟時,預期結(jié)果中要寫明不同的操作步驟對應的操作結(jié)果;用例設(shè)計不僅要考慮程序接收正確數(shù)據(jù)輸入并且產(chǎn)生正確(預期的輸出的情況,也要考慮輸入非法數(shù)據(jù)(非法類型、不符合要求的數(shù)據(jù)、溢出數(shù)據(jù)等時,程序是否能給出提示并進行相應處理。2. 測試用例設(shè)計方法2.1 等價類劃分方法是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集,然后從每一個子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例。該方法是一種重要的,常用的黑盒測試用例設(shè)計方

5、法。等價類是指某個輸入域的子集合。在該子集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的,并合理地假定:測試某等價類的代表值就等于對這一類其它值的測試,因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價類,在每一個等價類中取一個數(shù)據(jù)作為測試的輸入條件就可以用少量代表性的測試數(shù)據(jù)取得較好的測試結(jié)果。等價類劃分可有兩種不同的情況:有效等價類和無效等價類。1 有效等價類是指對于程序的規(guī)格說明來說是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用有效等價類可檢驗程序是否實現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。2 無效等價類與有效等價類的定義恰巧相反。無效等價類指對程序的規(guī)格說明是不合理的或無意義的輸入數(shù)據(jù)所構(gòu)成的集合。

6、對于具體的問題,無效等價類至少應有一個,也可能有多個。設(shè)計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗,這樣的測試才能確保軟件具有更高的可靠性。1 完備測試、避免冗余;2 劃分等價類重要的是:集合的劃分,劃分為互不相交的一組子集,而子集的并是整個集合;3 并是整個集合:完備性; 4 子集互不相交:保證一種形式的無冗余性;1 在輸入條件規(guī)定了取值范圍或值的個數(shù)的情況下,則可以確立一個有效等價類和兩個無效等價類。如:輸入值是學生成績,范圍是0100; 2 在輸入條件規(guī)定了輸入值的集合或者規(guī)定了"必須如何"的條件的情況下,可確立一個有效

7、等價類和一個無效等價類;3 在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類。4 在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個,并且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。例:輸入條件說明學歷可為:專科、本科、碩士、博士四種之一,則分別取這四種這四個值作為四個有效等價類,另外把四種學歷之外的任何學歷作為無效等價類。5 在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個有效等價類(符合規(guī)則和若干個無效等價類(從不同角度違反規(guī)則;6 在確知已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步的劃分為更小的等價類。在確立了等價類后

8、,可建立等價類表,列出所有劃分出的等價類輸入條件:有效等價類、無效等價類,然后從劃分出的等價類中按以下三個原則設(shè)計測試用例:1 為每一個等價類規(guī)定一個唯一的編號;2 設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價類,重復這一步,直到所有的有效等價類都被覆蓋為止;3 設(shè)計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復這一步,直到所有的無效等價類都被覆蓋為止。 某程序規(guī)定:"輸入三個整數(shù) a 、 b 、 c 分別作為三邊的邊長構(gòu)成三角形。通過程序判定所構(gòu)成的三角形的類型,當此三角形為一般三角形、等腰三角形及等邊三角形時,分別作計算 "。用等價類劃分方

9、法為該程序進行測試用例設(shè)計。(三角形問題的復雜之處在于輸入與輸出之間的關(guān)系比較復雜。1分析題目中給出和隱含的對輸入條件的要求:(1整數(shù)(2三個數(shù)(3非零數(shù)(4正數(shù)(5兩邊之和大于第三邊(6等腰(7等邊2如果 a 、 b 、 c 滿足條件( 1 ( 4 ,則輸出下列四種情況之一:1如果不滿足條件(5,則程序輸出為 " 非三角形 " 。2如果三條邊相等即滿足條件(7,則程序輸出為 " 等邊三角形 " 。3如果只有兩條邊相等、即滿足條件(6,則程序輸出為 " 等腰三角形 " 。4如果三條邊都不相等,則程序輸出為 " 一般三角形 &

10、quot; 。3列出等價類表并編號 4覆蓋有效等價類的測試用例:a b c 覆蓋等價類號碼3 4 5 (1-(74 45 (1-(7,(8 4 5 5 (1-(7,(9 5 4 5 (1-(7,(104 4 4 (1-(7,(115覆蓋無效等價類的測試用例: 設(shè)有一個檔案管理系統(tǒng),要求用戶輸入以年月表示的日期。假設(shè)日期限定1990年1月2049 年12 月,并規(guī)定日期由6 位數(shù)字字符組成,前4 位表示年,后2 位表示月?,F(xiàn)用等價類劃分法設(shè)計測試用例,來測試程序的"日期檢查功能"。1 劃分等價類并編號,下表等價類劃分的結(jié)果輸入等價類有效等價類無效等價類日期的類型及長度 6 位

11、數(shù)字字符含非數(shù)字字符少于6 位數(shù)字字符多于6 位數(shù)字字符年份范圍在19902049 之間小于1990大于2049月份范圍在0112 之間等于00 大于12 2設(shè)計測試用例,以便覆蓋所有的有效等價類在表中列出了3 個有效等價類,編號分別為、,設(shè)計的測試用例如下:測試數(shù)據(jù)期望結(jié)果覆蓋的有效等價類200211 輸入有效、3 為每一個無效等價類設(shè)計一個測試用例,設(shè)計結(jié)果如下:測試數(shù)據(jù)期望結(jié)果覆蓋的有效等價類95June 無效輸入20036 無效輸入2001006 無效輸入198912 無效輸入205001 無效輸入200100 無效輸入200113 無效輸入NextDate 函數(shù)包含三個變量:mont

12、h 、 day 和 year ,函數(shù)的輸出為輸入日期后一天的日期。例如,輸入為 2006年3月 7日,則函數(shù)的輸出為 2006年3月8日。要求輸入變量 month 、 day 和 year 均為整數(shù)值,并且滿足下列條件: 1month12 1day31 1920year20501 有效等價類為:M1=月份:1月份12D1=日期:1日期31Y1=年:1812年20122 若條件 中任何一個條件失效,則 NextDate 函數(shù)都會產(chǎn)生一個輸出,指明相應的變量超出取值范圍,比如 "month 的值不在 1-12 范圍當中 " 。顯然還存在著大量的 year 、 month 、 d

13、ay 的無效組合, NextDate 函數(shù)將這些組合作統(tǒng)一的輸出: " 無效輸入日期 " 。其無效等價類為:M2=月份:月份<1M3=月份:月份>12D2=日期:日期<1D3=日期:日期>31 Y2=年:年<1812Y3=年:年>2012弱一般等價類測試用例:月份日期年預期輸出6 15 1912 1912年6月16日強一般等價類測試用例同弱一般等價類測試用例PS:強-基于多缺陷假設(shè),針對某些條件列舉有效和無效的用例;弱-基于單缺陷假設(shè),假設(shè)其他條件都正確,對某一條件列舉有效和無效的用例;一般性-不考慮無效等價類;健壯性-考慮無效等價類;(

14、一弱健壯等價類測試用例ID 月份日期年預期輸出WR1 6 15 1912 1912年6月16日WR2 -1 15 1912 月份不在112中WR3 13 15 1912 月份不在112中 /考慮月份無效,年、日期有效,體現(xiàn)“弱”WR4 6 -1 1912 日期不在131中WR5 6 32 1912 日期不在131中WR6 6 15 1811 年份不在18122012中WR7 6 15 2013 年份不在18122012中(二強健壯等價類測試用例ID 月份日期年預期輸出SR1 -1 15 1912 月份不在112中SR2 6 -1 1912 日期不在131中SR3 6 15 1811 年份不在1

15、8122012中SR4 -1 -1 1912 兩個無效一個有效SR5 6 -1 1811 兩個無效一個有效SR6 -1 15 1811 兩個無效一個有效SR7 -1 -1 1811 三個無效SR8 6 15 1912 1912年6月16日2.2 邊界值分析方法邊界值分析法就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法。通常邊界值分析法是作為對等價類劃分法的補充,這種情況下,其測試用例來自等價類的邊界。 1 邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。2 邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測試情況。長期的測試工作經(jīng)驗告訴我們,大量

16、的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的內(nèi)部。因此針對各種邊界情況設(shè)計測試用例,可以查出更多的錯誤。使用邊界值分析方法設(shè)計測試用例,首先應確定邊界情況。通常輸入和輸出等價類的邊界,就是應著重測試的邊界情況。應當選取正好等于,剛剛大于或剛剛小于邊界的值作為測試數(shù)據(jù),而不是選取等價類中的典型值或任意值作為測試數(shù)據(jù)。1 對16-bit 的整數(shù)而言 32767 和 -32768 是邊界2 屏幕上光標在最左上、最右下位置3 報表的第一行和最后一行4 數(shù)組元素的第一個和最后一個5 循環(huán)的第 0 次、第 1 次和倒數(shù)第 2 次、最后一次1 邊界值分析使用與等價類劃分法相同的劃分,只是

17、邊界值分析假定錯誤更多地存在于劃分的邊界上,因此在等價類的邊界上以及兩側(cè)的情況設(shè)計測試用例。例:測試計算平方根的函數(shù)-輸入:實數(shù)-輸出:實數(shù)-規(guī)格說明:當輸入一個0或比0大的數(shù)的時候,返回其正平方根;當輸入一個小于0的數(shù)時,顯示錯誤信息"平方根非法-輸入值小于0"并返回0;庫函數(shù)Print-Line可以用來輸出錯誤信息。2 等價類劃分:I.可以考慮作出如下劃分:a、輸入 (i<0 和 (ii>=0b、輸出 (a>=0 和 (b ErrorII.測試用例有兩個:a、輸入4,輸出2。對應于 (ii 和 (a 。b、輸入-10,輸出0和錯誤提示。對應于 (i 和

18、 (b 。3 邊界值分析:劃分(ii的邊界為0和最大正實數(shù);劃分(i的邊界為最小負實數(shù)和0。由此得到以下測試用例: a、輸入 最小負實數(shù)b、輸入 絕對值很小的負數(shù)c、輸入 0d、輸入 絕對值很小的正數(shù)e、輸入 最大正實數(shù)4 通常情況下,軟件測試所包含的邊界檢驗有幾種類型:數(shù)字、字符、位置、重量、大小、速度、方位、尺寸、空間等。5 相應地,以上類型的邊界值應該在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最長、空/滿等情況下。6 利用邊界值作為測試數(shù)據(jù)項邊界值測試用例的設(shè)計思路字符起始-1個字符/結(jié)束+1個字符假設(shè)一個文本輸入?yún)^(qū)域允許輸入1個到255個字符,輸入1個和255個

19、字符作為有效等價類;輸入0個和256個字符作為無效等價類,這幾個數(shù)值都屬于邊界條件值。數(shù)值最小值-1/最大值+1假設(shè)某軟件的數(shù)據(jù)輸入域要求輸入5位的數(shù)據(jù)值,可以使用10000作為最小值、99999作為最大值;然后使用剛好小于5位和大于5位的數(shù)值來作為邊界條件。空間小于空余空間一點/大于滿空間一點例如在用U盤存儲數(shù)據(jù)時,使用比剩余磁盤空間大一點(幾KB的文件作為邊界條件。7 內(nèi)部邊界值分析:在多數(shù)情況下,邊界值條件是基于應用程序的功能設(shè)計而需要考慮的因素,可以從軟件的規(guī)格說明或常識中得到,也是最終用戶可以很容易發(fā)現(xiàn)問題的。然而,在測試用例設(shè)計過程中,某些邊界值條件是不需要呈現(xiàn)給用戶的,或者說用戶

20、是很難注意到的,但同時確實屬于檢驗范疇內(nèi)的邊界條件,稱為內(nèi)部邊界值條件或子邊界值條件。內(nèi)部邊界值條件主要有下面幾種:a 數(shù)值的邊界值檢驗:計算機是基于二進制進行工作的,因此,軟件的任何數(shù)值運算都有一定的范圍限制。項范圍或值位(bit0 或 1字節(jié)(byte0 255字(word065535(單字或 04294967295(雙字千(K1024兆(M1048576吉(G1073741824b 字符的邊界值檢驗:在計算機軟件中,字符也是很重要的表示元素,其中ASCII和Unicode是常見的編碼方式。下表中列出了一些常用字符對應的ASCII碼值。字符ASCII碼值字符ASCII碼值空 (null 0

21、 A 65 空格 (space 32 a 97斜杠 ( / 47 Z 900 48 z 122冒號 ( : 58 單引號 ( 96 64c 其它邊界值檢驗1 如果輸入條件規(guī)定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù)。例如,如果程序的規(guī)格說明中規(guī)定:"重量在10公斤至50公斤范圍內(nèi)的郵件,其郵費計算公式為"。2 如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù),最小個數(shù),比最小個數(shù)少一,比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù)。比如,一個輸入文件應包括1255個記錄則測試用例可取1和255,還應取0及256等。3 將規(guī)則1和2應用于輸出條件,即設(shè)

22、計測試用例使輸出值達到邊界值及其左右的值。例如,某程序的規(guī)格說明要求計算出"每月保險金扣除額為0至1165.25元"再如,一程序?qū)儆谇閳髾z索系統(tǒng),要求每次"最少顯示1條、最多顯示4條情報摘要"這時我們應考慮的測試用例包括1和4,還應包括0和5等。4 如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最后一個元素作為測試用例。5 如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應當選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。6 分析規(guī)格說明,找出其它可能的邊界條件?,F(xiàn)有一個學生標準化考試批閱試卷,產(chǎn)生成績報告的程序。其規(guī)格說明如下:程序的輸

23、入文件由一些有80個字符的記錄組成,如右圖所示,所有記錄分為3組: 標題:這一組只有一個記錄,其內(nèi)容為輸出成績報告的名字。試卷各題標準答案記錄:每個記錄均在第80個字符處標以數(shù)字"2"。該組的第一個記錄的第1至第3個字符為題目編號(取值為1一999。第10至第59個字符給出第1至第50題的答案(每個合法字符表示一個答案。該組的第2,第3個記錄相應為第51至第100,第101至第150,題的答案。每個學生的答卷描述:該組中每個記錄的第80個字符均為數(shù)字"3"。每個學生的答卷在若干個記錄中給出。如甲的首記錄第1至第9字符給出學生姓名及學號,第10至第59字符

24、列出的是甲所做的第1至第50題的答案。若試題數(shù)超過50,則第2,第3紀錄分別給出他的第51至第100,第101至第150題的解答。然后是學生乙的答卷記錄。學生人數(shù)不超過200,試題數(shù)不超過999。程序的輸出有4個報告:a 按學號排列的成績單,列出每個學生的成績、名次。b 按學生成績排序的成績單。c 平均分數(shù)及標準偏差的報告。d 試題分析報告。按試題號排序,列出各題學生答對的百分比。解答:分別考慮輸入條件和輸出條件,以及邊界條件。給出下表所示的輸入條件及相應的測試用例。 輸出條件及相應的測試用例表。 三角形問題的邊界值分析測試用例在三角形問題描述中,除了要求邊長是整數(shù)外,沒有給出其它的限制條件。

25、在此,我們將三角形每邊邊長的取范圍值設(shè)值為1, 100 。測試用例a b c預期輸出Test1 Test2 Test3 Test4 Test5 60606050506060605050126099100等腰三角形等腰三角形等邊三角形等腰三角形非三角形Test6 Test7 Test8 Test9 60605050129910060605050等腰三角形等腰三角形等腰三角形非三角形Test10 Test11 Test12 Test13 12991006060505060605050等腰三角形等腰三角形等腰三角形非三角形 在NextDate函數(shù)中,隱含規(guī)定了變量mouth和變量day的取值范圍為1

26、mouth12和1day31,并設(shè)定變量year的取值范圍為1912year2050 。測試用例mouth day year預期輸出Test1 Test2 Test3 Test4 Test5 Test6 Test7 6666666151515151515151911191219131975204920502051Test8 Test9 Test10 Test11 Test12 Test13 666666-112303132200120012001200120012001day超出131輸入日期超界day超出131Test14 Test15 Test16 Test17 Test18 Test19

27、 -112111213151515151515200120012001200120012001Mouth超出112Mouth超出1122.3 錯誤推測法基于經(jīng)驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設(shè)計測試用例的方法。列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)他們選擇測試用例。輸入數(shù)據(jù)和輸出數(shù)據(jù)為0的情況;輸入表格為空格或輸入表格只有一行。這些都是容易發(fā)生錯誤的情況。可選擇這些情況下的例子作為測試用例。 前面例子中成績報告的程序,采用錯誤推測法還可補充設(shè)計一些測試用例:1程序是否把空格作為回答2在回答記錄中混有標準答案記錄3除了標題記錄外,還有一些的記錄最后一

28、個字符即不是2也不是34有兩個學生的學號相同5試題數(shù)是負數(shù)。測試一個對線性表(比如數(shù)組進行排序的程序,可推測列出以下幾項需要特別測試的情況:1輸入的線性表中只含有一個元素;2輸入表中所有元素已排好序;3輸入表已按逆序排好;4輸入表中部分或全部元素相同。2.4 因果圖方法是一種利用圖解法分析輸入的各種組合情況,從而設(shè)計測試用例的方法,它適合于檢查程序輸入條件的各種組合情況。等價類劃分法和邊界值分析方法都是著重考慮輸入條件,但沒有考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系。這樣雖然各種輸入條件可能出錯的情況已經(jīng)測試到了,但多個輸入條件組合起來可能出錯的情況卻被忽視了。如果在測試時必須考慮輸

29、入條件的各種組合,則可能的組合數(shù)目將是天文數(shù)字,因此必須考慮采用一種適合于描述多種條件的組合、相應產(chǎn)生多個動作的形式來進行測試用例的設(shè)計,這就需要利用因果圖(邏輯模型。14種符號分別表示了規(guī)格說明中向4種因果關(guān)系。 2因果圖中使用了簡單的邏輯符號,以直線聯(lián)接左右結(jié)點。左結(jié)點表示輸入狀態(tài)(或稱原因,右結(jié)點表示輸出狀態(tài)(或稱結(jié)果。3Ci表示原因,通常置于圖的左部;ei表示結(jié)果,通常在圖的右部。Ci和ei均可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。1關(guān)系恒等:若ci是1,則ei也是1;否則ei為0。非:若ci是1,則ei是0;否則ei是1?;?若c1或c2或c3是1,則ei是1;否則ei為

30、0。“或”可有任意個輸入。與:若c1和c2都是1,則ei為1;否則ei為0?!芭c”也可有任意個輸入。2約束輸入狀態(tài)相互之間還可能存在某些依賴關(guān)系,稱為約束。例如, 某些輸入條件本身不可能同時出現(xiàn)。輸出狀態(tài)之間也往往存在約束。在因果圖中,用特定的符號標明這些約束。 A. 輸入條件的約束有以下4類: E約束(異:a和b中至多有一個可能為1,即a和b不能同時為1。 I約束(或:a、b和c中至少有一個必須是1,即 a、b 和c不能同時為0。 O約束(唯一;a和b必須有一個,且僅有1個為1。 R約束(要求:a是1時,b必須是1,即不可能a是1時b是0。 B. 輸出條件約束類型輸出條件的約束只有M約束(強

31、制:若結(jié)果a是1,則結(jié)果b強制為0。1 分析軟件規(guī)格說明描述中, 那些是原因(即輸入條件或輸入條件的等價類,那些是結(jié)果(即輸出條件,并給每個原因和結(jié)果賦予一個標識符。2 分析軟件規(guī)格說明描述中的語義,找出原因與結(jié)果之間, 原因與原因之間對應的關(guān)系,根據(jù)這些關(guān)系,畫出因果圖。3 由于語法或環(huán)境限制, 有些原因與原因之間,原因與結(jié)果之間的組合情況不可能出現(xiàn),為表明這些特殊情況, 在因果圖上用一些記號表明約束或限制條件。4 把因果圖轉(zhuǎn)換為判定表。5 把判定表的每一列拿出來作為依據(jù),設(shè)計測試用例。某軟件規(guī)格說明書包含這樣的要求:第一列字符必須是A或B,第二列字符必須是一個數(shù)字,在此情況下進行文件的修改

32、,但如果第一列字符不正確,則給出信息L;如果第二列字符不是數(shù)字,則給出信息M。解答:1根據(jù)題意,原因和結(jié)果如下:原因:1第一列字符是A;2第一列字符是B;3第二列字符是一數(shù)字。結(jié)果:21修改文件;22 給出信息L;23給出信息M。2其對應的因果圖如下:11為中間節(jié)點;考慮到原因1和原因2不可能同時為1,因此在因果圖上施加E約束。 3 根據(jù)因果圖建立判定表。 表中8種情況的左面兩列情況中,原因和原因同時為1,這是不可能出現(xiàn)的,故應排除這兩種情況。表的最下一欄給出了6種情況的測試用例,這是我們所需要的數(shù)據(jù)。有一個處理單價為5角錢的飲料的自動售貨機軟件測試用例的設(shè)計。其規(guī)格說明如下:若投入5角錢或1

33、元錢的硬幣,押下橙汁或啤酒的按鈕,則相應的飲料就送出來。若售貨機沒有零錢找,則一個顯示零錢找完的紅燈亮,這時在投入1元硬幣并押下按鈕后,飲料不送出來而且1元硬幣也退出來;若有零錢找,則顯示零錢找完的紅燈滅,在送出飲料的同時退還5角硬幣。1分析這一段說明,列出原因和結(jié)果原因:1.售貨機有零錢找2.投入1元硬幣3.投入5角硬幣4.押下橙汁按鈕5.押下啤酒按鈕結(jié)果:21.售貨機零錢找完燈亮22.退還1元硬幣23.退還5角硬幣24.送出橙汁飲料25.送出啤酒飲料2 畫出因果圖,如圖所示。所有原因結(jié)點列在左邊,所有結(jié)果結(jié)點列在右邊。建立中間結(jié)點,表示處理的中間狀態(tài)。中間結(jié)點:11. 投入1元硬幣且押下飲

34、料按鈕12. 押下橙汁或啤酒的按鈕13. 應當找5角零錢并且售貨機有零錢找14. 錢已付清 3 轉(zhuǎn)換成判定表: 4在判定表中,陰影部分表示因違反約束條件的不可能出現(xiàn)的情況,刪去。第16列與第32列因什么動作也沒做,也刪去。最后可根據(jù)剩下的16列作為確定測試用例的依據(jù)。2.5 判定表分析方法判定表是分析和表達多邏輯條件下執(zhí)行不同操作的情況的工具。能夠?qū)碗s的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。因此,利用判定表能夠設(shè)計出完整的測試用例集合。 在一些數(shù)據(jù)處理問題當中,某些操作的實施依賴于多個邏輯條件的組合,即:針對不同邏輯條件的組合值,分別執(zhí)行不同的操作。判定表很適合于處理這類問題。

35、12345678問題覺得疲倦?Y Y Y Y N N N N 感興趣嗎?Y Y N N Y Y N N 糊涂嗎?Y N Y N Y N Y N建議重讀繼續(xù)跳下一章休息1 條件樁(Condition Stub:列出了問題得所有條件。通常認為列出的條件的次序無關(guān)緊要。2 動作樁(Action Stub:列出了問題規(guī)定可能采取的操作。這些操作的排列順序沒有約束。3 條件項(Condition Entry:列出針對它左列條件的取值。在所有可能情況下的真假值。4 動作項(Action Entry:列出在條件項的各種取值情況下應該采取的動作。1規(guī)則:任何一個條件組合的特定取值及其相應要執(zhí)行的操作稱為規(guī)則。

36、在判定表中貫穿條件項和動作項的一列就是一條規(guī)則。顯然,判定表中列出多少組條件取值,也就有多少條規(guī)則,既條件項和動作項有多少列。1 如下圖左端,兩規(guī)則動作項一樣,條件項類似,在1、2條件項分別取Y、N時,無論條件3取何值,都執(zhí)行同一操作。即要執(zhí)行的動作與條件3無關(guān)。于是可合并?!?”表示與取值無關(guān)。 2 與上類似,下圖中,無關(guān)條件項“-”可包含其他條件項取值,具有相同動作的規(guī)則可合并。 3 化簡后的讀書指南判定表1 2 3 4 問題你覺得疲倦嗎?-YN你對內(nèi)容感興趣嗎?YYNN書中內(nèi)容使你胡涂嗎?YN- 建議請回到本章開頭重讀x繼續(xù)讀下去X 跳到下一章去讀x 停止閱讀,請休息x1 確定規(guī)則的個數(shù)

37、.假如有n個條件。每個條件有兩個取值(0,1,故有2n種規(guī)則。2 列出所有的條件樁和動作樁。3 填入條件項。4 填入動作項。等到初始判定表。5 簡化.合并相似規(guī)則(相同動作。問題要求:”對功率大于50馬力的機器、維修記錄不全或已運行10年以上的機器,應給予優(yōu)先的維修處理”。這里假定,“維修記錄不全”和“優(yōu)先維修處理”均已在別處有更嚴格的定義。請建立判定表。解答:確定規(guī)則的個數(shù):這里有3個條件,每個條件有兩個取值,故應有2*2*2=8種規(guī)則。列出所有的條件茬和動作樁:填入條件項??蓮淖詈?行條件項開始,逐行向上填滿。如第三行是: Y N Y N Y N Y N,第二行是: Y Y N N Y Y

38、 N N等等。填入動作樁和動作頂。這樣便得到形如圖的初始判定表。1 2 3 4 5 6 7 8條功率大于50馬力嗎?Y Y Y Y N N N N 件維修記錄不全嗎?Y Y N N Y Y N N 運行超過10年嗎?Y N Y N Y N Y N動作進行優(yōu)先處理x x X X X作其他處理X x x初始判定表化簡。合并相似規(guī)則后得到圖。1 2 3 4 5條件功率大于50馬力嗎?Y Y Y N N 維修記錄不全嗎?Y N N - - 運行超過10年嗎?- Y N Y N動作進行優(yōu)先處理x x X作其他處理x xM1=月份,每月有30天M2=月份,每月有31天M3=月份, 2月 有92=512條規(guī)

39、則D1=日期,128 12月末31日和其它31D2=日期,29 日月份的31日處理不同D3=日期,30 平年2月28日處理不同D4=日期,31 于2月27日Y1 =年:年是閏年Y2 =年:年不是閏年改進為M1=月份:每月有30天M2=月份:每月有31天, 12月除外 M4=月份:12月M3=月份: 2月D1=日期:1<=日期<=27D2=日期:28D3=日期:29D4=日期:30D5=日期:31Y1 =年:年是閏年Y2 =年:年不是閏年輸入變量間存在大量邏輯關(guān)系的NextData決策表 用決策表測試法測試以下程序:該程序有三個輸入變量month、day、year(month、day

40、和year均為整數(shù)值,并且滿足:1month12和1day31,分別作為輸入日期的月份、日、年份,通過程序可以輸出該輸入日期在日歷上隔一天的日期。例如,輸入為2004年11月29日,則該程序的輸出為2000年12月1日。1 分析各種輸入情況,列出為輸入變量month、day、year劃分的有效等價類。 2 分析程序規(guī)格說明,結(jié)合以上等價類劃分的情況給出問題規(guī)定的可能采取的操作(即列出所有的動作樁。3 根據(jù)(1和(2,畫出簡化后的決策表。案例分析如下:1month變量的有效等價類:M1: month=4,6,9,11M2: month=1,3,5,7,8,10M3: month=12M4: mo

41、nth=22 day變量的有效等價類:D1: 1day26D2: day=27D3: day=28D4: day=29D5: day=30D6: day=313 year變量的有效等價類:Y1: year是閏年Y2: year不是閏年4 考慮各種有效的輸入情況,程序中可能采取的操作有以下六種:a1: day+2a2: day=2a3: day=1a4: month+1a5: month=1a6: year+11 一些軟件的功能需求可用判定表表達得非常清楚,在檢驗程序的功能時判定表也就成為一個不錯的工具。如果一個軟件的規(guī)格說明指出: I.當條件1和條件2滿足,并且條件3和條件4不滿足,或者當條件

42、1、3和條件4滿足時,要執(zhí)行操作1。II.在任一個條件都不滿足時,要執(zhí)行操作2。III.在條件1不滿足,而條件4被滿足時,要執(zhí)行操作3。根據(jù)規(guī)格說明得到如下判定表: 這里,判定表只給出了16種規(guī)則中的8種。事實上,除這8條以外的一些規(guī)則是指當不能滿足指定的條件,執(zhí)行3種操作時,要執(zhí)行1個默許的操作。在沒必要時,判定表通??陕匀ミ@些規(guī)則。但如果用判定表來設(shè)計測試用例,就必須列出這些默許規(guī)則(如下表。規(guī)則5 規(guī)則6 規(guī)則7 規(guī)則8條件1 - N Y Y條件2 - Y Y N條件3 Y N N N條件4 N N Y -默許操x x x x作默許的規(guī)則2 判定表的優(yōu)點和缺點I.優(yōu)點:它能把復雜的問題按

43、各種可能的情況一一列舉出來,簡明而易于理解,也可避免遺漏。II.缺點:不能表達重復執(zhí)行的動作,例如循環(huán)結(jié)構(gòu)。3 B. Beizer 指出了適合使用判定表設(shè)計測試用例的條件:規(guī)格說明以判定表形式給出,或很容易轉(zhuǎn)換成判定表。條件的排列順序不會也不影響執(zhí)行哪些操作。規(guī)則的排列順序不會也不影響執(zhí)行哪些操作。每當某一規(guī)則的條件已經(jīng)滿足,并確定要執(zhí)行的操作后,不必檢驗別的規(guī)則。如果某一規(guī)則得到滿足要執(zhí)行多個操作,這些操作的執(zhí)行順序無關(guān)緊要。 B. Beizer提出這5個必要條件的目的是為了使操作的執(zhí)行完全依賴于條件的組合。其實對于某些不滿足這幾條的判定表,同樣可以借以設(shè)計測試用例,只不過尚需增加其它的測試

44、用例罷了。2.6 正交實驗設(shè)計方法利用因果圖來設(shè)計測試用例時, 作為輸入條件的原因與輸出結(jié)果之間的因果關(guān)系,有時很難從軟件需求規(guī)格說明中得到。往往因果關(guān)系非常龐大,以至于據(jù)此因果圖而得到的測試用例數(shù)目多的驚人,給軟件測試帶來沉重的負擔,為了有效地,合理地減少測試的工時與費用,可利用正交實驗設(shè)計方法進行測試用例的設(shè)計。正交實驗設(shè)計方法:依據(jù)Galois理論,從大量的(實驗數(shù)據(jù)(測試例中挑選適量的,有代表性的點(例,從而合理地安排實驗(測試的一種科學實驗設(shè)計方法.類似的方法有:聚類分析方法,因子方法方法等.1提取功能說明,構(gòu)造因子-狀態(tài)表2加權(quán)篩選,生成因素分析表對因子與狀態(tài)的選擇可按其重要程度分

45、別加權(quán).可根據(jù)各個因子及狀態(tài)的作用大小,出現(xiàn)頻率的大小以及測試的需要,確定權(quán)值的大小。3利用正交表構(gòu)造測試數(shù)據(jù)集正交表的推導依據(jù)Galois理論(這里省略,需要時可查數(shù)理統(tǒng)計方面的教材。節(jié)省測試工作工時;可控制生成的測試用例數(shù)量;測試用例具有一定的覆蓋率。行數(shù)(Runs:正交表中的行的個數(shù),即試驗的次數(shù),也是我們通過正交實驗法設(shè)計的測試用例的個數(shù)。因素數(shù)(Factors :正交表中列的個數(shù),即我們要測試的功能點。水平數(shù)(Levels:任何單個因素能夠取得的值的最大個數(shù)。正交表中的包含的值為從0到數(shù)“水平數(shù)-1”或從1到“水平數(shù)”。即要測試功能點的輸入條件。正交表的形式:L行數(shù)(水平數(shù)因素數(shù)如:

46、L8(27 1整齊可比性在同一張正交表中,每個因素的每個水平出現(xiàn)的次數(shù)是完全相同的。由于在試驗中每個因素的每個水平與其它因素的每個水平參與試驗的機率是完全相同的,這就保證在各個水平中最大程度的排除了其它因素水平的干擾。因而,能最有效地進行比較和作出展望,容易找到好的試驗條件。2均衡分散性在同一張正交表中,任意兩列(兩個因素的水平搭配(橫向形成的數(shù)字對是完全相同的。這樣就保證了試驗條件均衡地分散在因素水平的完全組合之中,因而具有很強的代表性,容易得到好的試驗條件。1有哪些因素(變量2每個因素有哪幾個水平(變量的取值3選擇一個合適的正交表4把變量的值映射到表中5把每一行的各因素水平的組合做為一個測

47、試用例6加上你認為可疑且沒有在表中出現(xiàn)的組合考慮因素(變量的個數(shù)考慮因素水平(變量的取值的個數(shù)考慮正交表的行數(shù)取行數(shù)最少的一個1因素數(shù)(變量、水平數(shù)(變量值相符2因素數(shù)不相同 3水平數(shù)不相同 這是個人信息查詢系統(tǒng)中的一個窗口。我們可以看到要測試的控件有3個:姓名、身份證號碼、手機號碼,也就是要考慮的因素有三個;而每個因素里的狀態(tài)有兩個:填與不填。選擇正交表時分析一下:1、表中的因素數(shù)>=3;2、表中至少有3個因素數(shù)的水平數(shù)>=2;3、行數(shù)取最少的一個。從正交表公式中開始查找,結(jié)果為:L4(23變量映射: 測試用例如下:1:填寫姓名、填寫身份證號、填寫手機號2:填寫姓名、不填身份證號

48、、不填手機號3:不填姓名、填寫身份證號、不填手機號4:不填姓名、不填身份證號、填寫手機號增補測試用例5:不填姓名、不填身份證號、不填手機號從測試用例可以看出:如果按每個因素兩個水平數(shù)來考慮的話,需要8個測試用例,而通過正交實驗法進行的測試用例只有5個,大大減少了測試用例數(shù)。用最小的測試用例集合去獲取最大的測試覆蓋率。 水平數(shù)(變量的取值相同但在正交表中,找不到相同的因素數(shù)(變量(取因素數(shù)最接近但略大的實際值的表例子:兼容性測試:操作系統(tǒng):2000、XP、2003瀏覽器:IE6.0、IE7.0、TT殺毒軟件:卡巴、金山、諾頓如果全部進行測試的話,33=27個組合,需要進行27次測試。因素數(shù)和水平

49、數(shù)有三個因素:操作系統(tǒng)、瀏覽器、殺毒軟件每個因素有三個水平。選擇正交表表中的因素數(shù)>=3表中至少有三個因素的水平數(shù)>=3行數(shù)取最少的一個結(jié)果:L9(34,如下圖: 變量映射操作系統(tǒng):12000,2XP,32003瀏覽器:1IE6.0,2IE7.0,3TT殺毒軟件:1卡巴,2金山,3諾頓 用L9(34設(shè)計的測試用例測試用例如下:2000、IE6.0、卡巴2000、IE7.0、諾頓2000、TT、金山XP、IE6.0、諾頓XP、IE7.0、金山XP、TT、卡巴2003、IE6.0、金山2003、IE7.0、卡巴2003、TT、諾頓增補測試用例由于目前IE6.0、XP、卡巴的使用量很高,

50、故增添以下測試用例:XP、IE6.0、金山XP、IE6.0、卡巴2003、IE6.0、卡巴測試用例減少數(shù):2712采用包含和組合的方法選取合適的正交表公式。假設(shè)功能描述如下:打印范圍分:全部、當前幻燈片、給定范圍共三種情況;打印內(nèi)容分:幻燈片、講義、備注頁、大綱視圖共四種方式;打印顏色/灰度分: 顏色、灰度、黑白共三種設(shè)置;打印效果分:幻燈片加框和幻燈片不加框兩種方式。因素狀態(tài)表:狀態(tài)/因素A打印范圍B打印內(nèi)容C打印顏色/灰度D打印效果0 全部幻燈片顏色幻燈片加框1 當前幻燈片講義灰度幻燈片不加框 2 給定范圍備注頁黑白3 大綱視圖我們先將中文字轉(zhuǎn)換成字母,便于設(shè)計。得到:因素狀態(tài)表:狀態(tài)/因

51、素 A B C D0 A1 B1 C1 D11 A2 B2 C2 D22 A3 B3 C33 B4我們分析一下:被測項目中一共有四個被測對象,每個被測對象的狀態(tài)都不一樣。選擇正交表:1、表中的因素數(shù)>=42、表中至少有4個因素的水平數(shù)>=23、行數(shù)取最少的一個最后選中正交表公式: L16(45正交矩陣為:1 2 3 4 51 0 0 0 0 02 0 1 1 1 13 0 2 2 2 24 0 3 3 3 35 1 0 1 2 36 1 1 0 3 27 1 2 3 0 18 1 3 2 1 09 2 0 2 3 110 2 1 3 2 011 2 2 0 1 312 2 3 1

52、0 213 3 0 3 1 214 3 1 2 0 315 3 2 1 3 016 3 3 0 2 1用字母替代正交矩陣:1 2 3 4 51 A1 B1 C1 D1 02 A1 B2 C2 D2 1 3 A1 B3 C3 2 24 A1 B4 3 3 35 A2 B1 C2 2 36 A2 B2 C1 3 27 A2 B3 3 D1 18 A2 B4 C3 D2 09 A3 B1 C3 3 110 A3 B2 3 2 011 A3 B3 C1 D2 312 A3 B4 C2 D1 213 3 B1 3 D2 214 3 B2 C3 D1 315 3 B3 C2 3 016 3 B4 C1 2

53、 1我們看到:第一列水平值為3、第三列水平值為3、第四列水平值3、2都需要由各自的字母替代。1 2 3 4 51 A1 B1 C1 D1 02 A1 B2 C2 D2 13 A1 B3 C3 D1 24 A1 B4 C1 D2 35 A2 B1 C2 D1 36 A2 B2 C1 D2 27 A2 B3 C2 D1 18 A2 B4 C3 D2 09 A3 B1 C3 D2 110 A3 B2 C3 D1 011 A3 B3 C1 D2 312 A3 B4 C2 D1 213 A1 B1 C1 D2 214 A2 B2 C3 D1 315 A3 B3 C2 D2 016 A1 B4 C1 D1 1第五列去掉沒有意義。通過分析,由于四個因素里有三個的水平值小于3,所以從第13行到16行的測試用例可以忽略。那么這樣的話,就可以有12個測試用例了。2.7 功能圖分析方法(可以忽略 描述了輸入條件與輸出條件之間的對應關(guān)系.對于較復雜的程序,由于存在大量的組合情況,因此,僅用靜態(tài)說

溫馨提示

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

評論

0/150

提交評論