黑盒測試技術(shù)_第1頁
黑盒測試技術(shù)_第2頁
黑盒測試技術(shù)_第3頁
黑盒測試技術(shù)_第4頁
黑盒測試技術(shù)_第5頁
已閱讀5頁,還剩113頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《軟件測試》第4章黑盒測試技術(shù)

本章內(nèi)容?

等價(jià)類技術(shù)(equivalenceclass

testing)

?邊界值技術(shù)(boundaryvalue

testing)

?決策表法(decisiontablemethod)

?因果圖法(cause-effectgraphs)

?場景法

?

黑盒測試技術(shù)的綜合運(yùn)用本章要點(diǎn)了解等價(jià)類技術(shù)、邊界值技術(shù)、因果圖技術(shù)、業(yè)務(wù)流程圖技術(shù)。理解并掌握綜合案例分析。4.1等價(jià)類技術(shù)(equivalenceclass

testing)案例7加法器

功能:計(jì)算兩個(gè)1~100之間整數(shù)的和。#include<stdio.h>voidmain(void){

inta;

intb;

intc;while(1){

printf("pleaseinputtwointegersbetween1and100:");

fflush(stdin);

scanf("%d%d",&a,&b); if((a>1&&a<100)&&(b>1&&b<100)){c=a+b;

printf("sumis%d\n",c); }}}4.1等價(jià)類技術(shù)(equivalenceclass

testing)案例7加法器

根據(jù)需求(計(jì)算兩個(gè)1~100之間整數(shù)的和)設(shè)計(jì)測試用例。窮舉測試一共要設(shè)計(jì)多少條用例呢?加數(shù)1有1~100共計(jì)100個(gè)取值,加數(shù)2也有1~100共計(jì)100個(gè)取值,最后的組合共有100*100=10000種可能。如果輸入的數(shù)據(jù)不在1~100之間呢?看來窮舉測試確實(shí)是不太可行的方法。4.1等價(jià)類技術(shù)(equivalenceclass

testing)一、等價(jià)類劃分等價(jià)類劃分法是一種黑盒測試技術(shù),它不考慮程序的內(nèi)部結(jié)構(gòu),只是根據(jù)軟件的需求說明來對輸入的范圍進(jìn)行細(xì)分,然后再從分出的每一個(gè)區(qū)域內(nèi)選取一個(gè)有代表性的測試數(shù)據(jù)。如果等價(jià)類分得好,這個(gè)代表性的測試數(shù)據(jù)的作用就等價(jià)于其區(qū)域內(nèi)的其他取值。等價(jià)類又被分為有效等價(jià)類和無效等價(jià)類

1.有效等價(jià)類:符合《需求規(guī)格說明書》,合理的輸入數(shù)據(jù)集合

2.無效等價(jià)類:不符合《需求規(guī)格說明書》,無意義的輸入數(shù)據(jù)集合4.1等價(jià)類技術(shù)(equivalenceclass

testing)一、等價(jià)類劃分(案例7)案例7,根據(jù)輸入要求將輸入?yún)^(qū)域劃分為3個(gè)等價(jià)類測試用例數(shù)目大大減少,而測試的覆蓋率卻提高了。是否結(jié)束了?還需要構(gòu)造其他的用例嗎?4.1等價(jià)類技術(shù)(equivalenceclass

testing)一、等價(jià)類劃分(案例7)如果輸入小數(shù),甚至是字母怎么辦?只考慮數(shù)據(jù)范圍是不夠的,還要考慮數(shù)據(jù)類型。4.1等價(jià)類技術(shù)(equivalenceclass

testing)一、等價(jià)類劃分(案例7)4.1等價(jià)類技術(shù)(equivalenceclass

testing)二、等價(jià)類方法總結(jié)1.等價(jià)類的定義等價(jià)類:是指某個(gè)輸入域的子集合。在這個(gè)子集合中,各個(gè)輸入數(shù)據(jù)對于揭露程序中的錯(cuò)誤都是等效的。有效等價(jià)類:符合《需求規(guī)格說明書》,合理的輸入數(shù)據(jù)集合。無效等價(jià)類:不符合《需求規(guī)格說明書》,無意義的輸入數(shù)據(jù)集合。4.1等價(jià)類技術(shù)(equivalenceclass

testing)二、等價(jià)類方法總結(jié)2.等價(jià)類劃分的步驟1)先考慮輸入數(shù)據(jù)的數(shù)據(jù)類型(合法和非法)2)再考慮數(shù)據(jù)范圍(合法類型中的合法區(qū)間和非法區(qū)間3)畫出示意圖,區(qū)分等價(jià)類4)為每一個(gè)等價(jià)類編號5)從一個(gè)等價(jià)類中選取一個(gè)測試數(shù)據(jù)構(gòu)造測試用例4.1等價(jià)類技術(shù)(equivalenceclass

testing)二、等價(jià)類方法總結(jié)3.常用的等價(jià)類劃分方法1)如果規(guī)定了輸入值的范圍(閉區(qū)間),可以分為一個(gè)有效等價(jià)類,兩個(gè)無效的等價(jià)類。2)如果輸入是布爾表達(dá)式,可以分為一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。3)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序?qū)Σ煌斎胫底霾煌奶幚?,則每一個(gè)允許的輸入值是一個(gè)有效的等價(jià)類,此外還有一個(gè)無效的等價(jià)類(任意一個(gè)不允許的輸入值)。4)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可以劃分出一個(gè)有效的等價(jià)類(符合規(guī)則)和若干個(gè)無效的等價(jià)類(從不同角度違反規(guī)則)。使用等價(jià)類劃分法測試的實(shí)例競猜系統(tǒng)中:投注的金額要求是大于等于10的正整數(shù)。

用等價(jià)類方法設(shè)計(jì)測試用例。輸入條件有效等價(jià)類無效等價(jià)類大于等于10的正整數(shù)數(shù)字(1)大于等于10(2)正數(shù)(3)整數(shù)(4)字符串(5)小數(shù)(6)負(fù)數(shù)(7)小于10的數(shù)(8)空(9)序號用例覆蓋等價(jià)類12346710Ab12.5-208空(1)(2)(3)(4)(5)(6)(7)(8)(9)使用等價(jià)類劃分法測試的實(shí)例(續(xù))實(shí)例

保險(xiǎn)公司計(jì)算保費(fèi)費(fèi)率的程序

某保險(xiǎn)公司的人壽保險(xiǎn)的保費(fèi)計(jì)算方式為:投保額×保險(xiǎn)費(fèi)率其中,保險(xiǎn)費(fèi)率依點(diǎn)數(shù)不同而有別,10點(diǎn)及10點(diǎn)以上保險(xiǎn)費(fèi)率為0.6%,10點(diǎn)以下保險(xiǎn)費(fèi)率為0.1%;而點(diǎn)數(shù)又是由投保人的年齡、性別、婚姻狀況和撫養(yǎng)人數(shù)來決定,具體規(guī)則如下:年齡

