測試用例的設(shè)計(jì)方法(全)
等價(jià)類劃分方法:
一.方法簡介
1.定義
是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例。該方法是一種重要的,常用的黑盒測試用例設(shè)計(jì)方法。
2.劃分等價(jià)類:
等價(jià)類是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對于揭露程序中的錯(cuò)誤都是等效的,并合理地假定:測試某等價(jià)類的代表值就等于對這一類其它值的測試,因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測試的輸入條件就可以用少量代表性的測試數(shù)據(jù)取得較好的測試結(jié)果。等價(jià)類劃分可有兩種不同的情況:有效等價(jià)類和無效等價(jià)類。
1)有效等價(jià)類
是指對于程序的規(guī)格說明來說是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用有效等價(jià)類可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。
2)無效等價(jià)類
與有效等價(jià)類的定義恰巧相反。無效等價(jià)類指對程序的規(guī)格說明是不合理的或無意義的輸入數(shù)據(jù)所構(gòu)成的集合。對于具體的問題,無效等價(jià)類至少應(yīng)有一個(gè),也可能有多個(gè)。
設(shè)計(jì)測試用例時(shí),要同時(shí)考慮這兩種等價(jià)類。因?yàn)檐浖粌H要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn),這樣的測試才能確保軟件具有更高的可靠性。
3.劃分等價(jià)類的標(biāo)準(zhǔn):
1)完備測試、避免冗余;
2)劃分等價(jià)類重要的是:集合的劃分,劃分為互不相交的一組子集,而子集的并是整個(gè)集合;
3)并是整個(gè)集合:完備性;
4)子集互不相交:保證一種形式的無冗余性;
5)同一類中標(biāo)識(選擇)一個(gè)測試用例,同一等價(jià)類中,往往處理相同,相同處理映射到"相同的執(zhí)行路徑"。
4.劃分等價(jià)類的方法
1)在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。如:輸入值是學(xué)生成績,范圍是0~100;
2)在輸入條件規(guī)定了輸入值的集合或者規(guī)定了"必須如何"的條件的情況下,可確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類;
3)在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。
4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。
例:輸入條件說明學(xué)歷可為:專科、本科、碩士、博士四種之一,則分別取這四種這四個(gè)值作為四個(gè)有效等價(jià)類,另外把四種學(xué)歷之外的任何學(xué)歷作為無效等價(jià)類。
5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無效等價(jià)類(從不同角度違反規(guī)則);
6)在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的劃分為更小的等價(jià)類。
5.設(shè)計(jì)測試用例
在確立了等價(jià)類后,可建立等價(jià)類表,列出所有劃分出的等價(jià)類輸入條件:有效等價(jià)類、無效等價(jià)類,然后從劃分出的等價(jià)類中按以下三個(gè)原則設(shè)計(jì)測試用例:
1)為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號;
2)設(shè)計(jì)一個(gè)新的測試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止;
3)設(shè)計(jì)一個(gè)新的測試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這一步,直到所有的無效等價(jià)類都被覆蓋為止。
二.實(shí)戰(zhàn)演習(xí)
1.某程序規(guī)定:"輸入三個(gè)整數(shù) a 、 b 、 c 分別作為三邊的邊長構(gòu)成三角形。通過程序判定所構(gòu)成的三角形的類型,當(dāng)此三角形為一般三角形、等腰三角形及等邊三角形時(shí),分別作計(jì)算 … "。用等價(jià)類劃分方法為該程序進(jìn)行測試用例設(shè)計(jì)。(三角形問題的復(fù)雜之處在于輸入與輸出之間的關(guān)系比較復(fù)雜。)
分析題目中給出和隱含的對輸入條件的要求:
(1)整數(shù) (2)三個(gè)數(shù) (3)非零數(shù) (4)正數(shù)
(5)兩邊之和大于第三邊 (6)等腰 (7)等邊
如果 a 、 b 、 c 滿足條件( 1 ) ~ ( 4 ),則輸出下列四種情況之一:
1)如果不滿足條件(5),則程序輸出為 " 非三角形 " 。
2)如果三條邊相等即滿足條件(7),則程序輸出為 " 等邊三角形 " 。
3)如果只有兩條邊相等、即滿足條件(6),則程序輸出為 " 等腰三角形 " 。
4)如果三條邊都不相等,則程序輸出為 " 一般三角形 " 。
列出等價(jià)類表并編號
覆蓋有效等價(jià)類的測試用例:
a b c 覆蓋等價(jià)類號碼
3 4 5 (1)--(7)
4 4 5 (1)--(7),(8)
4 5 5 (1)--(7),(9)
5 4 5 (1)--(7),(10)
4 4 4 (1)--(7),(11)
覆蓋無效等價(jià)類的測試用例:
2.設(shè)有一個(gè)檔案管理系統(tǒng),要求用戶輸入以年月表示的日期。假設(shè)日期限定在1990年1月~2049年12月,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年,后2位表示月。現(xiàn)用等價(jià)類劃分法設(shè)計(jì)測試用例,來測試程序的"日期檢查功能"。
1)劃分等價(jià)類并編號,下表等價(jià)類劃分的結(jié)果
輸入等價(jià)類 有效等價(jià)類 無效等價(jià)類
日期的類型及長度 ①6位數(shù)字字符 ②有非數(shù)字字符
③少于6位數(shù)字字符
④多于6位數(shù)字字符
年份范圍 ⑤在1990~2049之間 ⑥小于1990
⑦大于2049
月份范圍 ⑧在01~12之間 ⑨等于00
⑩大于12
2)設(shè)計(jì)測試用例,以便覆蓋所有的有效等價(jià)類在表中列出了3個(gè)有效等價(jià)類,編號分別為①、⑤、⑧,設(shè)計(jì)的測試用例如下:
測試數(shù)據(jù) 期望結(jié)果 覆蓋的有效等價(jià)類
200211 輸入有效 ①、⑤、⑧
3)為每一個(gè)無效等價(jià)類設(shè)計(jì)一個(gè)測試用例,設(shè)計(jì)結(jié)果如下:
測試數(shù)據(jù) 期望結(jié)果 覆蓋的無效等價(jià)類
95June 無效輸入 ②
20036 無效輸入 ③
2001006 無效輸入 ④
198912 無效輸入 ⑥
200401 無效輸入 ⑦
200100 無效輸入 ⑨
200113 無效輸入 ⑩
3.NextDate 函數(shù)包含三個(gè)變量:month 、 day 和 year ,函數(shù)的輸出為輸入日期后一天的日期。 例如,輸入為 2006年3月 7日,則函數(shù)的輸出為 2006年3月8日 。要求輸入變量 month 、 day 和 year 均為整數(shù)值,并且滿足下列條件:
①1≤month≤12
②1≤day≤31
③1920≤year≤2050
1)有效等價(jià)類為:
M1={月份:1≤月份≤12}
D1={日期:1≤日期≤31}
Y1={年:1812≤年≤2012}
2)若條件 ① ~ ③中任何一個(gè)條件失效,則 NextDate 函數(shù)都會(huì)產(chǎn)生一個(gè)輸出,指明相應(yīng)的變量超出取值范圍,比如 "month 的值不在 1-12 范圍當(dāng)中 " 。顯然還存在著大量的 year 、 month 、 day 的無效組合, NextDate 函數(shù)將這些組合作統(tǒng)一的輸出: " 無效輸入日期 " 。其無效等價(jià)類為:
M2={月份:月份<1}
M3={月份:月份>12}
D2={日期:日期<1}
D3={日期:日期>31}
Y2={年:年<1812}
Y3={年:年>2012}
弱一般等價(jià)類測試用例
月份 日期 年 預(yù)期輸出
6 15 1912 1912年6月16日
強(qiáng)一般等價(jià)類測試用例同弱一般等價(jià)類測試用例
注:弱--有單缺陷假設(shè);健壯--考慮了無效值
(一)弱健壯等價(jià)類測試
用例ID 月份 日期 年 預(yù)期輸出
WR1 6 15 1912 1912年6月16日
WR2 -1 15 1912 月份不在1~12中
WR3 13 15 1912 月份不在1~12中
WR4 6 -1 1912 日期不在1~31中
WR5 6 32 1912 日期不在1~31中
WR6 6 15 1811 年份不在1812~2012中
WR7 6 15 2013 年份不在1812~2012中
(二)強(qiáng)健壯等價(jià)類測試
用例ID 月份 日期 年 預(yù)期輸出
SR1 -1 15 1912 月份不在1~12中
SR2 6 -1 1912 日期不在1~31中
SR3 6 15 1811 年份不在1812~2012中
SR4 -1 -1 1912 兩個(gè)無效一個(gè)有效
SR5 6 -1 1811 兩個(gè)無效一個(gè)有效
SR6 -1 15 1811 兩個(gè)無效一個(gè)有效
SR7 -1 -1 1811 三個(gè)無效
4.傭金問題等價(jià)類測試用例,它是根據(jù)傭金函數(shù)的輸出值域定義等價(jià)類,來改進(jìn)測試用例集合。
輸出銷售額≤1000元 傭金10%
1000<銷售額≤1800 傭金=100+(銷售額-1000)15%
銷售額>1800 傭金=220+(銷售額-1800)20%
測試用例 槍機(jī)(45) 槍托(30) 槍管(25) 銷售額 傭金
1 5 5 5 500 50
2 15 15 15 1500 175
3 25 25 25 2500 360
根據(jù)輸出域選擇輸入值,使落在輸出域等價(jià)類內(nèi),可以結(jié)合弱健壯測試用例結(jié)合。
邊界值分析方法:
一.方法簡介
1.定義:邊界值分析法就是對輸入或輸出的邊界值進(jìn)行測試的一種黑盒測試方法。通常邊界值分析法是作為對等價(jià)類劃分法的補(bǔ)充,這種情況下,其測試用例來自等價(jià)類的邊界。
2.與等價(jià)劃分的區(qū)別
1)邊界值分析不是從某等價(jià)類中隨便挑一個(gè)作為代表,而是使這個(gè)等價(jià)類的每個(gè)邊界都要作為測試條件。
2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測試情況。
3.邊界值分析方法的考慮:
長期的測試工作經(jīng)驗(yàn)告訴我們,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的內(nèi)部。因此針對各種邊界情況設(shè)計(jì)測試用例,可以查出更多的錯(cuò)誤。
使用邊界值分析方法設(shè)計(jì)測試用例,首先應(yīng)確定邊界情況。通常輸入和輸出等價(jià)類的邊界,就是應(yīng)著重測試的邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大于或剛剛小于邊界的值作為測試數(shù)據(jù),而不是選取等價(jià)類中的典型值或任意值作為測試數(shù)據(jù)。
4.常見的邊界值
1)對16-bit 的整數(shù)而言 32767 和 -32768 是邊界
2)屏幕上光標(biāo)在最左上、最右下位置
3)報(bào)表的第一行和最后一行
4)數(shù)組元素的第一個(gè)和最后一個(gè)
5)循環(huán)的第 0 次、第 1 次和倒數(shù)第 2 次、最后一次
5.邊界值分析
1)邊界值分析使用與等價(jià)類劃分法相同的劃分,只是邊界值分析假定錯(cuò)誤更多地存在于劃分的邊界上,因此在等價(jià)類的邊界上以及兩側(cè)的情況設(shè)計(jì)測試用例。
例:測試計(jì)算平方根的函數(shù)
--輸入:實(shí)數(shù)
--輸出:實(shí)數(shù)
--規(guī)格說明:當(dāng)輸入一個(gè)0或比0大的數(shù)的時(shí)候,返回其正平方根;當(dāng)輸入一個(gè)小于0的數(shù)時(shí),顯示錯(cuò)誤信息"平方根非法-輸入值小于0"并返回0;庫函數(shù)Print-Line可以用來輸出錯(cuò)誤信息。
2)等價(jià)類劃分:
I.可以考慮作出如下劃分:
a、輸入 (i)<0 和 (ii)>=0
b、輸出 (a)>=0 和 (b) Error
II.測試用例有兩個(gè):
a、輸入4,輸出2。對應(yīng)于 (ii) 和 (a) 。
b、輸入-10,輸出0和錯(cuò)誤提示。對應(yīng)于 (i) 和 (b) 。
3)邊界值分析:
劃分(ii)的邊界為0和大正實(shí)數(shù);劃分(i)的邊界為最小負(fù)實(shí)數(shù)和0。由此得到以下測試用例:
a、輸入 {最小負(fù)實(shí)數(shù)}
b、輸入 {絕對值很小的負(fù)數(shù)}
c、輸入 0
d、輸入 {絕對值很小的正數(shù)}
e、輸入 {大正實(shí)數(shù)}
4)通常情況下,軟件測試所包含的邊界檢驗(yàn)有幾種類型:數(shù)字、字符、位置、重量、大小、速度、方位、尺寸、空間等。
5)相應(yīng)地,以上類型的邊界值應(yīng)該在:大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最長、 空/滿等情況下。
6)利用邊界值作為測試數(shù)據(jù)
項(xiàng) 邊界值 測試用例的設(shè)計(jì)思路
字符 起始-1個(gè)字符/結(jié)束+1個(gè)字符 假設(shè)一個(gè)文本輸入?yún)^(qū)域允許輸入1個(gè)到255個(gè) 字符,輸入1個(gè)和255個(gè)字符作為有效等價(jià)類;輸入0個(gè)和256個(gè)字符作為無效等價(jià)類,這幾個(gè)數(shù)值都屬于邊界條件值。
數(shù)值 最小值-1/大值+1 假設(shè)某軟件的數(shù)據(jù)輸入域要求輸入5位的數(shù)據(jù)值,可以使用10000作為最小值、99999作為大值;然后使用剛好小于5位和大于5位的 數(shù)值來作為邊界條件。
空間 小于空余空間一點(diǎn)/大于滿空間一點(diǎn) 例如在用U盤存儲數(shù)據(jù)時(shí),使用比剩余磁盤空間大一點(diǎn)(幾KB)的文件作為邊界條件。
7)內(nèi)部邊界值分析:
在多數(shù)情況下,邊界值條件是基于應(yīng)用程序的功能設(shè)計(jì)而需要考慮的因素,可以從軟件的規(guī)格說明或常識中得到,也是最終用戶可以很容易發(fā)現(xiàn)問題的。然而,在測試用例設(shè)計(jì)過程中,某些邊界值條件是不需要呈現(xiàn)給用戶的,或者說用戶是很難注意到的,但同時(shí)確實(shí)屬于檢驗(yàn)范疇內(nèi)的邊界條件,稱為內(nèi)部邊界值條件或子邊界值條件。
內(nèi)部邊界值條件主要有下面幾種:
a)數(shù)值的邊界值檢驗(yàn):計(jì)算機(jī)是基于二進(jìn)制進(jìn)行工作的,因此,軟件的任何數(shù)值運(yùn)算都有一定的范圍限制。
項(xiàng) 范圍或值
位(bit) 0或者1
字節(jié)(byte) 0——225
字(word) 0~65535(單字)或 0~4294967295(雙字)
千(K) 1024
兆(M) 1048576
吉(G) 1073741824
b)字符的邊界值檢驗(yàn):在計(jì)算機(jī)軟件中,字符也是很重要的表示元素,其中ASCII和Unicode是常見的編碼方式。下表中列出了一些常用字符對應(yīng)的ASCII碼值。
字符 ASCII碼值 字符 ASCII碼值
空 (null) 0 A 65
空格 (space) 32 a 97
斜杠 ( / ) 47 Z 90
0 48 z 122
冒號 ( : ) 58 單引號 ( ‘ ) 96
@ 64
c)其它邊界值檢驗(yàn)
6.基于邊界值分析方法選擇測試用例的原則
1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界的值作為測試輸入數(shù)據(jù)。
例如,如果程序的規(guī)格說明中規(guī)定:"重量在10公斤至50公斤范圍內(nèi)的郵件,其郵費(fèi)計(jì)算公式為……"。作為測試用例,我們應(yīng)取10及50,還應(yīng)取10.01,49.99,9.99及50.01等。
2)如果輸入條件規(guī)定了值的個(gè)數(shù),則用大個(gè)數(shù),最小個(gè)數(shù),比最小個(gè)數(shù)少一,比大個(gè)數(shù)多一的數(shù)作為測試數(shù)據(jù)。
比如,一個(gè)輸入文件應(yīng)包括1~255個(gè)記錄,則測試用例可取1和255,還應(yīng)取0及256等。
3)將規(guī)則1)和2)應(yīng)用于輸出條件,即設(shè)計(jì)測試用例使輸出值達(dá)到邊界值及其左右的值。
例如,某程序的規(guī)格說明要求計(jì)算出"每月保險(xiǎn)金扣除額為0至1165.25元",其測試用例可取0.00及1165.24、還可取一0.01及1165.26等。
再如一程序?qū)儆谇閳?bào)檢索系統(tǒng),要求每次"最少顯示1條、最多顯示4條情報(bào)摘要",這時(shí)我們應(yīng)考慮的測試用例包括1和4,還應(yīng)包括0和5等。
4)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測試用例。
5)如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。
6)分析規(guī)格說明,找出其它可能的邊界條件。
二.實(shí)戰(zhàn)演習(xí)
1.現(xiàn)有一個(gè)學(xué)生標(biāo)準(zhǔn)化考試批閱試卷,產(chǎn)生成績報(bào)告的程序。其規(guī)格說明如下:程序的輸入文件由一些有80個(gè)字符的記錄組成,如右圖所示,所有記錄分為3組:
①標(biāo)題:這一組只有一個(gè)記錄,其內(nèi)容為輸出成績報(bào)告的名字。
②試卷各題標(biāo)準(zhǔn)答案記錄:每個(gè)記錄均在第80個(gè)字符處標(biāo)以數(shù)字"2"。該組的第一個(gè)記錄的第1至第3個(gè)字符為題目編號(取值為1一999)。第10至第59個(gè)字符給出第1至第50題的答案(每個(gè)合法字符表示一個(gè)答案)。該組的第2,第3……個(gè)記錄相應(yīng)為第51至第100,第101至第150,…題的答案。
③每個(gè)學(xué)生的答卷描述:該組中每個(gè)記錄的第80個(gè)字符均為數(shù)字"3"。每個(gè)學(xué)生的答卷在若干個(gè)記錄中給出。如甲的首記錄第1至第9字符給出學(xué)生姓名及學(xué)號,第10至第59字符列出的是甲所做的第1至第50題的答案。若試題數(shù)超過50,則第2,第3……紀(jì)錄分別給出他的第51至第100,第101至第150……題的解答。然后是學(xué)生乙的答卷記錄。
④學(xué)生人數(shù)不超過200,試題數(shù)不超過999。
⑤程序的輸出有4個(gè)報(bào)告:
a)按學(xué)號排列的成績單,列出每個(gè)學(xué)生的成績、名次。
b)按學(xué)生成績排序的成績單。
c)平均分?jǐn)?shù)及標(biāo)準(zhǔn)偏差的報(bào)告。
d)試題分析報(bào)告。按試題號排序,列出各題學(xué)生答對的百分比。
解答:分別考慮輸入條件和輸出條件,以及邊界條件。給出下表所示的輸入條件及相應(yīng)的測試用例。
輸出條件及相應(yīng)的測試用例表。
2.三角形問題的邊界值分析測試用例
在三角形問題描述中,除了要求邊長是整數(shù)外,沒有給出其它的限制條件。在此,我們將三角形每邊邊長的取范圍值設(shè)值為[1, 100] 。
3.NextDate函數(shù)的邊界值分析測試用例
在NextDate函數(shù)中,隱含規(guī)定了變量mouth和變量day的取值范圍為1≤mouth≤12和1≤day≤31,并設(shè)定變量year的取值范圍為1912≤year≤2050 。
錯(cuò)誤推測方法
一. 方法簡介
因果圖方法
一. 方法簡介
1.定義:是一種利用圖解法分析輸入的各種組合情況,從而設(shè)計(jì)測試用例的方法,它適合于檢查程序輸入條件的各種組合情況。
2.因果圖法產(chǎn)生的背景:
等價(jià)類劃分法和邊界值分析方法都是著重考慮輸入條件,但沒有考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系。這樣雖然各種輸入條件可能出錯(cuò)的情況已經(jīng)測試到了,但多個(gè)輸入條件組合起來可能出錯(cuò)的情況卻被忽視了。
如果在測試時(shí)必須考慮輸入條件的各種組合,則可能的組合數(shù)目將是天文數(shù)字,因此必須考慮采用一種適合于描述多種條件的組合、相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來進(jìn)行測試用例的設(shè)計(jì),這就需要利用因果圖(邏輯模型)。
3.因果圖介紹
1) 4種符號分別表示了規(guī)格說明中向4種因果關(guān)系。
2) 因果圖中使用了簡單的邏輯符號,以直線聯(lián)接左右結(jié)點(diǎn)。左結(jié)點(diǎn)表示輸入狀態(tài)(或稱原因),右結(jié)點(diǎn)表示輸出狀態(tài)(或稱結(jié)果)。
3) Ci表示原因,通常置于圖的左部;ei表示結(jié)果,通常在圖的右部。Ci和ei均可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。
A.輸入條件的約束有以下4類:
① E約束(異):a和b中至多有一個(gè)可能為1,即a和b不能同時(shí)為1。
② I約束(或):a、b和c中至少有一個(gè)必須是1,即 a、b 和c不能同時(shí)為0。
③ O約束(唯一);a和b必須有一個(gè),且僅有1個(gè)為1。
④R約束(要求):a是1時(shí),b必須是1,即不可能a是1時(shí)b是0。
B.輸出條件約束類型
輸出條件的約束只有M約束(強(qiáng)制):若結(jié)果a是1,則結(jié)果b強(qiáng)制為0。
3)根據(jù)因果圖建立判定表。
表中8種情況的左面兩列情況中,原因①和原因②同時(shí)為1,這是不可能出現(xiàn)的,故應(yīng)排除這兩種情況。表的最下一欄給出了6種情況的測試用例,這是我們所需要的數(shù)據(jù)。
2.有一個(gè)處理單價(jià)為5角錢的飲料的自動(dòng)售貨機(jī)軟件測試用例的設(shè)計(jì)。其規(guī)格說明如下:若投入5角錢或1元錢的硬幣,押下〖橙汁〗或〖啤酒〗的按鈕,則相應(yīng)的飲料就送出來。若售貨機(jī)沒有零錢找,則一個(gè)顯示〖零錢找完〗的紅燈亮,這時(shí)在投入1元硬幣并押下按鈕后,飲料不送出來而且1元硬幣也退出來;若有零錢找,則顯示〖零錢找完〗的紅燈滅,在送出飲料的同時(shí)退還5角硬幣。
1) 分析這一段說明,列出原因和結(jié)果
原因:
1.售貨機(jī)有零錢找
2.投入1元硬幣
3.投入5角硬幣
4.押下橙汁按鈕
5.押下啤酒按鈕
結(jié)果:
21.售貨機(jī)〖零錢找完〗燈亮
22.退還1元硬幣
23.退還5角硬幣
24.送出橙汁飲料
25.送出啤酒飲料
2)畫出因果圖,如圖所示。所有原因結(jié)點(diǎn)列在左邊,所有結(jié)果結(jié)點(diǎn)列在右邊。建立中間結(jié)點(diǎn),表示處理的中間狀態(tài)。中間結(jié)點(diǎn):
3)轉(zhuǎn)換成判定表:
4) 在判定表中,陰影部分表示因違反約束條件的不可能出現(xiàn)的情況,刪去。第16列與第32列因什么動(dòng)作也沒做,也刪去。最后可根據(jù)剩下的16列作為確定測試用例的依據(jù)。
判定表驅(qū)動(dòng)分析方法
一. 方法簡介
1.定義:判定表是分析和表達(dá)多邏輯條件下執(zhí)行不同操作的情況的工具。
2.判定表的優(yōu)點(diǎn)
能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。因此,利用判定表能夠設(shè)計(jì)出完整的測試用例集合。
在一些數(shù)據(jù)處理問題當(dāng)中,某些操作的實(shí)施依賴于多個(gè)邏輯條件的組合,即:針對不同邏輯條件的組合值,分別執(zhí)行不同的操作。判定表很適合于處理這類問題。
3.“閱讀指南”判定表
1)條件樁(Condition Stub):列出了問題得所有條件。通常認(rèn)為列出的條件的次序無關(guān)緊要。
2)動(dòng)作樁(Action Stub):列出了問題規(guī)定可能采取的操作。這些操作的排列順序沒有約束。
3)條件項(xiàng)(Condition Entry):列出針對它左列條件的取值。在所有可能情況下的真假值。
4)動(dòng)作項(xiàng)(Action Entry):列出在條件項(xiàng)的各種取值情況下應(yīng)該采取的動(dòng)作。
5.規(guī)則及規(guī)則合并
1)規(guī)則:任何一個(gè)條件組合的特定取值及其相應(yīng)要執(zhí)行的操作稱為規(guī)則。在判定表中貫穿條件項(xiàng)和動(dòng)作項(xiàng)的一列就是一條規(guī)則。顯然,判定表中列出多少組條件取值,也就有多少條規(guī)則,既條件項(xiàng)和動(dòng)作項(xiàng)有多少列。
2)化簡:就是規(guī)則合并有兩條或多條規(guī)則具有相同的動(dòng)作,并且其條件項(xiàng)之間存在著極為相似的關(guān)系。
6.規(guī)則及規(guī)則合并舉例
1)如下圖左端,兩規(guī)則動(dòng)作項(xiàng)一樣,條件項(xiàng)類似,在1、2條件項(xiàng)分別取Y、N時(shí),無論條件3取何值,都執(zhí)行同一操作。即要執(zhí)行的動(dòng)作與條件3無關(guān)。于是可合并。“-”表示與取值無關(guān)。
2)與上類似,下圖中,無關(guān)條件項(xiàng)“-”可包含其他條件項(xiàng)取值,具有相同動(dòng)作的規(guī)則可合并。
3)化簡后的讀書指南判定表
1 2 3 4
問
題 你覺得疲倦嗎? - - Y N
你對內(nèi)容感興趣嗎? Y Y N N
書中內(nèi)容使你胡涂嗎? Y N - -
建
議 請回到本章開頭重讀 x
繼續(xù)讀下去 X
跳到下一章去讀 x
停止閱讀,請休息 x
7.判定表的建立步驟:(根據(jù)軟件規(guī)格說明)
1)確定規(guī)則的個(gè)數(shù).假如有n個(gè)條件。每個(gè)條件有兩個(gè)取值(0,1),故有2n種規(guī)則。
2)列出所有的條件樁和動(dòng)作樁。
3)填入條件項(xiàng)。
4)填入動(dòng)作項(xiàng)。等到初始判定表。
5)簡化.合并相似規(guī)則(相同動(dòng)作)。
二. 實(shí)戰(zhàn)演習(xí)
1.問題要求:”……對功率大于50馬力的機(jī)器、維修記錄不全或已運(yùn)行10年以上的機(jī)器,應(yīng)給予優(yōu)先的維修處理……” 。這里假定,“維修記錄不全”和“優(yōu)先維修處理”均已在別處有更嚴(yán)格的定義 。請建立判定表。
解答:
①確定規(guī)則的個(gè)數(shù):這里有3個(gè)條件,每個(gè)條件有兩個(gè)取值,故應(yīng)有222=8種規(guī)則。
②列出所有的條件茬和動(dòng)作樁:
③填入條件項(xiàng)。可從最后1行條件項(xiàng)開始,逐行向上填滿。如第三行是: Y N Y N Y N Y N,第二行是: Y Y N N Y Y N N等等。
④填入動(dòng)作樁和動(dòng)作頂。這樣便得到形如圖的初始判定表。
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
運(yùn)行超過10年嗎? Y N Y N Y N Y N
動(dòng)
作 進(jì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 - -
運(yùn)行超過10年嗎? - Y N Y N
動(dòng)
作 進(jìn)行優(yōu)先處理 x x X
作其他處理 x x
2.NextData函數(shù)的精簡決策表
M1={月份, 每月有30天}
M2={月份, 每月有31天}
M3={月份, 2月} 有29=512條規(guī)則
D1={日期,1~28} 12月末31日和其它31
D2={日期,29} 日月份的31日處理不同
D3={日期,30} 平年2月28日處理不同
D4={日期,31} 于2月27日
Y1 ={年:年是閏年}
Y2 ={年:年不是閏年}
改進(jìn)為
M1={月份: 每月有30天}
M2={月份: 每月有31天, 12月除外}
M4={月份:12月}
M3={月份: 2月}
D1={日期:1<=日期<=27}
D2={日期:28}
D3={日期:29}
D4={日期:30}
D5={日期:31}
Y1 ={年:年是閏年}
Y2 ={年:年不是閏年}
輸入變量間存在大量邏輯關(guān)系的NextData決策表
這里,判定表只給出了16種規(guī)則中的8種。事實(shí)上,除這8條以外的一些規(guī)則是指當(dāng)不能滿足指定的條件,執(zhí)行3種操作時(shí),要執(zhí)行1個(gè)默許的操作。在沒必要時(shí),判定表通常可略去這些規(guī)則。但如果用判定表來設(shè)計(jì)測試用例,就必須列出這些默許規(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)點(diǎn)和缺點(diǎn)
I. 優(yōu)點(diǎn):它能把復(fù)雜的問題按各種可能的情況一一列舉出來,簡明而易于理解,也可避免遺漏。
II. 缺點(diǎn):不能表達(dá)重復(fù)執(zhí)行的動(dòng)作,例如循環(huán)結(jié)構(gòu)。
3)B. Beizer 指出了適合使用判定表設(shè)計(jì)測試用例的條件:
①規(guī)格說明以判定表形式給出,或很容易轉(zhuǎn)換成判定表。
②條件的排列順序不會(huì)也不影響執(zhí)行哪些操作。
③規(guī)則的排列順序不會(huì)也不影響執(zhí)行哪些操作。
④每當(dāng)某一規(guī)則的條件已經(jīng)滿足,并確定要執(zhí)行的操作后,不必檢驗(yàn)別的規(guī)則。
⑤如果某一規(guī)則得到滿足要執(zhí)行多個(gè)操作,這些操作的執(zhí)行順序無關(guān)緊要。
B. Beizer提出這5個(gè)必要條件的目的是為了使操作的執(zhí)行完全依賴于條件的組合。其實(shí)對于某些不滿足這幾條的判定表,同樣可以借以設(shè)計(jì)測試用例,只不過尚需增加其它的測試用例罷了。
正交實(shí)驗(yàn)設(shè)計(jì)方法
一.方法簡介
利用因果圖來設(shè)計(jì)測試用例時(shí), 作為輸入條件的原因與輸出結(jié)果之間的因果關(guān)系,有時(shí)很難從軟件需求規(guī)格說明中得到。往往因果關(guān)系非常龐大,以至于據(jù)此因果圖而得到的測試用例數(shù)目多的驚人,給軟件測試帶來沉重的負(fù)擔(dān),為了有效地,合理地減少測試的工時(shí)與費(fèi)用,可利用正交實(shí)驗(yàn)設(shè)計(jì)方法進(jìn)行測試用例的設(shè)計(jì)。
正交實(shí)驗(yàn)設(shè)計(jì)方法:依據(jù)Galois理論,從大量的(實(shí)驗(yàn))數(shù)據(jù)(測試?yán)┲刑暨x適量的,有代表性的點(diǎn)(例),從而合理地安排實(shí)驗(yàn)(測試)的一種科學(xué)實(shí)驗(yàn)設(shè)計(jì)方法.類似的方法有:聚類分析方法,因子方法方法等.
利用正交實(shí)驗(yàn)設(shè)計(jì)測試用例的步驟:
1.提取功能說明,構(gòu)造因子--狀態(tài)表
把影響實(shí)驗(yàn)指標(biāo)的條件稱為因子.而影響實(shí)驗(yàn)因子的條件叫因子的狀態(tài).利用正交實(shí)驗(yàn)設(shè)計(jì)方法來設(shè)計(jì)測試用例時(shí),首先要根據(jù)被測試軟件的規(guī)格說明書找出影響其功能實(shí)現(xiàn)的操作對象和外部因素,把他們當(dāng)作因子,而把各個(gè)因子的取值當(dāng)作狀態(tài).對軟件需求規(guī)格說明中的功能要求進(jìn)行劃分,把整體的概要性的功能要求進(jìn)行層層分解與展開,分解成具體的有相對獨(dú)立性的基本的功能要求.這樣就可以把被測試軟件中所有的因子都確定下來,并為確定個(gè)因子的權(quán)值提供參考的依據(jù).確定因子與狀態(tài)是設(shè)計(jì)測試用例的關(guān)鍵.因此要求盡可能全面的正確的確定取值,以確保測試用例的設(shè)計(jì)作到完整與有效。
2.加權(quán)篩選,生成因素分析表
對因子與狀態(tài)的選擇可按其重要程度分別加權(quán).可根據(jù)各個(gè)因子及狀態(tài)的作用大小,出現(xiàn)頻率的大小以及測試的需要,確定權(quán)值的大小。
3.利用正交表構(gòu)造測試數(shù)據(jù)集
正交表的推導(dǎo)依據(jù)Galois理論(這里省略,需要時(shí)可查數(shù)理統(tǒng)計(jì)方面的教材)。
利用正交實(shí)驗(yàn)設(shè)計(jì)方法設(shè)計(jì)測試用例,比使用等價(jià)類劃分,邊界值分析,因果圖等方法有以下優(yōu)點(diǎn):節(jié)省測試工作工時(shí);可控制生成的測試用例數(shù)量;測試用例具有一定的覆蓋率。
二. 實(shí)戰(zhàn)演習(xí)
暫無
功能圖分析方法
一.方法簡介
一個(gè)程序的功能說明通常由動(dòng)態(tài)說明和靜態(tài)說明組成.動(dòng)態(tài)說明描述了輸入數(shù)據(jù)的次序或轉(zhuǎn)移的次序.靜態(tài)說明描述了輸入條件與輸出條件之間的對應(yīng)關(guān)系.對于較復(fù)雜的程序,由于存在大量的組合情況,因此,僅用靜態(tài)說明組成的規(guī)格說明對于測試來說往往是不夠的.必須用動(dòng)態(tài)說明來補(bǔ)充功能說明.功能圖方法是用功能圖FD形式化地表示程序的功能說明,并機(jī)械地生成功能圖的測試用例. 功能圖模型由狀態(tài)遷移圖和邏輯功能模型構(gòu)成.狀態(tài)遷移圖用于表示輸入數(shù)據(jù)序列以及相應(yīng)的輸出數(shù)據(jù).在狀態(tài)遷移圖中,由輸入數(shù)據(jù)和當(dāng)前狀態(tài)決定輸出數(shù)據(jù)和后續(xù)狀態(tài).邏輯功能模型用于表示在狀態(tài)中輸入條件和輸出條件之間的對應(yīng)關(guān)系.邏輯功能模型只適合于描述靜態(tài)說明,輸出數(shù)據(jù)僅由輸入數(shù)據(jù)決定.測試用例則是由測試中經(jīng)過的一系列狀態(tài)和在每個(gè)狀態(tài)中必須依靠輸入/輸出數(shù)據(jù)滿足的一對條件組成.功能圖方法其實(shí)是是一種黑盒白盒混合用例設(shè)計(jì)方法。
(功能圖方法中,要用到邏輯覆蓋和路徑測試的概念和方法,其屬白盒測試方法中 的內(nèi)容.邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的測試用例設(shè)計(jì)方法.該方法要求測試人員對程序的邏輯結(jié)構(gòu)有清楚的了解.由于覆蓋測試的目標(biāo)不同,邏輯覆蓋可分為:語句覆蓋,判定覆蓋,判定-條件覆蓋,條件組合覆蓋及路徑覆蓋.下面我們指的邏輯覆蓋和路徑是功能或系統(tǒng)水平上的,以區(qū)別與白盒測試中的程序內(nèi)部的.)
1.功能圖
功能圖由狀態(tài)遷移圖和布爾函數(shù)組成.狀態(tài)遷移圖用狀態(tài)和遷移來描述.一個(gè)狀態(tài)指出數(shù)據(jù)輸入的位置(或時(shí)間),而遷移則指明狀態(tài)的改變.同時(shí)要依靠判定表或因果圖表示的邏輯功能.例,一個(gè)簡化的自動(dòng)出納機(jī)ATM的功能圖。
2.測試用例生成方法
從功能圖生成測試用例,得到的測試用例數(shù)是可接受的. 問題的關(guān)鍵的是如何從狀態(tài)遷移圖中選取測試用例. 若用節(jié)點(diǎn)代替狀態(tài),用弧線代替遷移,則狀態(tài)遷移圖就可轉(zhuǎn)化成一個(gè)程序的控制流程圖形式.問題就轉(zhuǎn)化為程序的路徑測試問題(如白盒測試)問題了.
3.測試用例生成規(guī)則
為了把狀態(tài)遷移(測試路徑)的測試用例與邏輯模型(局部測試用例)的測試用例組合起來,從功能圖生成實(shí)用的測試用例,須定義下面的規(guī)則.在一個(gè)結(jié)構(gòu)化的狀態(tài)遷移(SST)中,定義三種形式的循環(huán):順序,選擇和重復(fù).但分辨一個(gè)狀態(tài)遷移中的所有循環(huán)是有困難的.(其表示圖形省略)。
4.從功能圖生成測試用例的過程
1)生成局部測試用例:在每個(gè)狀態(tài)中,從因果圖生成局部測試用例.局部測試用例由原因值(輸入數(shù)據(jù))組合與對應(yīng)的結(jié)果值(輸出數(shù)據(jù)或狀態(tài))構(gòu)成。
2)測試路徑生成:利用上面的規(guī)則(三種)生成從初始狀態(tài)到最后狀態(tài)的測試路徑。
3)測試用例合成:合成測試路徑與功能圖中每個(gè)狀態(tài)中的局部測試用例.結(jié)果是初始狀態(tài)到最后狀態(tài)的一個(gè)狀態(tài)序列,以及每個(gè)狀態(tài)中輸入數(shù)據(jù)與對應(yīng)輸出數(shù)據(jù)的組合。
5.測試用例的合成算法:采用條件構(gòu)造樹.
二.實(shí)戰(zhàn)演習(xí)
暫無
場景設(shè)計(jì)方發(fā)
一.方法簡介
現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時(shí)的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。這種在軟件設(shè)計(jì)方面的思想也可以引入到軟件測試中,可以比較生動(dòng)地描繪出事件觸發(fā)時(shí)的情景,有利于測試設(shè)計(jì)者設(shè)計(jì)測試用例,同時(shí)使測試用例更容易理解和執(zhí)行。
基本流和備選流:如下圖所示,圖中經(jīng)過用例的每條路徑都用基本流和備選流來表示,直黑線表示基本流,是經(jīng)過用例的最簡單的路徑。備選流用不同的色彩表示,一個(gè)備選流可能從基本流開始,在某個(gè)特定條件下執(zhí)行,然后重新加入基本流中(如備選流1和3);也可能起源于另一個(gè)備選流(如備選流2),或者終止用例而不再重新加入到某個(gè)流(如備選流2和4)。
二.實(shí)戰(zhàn)演習(xí)
2.場景設(shè)計(jì):下表所示是生成的場景。
表3-8 場景設(shè)計(jì)
場景1——成功提款 基本流
場景2——ATM內(nèi)沒有現(xiàn)金 基本流 備選流2
場景3——ATM內(nèi)現(xiàn)金不足 基本流 備選流3
場景4——PIN有誤(還有輸入機(jī)會(huì)) 基本流 備選流4
場景5——PIN有誤(不再有輸入機(jī)會(huì)) 基本流 備選流4
場景6——賬戶不存在/賬戶類型有誤 基本流 備選流5
場景7——賬戶余額不足 基本流 備選流6
注:為方便起見,備選流3和6(場景3和7)內(nèi)的循環(huán)以及循環(huán)組合未納入上表。
3.用例設(shè)計(jì)
對于這7個(gè)場景中的每一個(gè)場景都需要確定測試用例。可以采用矩陣或決策表來確定和管理測試用例。下面顯示了一種通用格式,其中各行代表各個(gè)測試用例,而各列則代表測試用例的信息。本示例中,對于每個(gè)測試用例,存在一個(gè)測試用例ID、條件(或說明)、測試用例中涉及的所有數(shù)據(jù)元素(作為輸入或已經(jīng)存在于數(shù)據(jù)庫中)以及預(yù)期結(jié)果。
表3-9 測試用例表
TC(測試用例)ID號 場景/條件 PIN 賬號 輸入(或選擇)的金額 賬面
金額 ATM內(nèi)的金額 預(yù)期結(jié)果
CW1 場景1:成功提款 V V V V V 成功提款
CW2 場景2:ATM內(nèi)沒有現(xiàn)金 V V V V I 提款選項(xiàng)不可用,用例結(jié)束
CW3 場景3:ATM內(nèi)現(xiàn)金不足 V V V V I 警告消息,返回基本流步驟6,輸入金額
CW4 場景4:PIN有誤(還有不止一次輸入機(jī)會(huì)) I V n/a V V 警告消息,返回基本流步驟 4,輸入 PIN
CW5 場景4:PIN有誤(還有一次輸入機(jī)會(huì)) I
V n/a V V 警告消息,返回基本流步驟 4,輸入 PIN
CW6 場景4:PIN有誤(不再有輸入機(jī)會(huì)) I V n/a V V 警告消息,卡予保留,用例結(jié)束
4.數(shù)據(jù)設(shè)計(jì)
一旦確定了所有的測試用例,則應(yīng)對這些用例進(jìn)行復(fù)審和驗(yàn)證以確保其準(zhǔn)確且適度,并取消多余或等效的測試用例。
測試用例一經(jīng)認(rèn)可,就可以確定實(shí)際數(shù)據(jù)值(在測試用例實(shí)施矩陣中)并且設(shè)定測試數(shù)據(jù),如表3-10所示。
表3-10 測試用例表
TC(測試用例)ID號 場景/條件 PIN 賬號 輸入(或選擇)的金額
(元) 賬面
金額(元) ATM內(nèi)的金額(元) 預(yù)期結(jié)果
CW1 場景1:成功提款 4987 809-498 50.00 500.00 2 000 成功提款。賬戶余額被更新為450.00
CW2 場景2:ATM內(nèi)沒有現(xiàn)金 4987 809-498 100.00 500.00 0.00 提款選項(xiàng)不可用,用例結(jié)束
CW3 場景3:ATM內(nèi)現(xiàn)金不足 4987 809-498 100.00 500.00 70.00 警告消息,返回基本流步驟6,輸入金額
CW4 場景4:PIN有誤(還有不止一次輸入機(jī)會(huì)) 4978 809-498 n/a 500.00 2 000 警告消息,返回基本流步驟4,輸入PIN
CW5 場景4:PIN有誤(還有一次輸入機(jī)會(huì)) 4978 809-498 n/a 500.00 2 000 警告消息,返回基本流步驟4,輸入PIN
CW6 場景4:PIN有誤(不再有輸入機(jī)會(huì)) 4978 809-498 n/a 500.00 2 000 警告消息,卡予保留,用例結(jié)束
測試用例設(shè)計(jì)綜合策略
網(wǎng)頁題目:史上最全的測試用例設(shè)計(jì)方法總結(jié)-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://m.newbst.com/article18/jgdgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、響應(yīng)式網(wǎng)站、企業(yè)建站、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容