第05章 黑盒測試_第1頁
第05章 黑盒測試_第2頁
第05章 黑盒測試_第3頁
第05章 黑盒測試_第4頁
第05章 黑盒測試_第5頁
已閱讀5頁,還剩211頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章黑盒測試教學(xué)目標(biāo):了解黑盒測試的基本概念掌握等價類劃分法掌握邊界值法掌握因果圖法掌握決策表法掌握場景法黑盒測試能發(fā)現(xiàn)以下幾類錯誤●功能不對或遺漏?!窠缑驽e誤?!駭?shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯誤?!裥阅苠e誤?!癯跏蓟徒K止錯誤。

4.1黑盒測試的基本概念黑盒測試對程序的功能性測試要求●每個軟件特性必須被一個測試用例或一個被認(rèn)可的異常所覆蓋?!窭脭?shù)據(jù)類型和數(shù)據(jù)值的最小集測試?!窭靡幌盗姓鎸嵉臄?shù)據(jù)類型和數(shù)據(jù)值運行,測試超負(fù)荷及其他“最壞情況”的結(jié)果。●利用假想的數(shù)據(jù)類型和數(shù)據(jù)值運行,測試排斥不規(guī)則輸入的能力。●測試影響性能的關(guān)鍵模塊,如基本算法、精度、時間、容量等是否正常。4.1.1黑盒測試的優(yōu)缺點優(yōu)點缺點(1)有針對性地尋找問題,并且定位問題更準(zhǔn)確。(2)黑盒測試可以證明產(chǎn)品是否達到用戶要求的功能,符合用戶的工作要求。(3)能重復(fù)執(zhí)行相同的動作,測試工作中最枯燥的部分可交由機器完成。(1)需要充分了解產(chǎn)品用到的技術(shù),測試人員需要具有較多經(jīng)驗。(2)在測試過程中很多是手工測試操作。(3)測試人員要負(fù)責(zé)大量文檔、報表的編制和整理工作。4.1.2黑盒測試與白盒測試的比較2檢查測試的主要內(nèi)容3靜態(tài)測試方法4動態(tài)測試方法1已知產(chǎn)品的因素● 黑盒測試:已知產(chǎn)品的功能設(shè)計規(guī)格,可以通過測試證明每種實現(xiàn)的功能是否符合要求。● 白盒測試:已知產(chǎn)品的內(nèi)部工作結(jié)構(gòu),可以通過測試證明每種內(nèi)部操作是否符合設(shè)計規(guī)格要求,以及所有內(nèi)部成分是否經(jīng)過檢查。1已知產(chǎn)品的因素黑盒測試檢查的內(nèi)容如下:● 是否有不正確或遺漏的功能?● 在接口上,輸入是否能正確地接受?能否輸出正確的結(jié)果?● 是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息訪問錯誤?● 是否有初始化或終止性錯誤?白盒測試檢查的內(nèi)容如下:● 對程序模塊的所有獨立的執(zhí)行路徑至少測試一遍?!?對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測試一遍?!?在循環(huán)的邊界和運行的界限內(nèi)執(zhí)行循環(huán)體。2檢查測試的主要內(nèi)容● 靜態(tài)黑盒測試方法:文檔測試,特別是產(chǎn)品需求文檔、用戶手冊、幫助文件等的審查?!?靜態(tài)白盒測試方法:走查、復(fù)審、評審程序源代碼、數(shù)據(jù)字典、系統(tǒng)設(shè)計文檔、環(huán)境設(shè)置、軟件配置項等。3靜態(tài)測試方法● 動態(tài)黑盒測試方法:通過數(shù)據(jù)輸入并運行程序來檢驗輸出結(jié)果,如功能測試、驗收測試和一些性能測試等?!?動態(tài)白盒測試方法:通過驅(qū)動程序來調(diào)用,如進行單元測試、集成測試和部分性能測試等。4動態(tài)測試方法采用黑盒技術(shù)設(shè)計測試用例的方法等價類劃分法邊界值分析法因果圖法決策表場景設(shè)計法正交實驗法錯誤推斷法4.2黑盒測試的方法軟件測試員常遇到的問題

由于窮舉測試的數(shù)量太大,以致于無法實際完成,促使我們在大量的可能數(shù)據(jù)中選取其中的一部分作為測試用例。在不了解等價分配技術(shù)的前提下,測試了1+1、1+2、1+3和1+4之后,還有必要測試1+5和1+6嗎?能否放心地認(rèn)為它們正確嗎?那么1+999…(可以輸入的最大數(shù)值)呢?這個測試用例是否與其他用例不同?是否屬于另外一種類別?另外一個等價區(qū)間?等價類劃分法

等價類劃分是一種典型的黑盒測試方法,用這一方法設(shè)計測試用例可以不用考慮程序的內(nèi)部結(jié)構(gòu),只以對程序的要求和說明,即需求規(guī)格說明書為依據(jù),仔細(xì)分析和推敲說明書的各項需求,特別是功能需求,把說明中對輸入的要求和輸出的要求區(qū)別開來并加以分解。等價類是指某個輸入域的子集合。

等價類劃分法是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個子集中選取少量具有代表性的數(shù)據(jù)作為測試用例。每一類的代表性數(shù)據(jù)在測試中的作用等價于這一類中的其他值,也就是說,如果某一類中的一個例子發(fā)現(xiàn)了錯誤,這一等價類中的其他例子也能出現(xiàn)同樣的錯誤。測試某等價類的代表值就等于對這一類其他值的測試

有效等價類和無效等價類

在考慮等價類劃分時,先從程序的功能說明中找出每個輸入條件,然后為每個輸入條件劃分兩個或更多個等價類。等價類可分兩種情況:有效等價類和無效等價類。有效等價類是指對程序的規(guī)格說明是有意義的、合理的輸入數(shù)據(jù)所構(gòu)成的集合;無效等價類是指對程序的規(guī)格說明是不合理的或無意義的輸入數(shù)據(jù)所構(gòu)成的集合。劃分等價類

設(shè)計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗。這樣的測試才能確保軟件具有更高的可靠性。確定等價類的原則

1.

如果輸入條件規(guī)定了一個取值范圍(例如,“數(shù)值可以是從

1

到999”),那么就應(yīng)確定出一個有效等價類(1<=數(shù)值<=999

)

,以及兩個無效等價類(數(shù)值<1,數(shù)值>999)。

2.

如果輸入條件規(guī)定了取值的個數(shù)(例如,“汽車可登記一至六名車主”),那么就應(yīng)確定出一個有效等價類和兩個無效等價類(沒有車主,或車主多于六個)。

3.

如果輸入條件規(guī)定了一個輸入值的集合,而且有理由認(rèn)為程序會對每個值進行不同處理(例如,“交通工具的類型必須是公共汽車、卡車、出租車、火車或摩托車”),那么就應(yīng)為每個輸入值確定一個有效等價類和一個無效等價類(例如,“拖車”)。

4.

如果存在輸入條件規(guī)定了“必須是”的情況,例如“標(biāo)識符的第一個字符必須是字母”,那么就應(yīng)確定一個有效等價類(首字符是字母)和一個無效等價類(首字符不是字母)。

如果有任何理由可以認(rèn)為程序并未等同地處理等價類中的元素,那么應(yīng)該將這個等價類再劃分為小一些的等價類。確定測試用例的步驟根據(jù)已列出的等價類表,按以下步驟確定測試用例:1.

為每個等價類設(shè)置一個不同的編號。2.

編寫新的測試用例,盡可能多地覆蓋那些尚未被涵蓋的有效等價類,直到所有的有效等價類都被測試用例所覆蓋(包含進去)。3.

