某科技大學(xué)軟件測(cè)試技術(shù)
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,Software Testing,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,軟件測(cè)試技術(shù),問(wèn)題引入,例:,某個(gè)軟件需求文檔中有這樣的說(shuō)明:第一列字符必須是,A,或,B,,第二列字符必須是一個(gè)數(shù)字,在此情況下進(jìn)行文件的修改。但如果第一列字符不正確,則給出信息,L,;如果第二列字符不是數(shù)字,則給出信息,M,。,邊界值測(cè)試,等價(jià)類測(cè)試,4.3,基于判定表的測(cè)試,判定表,基于判定表的測(cè)試,案例:三角形問(wèn)題,,NextDate,問(wèn)題,練習(xí):隔一日問(wèn)題,4.3.1,判定表,判定表的原理,判定表的組成,判定,表建立的步驟,1.,判定表的原理,判定表,判定表(,Decision Table,),又叫決策表,判定表是分析和表達(dá)多邏輯條件下執(zhí)行不同操作的工具。,在程序設(shè)計(jì)發(fā)展的初期,判定表被當(dāng)作編寫(xiě)程序的輔助工具。,2.,判定表的組成,條件樁(,Condition Stub,),列出問(wèn)題的所有條件,動(dòng)作樁(,Action Stub,),列出可能采取的操作,條件項(xiàng)(,Condition Entity,),列出條件樁的取值,動(dòng)作項(xiàng)(,Action Entity,),列出條件項(xiàng)各種取值下應(yīng)該采取的動(dòng)作,判定表的組成,規(guī)則,任何一個(gè)條件組合的特定取值及其相應(yīng)要執(zhí)行的操作稱為規(guī)則;,在判定表中貫穿,條件項(xiàng)和動(dòng)作項(xiàng),的一列就是一條規(guī)則;,判定表中列出多少組條件取值,也就有多少條規(guī)則,即條件項(xiàng)和動(dòng)作項(xiàng)有多少列。,規(guī)則示例:三角形問(wèn)題,規(guī)則(,續(xù),),規(guī)則合并,規(guī)則合并就是判定表的,簡(jiǎn)化,。,有兩條或多條規(guī)則具有,相同的動(dòng)作,,并且其條件項(xiàng)之間存在著極為,相似的關(guān)系,,就可以將規(guī)則合并。,(,1,)兩條規(guī)則合并成一條,條件項(xiàng)“,”,表示與取值無(wú)關(guān)。,條件項(xiàng)“,”,在邏輯上包含其它的條件。,(,2,)兩條規(guī)則的進(jìn)一步合并,3.,判定表建立步驟,根據(jù)軟件規(guī)格說(shuō)明,列出所有的條件樁和動(dòng)作樁;,確定規(guī)則的個(gè)數(shù);,假如有,n,個(gè)條件,每個(gè)條件有兩個(gè)取值(,0,1,),則有,2,n,種規(guī)則;,填入條件項(xiàng);,填入動(dòng)作項(xiàng),得到初始決策表;,簡(jiǎn)化,合并相似規(guī)則(相同動(dòng)作)。,例:,維修機(jī)器問(wèn)題,問(wèn)題描述:,“,對(duì)于功率大于,50,馬力的機(jī)器,并且維修記錄不全或已運(yùn)行,10,年以上的機(jī)器,應(yīng)給予優(yōu)先的維修處理,”,請(qǐng)建立決策表。,例:,維修機(jī)器問(wèn)題(續(xù)),(,1,)列出所有的條件樁和動(dòng)作樁,條件樁,C1,:功率大于,50,馬力嗎?,C2,:維修記錄不全嗎?,C3,:運(yùn)行超過(guò),10,年嗎?,動(dòng)作樁,A1,:進(jìn)行優(yōu)先處理,A2,:作其他處理,例:,維修機(jī)器問(wèn)題(續(xù)),(,2,)確定規(guī)則個(gè)數(shù),輸入條件個(gè)數(shù):,3,;,每個(gè)條件的取值:,“,是,”,或,“,否,”,;,規(guī)則個(gè)數(shù),:,2*2*2=8,;,功率大于,50,馬力嗎,維修記錄不全嗎,運(yùn)行超過(guò),10,年嗎,例:,維修機(jī)器問(wèn)題(續(xù)),(,3,)填入條件項(xiàng);,利用集合的笛卡爾積計(jì)算條件項(xiàng)的取值,例:,維修機(jī)器問(wèn)題(續(xù)),(,4,)填入動(dòng)作項(xiàng);,1,,,2,合并,,5,,,7,合并,,6,,,8,合并,例:,維修機(jī)器問(wèn)題(續(xù)),(,5,)化簡(jiǎn);,4.3.2,基于判定表的測(cè)試,根據(jù)輸入輸出繪制判定表;,設(shè)計(jì)測(cè)試用例覆蓋判定表中每條規(guī)則;,4.3.3,案例:三角形問(wèn)題,問(wèn)題描述,輸入三個(gè)正整數(shù),a,、,b,、,c,,分別作為三角形的三條邊,通過(guò)程序判斷三條邊是否能構(gòu)成三角形?如果能構(gòu)成三角形,判斷三角形的類型(等邊三角形、等腰三角形、一般三角形)。,請(qǐng)用基于判定表的方法設(shè)計(jì)測(cè)試用例。,(,1,)條件樁,C1,:,a,b,c,構(gòu)成三角形?,C2,:,a=b?,C3,:,a=c,?,C4,:,b=c,?,(,2,)規(guī)則數(shù),共有四個(gè)條件,每個(gè)條件的取值為“是”或“否”,因此有,2,4,=16,條規(guī)則。,一、設(shè)計(jì)判定表,(,3,)動(dòng)作樁,A1,:非三角形;,A2,:不等邊三角形;,A3,:等腰三角形;,A4,:等邊三角形;,A5,:不可能;,(,4,)判定表,注意:,條件的選擇可以大大擴(kuò)展判定表的規(guī)模;,例如,a,b,c,構(gòu)成三角形嗎?可以擴(kuò)展為三個(gè)條件:,a b+c?,b a+c?,c a+b?,條件樁修改后的判定表,a=b,a=c,bc,二、設(shè)計(jì)測(cè)試用例,課堂練習(xí),隔一天的日期,程序有三個(gè)輸入變量,month,、,day,、,year,,分別作為輸入日期的月份、日、年份,通過(guò)程序可以輸出該輸入日期在日歷上隔一天的日期。例如,輸入為,2004,年,11,月,29,日,則該程序的輸出為,2000,年,12,月,1,日。,課后練習(xí),登陸功能說(shuō)明書(shū):(用戶輸入和密碼輸入),1,)管理員用戶名為“,admin”,密碼為“,123456”,,正常登陸,2,)用戶名和密碼輸入為空,提示“用戶和密碼不允許為空”,在用戶名和密碼非空的情況下:,3,)要求用戶名必須輸入字母,否則提示“輸入非法”,4,)要求密碼必須輸入數(shù)字,否則提示“輸入非法”,在輸入合法的情況下:,5,)用戶名錯(cuò)誤,提示“用戶名和密碼輸入錯(cuò)誤”,用戶名和密碼清空,6,)用戶名正確,密碼錯(cuò)誤,提示“用戶名和密碼輸入錯(cuò)誤”,用戶名保留,密碼清空,4.3.4,案例:,NextDate,函數(shù),問(wèn)題描述,程序有三個(gè)輸入變量,month,、,day,、,year,,并且滿足:,1month12,、,1day31,、,1900 year 2050,。它們分別作為輸入日期的月份、日、年份,通過(guò)程序可以輸出該輸入日期在日歷上下一天的日期。例如,輸入為,2005,年,11,月,29,日,則該程序的輸出為,2005,年,11,月,30,日。,第一次嘗試,M1=,月份:每月有,30,天,M2=,月份:每月有,31,天,M3=,月份:此月是,2,月,D1=,日期:,1,日期,28,D2=,日期:日期,=29,D3=,日期:日期,=30,D4=,日期:日期,=31,Y1=,年:年是閏年,Y2=,年:年是平年,有,256,條規(guī)則的第一次嘗試,年變量對(duì)應(yīng)的等價(jià)類收縮為表中的一個(gè)條件,第二次嘗試(重點(diǎn)考慮閏年),M1=,月份:每月有,30,天,M2=,月份:每月有,31,天,M3=,月份:此月是,2,月,D1=,日期:,1,日期,28,D2=,日期:日期,=29,D3=,日期:日期,=30,D4=,日期:日期,=31,Y1=,年:年是平年,Y2=,年:年是閏年,第三次嘗試(關(guān)注日期和月份),M1=,月份:每月有,30,天,M2=,月份:每月有,31,天,,12,月除外,M3=,月份:此月是,12,月,M4=,月份:此月是,2,月,D1=,日期:,1,日期,27,D2=,日期:日期,=28,D3=,日期:日期,=29,D4=,日期:日期,=30,D5=,日期:日期,=31,Y1=,年:年是閏年,Y2=,年:年不是閏年,NextDate,函數(shù)的判定表,每月,30,天,每月,31,天,12,月除外,續(xù),此月是,12,月,此月是,2,月,此年是閏年,NextDate,函數(shù)的精簡(jiǎn)判定表,續(xù),NextDate,函數(shù)的測(cè)試用例,指導(dǎo)方針和觀察,判定表技術(shù)適用的應(yīng)用程序的特征:,if-then-else,邏輯很突出,輸入變量之間存在邏輯關(guān)系,涉及輸入變量子集的計(jì)算,輸入與輸出之間存在因果關(guān)系,很高的,McCabe,圈復(fù)雜度,判定表的優(yōu)點(diǎn),能把復(fù)雜的問(wèn)題按各種可能的情況一一列舉出來(lái),簡(jiǎn)明而易于理解,可避免遺漏,判定表的缺點(diǎn),不能表達(dá)重復(fù)執(zhí)行的動(dòng)作,例如循環(huán)結(jié)構(gòu),判定表不能很好地伸縮,有,n,個(gè)條件的決策表有,2,n,個(gè)規(guī)則。,解決方法,使用擴(kuò)展條目判定表、代數(shù)簡(jiǎn)化表,將大表“分解”為小表,查找條件項(xiàng)的判定表式,小 結(jié),判定表(決策表)測(cè)試的原理,三角形問(wèn)題的測(cè)試用例,NextDate,函數(shù)測(cè)試用例,判定表測(cè)試的討論,作業(yè):,教材,87,頁(yè):,9,題,、,10,題,、,11,題,問(wèn)題與討論,