性別婚姻撫養(yǎng)人數(shù)

20~39

40~59

其它

M

F

已婚

未婚

1人扣0.5點(diǎn)最多扣3點(diǎn)(四舍五入取整)

6點(diǎn)

4點(diǎn)

2點(diǎn)

5點(diǎn)

3點(diǎn)

3點(diǎn)

5點(diǎn)計(jì)算保費(fèi)費(fèi)率的程序(1)分析程序規(guī)格說明中給出和隱含的對輸入條件的要求,列出等價(jià)類表(包括有效等價(jià)類和無效等價(jià)類)。年齡:一位或兩位非零整數(shù),值的有效范圍為1~99性別:一位英文字符,只能取值‘M’或’F’婚姻:字符,只能取值‘已婚’或‘未婚’撫養(yǎng)人數(shù):空白或一位非零整數(shù)(1~9)點(diǎn)數(shù):一位或兩位非零整數(shù),值的范圍為1~99(2)根據(jù)(1)中的等價(jià)類表,設(shè)計(jì)能覆蓋所有等價(jià)類的測試用例。輸入條件有效等價(jià)類編號無效等價(jià)類編號年齡20~39歲140~59歲21~19歲60~99歲3小于112大于9913性別單個(gè)英文字符4非英文字符14非單個(gè)英文字符15‘M’5除‘M’和‘F’之外的其它單個(gè)字符16‘F’6婚姻已婚7除’已婚’和’未婚’之外的其它字符17未婚8撫養(yǎng)人數(shù)空白9除空白和數(shù)字之外的其它字符181~6人10小于1196~9人11大于9204.2邊界值技術(shù)(boundaryvaluetesting)

黑盒中有邊界值的測試思想,白盒測試中也有。

測試邊界值時(shí)候,一般測試邊界值和剛好超出一個(gè)單位的值。

對于案例7,在測試1和100這兩個(gè)邊界時(shí),構(gòu)造了(1,1)、(100,100)、(0,0)、(101,101)

邊界值分析法就是對輸入或輸出的邊界值進(jìn)行測試的一種黑盒測試方法。通常邊界值分析法是作為對等價(jià)類劃分法的補(bǔ)充,這種情況下,其測試用例來自等價(jià)類的邊界。一、定義4.2邊界值技術(shù)(boundaryvaluetesting)二、與等價(jià)類劃分法的區(qū)別邊界值分析不是從某等價(jià)類中隨便挑一個(gè)作為代表,而是使這個(gè)等價(jià)類的每個(gè)邊界都要作為測試條件。邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測試情況。三、邊界值分析方法的考慮長期的測試工作經(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ù)。通常情況下,軟件測試所包含的邊界檢驗(yàn)有幾種類型:數(shù)字、字符、位置、速度、方位、尺寸、空間等相應(yīng)地,以上類型的邊界值應(yīng)該在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最長、空/滿等情況下常見的邊界值1)對16-bit的整數(shù)而言32767和-32768是邊界2)屏幕上光標(biāo)在最左上、最右下位置3)報(bào)表的第一行和最后一行4)數(shù)組元素的第一個(gè)和最后一個(gè)5)循環(huán)的第0次、第1次和倒數(shù)第2次、最后一次舉例項(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ù)值來作為邊界條件??臻g小于空余空間一點(diǎn)/大于滿空間一點(diǎn)例如在用U盤存儲數(shù)據(jù)時(shí),使用比剩余磁盤空間大一點(diǎn)(幾KB)的文件作為邊界條件。四、邊界值法選擇測試用例的原則(1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界值以及剛剛超過這個(gè)范圍邊界的值作為測試輸入數(shù)據(jù)。(2)如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù)、最小個(gè)數(shù)和比最大個(gè)數(shù)多1個(gè)、比最小個(gè)數(shù)少1個(gè)的數(shù)作為測試數(shù)據(jù)。(3)根據(jù)程序規(guī)格說明的每個(gè)輸出條件,使用原則(1)。(4)根據(jù)程序規(guī)格說明的每個(gè)輸出條件,使用原則(2)。(5)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合(如有序表、順序文件等),則應(yīng)選取集合中的第一個(gè)和最后一個(gè)元素作為測試用例。(6)如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。(7)分析程序規(guī)格說明,找出其它可能的邊界條件。邊界點(diǎn)定義邊界點(diǎn)分為上點(diǎn)、內(nèi)點(diǎn)和離點(diǎn):[1,100]

上點(diǎn):1,100

離點(diǎn):0,101

內(nèi)點(diǎn):50(1,100]

上點(diǎn):1,100

離點(diǎn):2,101

內(nèi)點(diǎn):50(1,100)上點(diǎn):1,100

離點(diǎn):2,99

內(nèi)點(diǎn):50邊界點(diǎn)定義上點(diǎn),就是邊界上的點(diǎn),不管它是開區(qū)間還是閉區(qū)間,就是說,如果該點(diǎn)是封閉的,那上點(diǎn)就在域范圍內(nèi),如果該點(diǎn)是開放的,那上點(diǎn)就在域范圍外;內(nèi)點(diǎn),就是在域范圍內(nèi)的任意一個(gè)點(diǎn);離點(diǎn),就是離上點(diǎn)最近的一個(gè)點(diǎn),如果邊界是封閉的,那離點(diǎn)就是域范圍外離上點(diǎn)最近的點(diǎn),如果邊界是開放的,那離點(diǎn)就是域范圍內(nèi)離上點(diǎn)最近的點(diǎn)。等價(jià)類與邊界值技術(shù)實(shí)例物品的單價(jià)最大不能超過999元。分析:單價(jià)應(yīng)不能小于等于0,不能大于規(guī)定的最大單價(jià)。如果是等價(jià)類法有效等價(jià)類:(0,999]無效等價(jià)類:<=0>999測試用例:{5,-3,1200}結(jié)合邊界值測試用例(以整數(shù)為例)(1)等于零:0(2)比零大一:1(3)最大單價(jià):999(4)比最大單價(jià)大一:1000(5)區(qū)域內(nèi)任一點(diǎn):500上點(diǎn)離點(diǎn)內(nèi)點(diǎn)