編寫新的用例,覆蓋一個且僅一個尚未被覆蓋的無效等價類,直到所有的無效等價類都被測試用例所覆蓋。用單個測試用例覆蓋無效等價類,是因為某些特定的輸入錯誤檢查可能會屏蔽或取代其他輸入錯誤檢查。舉例來說,如果規(guī)格說明規(guī)定了“請輸入書籍類型(硬皮、軟皮或活頁)及數(shù)量(l~999

)”,代表兩個錯誤輸入(書籍類型錯誤,數(shù)量錯誤)的測試用例“XYZ

0”,很可能不會執(zhí)行對數(shù)量的檢查,因為程序也許會提示“XYZ

是未知的書籍類型”,就不檢查輸入的其余部分了。例1:保險公司人壽保險保費計算程序的等價類測試。 某保險公司人壽保險的保費計算方法為:保費

=

投保額

×

保險費率其中,保險費率根據(jù)年齡、性別、婚姻狀況和撫養(yǎng)人數(shù)的不同而有所不同,體現(xiàn)在不同年齡、性別、婚姻狀況和撫養(yǎng)人數(shù),點數(shù)設(shè)定不同。10點以上保險費率為0.6%,10點及以下保險費率為0.1%;而點數(shù)又是由投保人的年齡、性別、婚姻狀況和撫養(yǎng)人數(shù)來決定,具體規(guī)則如表4-5所示。分析程序規(guī)格說明中給出的和隱含的對輸入數(shù)據(jù)的要求,可以得出下述規(guī)律。①年齡:一位或兩位非零整數(shù),取值的有效范圍為1~99。②性別:一位英文字符,只能取“M”或“F”值。③婚姻:字符、只能取“已婚”或“未婚”。④撫養(yǎng)人數(shù):空白或字符“無”或1~99之間的一位非零整數(shù)。⑤點數(shù):一位或兩位非零整數(shù),取值范圍為8~19。

通過對規(guī)格說明輸入數(shù)據(jù)的取值分析,可以得出保險公司人壽保險計算程序的等價類如表4-6。

根據(jù)表中的等價類,假設(shè)保險額為1萬元,保險公司人壽保險保費計算程序的等價類測試用例如表4-7所示。例2:學(xué)籍管理系統(tǒng)中有增加學(xué)生信息的功能,該功能的說明如下

一條完整的學(xué)生信息包括學(xué)生的學(xué)號、姓名、語文成績、數(shù)學(xué)成績、英語成績、物理成績和化學(xué)成績。 學(xué)號是學(xué)生信息的關(guān)鍵字,不能重復(fù)。每個班級的學(xué)號范圍和學(xué)號的數(shù)據(jù)要求見數(shù)據(jù)字典。增加重復(fù)學(xué)號和非數(shù)據(jù)字典要求的學(xué)號時,系統(tǒng)應(yīng)給出提示。增加信息時,學(xué)號是必須輸入的,否則,系統(tǒng)應(yīng)給出提示。表4-8是數(shù)據(jù)字典中關(guān)于學(xué)號的要求。首先,列出所有等價類,如表4-9所示。選擇測試用例,覆蓋所有的有效等價類,如表4-10所示。選擇測試用例,覆蓋所有的無效等價類,如表4-11所示。例3:三角形問題

根據(jù)下面給出的規(guī)格說明,利用等價類劃分的方法,給出足夠的測試用例:輸入三個整數(shù)作為三邊的邊長構(gòu)成三角形。當(dāng)此三角形為一般三角形、等腰三角形、等邊三角形時,分別作計算。(設(shè)a、b、c代表三角形的三條邊)分析題目中給出的和隱含的對輸入條件的要求。案例研究:輸入

輸入三個整數(shù)作為三邊的邊長構(gòu)成三角形。當(dāng)此三角形為一般三角形、等腰三角形、等邊三角形時,分別作計算。輸入條件的要求:

整數(shù)3個數(shù)非零數(shù)正數(shù)兩邊之和大于第三邊等腰等邊等價類劃分法設(shè)計用例的步驟

分析給出的和隱含的對輸入條件的要求;列出等價類表并編號;列出覆蓋上述等價類的測試用例。分析題目中給出和隱含的對輸入條件的要求:(1)整數(shù)(2)三個數(shù)(3)非零數(shù)(4)正數(shù)(5)兩邊之和大于第三邊(6)等腰(7)等邊如果a、b、c滿足條件(1)~(4),則輸出下列四種情況之一:1)如果不滿足條件(5),則程序輸出為"非三角形"。2)如果三條邊相等即滿足條件(7),則程序輸出為"等邊三角形"。3)如果只有兩條邊相等、即滿足條件(6),則程序輸出為"等腰三角形"。4)如果三條邊都不相等,則程序輸出為"一般三角形"。Ps:11用例是等邊三角形列出等價類表并編號覆蓋有效等價類的測試用例:abc覆蓋等價類編號345(1)--(7)445(1)--(7),(8)455(1)--(7),(9)545(1)--(7),(10)444(1)--(7),(11)覆蓋無效等價類的測試用例:

0501

用等價類劃分法設(shè)計8位長數(shù)字類型用戶名登錄操作的測試用例,應(yīng)該分成()個等價區(qū)間。A.2B.3C.4D.6習(xí)題05答案C分別是:過長名稱、過短名稱、合法長度合法字符、合法長度非法字符答案為C,位數(shù)>8,不是數(shù)字類型,沒有輸入,合法的用戶名等價類劃分的辦法是把程序的輸入域分成若干部分,然后從每個部分中選取少數(shù)代表性數(shù)據(jù)作為測試用例。每一類的代表數(shù)據(jù)在測試的作用等價于這一類中的其它值,也就是說,如果某一類中的一個例子發(fā)現(xiàn)了錯誤,這一等價類中的其它例子也能發(fā)現(xiàn)同樣才錯誤;反之,如果某一類中的一個例子沒有發(fā)現(xiàn)錯誤,則這一類中的其它例子也不會查出錯誤(除非等價類中的某些例子屬于另一等價類,因為幾個等價類可能是相交的)答案B1個有效等價類16-402個無效類小于16大于400504

某工廠招工,規(guī)定報名者年齡應(yīng)在20周歲——39周歲之間,即出生年月不得早于1960年7月,不晚于1979年6月。報名程序具有自動檢驗輸入數(shù)據(jù)的功能,如果出生年月不屬于上訴范圍將拒絕接受,并顯示“年齡不合格”等出錯信息。0505

新浪郵箱名,其輸入要求如下:1.

4~16個字符2.

支持英文小寫、數(shù)字、下劃線3.

不支持全部為數(shù)字或下劃線

輸入條件有效等價類無效等價類用戶名字符數(shù)4~16(1)0(2)、0<個數(shù)<4(3)、>16(4)用戶名組成英文小寫(5)、數(shù)字(6)、下劃線(7)非英文小寫、數(shù)字、下劃線(8)用戶名支持格式不全為數(shù)字(9)、不全為下劃線(10)全為數(shù)字(11)、全為下劃線(12)郵箱名有效輸入集合:(1)(5)(6)(7)(9)(10)

32jing_qfda無效集合:(2)

郵箱名為空(3)

jby(4)

jiangboyang_1987_12_22(8)

江渤洋(11)

1234567890(12)

__________

最終測試用例:序號輸入及操作說明期望的測試結(jié)果132jing_qfda符合要求2郵件名為空用戶名字符數(shù)不符合要求3jby4jiangboyang_1987_12_225江渤洋用戶名組成不符合要求6@#%……7FDAY81234567890用戶名支持格式不符合要求9__________

0506

