(全)
一.方法簡介
1.定義
是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例宏浩。該方法是一種重要的,常用的黑盒測試用例設(shè)計方法。
2.劃分等價類:
等價類是指某個輸入域的子集合。在該子集合中,各個輸入數(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)成的集合。對于具體的問題纳鼎,無效等價類至少應(yīng)有一個俺夕,也可能有多個。
設(shè)計測試用例時,要同時考慮這兩種等價類贱鄙。因為軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗劝贸,這樣的測試才能確保軟件具有更高的可靠性。
3.劃分等價類的標準:
1)完備測試逗宁、避免冗余;
2)劃分等價類重要的是:集合的劃分映九,劃分為互不相交的一組子集,而子集的并是整個集合;
3)并是整個集合:完備性;
4)子集互不相交:保證一種形式的無冗余性;
5)同一類中標識(選擇)一個測試用例瞎颗,同一等價類中件甥,往往處理相同捌议,相同處理映射到"相同的執(zhí)行路徑"。
4.劃分等價類的方法
1)在輸入條件規(guī)定了取值范圍或值的個數(shù)的情況下,則可以確立一個有效等價類和兩個無效等價類引有。如:輸入值是學生成績瓣颅,范圍是0~100;
2)在輸入條件規(guī)定了輸入值的集合或者規(guī)定了"必須如何"的條件的情況下,可確立一個有效等價類和一個無效等價類譬正;
3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類宫补。
4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個),并且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。
例:輸入條件說明學歷可為:屧遥科粉怕、本科、碩士抒巢、博士四種之一贫贝,則分別取這四種這四個值作為四個有效等價類,另外把四種學歷之外的任何學歷作為無效等價類蛉谜。
5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)稚晚;
6)在確知已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價類進一步的劃分為更小的等價類。
5.設(shè)計測試用例
在確立了等價類后,可建立等價類表,列出所有劃分出的等價類輸入條件:有效等價類悦陋、無效等價類蜈彼,然后從劃分出的等價類中按以下三個原則設(shè)計測試用例:
1)為每一個等價類規(guī)定一個唯一的編號;
2)設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價類,重復(fù)這一步俺驶,直到所有的有效等價類都被覆蓋為止幸逆;
3)設(shè)計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復(fù)這一步,直到所有的無效等價類都被覆蓋為止暮现。
二.實戰(zhàn)演習
1.某程序規(guī)定:"輸入三個整數(shù) a 还绘、 b 、 c 分別作為三邊的邊長構(gòu)成三角形栖袋。通過程序判定所構(gòu)成的三角形的類型拍顷,當此三角形為一般三角形、等腰三角形及等邊三角形時塘幅,分別作計算 … "昔案。用等價類劃分方法為該程序進行測試用例設(shè)計。(三角形問題的復(fù)雜之處在于輸入與輸出之間的關(guān)系比較復(fù)雜电媳。)
分析題目中給出和隱含的對輸入條件的要求:?
(1)整數(shù)??? (2)三個數(shù)??? (3)非零數(shù)?? (4)正數(shù)?
(5)兩邊之和大于第三邊???? (6)等腰???? (7)等邊?
如果 a 踏揣、 b 、 c 滿足條件( 1 ) ~ ( 4 )匾乓,則輸出下列四種情況之一:
1)如果不滿足條件(5)捞稿,則程序輸出為 " 非三角形 " 。
2)如果三條邊相等即滿足條件(7),則程序輸出為 " 等邊三角形 " 娱局。
3)如果只有兩條邊相等彰亥、即滿足條件(6),則程序輸出為 " 等腰三角形 " 衰齐。
4)如果三條邊都不相等任斋,則程序輸出為 " 一般三角形 " 。?
列出等價類表并編號
覆蓋有效等價類的測試用例:
a?????b?????c?????????????覆蓋等價類號碼
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)
覆蓋無效等價類的測試用例:
2.設(shè)有一個檔案管理系統(tǒng),要求用戶輸入以年月表示的日期芒帕。假設(shè)日期限定在1990年1月~2049年12月歉嗓,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年背蟆,后2位表示月〖郑現(xiàn)用等價類劃分法設(shè)計測試用例,來測試程序的"日期檢查功能"带膀。
1)劃分等價類并編號,下表等價類劃分的結(jié)果
輸入等價類有效等價類無效等價類
日期的類型及長度①6位數(shù)字字符②有非數(shù)字字符
③少于6位數(shù)字字符
④多于6位數(shù)字字符
年份范圍⑤在1990~2049之間⑥小于1990
⑦大于2049
月份范圍⑧在01~12之間⑨等于00
⑩大于12
2)設(shè)計測試用例志珍,以便覆蓋所有的有效等價類在表中列出了3個有效等價類,編號分別為①垛叨、⑤伦糯、⑧,設(shè)計的測試用例如下:
測試數(shù)據(jù)??? 期望結(jié)果????? 覆蓋的有效等價類
200211????? 輸入有效?????①嗽元、⑤敛纲、⑧
3)為每一個無效等價類設(shè)計一個測試用例,設(shè)計結(jié)果如下:
測試數(shù)據(jù)?? 期望結(jié)果???? 覆蓋的無效等價類
95June???? 無效輸入?????????②
20036????? 無效輸入??????????③
2001006???無效輸入?????????④
198912???? 無效輸入?????????⑥
200401???? 無效輸入?????????⑦
200100???? 無效輸入?????????⑨
200113???? 無效輸入?????????⑩
3.NextDate 函數(shù)包含三個變量: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)有效等價類為:
M1={月份:1≤月份≤12}
D1={日期:1≤日期≤31}
Y1={年:1812≤年≤2012}
2)若條件 ①~ ③中任何一個條件失效,則NextDate 函數(shù)都會產(chǎn)生一個輸出稚补,指明相應(yīng)的變量超出取值范圍童叠,比如 "month 的值不在 1-12 范圍當中 " 。顯然還存在著大量的 year 、 month 厦坛、 day 的無效組合五垮, NextDate 函數(shù)將這些組合作統(tǒng)一的輸出: " 無效輸入日期 " 。其無效等價類為:M2={月份:月份<1}
M3={月份:月份>12}
D2={日期:日期<1}
D3={日期:日期>31}
Y2={年:年<1812}
Y3={年:年>2012}
弱一般等價類測試用例
月份???日期??????年??????????????預(yù)期輸出
6??????15???????1912?????????? 1912年6月16日
強一般等價類測試用例同弱一般等價類測試用例
注:弱--有單缺陷假設(shè)杜秸;健壯--考慮了無效值?
(一)弱健壯等價類測試
用例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中
(二)強健壯等價類測試
用例ID??月份??? 日期?????年?????????預(yù)期輸出
SR1?????? -1?????15?????? 1912?????月份不在1~12中
SR2???????6????? -1???????1912????? 日期不在1~31中
SR3???????6????? 15??????1811????? 年份不在1812~2012中
SR4?????? -1?????-1???????1912????? 兩個無效一個有效
SR5???????6????? -1???????1811????? 兩個無效一個有效
SR6????? ?-1?????15?????? 1811????? 兩個無效一個有效
SR7?????? -1?????-1???????1811????? 三個無效
4.傭金問題等價類測試用例放仗,它是根據(jù)傭金函數(shù)的輸出值域定義等價類,來改進測試用例集合撬碟。
輸出銷售額≤1000元???? 傭金10%
1000<銷售額≤1800????傭金=100+(銷售額-1000)*15%
銷售額>1800?????????????傭金=220+(銷售額-1800)*20%
測試用例????????槍機(45)???槍托(30)?????槍管(25)?????????銷售額???? 傭金
1??????????????5?????????? ?5??????????????5???????????????? 500?????? ?50
2?????????????15??????????15?????????????15????????????????1500?????? 175
3?????????????25??????????25?????????????25????????????????2500?????? 360
根據(jù)輸出域選擇輸入值诞挨,使落在輸出域等價類內(nèi),可以結(jié)合弱健壯測試用例結(jié)合呢蛤。
一.方法簡介
1.定義:邊界值分析法就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法惶傻。通常邊界值分析法是作為對等價類劃分法的補充,這種情況下其障,其測試用例來自等價類的邊界银室。
2.與等價劃分的區(qū)別
1)邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件励翼。
2)邊界值分析不僅考慮輸入條件蜈敢,還要考慮輸出空間產(chǎn)生的測試情況。
3.邊界值分析方法的考慮:
長期的測試工作經(jīng)驗告訴我們汽抚,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上抓狭,而不是發(fā)生在輸入輸出范圍的內(nèi)部。因此針對各種邊界情況設(shè)計測試用例造烁,可以查出更多的錯誤否过。
使用邊界值分析方法設(shè)計測試用例,首先應(yīng)確定邊界情況膨蛮。通常輸入和輸出等價類的邊界叠纹,就是應(yīng)著重測試的邊界情況。應(yīng)當選取正好等于敞葛,剛剛大于或剛剛小于邊界的值作為測試數(shù)據(jù)誉察,而不是選取等價類中的典型值或任意值作為測試數(shù)據(jù)。
4.常見的邊界值
1)對16-bit 的整數(shù)而言 32767 和 -32768 是邊界
2)屏幕上光標在最左上惹谐、最右下位置
3)報表的第一行和最后一行
4)數(shù)組元素的第一個和最后一個
5)循環(huán)的第 0 次持偏、第 1 次和倒數(shù)第2 次、最后一次
5.邊界值分析
1)邊界值分析使用與等價類劃分法相同的劃分氨肌,只是邊界值分析假定錯誤更多地存在于劃分的邊界上鸿秆,因此在等價類的邊界上以及兩側(cè)的情況設(shè)計測試用例。
例:測試計算平方根的函數(shù)
--輸入:實數(shù)
--輸出:實數(shù)
--規(guī)格說明:當輸入一個0或比0大的數(shù)的時候怎囚,返回其正平方根卿叽;當輸入一個小于0的數(shù)時桥胞,顯示錯誤信息"平方根非法-輸入值小于0"并返回0;庫函數(shù)Print-Line可以用來輸出錯誤信息考婴。
2)等價類劃分:
I.可以考慮作出如下劃分:
a贩虾、輸入 (i)<0 和 (ii)>=0
b、輸出 (a)>=0 和 (b) Error
II.測試用例有兩個:
a沥阱、輸入4缎罢,輸出2。對應(yīng)于 (ii) 和(a) 考杉。
b策精、輸入-10,輸出0和錯誤提示崇棠。對應(yīng)于 (i) 和(b) 咽袜。
3)邊界值分析:
劃分(ii)的邊界為0和最大正實數(shù);劃分(i)的邊界為最小負實數(shù)和0枕稀。由此得到以下測試用例:
a酬蹋、輸入{最小負實數(shù)}
b、輸入{絕對值很小的負數(shù)}
c抽莱、輸入0
d、輸入{絕對值很小的正數(shù)}
e骄恶、輸入{最大正實數(shù)}
4)通常情況下食铐,軟件測試所包含的邊界檢驗有幾種類型:數(shù)字、字符僧鲁、位置虐呻、重量、大小寞秃、速度斟叼、方位、尺寸春寿、空間等朗涩。
5)相應(yīng)地,以上類型的邊界值應(yīng)該在:最大/最小绑改、首位/末位谢床、上/下、最快/最慢厘线、最高/最低识腿、? 最短/最長、 空/滿等情況下造壮。
6)利用邊界值作為測試數(shù)據(jù)
項邊界值測試用例的設(shè)計思路
字符起始-1個字符/結(jié)束+1個字符假設(shè)一個文本輸入?yún)^(qū)域允許輸入1個到255個 字符渡讼,輸入1個和255個字符作為有效等價類;輸入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ù)情況下账胧,邊界值條件是基于應(yīng)用程序的功能設(shè)計而需要考慮的因素,可以從軟件的規(guī)格說明或常識中得到先紫,也是最終用戶可以很容易發(fā)現(xiàn)問題的治泥。然而,在測試用例設(shè)計過程中遮精,某些邊界值條件是不需要呈現(xiàn)給用戶的居夹,或者說用戶是很難注意到的,但同時確實屬于檢驗范疇內(nèi)的邊界條件本冲,稱為內(nèi)部邊界值條件或子邊界值條件准脂。
內(nèi)部邊界值條件主要有下面幾種:
a)數(shù)值的邊界值檢驗:計算機是基于二進制進行工作的,因此檬洞,軟件的任何數(shù)值運算都有一定的范圍限制狸膏。
項范圍或值
位(bit)0或者1
字節(jié)(byte)0——225
字(word)0~65535(單字)或 0~4294967295(雙字)
千(K)1024
兆(M)1048576
吉(G)1073741824
b)字符的邊界值檢驗:在計算機軟件中,字符也是很重要的表示元素添怔,其中ASCII和Unicode是常見的編碼方式湾戳。下表中列出了一些常用字符對應(yīng)的ASCII碼值。
字符ASCII碼值字符ASCII碼值
空 (null)0A65
空格 (space)32a97
斜杠 ( / )47Z90
048z122
冒號 ( : )58單引號 ( ‘ )96
@64??
c)其它邊界值檢驗
6.基于邊界值分析方法選擇測試用例的原則
1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù)广料。
例如砾脑,如果程序的規(guī)格說明中規(guī)定:"重量在10公斤至50公斤范圍內(nèi)的郵件,其郵費計算公式為……"艾杏。作為測試用例韧衣,我們應(yīng)取10及50,還應(yīng)取10.01,49.99,9.99及50.01等购桑。
2)如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù),最小個數(shù),比最小個數(shù)少一,比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù)汹族。
?比如,一個輸入文件應(yīng)包括1~255個記錄其兴,則測試用例可取1和255顶瞒,還應(yīng)取0及256等。
3)將規(guī)則1)和2)應(yīng)用于輸出條件元旬,即設(shè)計測試用例使輸出值達到邊界值及其左右的值榴徐。
例如守问,某程序的規(guī)格說明要求計算出"每月保險金扣除額為0至1165.25元",其測試用例可取0.00及1165.24坑资、還可取一0.01及1165.26等耗帕。
再如一程序?qū)儆谇閳髾z索系統(tǒng),要求每次"最少顯示1條袱贮、最多顯示4條情報摘要"仿便,這時我們應(yīng)考慮的測試用例包括1和4,還應(yīng)包括0和5等攒巍。?
4)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個元素和最后一個元素作為測試用例嗽仪。
5)如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。
6)
分析規(guī)格說明,找出其它可能的邊界條件柒莉。
二.實戰(zhàn)演習1.現(xiàn)有一個學生標準化考試批閱試卷,產(chǎn)生成績報告的程序闻坚。其規(guī)格說明如下:程序的輸入文件由一些有80個字符的記錄組成,如右圖所示,所有記錄分為3組:
①標題:這一組只有一個記錄兢孝,其內(nèi)容為輸出成績報告的名字窿凤。
②試卷各題標準答案記錄:每個記錄均在第80個字符處標以數(shù)字"2"。該組的第一個記錄的第1至第3個字符為題目編號(取值為1一999)跨蟹。第10至第59個字符給出第1至第50題的答案(每個合法字符表示一個答案)雳殊。該組的第2,第3……個記錄相應(yīng)為第51至第100窗轩,第101至第150相种,…題的答案。
③每個學生的答卷描述:該組中每個記錄的第80個字符均為數(shù)字"3"品姓。每個學生的答卷在若干個記錄中給出。如甲的首記錄第1至第9字符給出學生姓名及學號箫措,第10至第59字符列出的是甲所做的第1至第50題的答案腹备。若試題數(shù)超過50,則第2斤蔓,第3……紀錄分別給出他的第51至第100植酥,第101至第150……題的解答。然后是學生乙的答卷記錄弦牡。
?④學生人數(shù)不超過200友驮,試題數(shù)不超過999。?
⑤程序的輸出有4個報告:
a)按學號排列的成績單驾锰,列出每個學生的成績卸留、名次。
b)按學生成績排序的成績單椭豫。
c)平均分數(shù)及標準偏差的報告耻瑟。
d)試題分析報告旨指。按試題號排序,列出各題學生答對的百分比喳整。?
解答:分別考慮輸入條件和輸出條件谆构,以及邊界條件。給出下表所示的輸入條件及相應(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 妥衣。
一.???方法簡介
1.定義:是一種利用圖解法分析輸入的各種組合情況皂吮,從而設(shè)計測試用例的方法,它適合于檢查程序輸入條件的各種組合情況税手。
2.因果圖法產(chǎn)生的背景:
等價類劃分法和邊界值分析方法都是著重考慮輸入條件蜂筹,但沒有考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系芦倒。這樣雖然各種輸入條件可能出錯的情況已經(jīng)測試到了艺挪,但多個輸入條件組合起來可能出錯的情況卻被忽視了。
如果在測試時必須考慮輸入條件的各種組合兵扬,則可能的組合數(shù)目將是天文數(shù)字麻裳,因此必須考慮采用一種適合于描述多種條件的組合、相應(yīng)產(chǎn)生多個動作的形式來進行測試用例的設(shè)計器钟,這就需要利用因果圖(邏輯模型)津坑。
3.因果圖介紹
1)?4種符號分別表示了規(guī)格說明中向4種因果關(guān)系。
2)?因果圖中使用了簡單的邏輯符號傲霸,以直線聯(lián)接左右結(jié)點疆瑰。左結(jié)點表示輸入狀態(tài)(或稱原因),右結(jié)點表示輸出狀態(tài)(或稱結(jié)果)昙啄。
3)?Ci表示原因穆役,通常置于圖的左部;ei表示結(jié)果梳凛,通常在圖的右部耿币。Ci和ei均可取值0或1,0表示某狀態(tài)不出現(xiàn)韧拒,1表示某狀態(tài)出現(xiàn)掰读。
4. 因果圖概念
1)??? 關(guān)系
①恒等:若ci是1秘狞,則ei也是1;否則ei為0蹈集。
②非:若ci是1烁试,則ei是0;否則ei是1拢肆。
③或:若c1或c2或c3是1减响,則ei是1;否則ei為0郭怪≈荆“或”可有任意個輸入。
④與:若c1和c2都是1鄙才,則ei為1颂鸿;否則ei為0≡茆郑“與”也可有任意個輸入嘴纺。
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約束(強制):若結(jié)果a是1,則結(jié)果b強制為0宵溅。
5.?采用因果圖法設(shè)計測試用例的步驟:
1)分析軟件規(guī)格說明描述中, 那些是原因(即輸入條件或輸入條件的等價類),那些是結(jié)果(即輸出條件), 并給每個原因和結(jié)果賦予一個標識符凌简。
2)分析軟件規(guī)格說明描述中的語義,找出原因與結(jié)果之間, 原因與原因之間對應(yīng)的關(guān)系恃逻,根據(jù)這些關(guān)系,畫出因果圖雏搂。
3)由于語法或環(huán)境限制, 有些原因與原因之間,原因與結(jié)果之間的組合情況不可能出現(xiàn)藕施,為表明這些特殊情況, 在因果圖上用一些記號表明約束或限制條件。
4)把因果圖轉(zhuǎn)換為判定表凸郑。
5)把判定表的每一列拿出來作為依據(jù),設(shè)計測試用例裳食。
二.?實戰(zhàn)演習
1.?某軟件規(guī)格說明書包含這樣的要求:第一列字符必須是A或B,第二列字符必須是一個數(shù)字芙沥,在此情況下進行文件的修改诲祸,但如果第一列字符不正確,則給出信息L而昨;如果第二列字符不是數(shù)字救氯,則給出信息M。
解答:
1)?根據(jù)題意歌憨,原因和結(jié)果如下:
?? ????原因:
?????????1——第一列字符是A着憨;
?????????2——第一列字符是B;
?????????3——第二列字符是一數(shù)字务嫡。
?????? 結(jié)果:
?????????21——修改文件甲抖;
?????????22 ——給出信息L;
?????????23——給出信息M植袍。
2)?其對應(yīng)的因果圖如下:
11為中間節(jié)點惧眠;考慮到原因1和原因2不可能同時為1,因此在因果圖上施加E約束于个。
3)根據(jù)因果圖建立判定表氛魁。
?????? 表中8種情況的左面兩列情況中,原因①和原因②同時為1厅篓,這是不可能出現(xiàn)的秀存,故應(yīng)排除這兩種情況。表的最下一欄給出了6種情況的測試用例羽氮,這是我們所需要的數(shù)據(jù)或链。
2.有一個處理單價為5角錢的飲料的自動售貨機軟件測試用例的設(shè)計。其規(guī)格說明如下:若投入5角錢或1元錢的硬幣档押,押下〖橙汁〗或〖啤酒〗的按鈕澳盐,則相應(yīng)的飲料就送出來。若售貨機沒有零錢找令宿,則一個顯示〖零錢找完〗的紅燈亮叼耙,這時在投入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元硬幣且押下飲料按鈕
?????????????? 12. 押下〖橙汁〗或〖啤酒〗的按鈕
?????????????? 13. 應(yīng)當找5角零錢并且售貨機有零錢找
?????????????? 14. 錢已付清
3)轉(zhuǎn)換成判定表:
4)?在判定表中挑庶,陰影部分表示因違反約束條件的不可能出現(xiàn)的情況,刪去软能。第16列與第32列因什么動作也沒做迎捺,也刪去。最后可根據(jù)剩下的16列作為確定測試用例的依據(jù)查排。
一.??? 方法簡介
1.定義:判定表是分析和表達多邏輯條件下執(zhí)行不同操作的情況的工具凳枝。
2.判定表的優(yōu)點
能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏跋核。因此岖瑰,利用判定表能夠設(shè)計出完整的測試用例集合。
在一些數(shù)據(jù)處理問題當中砂代,某些操作的實施依賴于多個邏輯條件的組合蹋订,即:針對不同邏輯條件的組合值,分別執(zhí)行不同的操作刻伊。判定表很適合于處理這類問題露戒。
3.“閱讀指南”判定表
4.?判定表通常由四個部分組成如下圖所示。
1)條件樁(Condition Stub):列出了問題得所有條件捶箱。通常認為列出的條件的次序無關(guān)緊要智什。
2)動作樁(Action Stub):列出了問題規(guī)定可能采取的操作。這些操作的排列順序沒有約束丁屎。
3)條件項(Condition Entry):列出針對它左列條件的取值荠锭。在所有可能情況下的真假值。
4)動作項(Action Entry):列出在條件項的各種取值情況下應(yīng)該采取的動作晨川。
5.規(guī)則及規(guī)則合并
1)規(guī)則:任何一個條件組合的特定取值及其相應(yīng)要執(zhí)行的操作稱為規(guī)則证九。在判定表中貫穿條件項和動作項的一列就是一條規(guī)則。顯然,判定表中列出多少組條件取值,也就有多少條規(guī)則,既條件項和動作項有多少列共虑。
2)化簡:就是規(guī)則合并有兩條或多條規(guī)則具有相同的動作愧怜,并且其條件項之間存在著極為相似的關(guān)系。
6.規(guī)則及規(guī)則合并舉例
1)如下圖左端看蚜,兩規(guī)則動作項一樣叫搁,條件項類似赔桌,在1供炎、2條件項分別取Y渴逻、N時,無論條件3取何值音诫,都執(zhí)行同一操作惨奕。即要執(zhí)行的動作與條件3無關(guān)。于是可合并竭钝±孀玻“-”表示與取值無關(guān)竿滨。
2)與上類似屁奏,下圖中价匠,無關(guān)條件項“-”可包含其他條件項取值闽瓢,具有相同動作的規(guī)則可合并前痘。
3)化簡后的讀書指南判定表
?1234
問
題
你覺得疲倦嗎疙筹?--YN
你對內(nèi)容感興趣嗎隔盛?YYNN
書中內(nèi)容使你胡涂嗎呕臂?YN--
?
建
議
請回到本章開頭重讀x???
繼續(xù)讀下去?X??
跳到下一章去讀???x
停止閱讀旦签,請休息??x?
7.判定表的建立步驟:(根據(jù)軟件規(guī)格說明)
1)確定規(guī)則的個數(shù).假如有n個條件查坪。每個條件有兩個取值(0,1),故有2n種規(guī)則。
2)列出所有的條件樁和動作樁宁炫。
3)填入條件項偿曙。
4)填入動作項。等到初始判定表羔巢。
5)簡化.合并相似規(guī)則(相同動作)望忆。
二.?實戰(zhàn)演習
1.問題要求:”……對功率大于50馬力的機器、維修記錄不全或已運行10年以上的機器朵纷,應(yīng)給予優(yōu)先的維修處理……” 炭臭。這里假定,“維修記錄不全”和“優(yōu)先維修處理”均已在別處有更嚴格的定義 袍辞。請建立判定表鞋仍。
解答:
①確定規(guī)則的個數(shù):這里有3個條件,每個條件有兩個取值搅吁,故應(yīng)有2*2*2=8種規(guī)則威创。
②列出所有的條件茬和動作樁:
③填入條件項』雅常可從最后1行條件項開始肚豺,逐行向上填滿。如第三行是: Y N Y N Y N Y N界拦,第二行是: Y Y N N Y Y N N等等吸申。?
④填入動作樁和動作頂。這樣便得到形如圖的初始判定表。
?12345678
條
件
功率大于50馬力嗎截碴?YYYYNNNN
維修記錄不全嗎梳侨?YYNNYYNN
運行超過10年嗎?YNYNYNYN
動
作
進行優(yōu)先處理xxX?X?X?
作其他處理???X?x?x
初始判定表
⑤化簡日丹。合并相似規(guī)則后得到圖走哺。
?12345
條
件
功率大于50馬力嗎?YYYNN
維修記錄不全嗎哲虾?YNN--
運行超過10年嗎丙躏?-YNYN
動
作
進行優(yōu)先處理xx?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 ={年:年不是閏年}
改進為
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決策表
3.?用決策表測試法測試以下程序:該程序有三個輸入變量month拴签、day、year(month旗们、day和year均為整數(shù)值蚓哩,并且滿足:1≤month≤12和1≤day≤31),分別作為輸入日期的月份上渴、日岸梨、年份,通過程序可以輸出該輸入日期在日歷上隔一天的日期稠氮。
?例如曹阔,輸入為2004年11月29日,則該程序的輸出為2000年12月1日隔披。
1)分析各種輸入情況赃份,列出為輸入變量month、day奢米、year劃分的有效等價類抓韩。
2)分析程序規(guī)格說明,結(jié)合以上等價類劃分的情況給出問題規(guī)定的可能采取的操作(即列出所有的動作樁)鬓长。
3)根據(jù)(1)和(2)谒拴,畫出簡化后的決策表。
案例分析如下:
1)??????month變量的有效等價類:
?M1: {month=4,6,9,11}???????????
?M2: {month=1,3,5,7,8,10}
M3: {month=12}????????????????
?M4: {month=2}
2)day變量的有效等價類:
??? D1:{1≤day≤26}???????? D2: {day=27}???????? D3: {day=28}??????????????????? D4: {day=29}??????????????????? D5: {day=30}??????????????? D6: {day=31}
3)year變量的有效等價類:
Y1: {year是閏年}??????????????? Y2:? {year不是閏年}
4)考慮各種有效的輸入情況涉波,程序中可能采取的操作有以下六種:
a1: day+2?????????????????????? a2: day=2??????????????????? a3: day=1?
a4: month+1???????????????????? a5: month=1????????????????? a6: year+1?
4.?判定表在功能測試中的應(yīng)用
1)一些軟件的功能需求可用判定表表達得非常清楚英上,在檢驗程序的功能時判定表也就成為一個不錯的工具炭序。如果一個軟件的規(guī)格說明指出:
I.?當條件1和條件2滿足,并且條件3和條件4不滿足苍日,或者當條件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-NYY
條件2-YYN
條件3YNNN
條件4NNY-
默許操作xxxx
默許的規(guī)則
2)判定表的優(yōu)點和缺點
I.??優(yōu)點:它能把復(fù)雜的問題按各種可能的情況一一列舉出來涛癌,簡明而易于理解犯戏,也可避免遺漏。
II. 缺點:不能表達重復(fù)執(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è)計測試用例形耗,只不過尚需增加其它的測試用例罷了哥桥。
一.方法簡介
利用因果圖來設(shè)計測試用例時, 作為輸入條件的原因與輸出結(jié)果之間的因果關(guān)系,有時很難從軟件需求規(guī)格說明中得到。往往因果關(guān)系非常龐大,以至于據(jù)此因果圖而得到的測試用例數(shù)目多的驚人激涤,給軟件測試帶來沉重的負擔拟糕,為了有效地,合理地減少測試的工時與費用,可利用正交實驗設(shè)計方法進行測試用例的設(shè)計判呕。
正交實驗設(shè)計方法:依據(jù)Galois理論,從大量的(實驗)數(shù)據(jù)(測試例)中挑選適量的,有代表性的點(例),從而合理地安排實驗(測試)的一種科學實驗設(shè)計方法.類似的方法有:聚類分析方法,因子方法方法等.
利用正交實驗設(shè)計測試用例的步驟:
1.提取功能說明,構(gòu)造因子--狀態(tài)表
把影響實驗指標的條件稱為因子.而影響實驗因子的條件叫因子的狀態(tài).利用正交實驗設(shè)計方法來設(shè)計測試用例時,首先要根據(jù)被測試軟件的規(guī)格說明書找出影響其功能實現(xiàn)的操作對象和外部因素,把他們當作因子,而把各個因子的取值當作狀態(tài).對軟件需求規(guī)格說明中的功能要求進行劃分,把整體的概要性的功能要求進行層層分解與展開,分解成具體的有相對獨立性的基本的功能要求.這樣就可以把被測試軟件中所有的因子都確定下來,并為確定個因子的權(quán)值提供參考的依據(jù).確定因子與狀態(tài)是設(shè)計測試用例的關(guān)鍵.因此要求盡可能全面的正確的確定取值,以確保測試用例的設(shè)計作到完整與有效。
2.加權(quán)篩選,生成因素分析表
對因子與狀態(tài)的選擇可按其重要程度分別加權(quán).可根據(jù)各個因子及狀態(tài)的作用大小,出現(xiàn)頻率的大小以及測試的需要,確定權(quán)值的大小送滞。
3.利用正交表構(gòu)造測試數(shù)據(jù)集
正交表的推導依據(jù)Galois理論(這里省略,需要時可查數(shù)理統(tǒng)計方面的教材)侠草。
利用正交實驗設(shè)計方法設(shè)計測試用例,比使用等價類劃分,邊界值分析,因果圖等方法有以下優(yōu)點:節(jié)省測試工作工時;可控制生成的測試用例數(shù)量犁嗅;測試用例具有一定的覆蓋率边涕。
二.?實戰(zhàn)演習
??? 暫無
一.方法簡介
一個程序的功能說明通常由動態(tài)說明和靜態(tài)說明組成.動態(tài)說明描述了輸入數(shù)據(jù)的次序或轉(zhuǎn)移的次序.靜態(tài)說明描述了輸入條件與輸出條件之間的對應(yīng)關(guān)系.對于較復(fù)雜的程序,由于存在大量的組合情況,因此,僅用靜態(tài)說明組成的規(guī)格說明對于測試來說往往是不夠的.必須用動態(tài)說明來補充功能說明.功能圖方法是用功能圖FD形式化地表示程序的功能說明,并機械地生成功能圖的測試用例. 功能圖模型由狀態(tài)遷移圖和邏輯功能模型構(gòu)成.狀態(tài)遷移圖用于表示輸入數(shù)據(jù)序列以及相應(yīng)的輸出數(shù)據(jù).在狀態(tài)遷移圖中,由輸入數(shù)據(jù)和當前狀態(tài)決定輸出數(shù)據(jù)和后續(xù)狀態(tài).邏輯功能模型用于表示在狀態(tài)中輸入條件和輸出條件之間的對應(yīng)關(guān)系.邏輯功能模型只適合于描述靜態(tài)說明,輸出數(shù)據(jù)僅由輸入數(shù)據(jù)決定.測試用例則是由測試中經(jīng)過的一系列狀態(tài)和在每個狀態(tài)中必須依靠輸入/輸出數(shù)據(jù)滿足的一對條件組成.功能圖方法其實是是一種黑盒白盒混合用例設(shè)計方法。
(功能圖方法中,要用到邏輯覆蓋和路徑測試的概念和方法,其屬白盒測試方法中的內(nèi)容.邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的測試用例設(shè)計方法.該方法要求測試人員對程序的邏輯結(jié)構(gòu)有清楚的了解.由于覆蓋測試的目標不同,邏輯覆蓋可分為:語句覆蓋,判定覆蓋,判定-條件覆蓋,條件組合覆蓋及路徑覆蓋.下面我們指的邏輯覆蓋和路徑是功能或系統(tǒng)水平上的,以區(qū)別與白盒測試中的程序內(nèi)部的.)
1.功能圖
功能圖由狀態(tài)遷移圖和布爾函數(shù)組成.狀態(tài)遷移圖用狀態(tài)和遷移來描述.一個狀態(tài)指出數(shù)據(jù)輸入的位置(或時間),而遷移則指明狀態(tài)的改變.同時要依靠判定表或因果圖表示的邏輯功能.例,一個簡化的自動出納機ATM的功能圖褂微。
2.測試用例生成方法
從功能圖生成測試用例,得到的測試用例數(shù)是可接受的. 問題的關(guān)鍵的是如何從狀態(tài)遷移圖中選取測試用例.若用節(jié)點代替狀態(tài),用弧線代替遷移,則狀態(tài)遷移圖就可轉(zhuǎn)化成一個程序的控制流程圖形式.問題就轉(zhuǎn)化為程序的路徑測試問題(如白盒測試)問題了.
3.測試用例生成規(guī)則
為了把狀態(tài)遷移(測試路徑)的測試用例與邏輯模型(局部測試用例)的測試用例組合起來,從功能圖生成實用的測試用例,須定義下面的規(guī)則.在一個結(jié)構(gòu)化的狀態(tài)遷移(SST)中,定義三種形式的循環(huán):順序,選擇和重復(fù).但分辨一個狀態(tài)遷移中的所有循環(huán)是有困難的.(其表示圖形省略)功蜓。
4.從功能圖生成測試用例的過程
1)生成局部測試用例:在每個狀態(tài)中,從因果圖生成局部測試用例.局部測試用例由原因值(輸入數(shù)據(jù))組合與對應(yīng)的結(jié)果值(輸出數(shù)據(jù)或狀態(tài))構(gòu)成。
2)測試路徑生成:利用上面的規(guī)則(三種)生成從初始狀態(tài)到最后狀態(tài)的測試路徑宠蚂。
3)測試用例合成:合成測試路徑與功能圖中每個狀態(tài)中的局部測試用例.結(jié)果是初始狀態(tài)到最后狀態(tài)的一個狀態(tài)序列,以及每個狀態(tài)中輸入數(shù)據(jù)與對應(yīng)輸出數(shù)據(jù)的組合式撼。
5.測試用例的合成算法:采用條件構(gòu)造樹.
二.實戰(zhàn)演習
????? 暫無
一.方法簡介
現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時的情景便形成了場景求厕,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流著隆。這種在軟件設(shè)計方面的思想也可以引入到軟件測試中,可以比較生動地描繪出事件觸發(fā)時的情景呀癣,有利于測試設(shè)計者設(shè)計測試用例美浦,同時使測試用例更容易理解和執(zhí)行。
基本流和備選流:如下圖所示项栏,圖中經(jīng)過用例的每條路徑都用基本流和備選流來表示抵代,直黑線表示基本流,是經(jīng)過用例的最簡單的路徑忘嫉。備選流用不同的色彩表示荤牍,一個備選流可能從基本流開始,在某個特定條件下執(zhí)行庆冕,然后重新加入基本流中(如備選流1和3)康吵;也可能起源于另一個備選流(如備選流2),或者終止用例而不再重新加入到某個流(如備選流2和4)访递。
二.實戰(zhàn)演習
1. 例子描述
下圖所示是ATM例子的流程示意圖晦嵌。
2.場景設(shè)計:下表所示是生成的場景。
表3-8 場景設(shè)計
場景1——成功提款基本流?
場景2——ATM內(nèi)沒有現(xiàn)金基本流備選流2
場景3——ATM內(nèi)現(xiàn)金不足基本流備選流3
場景4——PIN有誤(還有輸入機會)基本流備選流4
場景5——PIN有誤(不再有輸入機會)基本流備選流4
場景6——賬戶不存在/賬戶類型有誤基本流備選流5
場景7——賬戶余額不足基本流備選流6
注:為方便起見拷姿,備選流3和6(場景3和7)內(nèi)的循環(huán)以及循環(huán)組合未納入上表惭载。
3.用例設(shè)計
對于這7個場景中的每一個場景都需要確定測試用例∠斐玻可以采用矩陣或決策表來確定和管理測試用例描滔。下面顯示了一種通用格式,其中各行代表各個測試用例踪古,而各列則代表測試用例的信息含长。本示例中券腔,對于每個測試用例,存在一個測試用例ID拘泞、條件(或說明)纷纫、測試用例中涉及的所有數(shù)據(jù)元素(作為輸入或已經(jīng)存在于數(shù)據(jù)庫中)以及預(yù)期結(jié)果。
表3-9 測試用例表
TC(測試用例)ID號場景/條件PIN賬號輸入(或選擇)的金額賬面
金額
ATM內(nèi)的金額預(yù)期結(jié)果
CW1場景1:成功提款VVVVV成功提款
CW2場景2:ATM內(nèi)沒有現(xiàn)金VVVVI提款選項不可用陪腌,用例結(jié)束
CW3場景3:ATM內(nèi)現(xiàn)金不足VVVVI警告消息辱魁,返回基本流步驟6,輸入金額
CW4場景4:PIN有誤(還有不止一次輸入機會)IVn/aVV警告消息诗鸭,返回基本流步驟 4染簇,輸入 PIN
CW5場景4:PIN有誤(還有一次輸入機會)I
Vn/aVV警告消息,返回基本流步驟 4只泼,輸入 PIN
CW6場景4:PIN有誤(不再有輸入機會)IVn/aVV警告消息,卡予保留卵洗,用例結(jié)束
4.數(shù)據(jù)設(shè)計
一旦確定了所有的測試用例请唱,則應(yīng)對這些用例進行復(fù)審和驗證以確保其準確且適度,并取消多余或等效的測試用例过蹂。
測試用例一經(jīng)認可十绑,就可以確定實際數(shù)據(jù)值(在測試用例實施矩陣中)并且設(shè)定測試數(shù)據(jù),如表3-10所示酷勺。
表3-10???? 測試用例表
TC(測試用例)ID號場景/條件PIN賬號輸入(或選擇)的金額
(元)
賬面
金額(元)
ATM內(nèi)的金額(元)預(yù)期結(jié)果
CW1場景1:成功提款4987809-49850.00500.002 000成功提款本橙。賬戶余額被更新為450.00
CW2場景2:ATM內(nèi)沒有現(xiàn)金4987809-498100.00500.000.00提款選項不可用,用例結(jié)束
CW3場景3:ATM內(nèi)現(xiàn)金不足4987809-498100.00500.0070.00警告消息脆诉,返回基本流步驟6甚亭,輸入金額
CW4場景4:PIN有誤(還有不止一次輸入機會)4978809-498n/a500.002 000警告消息,返回基本流步驟4击胜,輸入PIN
CW5場景4:PIN有誤(還有一次輸入機會)4978809-498n/a500.002 000警告消息亏狰,返回基本流步驟4,輸入PIN
CW6場景4:PIN有誤(不再有輸入機會)4978809-498n/a500.002 000警告消息偶摔,卡予保留暇唾,用例結(jié)束
一.??? 方法簡介
1.???????? 定義:基于經(jīng)驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設(shè)計測試用例的方法。
2.???????? 錯誤推測方法的基本思想:
列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)他們選擇測試用例辰斋。
1)??????? 例如, 輸入數(shù)據(jù)和輸出數(shù)據(jù)為0的情況策州;輸入表格為空格或輸入表格只有一行。 這些都是容易發(fā)生錯誤的情況宫仗」还遥可選擇這些情況下的例子作為測試用例。
2)??????? 例如藕夫,前面例子中成績報告的程序下硕,采用錯誤推測法還可補充設(shè)計一些測試用例:
I.?????????程序是否把空格作為回答
II.?????? 在回答記錄中混有標準答案記錄
III.???? 除了標題記錄外丁逝,還有一些的記錄最后一個字符即不是2也不是3
IV.???? 有兩個學生的學號相同
V.??????? 試題數(shù)是負數(shù)。
3)??? 再如梭姓,測試一個對線性表(比如數(shù)組)進行排序的程序霜幼,可推測列出以下幾項需要特別測試的情況:
I.?????????輸入的線性表為空表;
II.?????? 表中只含有一個元素誉尖;
III.???? 輸入表中所有元素已排好序罪既;
IV.???? 輸入表已按逆序排好;
V.??????? 輸入表中部分或全部元素相同铡恕。
二.??? 實戰(zhàn)演習
??? 暫無
1.?Myers提出了使用各種測試方法的綜合策略:
1)在任何情況下都必須使用邊界值分析方法琢感,經(jīng)驗表明用這種方法設(shè)計出測試用例發(fā)現(xiàn)程序錯誤的能力最強。?【文章來源:文斯測試技術(shù)研究中心http://blog.csdn.net/vincetest】
2)必要時用等價類劃分方法補充一些測試用例探熔。
3)用錯誤推測法再追加一些測試用例驹针。
4)對照程序邏輯,檢查已設(shè)計出的測試用例的邏輯覆蓋程度诀艰,如果沒有達到要求的覆蓋標準柬甥,應(yīng)當再補充足夠的測試用例。
5)如果程序的功能說明中含有輸入條件的組合情況其垄,則一開始就可選用因果圖法苛蒲。
2.測試用例的設(shè)計步驟【文章來源:文斯測試技術(shù)研究中心http://blog.csdn.net/vincetest】
1)構(gòu)造根據(jù)設(shè)計規(guī)格得出的基本功能測試用例;
2)邊界值測試用例绿满;
3)狀態(tài)轉(zhuǎn)換測試用例臂外;
4)錯誤猜測測試用例;
5)異常測試用例喇颁;【文章來源:文斯測試技術(shù)研究中心http://blog.csdn.net/vincetest】
6)性能測試用例漏健;
7)壓力測試用例。
3.優(yōu)化測試用例的方法
1)利用設(shè)計測試用例的8種方法不斷的對測試用例進行分解與合并橘霎;
2)采用遺傳算法理論進化測試用例漾肮;
3)在測試時利用發(fā)散思維構(gòu)造測試用例。