舉例:備注文本框最多允許輸入1000個(gè)字符。對此文本框的輸入,按照邊界值分析法設(shè)計(jì)測試用例。分析:最多只能輸入1000個(gè)字符,其中一個(gè)漢字為2個(gè)字符。設(shè)計(jì)測試用例:(1)輸入1000個(gè)字母或符號。(2)輸入1001個(gè)字母或符號。(3)輸入500個(gè)漢字。(4)輸入501個(gè)漢字。(5)輸入250個(gè)漢字,500個(gè)字母或符號。(6)輸入250個(gè)漢字,501個(gè)字母或符號。(7)輸入500個(gè)字母或符號,輸入250個(gè)漢字。(8)輸入501個(gè)字母或符號,輸入250個(gè)漢字。(9)不輸入任何數(shù)據(jù)。(10)輸入一個(gè)字母。(11)輸入一個(gè)漢字。作業(yè)假定一臺ATM機(jī)允許提取的增量為50元,總額為從50元到5000元不等的現(xiàn)金;并要求一次最多取2000元,一天最多取5000元,一天最多取3次。請運(yùn)用等價(jià)類和邊界值的思想編寫測試用例。等價(jià)類表輸入條件有效等價(jià)類編號無效等價(jià)類編號允許提取的增量為50元增量50元1增量不是50元10總額為50元到5000元50~50002<50元11>5000元12一次最多取2000元一次取款<=2000元3一次取>2000元13一天最多取5000元一天取款<=5000元4一天取款>5000元14一天最多取3次一天取款<=3次5一天取款>3次15用例編號覆蓋等價(jià)類輸入數(shù)據(jù)預(yù)期結(jié)果11,2,3,4,5一次取50元取款成功22,3,4,5一次取2000元取款成功33,4,5取三次:2000+2000+1000=5000取款成功410,11一次取20元友好提示“提款的增加為50元”513一次取3000元友好提示“一次不能多于2000”612,14取三次:2000+2000+2000=6000友好提示“一天不能多于5000”715取四次:50+50+50+50友好提示“一天取款不能多于3次”8特殊情況ATM機(jī)余額不足友好提示“ATM機(jī)余額不足”;用戶的提款操作被取消9特殊情況卡內(nèi)余額不足友好提示“卡內(nèi)余額不足”;用戶的提款操作被取消10特殊情況取款的過程中機(jī)器出現(xiàn)故障友好提示“機(jī)器故障”;用戶的提款操作被取消11特殊情況卡被吞掉友好提示“請和工作人員聯(lián)系”;用戶的提款操作被取消4.3決策表法(decisiontablemethod)決策表簡介決策表的優(yōu)點(diǎn)決策表的組成決策表的生成步驟實(shí)例一、決策表簡介決策表的概念:決策表是分析和表達(dá)多邏輯條件下執(zhí)行不同操作情況的工具。在一些數(shù)據(jù)處理問題當(dāng)中,某些操作的實(shí)施依賴于多個(gè)邏輯條件的組合,即:針對不同邏輯條件的組合值,分別執(zhí)行不同的操作。決策表很適合于處理這類問題?!伴喿x指南”決策表規(guī)則選項(xiàng)12345678問題覺得疲倦?YYYYNNNN感興趣嗎?YYNNYYNN糊涂嗎?YNYNYNYN建議重讀√繼續(xù)√跳下一章√√休息√√√√二、決策表的優(yōu)點(diǎn)能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。因此,利用決策表能夠設(shè)計(jì)出完整的測試用例集合。最為嚴(yán)格,最具邏輯性的測試方法。三、決策表的組成決策表通常由以下4部分組成:條件樁—列出問題的所有條件條件項(xiàng)—針對條件樁給出的條件列出所有可能的取值動作樁—列出問題規(guī)定的可能采取的操作動作項(xiàng)—指出在條件項(xiàng)的各組取值情況下應(yīng)采取的動作

條件樁動作樁條件項(xiàng)動作項(xiàng)規(guī)則將任何一個(gè)條件組合的特定取值及相應(yīng)要執(zhí)行的動作稱為一條規(guī)則。在決策表中貫穿條件項(xiàng)和動作項(xiàng)的一列就是一條規(guī)則。決策表示例規(guī)則選項(xiàng)123,4567,8條件:c1c2c3TTTTTFTF-FTTFTFFF-動作:a1a2a3a4√√√√√√√√√條件樁:列出問題的所有條件動作項(xiàng):在條件組合下應(yīng)采取的行動動作樁:列出問題規(guī)定可能采取的行動條件項(xiàng):針對左列條件取值,給出真假值規(guī)則四、決策表的生成若c1、c2、c3都為真,則采取動作a1和a2;若c1、c2都為真,c3為假,則采取動作a1和a3;在c1為真c2為假條件下規(guī)則中的c3條目叫做“不關(guān)心(條件無關(guān)或條件不適用)”條目。將任何一個(gè)條件組合的特定取值及相應(yīng)要執(zhí)行的動作稱為一條規(guī)則,在決策表中貫穿條件項(xiàng)和動作項(xiàng)的一列就是一條規(guī)則。規(guī)則選項(xiàng)123,4567,8條件:c1c2c3TTTTTFTF-FTTFTFFF-動作:a1a2a3a4√√√√√√√√√構(gòu)造決策表的5個(gè)步驟:(1)確定規(guī)則的個(gè)數(shù)。有n個(gè)條件的決策表有2n個(gè)規(guī)則(每個(gè)條件取真、假值)。(2)列出所有的條件樁和動作樁。(3)填入條件項(xiàng)。(4)填入動作項(xiàng),得到初始決策表。(5)簡化決策表,合并相似規(guī)則。若表中有兩條以上規(guī)則具有相同的動作,并且在條件項(xiàng)之間存在極為相似的關(guān)系,便可以合并。合并后的條件項(xiàng)用符號“-”表示,說明執(zhí)行的動作與該條件的取值無關(guān),稱為無關(guān)條件。決策表的簡化簡化是以合并相似規(guī)則為目標(biāo);若表中有兩條以上規(guī)則具有相同的動作,并且在條件項(xiàng)之間存在極為相似的關(guān)系,便可以合并。NYNNYY√√-NY√N(yùn)NN-YY√√N(yùn)-Y√將“閱讀指南”決策表簡化規(guī)則選項(xiàng)1~4567~8問題覺得疲倦嗎YNNN感興趣嗎-YYN糊涂嗎-YN-建議重讀√繼續(xù)√跳下一章√休息√五實(shí)例對于功率大于80馬力的機(jī)器且維修記錄不全的或已經(jīng)運(yùn)行5年以上的機(jī)器應(yīng)予以優(yōu)先的維修處理。這里假定“維修記錄不全”和“優(yōu)先維修處理”有嚴(yán)格的定義。請建立該需求的決策表,并繪制出化簡(合并規(guī)則)后的決策表。條件:1.功率大于80馬力

2.維修記錄不全