用等價類劃分法設(shè)計下面的測試用例:有一個報表系統(tǒng),要求用戶輸入要處理的報表的日期,假設(shè)日期的范圍為2003年1月到2008年12月。如果用戶輸入的日期不在這個范圍內(nèi),則顯示錯誤碼信息,并且此系統(tǒng)規(guī)定日期由年月六位數(shù)字組成,前4為代表年,后兩位代表月。

1)請列出等價類表(包括有效和無效的等價類)

2)根據(jù)1)中的等價類表,設(shè)計能覆蓋所有等價類的測試用例。要求包括輸入數(shù)據(jù)和預(yù)期輸出,并指出各個測試用例所能付給的等價類編號(2)年在2000-2020之間0507

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={年:1920≤年≤2050}

2)若條件①~③中任何一個條件失效,則NextDate函數(shù)都會產(chǎn)生一個輸出,指明相應(yīng)的變量超出取值范圍,比如"month的值不在1-12范圍當(dāng)中"。顯然還存在著大量的year、month、day的無效組合,NextDate函數(shù)將這些組合作統(tǒng)一的輸出:"無效輸入日期"。其無效等價類為:

M2={月份:月份<1}

M3={月份:月份>12}

D2={日期:日期<1}

D3={日期:日期>31}

Y2={年:年<1920}

Y3={年:年>2050}

弱一般等價類測試用例

月份

日期

預(yù)期輸出

9

22

2013

2013年9月22日

強一般等價類測試用例同弱一般等價類測試用例

注:弱--有單缺陷假設(shè);健壯--考慮了無效值

(一)弱健壯等價類測試

用例ID

月份

日期

預(yù)期輸出

WR1

9

22

2013

2013年9月22日

WR2

-1

15

2013

月份不在1~12中

WR3

13

15

2013

月份不在1~12中

WR4

6

-1

2013

日期不在1~31中

WR5

6

32

2013

日期不在1~31中

WR6

6

15

1919

年份不在1920~2050中

WR7

6

15

2051

年份不在1920~2050中

(二)強健壯等價類測試

用例ID

月份

日期

預(yù)期輸出

SR1

0

15

2013

月份不在1~12中

SR2

6

0

2013

日期不在1~31中

SR3

6

15

2013

年份不在1812~2012中

SR4

-1

-1

2013

兩個無效一個有效

SR5

6

-1

2013

兩個無效一個有效

SR6

-1

15

2013

兩個無效一個有效

SR7

-1

-1

1911

三個無效

0508找零錢問題如下:假設(shè)商店貨品價格(R)皆不大於100元(且為整數(shù)),若顧客付款在100元內(nèi)(P),求找給顧客之最少貨幣個(張)數(shù)?(貨幣面值50元(N50),10元(N10),5元(N5),1元(N1)四種)采用等價類劃分法設(shè)計測試用例,找出找零錢問題的最佳組合。等于100,輸入條件有效等價類無效等價類R價格0~5;6~10;3.11~50;4.51~100;小于0;大于100;P付款1.0~5;2.6~10;11~50;51~100小于0;大于100;選擇強一般等價類設(shè)計有例個數(shù)m1*m2*…*mn

個=3*3=9個。方案內(nèi)容用例輸入預(yù)期輸出價格R付款PRP找零錢張數(shù)10~10

0~10;78、91、2張一元211~50;812不可能351~100960不可能411~50

0~10;325不夠511~50;35462張五元1張一元651~100751~100

0~10;811~50;9

51~1000509某程序規(guī)格說明有如下描述:某城市電話號碼由三部分組成。它們的名稱和內(nèi)容分別是:地區(qū)碼:空白或3位數(shù)字;前綴:非‘0’、‘1’開頭的3位數(shù)字;后綴:4位數(shù)字。假定被測程序能接受一切符合上述規(guī)定的電話號碼,拒絕所有不符合規(guī)定的電話號碼。根據(jù)該程序的規(guī)格說明,作等價類的劃分,并設(shè)計測試方案。輸入條件有效等價類無效等價類地區(qū)碼1.空白;2.三位數(shù);

有非數(shù)字字符;少于三位數(shù)字;3.多于三位數(shù)字。前綴3.從200到999之間的三位4.有非數(shù)字字符;5.起始位為‘0’;6.起始位為‘1’;

7.少于三位數(shù)字;8.多于三位數(shù)字。后綴4.四位數(shù)字。9.有非數(shù)字字符;10.少于四位數(shù)字;11.多于四位數(shù)字。選擇弱健壯等價類設(shè)計有例個數(shù)max(mi)+(l1+

l2+…+ln)個=2+11個。方案內(nèi)容輸入預(yù)期輸出地區(qū)碼前綴后綴1空白200~999之間的三位數(shù)字四位數(shù)字()276-2345有效2三位數(shù)字四位數(shù)字(635)805-9321有效3有非數(shù)字字符

(20A)723-4567無效4少于三位數(shù)字

(33)234-5678無效5多于三位數(shù)字

(5555)345-6789無效6

有非數(shù)字字符

(345)5A2-3456無效7

起始位為‘0’

(345)012-3456無效8

起始位為‘1’

(345)132-3456無效9

少于三位數(shù)字

(345)92-3456無效10

多于三位數(shù)字

(345)4562-3456無效11

有非數(shù)字字符(345)342-3A56無效12

少于四位數(shù)字(345)342-356無效13

多于四位數(shù)字(345)562-34567無效

在軟件設(shè)計和程序編寫中,常常對于規(guī)格說明中的輸入域邊界或輸出域邊界不夠注意,以致大量的錯誤發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。邊界值分析是一種補充等價劃分的測試用例設(shè)計技術(shù),它不是選擇等價類的任意元素,而是選擇等價類邊界的測試用例。實踐證明為檢驗邊界附近的處理專門設(shè)計測試用例,常常取得良好的測試效果。邊界值分析法

使用邊界值分析方法設(shè)計測試用例,首先:應(yīng)確定邊界情況。通常輸入和輸出等價類的邊界,就是應(yīng)著重測試的邊界情況。其次,應(yīng)當(dāng)選取正好等于、剛剛大于或剛剛小于邊界的值作為測試數(shù)據(jù),而不是選取等價類中的典型值或任意值作為測試數(shù)據(jù)。單缺陷假設(shè)和多缺陷假設(shè):單缺陷假設(shè):是指“失效極少是由兩個或兩個以上的缺陷同時發(fā)生引起的”。要求測試用例只使一個變量取極值,其他變量均取正常值;多缺陷假設(shè):是指“失效是由兩個或兩個以上缺陷同時作用引起的”,要求測試用例時同時讓多個變量取極值。邊界值測試分類

單缺陷假設(shè)多缺陷假設(shè)有效值一般邊界值一般最壞情況邊界值無效值健壯性邊界值健壯最壞情況邊界值

一般邊界值僅考慮有效區(qū)間單個變量邊界值(一般邊界值):用最小值、略高于最小值、正常值、略低于最大值和最大值。如果被測變量個數(shù)為n,則測試用例個數(shù)為4n+1例如:函數(shù)y=f(x1,x2)輸入變量的取值范圍分別為:

x1∈[a,b],x2∈[c,d]例1:有函數(shù)f(x,y,z),其中x∈[1900,2100],y∈[1,12],z∈[1,31]的。請寫出該函數(shù)采用基本邊界值分析法設(shè)計的測試用例?解:對于包含3個變量的程序,采用一般邊界值分析法,至少要產(chǎn)生4*3+1=13個用例。<2000,6,1>,<2000,6,2>,<2000,6,30>,<2000,6,31>,<2000,1,15>,<2000,2,15>,<2000,11,15>,<2000,12,15>,<1900,6,15>,<1901,6,15>,<2099,6,15>,<2100,6,15>,<2000,6,15>一般最壞情況邊界值僅考慮有效區(qū)間多個變量邊界值同時作用(一般最壞情況邊界值):用各個變量最小值、略高于最小值、正常值、略低于最大值和最大值的笛卡爾積。如果被測變量個數(shù)為n,則測試用例個數(shù)為5n。笛卡爾(Descartes)乘積又叫直積。假設(shè)集合A={a,b},集合B={0,1,2},則兩個集合的笛卡爾積為{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以擴展到多個集合的情況。案例給出三個域:D1=SUPERVISOR={張清玫,劉逸}D2=SPECIALITY={計算機專業(yè),信息專業(yè)}D3=POSTGRADUATE={李勇,劉晨,王敏}則D1,D2,D3的笛卡爾積為D:D=D1×D2×D3={(張清玫,計算機專業(yè),李勇),(張清玫,計算機專業(yè),劉晨),(張清玫,計算機專業(yè),王敏),(張清玫,信息專業(yè),李勇),(張清玫,信息專業(yè),劉晨),(張清玫,信息專業(yè),王敏),(劉逸,計算機專業(yè),李勇),(劉逸,計算機專業(yè),劉晨),(劉逸,計算機專業(yè),王敏),(劉逸,信息專業(yè),李勇),(劉逸,信息專業(yè),劉晨),(劉逸,信息專業(yè),王敏)

}函數(shù)y=f(x1,x2)輸入變量的取值范圍分別為:

x1∈[a,b],x2∈[c,d]。

健壯邊界值同時考慮有效區(qū)間和無效區(qū)間單個變量邊界值(健壯邊界值):除了最小值、略高于最小值、正常值、略低于最大值、最大值,還要有略超過最大值和略小于最小值的值。如果被測變量個數(shù)為n,則測試用例個數(shù)為6n+1函數(shù)y=f(x1,x2)輸入變量的取值范圍分別為:

x1∈[a,b],x2∈[c,d]健壯最壞情況邊界值同時考慮有效區(qū)間和無效區(qū)間多個變量邊界值同時作用(健壯最壞情況邊界值):用各個變量最小值、略高于最小值、正常值、略低于最大值、最大值、略超過最大值和略小于最小值的笛卡爾積。如果被測變量個數(shù)為n,則測試用例個數(shù)為7n

。函數(shù)y=f(x1,x2)輸入變量的取值范圍分別為:

x1∈[a,b],x2∈[c,d]例2:新浪博客圖片上傳,要求如下:上傳文件大小不超過5M序號輸入及操作說明期望的測試結(jié)果15M符合要求25.1M不符合要求33M符合要求40.1M54.9M以健壯邊界值的標(biāo)準(zhǔn)可選取5M(正好等于)、5.1M(剛剛大于)、3M(正常值)0.1M(略高于最小值)4.9M(略小于最大值)最為邊界值來測試。

邊界值法設(shè)計測試用例的原則(1)如果輸入條件對取值范圍進行了限定,則應(yīng)以邊界內(nèi)部以及剛超出范圍邊界外的值作為測試用例。(2)如果對取值的個數(shù)進行了界定,則應(yīng)分別以最大、稍小于最大、稍大于最大、最小、稍小于最小、稍大于最小個數(shù)作為測試用例。(3)對于輸出條件,同樣可以應(yīng)用上面提到的兩條原則來進行測試用例設(shè)計。(4)如果程序規(guī)格說明書中指明輸入或者輸出域是一個有序的集合,如順序文件、表格等,則應(yīng)注意選取有序集合中的第一個和最后一個元素作為測試用例。其他一些邊界條件

另一種看起來很明顯的軟件缺陷來源是當(dāng)軟件要求輸入時(比如在文本框中),不是沒有輸入正確的信息,而是根本沒有輸入任何內(nèi)容,單單按了Enter鍵。這種情況在產(chǎn)品說明書中常常忽視,程序員也可能經(jīng)常遺忘,但是在實際使用中卻時有發(fā)生。程序員總會習(xí)慣性的認(rèn)為用戶要么輸入信息,不管是看起來合法的或非法的信息,要不就會選擇Cancel鍵放棄輸入,如果沒有對空值進行好的處理的話,恐怕程序員自己都不知道程序會引向何方。

正確的軟件通常應(yīng)該將輸入內(nèi)容默認(rèn)為合法邊界內(nèi)的最小值或者合法區(qū)間內(nèi)某個合理值,否則返回錯誤提示信息。因為這些值通常在軟件中進行特殊處理,所以不要把它們與合法情況和非法情況混在一起,而要建立單獨的等價區(qū)間。邊界值附近的數(shù)據(jù)確定的幾種方法:項邊界值測試用例的設(shè)計思路字符起始-1個字符/結(jié)束+1個字符假設(shè)一個文本輸入?yún)^(qū)域允許輸入1~255個字符,輸入1個和255個字符作為有效等價類;輸入0個和256個字符為無效等價類,這幾個數(shù)值都屬于邊界條件值數(shù)值開始位-1/結(jié)束位+1數(shù)據(jù)的輸入域為1~999,其最小值為1,最大值為999,則0、1000為邊界值空間小于空余空間一點/大于滿空間一點測試數(shù)據(jù)存儲時,使用比最小剩余空間大一點(幾千字節(jié))的文件作為最大值檢驗的邊界條件方向剛剛超過/剛剛低于

報表第一行和最后一行

數(shù)組第一個和最后一個下標(biāo)元素

數(shù)據(jù)類型16位整型數(shù)據(jù),32767和-32768

循環(huán)結(jié)構(gòu)第2次和倒數(shù)第2次循環(huán)

數(shù)值的邊界值檢驗:項范圍或值位(b)0

或1字節(jié)(B)0~255字(Word)0~65535(單字)或0~4294967295(雙字)千(KB)1024兆(MB)1048576吉(GB)1073741824萬億(TB)1099511627776字符的邊界值檢驗:字符ASCII碼值字符ASCII碼值空(NULL)0A65空格(SPACE)32B66斜杠(/)47Y89冒號(:)58Z90分號(;)59左中括號[91<

60反斜杠(\)92=61右中括號]93>

62單引號(‘)96?63a97@64b98048y121957z122

測試用例abc預(yù)期輸出Test1Test2Test3Test4Test560606050506060605050126099100等腰三角形等腰三角形等邊三角形等腰三角形非三角形Test6Test7Test8Test960605050129910060605050等腰三角形等腰三角形等腰三角形非三角形Test10Test11Test12Test1312991006060505060605050等腰三角形等腰三角形等腰三角形非三角形在等價類劃分基礎(chǔ)上進行邊界值分析測試,著重測試的是等價類的邊界,在表加法器等價類基礎(chǔ)上,進行邊界值測試,每次使一個變量取邊界值,其他變量取正常值,可設(shè)計出如表4-14所示的邊界測試用例。測試用例輸入數(shù)據(jù)預(yù)期輸出加數(shù)1加數(shù)2和Test115051Test225052Test39950149Test410050150Test550151Test650252Test75099149Test850100150Test9050提示“請輸入1~100間的整數(shù)”Test10500提示“請輸入1~100間的整數(shù)”Test1110150提示“請輸入1~100間的整數(shù)”Test1250101提示“請輸入1~100間的整數(shù)”Test130.250提示“請輸入1~100間的整數(shù)”測試用例輸入數(shù)據(jù)預(yù)期輸出加數(shù)1加數(shù)2和Test14500.2提示“請輸入1~100間的整數(shù)”Test15A50提示“請輸入1~100間的整數(shù)”Test1650A提示“請輸入1~100間的整數(shù)”Test17@50提示“請輸入1~100間的整數(shù)”Test1850@提示“請輸入1~100間的整數(shù)”Test19空格50提示“請輸入1~100間的整數(shù)”Test2050空格提示“請輸入1~100間的整數(shù)”Test2150提示“請輸入1~100間的整數(shù)”Test2250提示“請輸入1~100間的整數(shù)”答案B答案B應(yīng)當(dāng)包含a和b以及略大于a和略小于b的值如果輸入條件規(guī)定值的范圍,則應(yīng)取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù)答案為B答案B0513下面為C語言程序,邊界值問題可以定位在()intdata[3];inti;for(i=1;i<=3;i++)data[i]=100;A.data[0]B.data[1]C.data[2]D.data[3]答案為A創(chuàng)建了一個3個元素的數(shù)組,程序從1-3循環(huán)將數(shù)組元素的值初始化為100,但是由于數(shù)組的第一個元素是data(0)0514