3.運(yùn)行5年以上采取的措施:1.優(yōu)先處理2.其它處理1、確定規(guī)則的個(gè)數(shù),經(jīng)分析發(fā)現(xiàn)有3個(gè)條件,每個(gè)條件有兩個(gè)取值,所以有23=8種規(guī)則。2、列出所有的條件樁和動作樁12345678條件功率大于80馬力嗎?11110000維修記錄不全嗎?11001100運(yùn)行5年以上嗎?10101010動作優(yōu)先處理×××××其它處理×××3、建立表格,填寫條件樁和動作樁,并填入條件項(xiàng),動作項(xiàng)。12345678條件功率大于80馬力嗎?YYYYNNNN維修記錄不全嗎?YYNNYYNN運(yùn)行5年以上嗎?YNYNYNYN動作優(yōu)先處理×××××其它處理×××4、以N替換0,Y替換1,得到最初始判定表。12345678條件功率大于80馬力嗎?YYYYNNNN維修記錄不全嗎?YYNNYYNN運(yùn)行5年以上嗎?YNYNYNYN動作優(yōu)先處理×××××其它處理×××5、合并相似規(guī)則12345條件功率大于80馬力嗎?Y-YNN維修記錄不全嗎?Y-NYN運(yùn)行5年以上嗎?-YNNN動作優(yōu)先處理××其它處理×××6、生成測試用例序號輸入輸出1功率大于80馬力,維修記錄不全優(yōu)先處理2運(yùn)行5年以上優(yōu)先處理3功率大于80馬力,,維修記錄全,運(yùn)行不超過5年其它處理4功率小于80馬力,維修記錄不全,運(yùn)行不超過5年其它處理5功率小于80馬力,維修記錄全,運(yùn)行不超過5年其它處理決策表應(yīng)用決策表最突出的優(yōu)點(diǎn)是,能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。利用決策表能夠設(shè)計(jì)出完整的測試用例集合。運(yùn)用決策表設(shè)計(jì)測試用例可以將條件理解為輸入,將動作理解為輸出作業(yè)三角形問題決策表法設(shè)計(jì)測試用例。要求:(1)能判斷其是否為三角形,一般三角形,等腰三角形,等邊三角形。(2)畫出決策表,并簡化。三角形問題決策表輸出的結(jié)果R1={<a,b,c>|有三條邊a,b,c的等邊三角形}R2={<a,b,c>|有三條邊a,b,c的等腰三角形}R3={<a,b,c>|有三條邊a,b,c的一般三角形}R4={<a,b,c>|三條邊a,b,c不構(gòu)成三角形}能構(gòu)成三角形?三角形類型?三角形問題的決策表C1:a,b,c構(gòu)成三角形?NYYYYYYYYC2:a=b嗎?-YYYYNNNNC3:a=c嗎?-YYNNYYNNC4:b=c嗎?-YNYNYNYNA1:非三角形×A2:一般三角形×A3:等腰三角形×××A4:等邊三角形×A5:不可能×××通過增加行動,顯示何時(shí)規(guī)則在邏輯上不可能滿足通過條件選擇,擴(kuò)展決策表的規(guī)模輸入條件的判斷a<b+cb<a+cc<a+b改進(jìn)的三角形問題的決策表C1:a<b+c?NYYYYYYYYYYC2:b<a+c?-NYYYYYYYYYC3:c<a+b?--NYYYYYYYYC4:a=b嗎?---YYYYNNNNC5:a=c嗎?---YYNNYYNNC6:b=c嗎?---YNYNYNYNA1:非三角形×××A2:一般三角形×A3:等腰三角形×××A4:等邊三角形×A5:不可能×××不關(guān)心條目用例IDabc預(yù)期輸出1412非三角形2142非三角形3124非三角形4555等邊三角形5???不可能6???不可能7232等腰三角形8???不可能9322等腰三角形10223等腰三角形11345一般三角形改進(jìn)的三角形問題的測試用例4.4因果圖法(cause-effectgraphs)因果圖法的簡介因果圖因果圖的步驟實(shí)例

一、因果圖法的簡介因果圖法產(chǎn)生的背景:等價(jià)類劃分法和邊界值分析方法都是著重考慮輸入條件,但沒有考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系。這樣雖然各種輸入條件可能出錯(cuò)的情況已經(jīng)測試到了,但多個(gè)輸入條件組合起來可能出錯(cuò)的情況卻被忽視了。如果在測試時(shí)必須考慮輸入條件的各種組合,則可能的組合數(shù)目將是天文數(shù)字,因此必須考慮采用一種適合于描述多種條件的組合、相應(yīng)產(chǎn)生多個(gè)動作的形式來進(jìn)行測試用例的設(shè)計(jì),這就需要利用因果圖(邏輯模型)。

一、因果圖法的簡介所謂的原因:指的是輸入,所謂的結(jié)果就是輸出,因果圖法比較適合條件較多的情況,測試所有的輸入條件的排列組合。因果圖法是基于這樣的一種思想:一些程序的功能可以用決策表(或稱判定表)的形式來表示,并根據(jù)輸入條件的組合情況規(guī)定相應(yīng)的操作。因果圖法的定義:是一種利用圖解法分析輸入的各種組合情況,從而設(shè)計(jì)測試用例的方法,它適合于檢查程序輸入條件的各種組合情況。一、因果圖法的簡介使用因果圖法的優(yōu)點(diǎn):(1)考慮到了輸入情況的各種組合以及各個(gè)輸入情況之間的相互制約關(guān)系。(2)能夠幫助測試人員按照一定的步驟,高效率的開發(fā)測試用例。(3)因果圖法是將自然語言規(guī)格說明轉(zhuǎn)化成形式語言規(guī)格說明的一種嚴(yán)格的方法,可以指出規(guī)格說明存在的不完整性和二義性。案例8獎金計(jì)算軟件某獎金計(jì)算軟件實(shí)現(xiàn)如下功能:該軟件可以計(jì)算某公司的年終獎,該公司員工分為普通員工和管理人員。員工表現(xiàn)分為普通、優(yōu)秀和特殊貢獻(xiàn)(普通和優(yōu)秀員工都可以有特殊貢獻(xiàn),普通員工表現(xiàn)普通和管理人員表現(xiàn)普通拿的工資是不同的。)根據(jù)員工的分類和表現(xiàn),將獎金分為1類獎金,2類獎金…….使用該軟件時(shí),輸入員工的種類和表現(xiàn),就會輸出相應(yīng)的獎金類別。請為該軟件設(shè)計(jì)測試用例。首先要找到所有的輸入條件(原因)和輸出條件(結(jié)果),并為其編號。輸入條件員工類別:普通員工A1、管理人員A2

員工表現(xiàn):普通B1、優(yōu)秀B2、特殊貢獻(xiàn)B3輸出條件獎金類別:1類獎金C1、2類獎金C2…….需要分析輸入條件之間的關(guān)系,根據(jù)需求,A1和A2是互斥的(一個(gè)人不能既是普通員工又是管理人員),B1和B2是互斥的(一個(gè)人不能既表現(xiàn)普通又表現(xiàn)優(yōu)秀),B1和B3,B2和B3可以同時(shí)滿足(普通和優(yōu)秀員工都可以有特殊貢獻(xiàn))。普通員工

A1+B1->C1A1+B2->C2A1+B1+B3->C3A1+B2+B3->C4管理員工

A2+B1->C5A2+B2->C6A2+B1+B3->C7A2+B2+B3->C8根據(jù)對輸入和輸出條件的分析,編寫測試用例。如下表所示。用例編號輸入輸出1普通員工,表現(xiàn)普通1類獎金2普通員工,表現(xiàn)優(yōu)秀2類獎金3普通員工,表現(xiàn)普通,且有特殊貢獻(xiàn)3類獎金4普通員工,表現(xiàn)優(yōu)秀,且有特殊貢獻(xiàn)4類獎金5管理人員,表現(xiàn)普通5類獎金6管理人員,表現(xiàn)優(yōu)秀6類獎金7管理人員,表現(xiàn)普通,且有特殊貢獻(xiàn)7類獎金8管理人員,表現(xiàn)優(yōu)秀,且有特殊貢獻(xiàn)8類獎金二、因果圖因果圖中用來表示4種因果關(guān)系的基本符號:c1e1恒等c1e1非~c1e1或c2c3∨c1e1與c2∧左邊的節(jié)點(diǎn)表示原因右邊的節(jié)點(diǎn)表示結(jié)果二、因果圖因果圖中的4種基本關(guān)系在因果圖的基本符號中,圖中的左結(jié)點(diǎn)ci表示輸入狀態(tài)(或稱原因),右結(jié)點(diǎn)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。或:若c1或c2或c3是1,則e1為1,否則e1為0。與:若c1和c2都是1,則e1為1,否則e1為0。二、因果圖因果圖中的約束在實(shí)際問題中輸入狀態(tài)相互之間、輸出狀態(tài)相互之間可能存在某些依賴關(guān)系,稱為“約束”。對于輸入條件的約束有E、I、O、R四種約束,對于輸出條件的約束只有M約束。E約束(異):a和b中最多有一個(gè)可能為1,即a和b不能同時(shí)為1。I約束(或):a、b、c中至少有一個(gè)必須為1,即a、b、c不能同時(shí)為0。O約束(唯一):a和b必須有一個(gè)且僅有一個(gè)為1。R約束(要求):a是1時(shí),b必須是1,即a為1時(shí),b不能為0。M約束(強(qiáng)制):若結(jié)果a為1,則結(jié)果b強(qiáng)制為0。二、因果圖ab異Eab或Icab唯一ORab要求Mab強(qiáng)制因果圖中用來表示約束關(guān)系的約束符號:三、因果圖的步驟因果圖法最終生成的是決策表。利用因果圖生成測試用例的基本步驟如下:(1)找出所有的輸入條件和輸出條件,并編號。(2)分析軟件規(guī)格說明中的語義,找出原因與結(jié)果之間、原因與原因之間對應(yīng)的關(guān)系,根據(jù)這些關(guān)系畫出因果圖。(3)由于語法或環(huán)境的限制,有些原因與原因之間、原因與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號表明約束或限制條件。(4)把因果圖轉(zhuǎn)換為決策表。(5)根據(jù)決策表中的每一列設(shè)計(jì)測試用例。因果圖法示意圖分析關(guān)聯(lián)/畫因果圖輸入輸出數(shù)據(jù)輸入輸出數(shù)據(jù)之間的關(guān)系畫出原因與結(jié)果不同組合間的關(guān)聯(lián)和約束,形成因果圖轉(zhuǎn)換將因果圖轉(zhuǎn)換為決策表導(dǎo)出測試用例輸出四、實(shí)例1例如,有一個(gè)飲料自動售貨機(jī)(處理單價(jià)為5角錢)的控制處理軟件,它的軟件規(guī)格說明如下:若投入5角錢的硬幣,按下“橙汁”或“啤酒”的按鈕,則相應(yīng)的飲料就送出來。若投入1元錢的硬幣,同樣也是按“橙汁”或“啤酒”的按鈕,則自動售貨機(jī)在送出相應(yīng)飲料的同時(shí)退回5角錢的硬幣。試?yán)L制上述程序的因果圖并轉(zhuǎn)化為相應(yīng)的決策表。步驟1:分析原因和結(jié)果原因結(jié)果

1:投入1元硬幣

21:退還5角硬幣

2:投入5角硬幣

22:送出“橙汁”

3:按下“橙汁”按鈕

23:送出“啤酒”

4:按下“啤酒”按鈕

若投入5角錢的硬幣,按下“橙汁”或“啤酒”的按鈕,則相應(yīng)的飲料就送出來。若投入1元錢的硬幣,同樣也是按“橙汁”或“啤酒”的按鈕,則自動售貨機(jī)在送出相應(yīng)飲料的同時(shí)退回5角錢的硬幣。步驟2:畫出因果圖12341112232221VV已投幣已按鈕∧∧∧

1:投入1元硬幣

2:投入5角硬幣

3:按下“橙汁”按鈕

4:按下“啤酒”按鈕

21:退還5角硬幣

22:送出“橙汁”

23:送出“啤酒”11、12為中間節(jié)點(diǎn)。步驟3:施加相應(yīng)的約束12341112232221VV已投幣已按鈕∧∧∧投入1元硬幣投入5角硬幣按下“橙汁”按鈕按下“啤酒”按鈕退還5角硬幣送出“橙汁”送出“啤酒”EE步驟4將因果圖轉(zhuǎn)換為決策表

步驟5生成測試用例序號輸入期望輸出1投入1元硬幣,按下橙汁退還5角硬幣,送出橙汁2投入1元硬幣,按下啤酒退還5角硬幣,送出啤酒3投入1元硬幣提示未選擇飲料4投入5角硬幣,按下橙汁送出橙汁5投入5角硬幣,按下啤酒送出橙汁6投入5角硬幣提示未選擇飲料7按下橙汁提示未投幣8按下啤酒提示未投幣作業(yè)用因果圖法分析“象棋游戲走馬”,設(shè)計(jì)測試用例。如果落點(diǎn)在棋盤外,則不移動棋子。如果落點(diǎn)與起點(diǎn)不構(gòu)成日字型,則不移動棋子。如果在落點(diǎn)方向的鄰近交叉點(diǎn)有棋子(絆馬腿),則不移動棋子。如果落點(diǎn)處有自己方棋子,則不移動棋子。如果不屬于1~3條,且落點(diǎn)處無棋子,則移動棋子。如果不屬于1~3條,且落點(diǎn)處為對方棋子(非老將),則移動棋子并除去對方棋子。如果不屬于1~3條,且落點(diǎn)處為對方老將,則移動棋子,并提示戰(zhàn)勝對方,游戲結(jié)束。步驟1:分析原因和結(jié)果根據(jù)題意,原因和結(jié)果如下:

結(jié)果:21、不移動棋子;22、移動棋子;23、移動棋子,并除去對方棋子;24、移動棋子,并提示戰(zhàn)勝對方,結(jié)束游戲。原因:1、落點(diǎn)在棋盤外;2、落點(diǎn)與起點(diǎn)不構(gòu)成日字;3、落點(diǎn)處有自己方棋子;4、落點(diǎn)方向的鄰近交叉點(diǎn)有棋子(絆馬腿);5、落點(diǎn)處無棋子;6、落點(diǎn)處為對方棋子(非老將);7、落點(diǎn)處為對方老將。