測試計算正數(shù)平方根的函數(shù)。其輸入、輸出均為一個實數(shù),當(dāng)輸入一個0或比0大的數(shù)的時候,返回其正平方根;當(dāng)輸入一個小于0的數(shù)時,顯示錯誤信息“平方根非法,輸入值小于0”。

1)邊界值分析使用與等價類劃分法相同的劃分,只是邊界值分析假定錯誤更多地存在于劃分的邊界上,因此在等價類的邊界上以及兩側(cè)的情況設(shè)計測試用例。

例:測試計算平方根的函數(shù)

--輸入:實數(shù)

--輸出:實數(shù)

--規(guī)格說明:當(dāng)輸入一個0或比0大的數(shù)的時候,返回其正平方根;當(dāng)輸入一個小于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)的邊界為最小負(fù)實數(shù)和0。由此得到以下測試用例:

a、輸入

{最小負(fù)實數(shù)}

b、輸入

{絕對值很小的負(fù)數(shù)}

c、輸入

0

d、輸入

{絕對值很小的正數(shù)}

e、輸入

{最大正實數(shù)}0515

萬年歷查詢軟件,要求用戶輸入以年月日表示的日期,然后系統(tǒng)會換算出該日期的農(nóng)歷表示法及相關(guān)黃歷信息。假設(shè)日期限定在1900年1月1日~2049年12月31日,并規(guī)定日期由8位數(shù)字字符組成,前4位表示年,中間2位表示月,最后2位表示日期。其中4、6、9、11月只有30天,平年的2月份只有28天,閏年的2月份有29天。

備注:為簡化處理,本題在進行用例設(shè)計時,不必

考慮對平年、閏年的判斷。輸入等價類有效等價類無效等價類日期的類型及長度(1)8位數(shù)字字符(9)有非數(shù)字字符(10)少于8位數(shù)字字符(11)多于8位數(shù)字字符年份范圍(2)在1900~2049之間(12)小于1900(13)大于2049月份范圍(3)在01~12之間(14)等于00(15)大于12日期下限(4)日期>=01(16)等于00平年2月份有28天(5)平年2月份日期<=28(17)平年2月份日期>28閏年2月份有29天(6)閏年2月份日期<=29(18)閏年2月份日期>291、3、5、7、8、10、12月份有31天(7)大月日期<=31(19)大月日期>314、6、9、11月份只有30天(8)小月日期<=30(20)小月日期>301)劃分等價類并編號,下表等價類劃分的結(jié)果二、結(jié)合邊界值方法進行用例設(shè)計。首先還是利用等價類的方法進行用例設(shè)計,然后看看哪些邊界值已經(jīng)被覆蓋到了,最后再針對沒有被覆蓋的邊界值補充測試用例。輸入等價類有效等價類無效等價類日期的類型及長度(1)8位數(shù)字字符(9)有非數(shù)字字符(10)少于8位數(shù)字字符(11)多于8位數(shù)字字符邊界值:(30)7位(31)9位年份范圍(2)在1900~2049之間邊界值:(21)1900(22)2049(12)小于1900(13)大于2049邊界值:(32)1899(33)2050月份范圍(3)在01~12之間邊界值:(23)01(24)12(14)等于00(15)大于12邊界值:(34)00(35)13日期下限(4)日期>=01邊界值:(25)01(16)等于00邊界值:(36)00平年2月份有28天(5)平年2月份日期<=28邊界值:(26)28(17)平年2月份日期>28邊界值:(37)29閏年2月份有29天(6)閏年2月份日期<=29邊界值:(27)29(18)閏年2月份日期>29邊界值:(38)301、3、5、7、8、10、12月份有31天(7)大月日期<=31邊界值:(28)31(19)大月日期>31邊界值:(39)324、6、9、11月份只有30天(8)小月日期<=30邊界值:(29)30(20)小月日期>30邊界值:(40)31測試用例測試數(shù)據(jù)覆蓋的有效等價類覆蓋邊界值1190001011、2、3、421、23、252204912311、2、3、4、722、24、283200102281、2、3、4、5264200002291、2、3、4、6275199504301、2、3、4、829設(shè)計測試用例覆蓋等價類和邊界值再補充1月31日、11月30日的測試用例,因為1月是大月的第一個月,11月是小月的最后一個月,也可以算是邊界值。測試用例測試數(shù)據(jù)覆蓋的有效等價類覆蓋邊界值6199801311、2、3、4、723、287200511301、2、3、4、829設(shè)計測試用例覆蓋無效等價類:測試用例測試數(shù)據(jù)覆蓋的無效等價類覆蓋的邊界值19533June922003061103032001123011131418991031123252050020113336200800011434720041301153581996010016369200702291737102008023018381119980132193912199004312040因果圖法產(chǎn)生的背景:等價類劃分法和邊界值分析方法都是著重考慮輸入條件,但沒有考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系。這樣雖然各種輸入條件可能出錯的情況已經(jīng)測試到了,但多個輸入條件組合起來可能出錯的情況卻被忽視了。如果在測試時必須考慮輸入條件的各種組合,則可能的組合數(shù)目將是天文數(shù)字,因此必須考慮采用一種適合于描述多種條件的組合、相應(yīng)產(chǎn)生多個動作的形式來進行測試用例的設(shè)計,這就需要利用因果圖(邏輯模型)。因果圖法因果圖法是基于這樣的一種思想:一些程序的功能可以用判定表(或稱決策表)的形式來表示,并根據(jù)輸入條件的組合情況規(guī)定相應(yīng)的操作。因果圖法的定義:是一種利用圖解法分析輸入的各種組合情況,從而設(shè)計測試用例的方法,它適合于檢查程序輸入條件的各種組合情況。使用因果圖法的優(yōu)點:(1)考慮到了輸入情況的各種組合以及各個輸入情況之間的相互制約關(guān)系。(2)能夠幫助測試人員按照一定的步驟,高效率的開發(fā)測試用例。(3)因果圖法是將自然語言規(guī)格說明轉(zhuǎn)化成形式語言規(guī)格說明的一種嚴(yán)格的方法,可以指出規(guī)格說明存在的不完整性和二義性。因果圖中用來表示4種因果關(guān)系的基本符號:因果圖中的4種基本關(guān)系在因果圖的基本符號中,圖中的左結(jié)點ci表示輸入狀態(tài)(或稱原因),右結(jié)點ei表示輸出狀態(tài)(或稱結(jié)果)。ci與ei取值0或1,0表示某狀態(tài)不出現(xiàn),1則表示某狀態(tài)出現(xiàn)。恒等:若c1是1,則e1也為1,否則e1為0。非:若c1是1,則e1為0,否則e1為1?;颍喝鬰1或c2或c3是1,則e1為1,否則e1為0。與:若c1和c2都是1,則e1為1,否則e1為0。因果圖中的約束在實際問題中輸入狀態(tài)相互之間、輸出狀態(tài)相互之間可能存在某些依賴關(guān)系,稱為“約束”。對于輸入條件的約束有E、I、O、R四種約束,對于輸出條件的約束只有M約束。E約束(異):a和b中最多有一個可能為1,即a和b不能同時為1。I約束(或):a、b、c中至少有一個必須為1,即a、b、c不能同時為0。O約束(唯一):a和b必須有一個且僅有一個為1。R約束(要求):a是1時,b必須是1,即a為1時,b不能為0。M約束(強制):若結(jié)果a為1,則結(jié)果b強制為0。因果圖中用來表示約束關(guān)系的約束符號:采用因果圖法設(shè)計測試用例的步驟:

分析程序規(guī)格說明的描述中,哪些是原因,哪些是結(jié)果,并給每個原因和結(jié)果賦予一個標(biāo)識符。原因常常是輸入條件或是輸入條件的等價類。而結(jié)果是輸出條件。分析軟件規(guī)格說明描述的語義。找出原因和結(jié)果之間、原因和原因之間的關(guān)系,根據(jù)這些關(guān)系,畫出因果圖。由于語法或環(huán)境的限制,有些原因和結(jié)果的組合情況是不可能出現(xiàn)的。為表明這些特定的情況,在因果圖上使用若干個特殊的符號標(biāo)明約束或限制條件。把因果圖轉(zhuǎn)換為判定表。把判定表的每一列拿出來作為依據(jù),設(shè)計測試用例。例1:規(guī)格說明書程序的規(guī)格說明要求:輸入的第一個字符必須是#或*,第二個字符必須是一個數(shù)字,此情況下進行文件的修改;如果第一個字符不是#或*,則給出信息N,如果第二個字符不是數(shù)字,則給出信息M。(1)分析程序規(guī)格說明中的原因和結(jié)果:原因結(jié)果c1:第一個字符是#e1:修改文件c2:第一個字符是*e2:給出信息Nc3:第二個字符是一個數(shù)字e3:給出信息M(2)畫出因果圖(編號為11的中間結(jié)點是導(dǎo)出結(jié)果的進一步原因):(3)將因果圖轉(zhuǎn)換成如下所示的決策表:12345678條件:C1C2C311111110101110010111010100100000動作:e1e2e3不可能√√√√√√√√√測試用例#3#A*6*BA1GT規(guī)則選項(4)根據(jù)決策表中的每一列設(shè)計測試用例:測試用例編號輸入數(shù)據(jù)預(yù)期輸出1#3修改文件2#A給出信息M3*6修改文件4*B給出信息M5A1給出信息N6GT給出信息N和信息M決策表在所有的黑盒測試方法中,基于決策表(也稱判定表)的測試是最為嚴(yán)格、最具有邏輯性的測試方法。決策表的概念:決策表是分析和表達多邏輯條件下執(zhí)行不同操作的情況的工具。決策表的優(yōu)點:能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。因此,利用決策表能夠設(shè)計出完整的測試用例集合。在一些數(shù)據(jù)處理問題當(dāng)中,某些操作的實施依賴于多個邏輯條件的組合,即:針對不同邏輯條件的組合值,分別執(zhí)行不同的操作。決策表很適合于處理這類問題。決策表的組成決策表通常由以下4部分組成:條件樁—列出問題的所有條件條件項—針對條件樁給出的條件列出所有可能的取值動作樁—列出問題規(guī)定的可能采取的操作動作項—指出在條件項的各組取值情況下應(yīng)采取的動作

條件樁動作樁條件項動作項規(guī)則將任何一個條件組合的特定取值及相應(yīng)要執(zhí)行的動作稱為一條規(guī)則。在決策表中貫穿條件項和動作項的一列就是一條規(guī)則。

123,4567,8c1c2c3TTTTTFTF-FTTFTFFF-a1a2a3a4√√√√√√√√√條件樁動作項動作樁條件項決策表的生成構(gòu)造決策表的5個步驟:(1)

確定規(guī)則的個數(shù)。有n個條件的決策表有2n個規(guī)則(每個條件取真、假值)。(2)

列出所有的條件樁和動作樁。(3)

填入條件項。(4)

填入動作項,得到初始決策表。(5)

簡化決策表,合并相似規(guī)則。例2:“閱讀指南”決策表12345678問題覺得疲倦?YYYYNNNN感興趣嗎?YYNNYYNN糊涂嗎?YNYNYNYN建議重讀√繼續(xù)√跳下一章√√休息√√√√決策表的化簡有n個條件的決策表,對應(yīng)的規(guī)則將有2n條,當(dāng)n非常大的時候,這是非常繁瑣的。因此,應(yīng)對決策表進行化簡。決策表的化簡包括兩個方面:(1)合并如果一個條件項(表中某列中的條件值)和另外一個條件項所產(chǎn)生的動作是相同的,且兩個條件項對應(yīng)的每一行的值只有一個是不同的,則可以將其合并。合并的項除了不同值變成”不關(guān)心”條目外,其余不變。(2)包含如果兩個條件項的動作是相同的,對任意條件1的值和條件2中對應(yīng)的

值,如果滿足:A.如果條件1的值是T(F),則條件2中的值也是T(F).B.如果條件1的值是-(不關(guān)心),則條件2中的值是T,F,-,稱條件1包含條件2,條件2可以撤去.重復(fù)A,B就可以得到精簡的決策表.NYNNYY√√-NY√NNN-YY√√N-Y√將“閱讀指南”決策表簡化

規(guī)則選項1~4567~8問題覺得疲倦嗎YNNN感興趣嗎-YYN糊涂嗎-YN-建議重讀√繼續(xù)√跳下一章√休息√例3:三角形問題的決策表規(guī)則選項規(guī)則1-8規(guī)則9規(guī)則10規(guī)則11規(guī)則12規(guī)則13規(guī)則14規(guī)則15規(guī)則16條件:c1:a,b,c構(gòu)成三角形?c2:a=b?c3:a=c?c4:b=c?

N---

YYYY

YYYN

YYNY

YYNN

YNYY

YNYN

YNNY

YNNN動作:a1:非三角形a2:一般三角形a3:等腰三角形a4:等邊三角形a5:不可能

√√√√√√決策表的優(yōu)點:能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。因此,利用決策表能夠設(shè)計出完整的測試用例集合。決策表的缺點:不能表達重復(fù)執(zhí)行的動作,例如循環(huán)結(jié)構(gòu)。決策表法是黑盒測試方法中最為嚴(yán)格、最具有邏輯性的測試方法。答案為C

0517

打印機是否能打印出來正確的內(nèi)容,有多個因素影響,包括驅(qū)動程序、紙張、墨粉等。(為了簡化問題,不考慮中途斷電、卡紙等因素的影響)。①確定規(guī)則的個數(shù):這里有3個條件,每個條件有兩個取值,故應(yīng)有2*2*2=8種規(guī)則。②列出所有的條件茬和動作樁:③填入條件項。可從最后1行條件項開始,逐行向上填滿。④填入動作樁和動作頂。這樣便得到形如圖的初始判定表。條件樁:(1)

驅(qū)動程序是否正確?(2)

是否有紙張?(3)

是否有墨粉?動作樁:(動作樁有兩種:打印內(nèi)容和不同的錯誤提示,并且假定:優(yōu)先警告缺紙,然后警告沒有墨粉,最有警告驅(qū)動程序不對。)(1)