1、如果落點(diǎn)在棋盤外(1),則不移動棋子(21);2、如果落點(diǎn)與起點(diǎn)不構(gòu)成日字型(2),則不移動棋子(21);3、如果落點(diǎn)處有自己方棋子(3),則不移動棋子(21);4、如果在落點(diǎn)方向的鄰近交叉點(diǎn)有棋子(絆馬腿)(4),則不移動棋子(21);5、如果不屬于1-4條,且落點(diǎn)處無棋子(5),則移動棋子(22);6、如果不屬于1-4條,且落點(diǎn)處為對方棋子(非老將)(6),則移動棋子并除去對方棋子(23);7、如果不屬于1-4條,且落點(diǎn)處為對方老將(7),則移動棋子,并提示戰(zhàn)勝對方,游戲結(jié)束(24)。進(jìn)一步分析123421∨11~~~~∧222324567∧∧∧1、如果落點(diǎn)在棋盤外(1),則不移動棋子(21);2、如果落點(diǎn)與起點(diǎn)不構(gòu)成日字型(2),則不移動棋子(21);3、如果落點(diǎn)處有自己方棋子(3),則不移動棋子(21);4、如果在落點(diǎn)方向的鄰近交叉點(diǎn)有棋子(絆馬腿)(4),則不移動棋子(21);15、如果不屬于1-4條,且落點(diǎn)處無棋子(5),則移動棋子(22);6、如果不屬于1-4條,且落點(diǎn)處為對方棋子(非老將)(6),則移動棋子并除去對方棋子(23);7、如果不屬于1-4條,且落點(diǎn)處為對方老將(7),則移動棋子,并提示戰(zhàn)勝對方,游戲結(jié)束(24)。步驟2:畫出因果圖123421∨11~~~~∧222324567∧∧∧1步驟3:施加約束條件E原因:1、落點(diǎn)在棋盤外;2、落點(diǎn)與起點(diǎn)不構(gòu)成日字;3、落點(diǎn)處有自己方棋子;4、落點(diǎn)方向的鄰近交叉點(diǎn)有棋子(絆馬腿);5、落點(diǎn)處無棋子;6、落點(diǎn)處為對方棋子(非老將);7、落點(diǎn)處為對方老將。

步驟4將因果圖轉(zhuǎn)換為決策表通過中間節(jié)點(diǎn)將用例的判定表簡化為兩個(gè)小表,減少工作量。12345678910111213141516原因11111111100000000211110000111100003110011001100110041010101010101010結(jié)果110000000000012111111111111012345678910111213141516原因111111111100000000511110000111100006110011001100110071010101010101010結(jié)果2210000002301000002400100001、3、5、6、7不能同時(shí)為112345678910111213141516原因11111111100000000211110000111100003110011001100110041010101010101010結(jié)果110000000000012111111111111012345678910111213141516原因111111111100000000511110000111100006110011001100110071010101010101010結(jié)果221000000230100000240010000序號輸入期望輸出1落點(diǎn)處在棋盤內(nèi),構(gòu)成日字,無絆馬腿,落點(diǎn)處無棋子移動棋子2落點(diǎn)處在棋盤內(nèi),構(gòu)成日字,無絆馬腿,落點(diǎn)處為對方棋子移動棋子,并除去對方棋子3落點(diǎn)處在棋盤內(nèi),構(gòu)成日字,無絆馬腿,落點(diǎn)處為對方老將移動棋子,并提示戰(zhàn)勝對方,結(jié)束游戲構(gòu)造測試用例12345678910111213141516原因11111111100000000211110000111100003110011001100110041010101010101010結(jié)果110000000000012111111111111012345678910111213141516原因111111111100000000511110000111100006110011001100110071010101010101010結(jié)果221000000230100000240010000原因1,3,5,6,7存在異約束,也就是只能有一個(gè)為1,這里5已經(jīng)為1,則第一個(gè)表中不能取原因1,3為1的用例,得到3個(gè)用例。序號輸入期望輸出4不構(gòu)成日字,絆馬腿,落點(diǎn)處無棋子不能移動5不構(gòu)成日字,落點(diǎn)處無棋子不能移動6絆馬腿,落點(diǎn)處無棋子不能移動12345678910111213141516原因11111111100000000211110000111100003110011001100110041010101010101010結(jié)果110000000000012111111111111012345678910111213141516原因111111111100000000511110000111100006110011001100110071010101010101010結(jié)果221000000230100000240010000原因1,3,5,6,7存在異約束,也就是只能有一個(gè)為1,這里6已經(jīng)為1,則第一個(gè)表中不能取原因1,3為1的用例,得到3個(gè)用例。序號輸入期望輸出7不構(gòu)成日字,絆馬腿,落點(diǎn)處為對方棋子不能移動8不構(gòu)成日字,落點(diǎn)處為對方棋子不能移動9絆馬腿,落點(diǎn)處為對方棋子不能移動12345678910111213141516原因11111111100000000211110000111100003110011001100110041010101010101010結(jié)果110000000000012111111111111012345678910111213141516原因111111111100000000511110000111100006110011001100110071010101010101010結(jié)果221000000230100000240010000原因1,3,5,6,7存在異約束,也就是只能有一個(gè)為1,這里7已經(jīng)為1,則第一個(gè)表中不能取原因1,3為1的用例,得到3個(gè)用例。序號輸入期望輸出10不構(gòu)成日字,絆馬腿,落點(diǎn)處為對方老將不能移動11不構(gòu)成日字,落點(diǎn)處為對方老將不能移動12絆馬腿,落點(diǎn)處為對方老將不能移動12345678910111213141516原因11111111100000000211110000111100003110011001100110041010101010101010結(jié)果110000000000012111111111111012345678910111213141516原因111111111100000000511110000111100006110011001100110071010101010101010結(jié)果221000000230100000240010000原因1,3,5,6,7存在異約束,也就是只能有一個(gè)為1且必須有一個(gè)為1,表1中取原因1或3為1的取值,得到8個(gè)測試用例。序號輸入期望輸出13落點(diǎn)在棋盤外,不構(gòu)成日字,絆馬腿不能移動14落點(diǎn)在棋盤外,不構(gòu)成日字不能移動15落點(diǎn)在棋盤外,絆馬腿不能移動16落點(diǎn)在棋盤外不能移動17不構(gòu)成日字,落點(diǎn)有自方棋子,絆馬腿不能移動18不構(gòu)成日字,落點(diǎn)有自方棋子不能移動19落點(diǎn)有自方棋子,絆馬腿不能移動20落點(diǎn)有自方棋子不能移動序號輸入期望輸出1落點(diǎn)處在棋盤內(nèi),構(gòu)成日字,無絆馬腿,落點(diǎn)處無棋子移動棋子2落點(diǎn)處在棋盤內(nèi),構(gòu)成日字,無絆馬腿,落點(diǎn)處為對方棋子移動棋子,并除去對方棋子3落點(diǎn)處在棋盤內(nèi),構(gòu)成日字,無絆馬腿,落點(diǎn)處為對方老將移動棋子,并提示戰(zhàn)勝對方,結(jié)束游戲4不構(gòu)成日字,絆馬腿,落點(diǎn)處無棋子不能移動5不構(gòu)成日字,落點(diǎn)處無棋子不能移動6絆馬腿,落點(diǎn)處無棋子不能移動7不構(gòu)成日字,絆馬腿,落點(diǎn)處為對方棋子不能移動8不構(gòu)成日字,落點(diǎn)處為對方棋子不能移動9絆馬腿,落點(diǎn)處為對方棋子不能移動10不構(gòu)成日字,絆馬腿,落點(diǎn)處為對方老將不能移動11不構(gòu)成日字,落點(diǎn)處為對方老將不能移動12絆馬腿,落點(diǎn)處為對方老將不能移動13落點(diǎn)在棋盤外,不構(gòu)成日字,絆馬腿不能移動14落點(diǎn)在棋盤外,不構(gòu)成日字不能移動15落點(diǎn)在棋盤外,絆馬腿不能移動16落點(diǎn)在棋盤外不能移動17不構(gòu)成日字,落點(diǎn)有自方棋子,絆馬腿不能移動18不構(gòu)成日字,落點(diǎn)有自方棋子不能移動19落點(diǎn)有自方棋子,絆馬腿不能移動20落點(diǎn)有自方棋子不能移動實(shí)例2用因果圖法測試以下程序。程序的規(guī)格說明要求:輸入的第一個(gè)字符必須是#或*,第二個(gè)字符必須是一個(gè)數(shù)字,此情況下進(jìn)行文件的修改;如果第一個(gè)字符不是#或*,則給出信息N,如果第二個(gè)字符不是數(shù)字,則給出信息M。解題步驟:(1)分析程序的規(guī)格說明,列出原因和結(jié)果。(2)找出原因與結(jié)果之間的因果關(guān)系、原因與原因之間的約束關(guān)系,畫出因果圖。(3)將因果圖轉(zhuǎn)換成決策表。(4)根據(jù)(3)中的決策表,設(shè)計(jì)測試用例的輸入數(shù)據(jù)和預(yù)期輸出。(1)分析程序規(guī)格說明中的原因和結(jié)果:(2)畫出因果圖(編號為10的中間結(jié)點(diǎn)是導(dǎo)出結(jié)果的進(jìn)一步原因):原因結(jié)果c1:第一個(gè)字符是#e1:給出信息Nc2:第一個(gè)字符是*e2:修改文件c3:第二個(gè)字符是一個(gè)數(shù)字e3:給出信息Mc1c2c3e110e2e3~∨E~∧(3)將因果圖轉(zhuǎn)換成如下所示的決策表:12345678條件:C1C2C310111110101110010111010100100000動作:e1e2e3不可能√√√√√√√√√測試用例#3#A*6*BA1GT規(guī)則選項(xiàng)(4)根據(jù)決策表中的每一列設(shè)計(jì)測試用例:測試用例編號輸入數(shù)據(jù)預(yù)期輸出1#3修改文件2#A給出信息M3*6修改文件4*B給出信息M5A1給出信息N6GT給出信息N和信息M實(shí)例3

三角形問題

繪制三角問題的因果圖并轉(zhuǎn)化為相應(yīng)的決策表。步驟1:分析原因和結(jié)果根據(jù)題意,原因和結(jié)果如下:

原因結(jié)果1:A<B+C21:不能構(gòu)成三角形2:B<A+C22:等邊三角形3:C<A+B23:等腰三角形4:A=B24:一般三角形5:A=C6:B=C

步驟2:畫出因果圖1221102422~∧654311∧12∨23~∧∧∧~~∨原因結(jié)果1:A<B+C21:不能構(gòu)成三角形2:B<A+C22:等邊三角形3:C<A+B23:等腰三角形4:A=B24:一般三角形5:A=C6:B=C

5454施加相應(yīng)的約束1221102422~∧654311∧12∨23~∧∧∧~~∨原因結(jié)果1:A<B+C21:不能構(gòu)成三角形2:B<A+C22:等邊三角形3:C<A+B23:等腰三角形4:A=B24:一般三角形5:A=C6:B=C

5454M

對于條件4:A=B,5:A=C,6:B=C,不可能兩個(gè)成立,另一個(gè)不成立的約束如何添加?

重回步驟1:分析原因和結(jié)果根據(jù)題意,原因和結(jié)果如下:

原因結(jié)果1:A<B+C21:不能構(gòu)成三角形2:B<A+C22:等邊三角形3:C<A+B23:等腰三角形4:A=B24:一般三角形5:A=C25:不可能6:B=C

步驟2:畫出因果圖10、11、12、13、14、15為中間節(jié)點(diǎn)。65413∧142515∧∧~~~∨1221102422∧654311∧12∨23~∧∧∧~~∨5454M~步驟3:將因果圖轉(zhuǎn)換為決策表

1:a<b+c?FTTTTTTTTTT2:b<a+c?-FTTTTTTTTT3:C<a+b?--FTTTTTTTT4:a=b?---TTTTFFFF5:a=c?---TTFFTTFF6:b=c?---TFTFTFTF21:非三角形√√√24:一般三角形√23:等腰三角形√√√22:等邊三角形√25:不可能√√√步驟4:根據(jù)決策表設(shè)計(jì)測試用例用例IDabc預(yù)期輸出DT1412非三角形DT2142非三角形DT3124非三角形DT4555等邊三角形DT5???不可能DT6???不可能DT7223等腰三角形DT8???不可能DT9232等腰三角形DT10322等腰三角形DT11345一般三角形4.5場景法場景法簡介場景法步驟場景法實(shí)例1場景法實(shí)例2場景法簡介我們申請一個(gè)項(xiàng)目,需先提交審批單據(jù),再由部門經(jīng)理審批,審核通過后由總經(jīng)理來最終審批,如果部門經(jīng)理審核不通過,就直接退回。每個(gè)事件觸發(fā)時(shí)的情景便形成了場景。而同一事件不同的觸發(fā)順序和處理結(jié)果形成事件流。這種在軟件設(shè)計(jì)方面的思想也可以引入到軟件測試中,可以比較生動地描繪出事件觸發(fā)時(shí)的情景,有利于測試設(shè)計(jì)者設(shè)計(jì)測試用例,同時(shí)使測試用例更容易理解和執(zhí)行。場景法簡介場景法一般包括基本流和備選流,如圖所示。從一個(gè)流程開始,圖中經(jīng)過用例的每條路徑都可以用基本流和備選流來表示。直黑線表示基本流,是經(jīng)過用例的最簡單的路徑。備選流用不同的色彩表示,一個(gè)備選流可能從基本流開始,在某個(gè)特定條件下執(zhí)行,然后重新加入基本流中(如備選流1和3);也可能起源于另一個(gè)備選流(如備選流2),或者終止用例而不再重新加入到基本流(如備選流2和4)。場景的生成考慮用例從開始到結(jié)束可能的所有基本流和備選流的組合,都可能組成場景。例如,右圖的場景包括:基本流;基本流,備選流1;基本流,備選流1,備選流2;基本流,備選流3;基本流,備選流3,備選流1;基本流,備選流3,備選流1,備選流2;基本流,備選流4;基本流,備選流3,備選流4;……設(shè)計(jì)步驟場景法的設(shè)計(jì)步驟如下:1)根據(jù)說明,描述出程序的基本流及各項(xiàng)備選流。2)根據(jù)基本流和各項(xiàng)備選流生成不同的場景。3)對每一個(gè)場景生成相應(yīng)的測試用例。4)對生成的所有測試用例重新審查,去掉多余的測試用例,確定測試用例后,為每一個(gè)測試用例確定測試數(shù)據(jù)值。制作測試場景的要點(diǎn)對業(yè)務(wù)的理解對用戶需求的把握從用戶的角度出發(fā)進(jìn)行設(shè)計(jì)實(shí)例一用戶在網(wǎng)上書店訂購書籍的過程為用戶登錄到網(wǎng)站后,選擇書箱,選好后進(jìn)行訂購,這時(shí)把所需圖書放進(jìn)購物車,在進(jìn)行結(jié)賬的時(shí)候,用戶需要登錄自己注冊的賬號,登錄成功后,進(jìn)行結(jié)賬并生成訂單,整個(gè)購物過程結(jié)束。第一步:確定基本流和備選流基本流:打開在線網(wǎng)站選購書籍輸入賬號密碼登錄在線支付生成訂單,成功購物備選流1:貨物缺貨備選流2:賬號不存在備選流3:密碼不正確備選流4:未選購書籍備選流5:賬戶余額不足打開在線網(wǎng)站選購書籍輸入賬號密碼登錄支付購物成功賬戶不存在密碼不正確貨物缺貨未選購書籍賬戶余額不足備選流2備選流3備選流1備選流4備選流5第二步:根據(jù)基本流和各項(xiàng)備選流生成不同的場景場景1:基本流場景2:基本流,備選流1場景3:基本流,備選流2場景4:基本流,備選流3場景5:基本流,備選流4場景6:基本流,備選流5第三步:對每一個(gè)場景生成相應(yīng)的測試用例V(有效)用于表明這個(gè)條件必須是VALID(有效的)才可執(zhí)行基本流