打印內(nèi)容(2)

提示驅(qū)動程序不對(3)

提示沒有紙張(4)

提示沒有墨粉序號12345678條件驅(qū)動程序是否正確?10110010是否有紙張?11010100是否有墨粉?11101000動作打印內(nèi)容10000000提示驅(qū)動程序不對01000000提示沒有紙張00101011提示沒有墨粉00010100初始化的判定表注:輸入條件項,即上述每個條件的值分別取“是(Y)”和“否(N)”,可以簡化表示為1和0。序號124/63/5/7/8條件驅(qū)動程序是否正確?101—是否有紙張?1110是否有墨粉?110—動作打印內(nèi)容1000提示驅(qū)動程序不對0100提示沒有紙張0001提示沒有墨粉0010優(yōu)化的判定表注:如果動作結(jié)果一樣,對于某些因素取“1”或“0”沒有影響,即以“—”表示,并合并。優(yōu)化的判定表就可以設(shè)計測試用例,每一列代表一條測試用例。

0518

對功率大于50馬力的機器且維修記錄不全或已運行10年以上的機器,應(yīng)給予優(yōu)先的維修處理,利用判定表進行分析,完成用例設(shè)計。條件:1)功率是否大于50馬力2)維修記錄是否齊全3)運行是否超過10年動作:1)進行優(yōu)先處理

12345678條件功率大于50馬力嗎?11110000維修記錄不全嗎?11001100運行超過10年嗎?10101010動作進行優(yōu)先處理11101010判定表如下:

1234條件功率大于50馬力嗎?-1-0維修記錄不全嗎?-101運行超過10年嗎?1000動作進行優(yōu)先處理1100有兩種合并方法:1)合并1357項、48項2)合并1357項、68項

1234條件功率大于50馬力嗎?-110維修記錄不全嗎?-10-運行超過10年嗎?1000動作進行優(yōu)先處理1100但這樣合并之后我們看看后三條規(guī)則,寫出的用例邏輯性會變差,讓看的人感覺莫名其妙,比如第二張表的第4條規(guī)則,寫出用例標(biāo)題應(yīng)該是“驗證功率不到50馬力且運行不超過10年的機器的處理優(yōu)先級”,這樣會給人感覺功率和運行年限之間存在一定的邏輯關(guān)系,但其實功率與馬力之間才是強邏輯關(guān)系,功率與運行年限之間的邏輯關(guān)系是比較弱的。所以建議還是不合并為好,不要為了節(jié)省幾個用例去犧牲整個用例的邏輯性。只把1357列合并就可以了,也就是說對于運行超過10年的機器,不管它的馬力和維修記錄如何都必須進行優(yōu)先處理。

12345條件功率大于50馬力嗎?-1100維修記錄不全嗎?-1010運行超過10年嗎?10000動作進行優(yōu)先處理110000519

有一個處理單價為5角錢的飲料的自動售貨機,相應(yīng)規(guī)格說明如下。①若投入5角錢或1元錢的硬幣,按下【橙汁】或【啤酒】的按鈕,則相應(yīng)的飲料就送出來。(每次只投入一個硬幣,只按下一種飲料的按鈕。)②如投入5角的硬幣,按下按鈕后,總有飲料送出。③若售貨機沒有零錢找,則【零錢找完】的紅燈會亮,這時再投入1元硬幣并按下按鈕后,飲料不送出來而且1元硬幣也退出來。④若有零錢找,則【零錢找完】的紅燈不會亮,若投入1元硬幣及按飲料按鈕,則送出飲料的同時找回5角硬幣。分析根據(jù)該命題,我們可以分析出,自動售貨機的業(yè)務(wù)中一共存在5個條件和5個結(jié)果,分別是:條件:1.售貨機有零錢找2.投入1元硬幣3.投入5角硬幣

4.押下橙汁按鈕5.押下啤酒按鈕

結(jié)果:

1.售貨機〖零錢找完〗燈亮

當(dāng)售貨機中沒有零錢的時候就有亮紅燈2.退還1元硬幣

當(dāng)投入1元,而且售貨機中沒有零錢可找的時候3.退還5角硬幣