I(無效)用于表明這種條件下將激活所需備選流

n/a(不適用)表明這個(gè)條件不適用于測試用例用例場景/條件選購書籍賬號密碼用戶賬號余額預(yù)期結(jié)果1場景1:成功購物VVVV支付成功,生成訂單2場景2:貨物缺貨IVVn/a提示貨物無庫存,需重新選購,返回基本流步驟23場景3:賬號不存在VIn/an/a提示賬號不存在,返回基本流步驟34場景4:密碼錯(cuò)誤VVIn/a提示密碼不正確,返回基本流步驟35場景5:未選購書籍IVVn/a提示未選購書籍,返回基本流步驟26場景6:余額不足VVVI提示余額不足,請充值第四步:為每一個(gè)測試用例確定測試數(shù)據(jù)值假如存在一個(gè)合法賬號用戶名為user,密碼為123,賬戶余額為60;在線網(wǎng)站有書籍《數(shù)據(jù)結(jié)構(gòu)》,價(jià)格50,數(shù)量50;《算法》,價(jià)格50,缺貨;《C++》70,數(shù)量10。用例場景/條件選購書籍賬號密碼賬戶余額操作預(yù)期結(jié)果1場景1:成功購物數(shù)據(jù)結(jié)構(gòu)user12360打開系統(tǒng),選購書籍《數(shù)據(jù)結(jié)構(gòu)》,登錄,支付支付成功,生成訂單,賬戶余額減少502場景2:貨物缺貨算法user12310打開系統(tǒng),選購書籍《算法》提示貨物無庫存,需重新選購,3場景3:賬號不存在數(shù)據(jù)結(jié)構(gòu)aaa(假設(shè)此賬號不存在)n/an/a打開系統(tǒng),選購書籍《數(shù)據(jù)結(jié)構(gòu)》,登錄提示賬號不存在4場景4:密碼錯(cuò)誤數(shù)據(jù)結(jié)構(gòu)user345n/a打開系統(tǒng),選購書籍《數(shù)據(jù)結(jié)構(gòu)》,登錄提示密碼不正確5場景5:未選購書籍user12310打開系統(tǒng),未選購書籍,登錄,支付提示提示未選購書籍,需重新選購6場景6:余額不足C++user12310打開系統(tǒng),選購書籍《C++》,登錄,支付提示余額不足,請充值實(shí)例二運(yùn)用場景法進(jìn)行ATM提款的測試用例設(shè)計(jì)。驗(yàn)證銀行卡插卡輸入密碼驗(yàn)證賬戶和密碼選擇取款輸入金額授權(quán)出鈔打印收據(jù)退出銀行卡卡無效賬戶不存在密碼錯(cuò)誤(3次以內(nèi))密碼錯(cuò)誤(超過3次)ATM已無現(xiàn)金ATM現(xiàn)金不足賬戶余額不足超過取款額度備選流1備選流2備選流3備選流4備選流5備選流6備選流7備選流8第一步:確定基本流和備選流流程序號描述基本流步驟0開端:ATM處于準(zhǔn)備就緒狀態(tài)步驟1客戶將銀行卡插入ATM機(jī)讀卡機(jī)步驟2驗(yàn)證銀行卡,檢查是否屬于可接收的銀行卡步驟3輸入密碼步驟4驗(yàn)證賬戶和密碼步驟5ATM機(jī)顯示在本機(jī)可用的各種選項(xiàng),選擇“取款”步驟6輸入金額步驟7授權(quán)--ATM通過將卡ID,密碼,金額以及賬戶信息作為一筆交易發(fā)給銀行系統(tǒng)來啟動驗(yàn)證過程,并且更新賬戶金額。步驟8出鈔,用戶提取現(xiàn)金步驟9打印收據(jù)步驟10退出銀行卡步驟11ATM返回就緒狀態(tài)備選流1-銀行卡無效在基本流步驟2中-驗(yàn)證銀行卡,如果卡是無效的,則卡被退回,同時(shí)會通知相關(guān)消息,用例終止。備選流2-帳戶不存在在基本流步驟4中-驗(yàn)證帳戶和密碼,如果銀行系統(tǒng)返回的代碼表明找不到該帳戶或禁止從該帳戶中提款,則卡被退回,ATM顯示適當(dāng)?shù)南?,用例終止。備選流3–密碼

有誤(3次以內(nèi))在基本流步驟4中-驗(yàn)證帳戶和密碼,客戶有三次機(jī)會輸入密碼。

如果密碼

輸入有誤,ATM將顯示適當(dāng)?shù)南ⅲ蝗绻€存在輸入機(jī)會,則此事件流在步驟3-輸入密碼

處重新加入基本流。備選流4–密碼

有誤(超過3次)如果最后一次嘗試輸入的密碼仍然錯(cuò)誤,則該卡將被ATM機(jī)保留,同時(shí)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論