當(dāng)投入1元,而且售貨機中有零錢可找的時候4.送出橙汁飲料5.送出啤酒飲料因果圖-畫條件和結(jié)果因果圖-畫簡單關(guān)系在畫完空白的條件和結(jié)果之后,我們可以將題目中最直接和簡單的因果條件標(biāo)出1、條件“有零錢”和結(jié)果“紅燈亮”是一個“非”的關(guān)系,當(dāng)“有零錢”的時候,紅燈是不亮的,而當(dāng)售貨機中“沒有零錢”的時候,紅燈必須要亮的。2、條件“投1元”和條件“投5角”是一個“E”的關(guān)系,這兩個動作不可能同時發(fā)生,即同時投入1元錢和5角錢(不能同時為真);但是我們允許即“不投入1元錢”也“不投入5角錢”(可以同時為假)。3、條件“選啤酒”和條件“選橙汁”是一個“E”的關(guān)系,這兩個動作不可能同時發(fā)生,即同時“選擇啤酒”和“選擇橙汁”(不能同時為真);但是我們允許即“不選擇啤酒”也“不選擇橙汁”(可以同時為假)。4、條件“選啤酒”和條件“選橙汁”對于程序處理過程是等價的,即二者無論是價格還是系統(tǒng)的處理方法都是相同的,因此這兩個條件可以合并為一個中間節(jié)點。而且這兩個條件之間使用“或”的關(guān)系。5、注意,條件“投1元”和條件“投5角”不是等價關(guān)系,表面上看,他們都是“錢”,好像差不多,但是對于程序的處理過程確實完全不同的,“投5角”后完全不用判斷當(dāng)前售貨機中是否有零錢(因為題目中規(guī)定所有的商品都是5角錢),而“投1元”就不行了。因果圖-送出商品現(xiàn)在我們從結(jié)果的角度考慮,要想“出啤酒”或者“出橙汁”,從現(xiàn)實買賣中分析必須要有什么先決條件呢?是的,就是“你的錢要付清”,而且你一定要選擇了“啤酒”或者“橙汁”才行。而在上面的已有因果圖中,我們無法找到“錢付清”的因素,因此這時候我們可以試著再加一個中間節(jié)點,就叫“錢付清”吧。要想獲得選中的商品,則條件“錢付清”和條件“選啤酒/選橙汁”必須要同時成立,因此是“與”的關(guān)系。因果圖-能夠找零錢上面已經(jīng)確定了“投入1元錢”并且“選商品”,系統(tǒng)應(yīng)該找給客戶5角錢,那么接下來就要看當(dāng)前售貨機中是否有零錢可找了,慶幸的是,存在“有零錢”的條件;現(xiàn)在系統(tǒng)“應(yīng)該找零錢”給客戶,而且恰恰又“有零錢”找給客戶,那么就可以確定系統(tǒng)“能夠找零錢”給客戶了,所以這里我們又可以增加一個中間節(jié)點“能夠找零錢”。條件“有零錢”和條件(中間節(jié)點)“應(yīng)該找零錢”與結(jié)果“能夠找零錢”之間是“與”的關(guān)系。因果圖-1元錢付清現(xiàn)在已經(jīng)確定客戶“投入1元錢”并且“選商品”后,系統(tǒng)“有零錢”可找,那么緊接著就可以找錢給客戶了。條件“能夠找零錢”和結(jié)果“找5角”是“恒等”的關(guān)系;條件“能夠找零錢”和結(jié)果(中間節(jié)點)“錢付清”也是“恒等”的關(guān)系;因果圖-5角錢付清考慮完投入1元錢后系統(tǒng)的處理情況,我們再來看投入5角錢后系統(tǒng)是如何處理的。因為售貨機中的全部商品都是5角錢的,因此就不存在找零的問題了,只要客戶“投入5角”并且按下相應(yīng)的商品選擇按鈕就好了。所以,條件“投5角”和結(jié)果(中間節(jié)點)“錢付清”直接是“恒等”的關(guān)系。另外,條件“投5角”和條件(中間節(jié)點)“能夠找零錢”都代表金額的計算已經(jīng)結(jié)束,即“錢付清”,因此條件“投5角”和條件(中間節(jié)點)“能夠找零錢”與結(jié)果(中間節(jié)點)“錢付清”之間是“或”的關(guān)系。因果圖-退還1元我們考慮完了投入5角錢及投入1元錢并找零后,最后在考慮一下退還1元錢的情況。毫無疑問,當(dāng)投入1元錢,并且選擇了某種商品的時候,如果當(dāng)前售貨機中沒有零錢可找,那么只能退還用戶這1元錢了。因此,條件“沒零錢”和條件“應(yīng)該找零錢”與結(jié)果“找1元”之間應(yīng)該是“與”的關(guān)系,而且我們的條件中關(guān)于零錢是用了肯定的描述,即“有零錢”,要想表示沒有零錢,直接使用一個“非”關(guān)就可以了。判定表去除無效用例合并判定表0520黑盒測試是通過軟件的外部表現(xiàn)來發(fā)現(xiàn)軟件缺陷和錯誤的測試方法,具體地說,黑盒測試用例設(shè)計技術(shù)包括___(42)___等?,F(xiàn)有一個處理單價為1元的盒裝飲料的自動售貨機軟件,若投入1元幣,按下“可樂”、“雪碧”或“紅茶”按鈕,相應(yīng)的飲料就送出來,若投入的是2元幣,在送出飲料的同時退還1元幣。下表是用因果圖法設(shè)計的部分測試用例,1表示執(zhí)行該動作,0表示不執(zhí)行該動作,___(43)___的各位數(shù)據(jù),從左到右分別填入空格表中的(1)—(8)是正確的。42答案為A黑盒測試用例設(shè)計的方法包括等價類劃分法、邊界值分析法、因果圖法、錯誤推測法、判定表驅(qū)動法、功能圖法、正交實驗法、場景法等?;韭窂椒?、符號法以及靜態(tài)質(zhì)量度量是白盒測試用例設(shè)計的方法43答案為A當(dāng)有投幣和按鈕時,就會有相應(yīng)的飲料送出,若投幣為2元時,除了相應(yīng)的飲料送出,還會退還1元硬幣;只有按鈕或只有投幣時,就不會有輸出結(jié)果應(yīng)用的輸出結(jié)果依賴于各種輸入條件的組合或各種輸入條件之間有各種相互制約關(guān)系問題一問題二輸入條件輸出結(jié)果ABDEGICFH問題三1)11、12、13分別填入結(jié)果A、B、G,不計順序2)14中填寫E3)15、22分別填寫I,C;16、23分別填寫D、F4)或者15、22分別寫D,F;16、23分別寫I,C5)21填寫H1、分析程序規(guī)格說明中的描述,哪些是原因,哪些是結(jié)果。原因常常是輸入條件或是輸入條件的等價類,而結(jié)果是輸出條件2、分析程序規(guī)格說明的描述中語義的內(nèi)容,并將其表示成連接各個原因與各個結(jié)果的“因果圖”。3、標(biāo)明約束條件。由于語法或環(huán)境的限制,有些原因和結(jié)果的組合情況是不可能出現(xiàn)的。為表明這些特定的情況,在因果圖上使用若干個標(biāo)準(zhǔn)的符號標(biāo)明約束條件。4、把因果圖轉(zhuǎn)換成判定表,為判定表每一列表示的情況設(shè)計測試用例問題一問題三問題二場景法我們申請一個項目,需先提交審批單據(jù),再由部門經(jīng)理審批,審核通過后由總經(jīng)理來最終審批,如果部門經(jīng)理審核不通過,就直接退回。每個事件觸發(fā)時的情景便形成了場景。現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。這種在軟件設(shè)計方面的思想也可引入到軟件測試中,可以比較生動地描繪出事件觸發(fā)時的情景,有利于測試設(shè)計者設(shè)計測試用例,同時使測試用例更容易理解和執(zhí)行。場景法一般包含基本流和備選流,從一個流程開始,通過描述經(jīng)過的路徑來確定過程,經(jīng)過遍歷所有的基本流和備選流來完成整個場景?;玖骱蛡溆昧骰玖鳎翰捎弥焙诰€表示,是經(jīng)過用例的最簡單的路徑(無任何差錯,程序從開始直接執(zhí)行到結(jié)束)備選流:用不同的彩色表示,一個備選流可能從基本流開始,在某個特定條件下執(zhí)行,然后重新加入基本流中(如備選流1和備選流3);也可能起源于另一個備選流(如備選流2),或者終止用例而不再重新加入到某個流(如備選流2和備選流4)。按照上圖中每個經(jīng)過用例的路徑,可以確定以下不同的用例場景:場景1基本流場景2基本流備選流1場景3基本流備選流1備選流2場景4基本流備選流3場景5基本流備選流3備選流1場景6基本流備選流3備選流1備選流2場景7基本流備選流4場景8基本流備選流3備選流4注:為方便起見,場景5、6和8只考慮了備選流3循環(huán)執(zhí)行一次的情況。備選流的起始和終止節(jié)點的幾種形式

①起始節(jié)點從基本流的某個判定節(jié)點開始。②起始節(jié)點從其他備選流的某個判定節(jié)點開始。③終止節(jié)點是基本流上的某個狀態(tài)。④終止節(jié)點是其他的系統(tǒng)終止?fàn)顟B(tài)?;玖鱾溥x流場景法測試設(shè)計方法根據(jù)說明,描述出程序的基本流及各項備選流;根據(jù)基本流和各項備選流生成不同的場景;對每一個場景生成相應(yīng)的測試用例;對生成的所有測試用例重新復(fù)審,去掉多余的測試用例,測試用例確定后,對每一個測試用例確定測試數(shù)據(jù)。例1:對于ATM系統(tǒng)的取款用例,使用場景法設(shè)計測試用例。(1)分析基本流和備選流基本流:正常的取款。備選流:考察幾種特定情況,包括ATM內(nèi)沒有現(xiàn)金;ATM內(nèi)現(xiàn)金不足;密碼有誤(3次機會);賬戶不存在或賬戶類型有誤;賬戶余額不足。(2)分析各場景場景1—成功的提款—基本流場景2—ATM內(nèi)沒有現(xiàn)金—基本流備選流場景3—ATM內(nèi)現(xiàn)金不足—基本流備選流場景4—PIN有誤(第一次錯)—基本流備選流場景5—PIN有誤(第二次錯)—基本流備選流場景6—PIN有誤(第三次錯)—基本流備選流場景7—賬戶不存在/賬戶類型有誤—基本流備選流場景8—賬戶余額不足—基本流備選流(3)構(gòu)造測試用例設(shè)計矩陣v表示有效,i表示無效,n表示無關(guān)。如表4-18所示。(4)設(shè)計測試用例例2:有一個處理單價為5角錢的飲料的自動售貨機,相應(yīng)規(guī)格說明如下。①若投入5角錢或1元錢的硬幣,按下【橙汁】或【啤酒】的按鈕,則相應(yīng)的飲料就送

溫馨提示

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

評論

0/150

提交評論