




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
黑盒測(cè)試動(dòng)態(tài)測(cè)試無(wú)論是白盒測(cè)試還是黑盒測(cè)試,有一個(gè)共同的特點(diǎn):就是對(duì)被測(cè)軟件S,設(shè)S的輸入空間為D,測(cè)試就是選取或產(chǎn)生D的一個(gè)子集CD,C稱為測(cè)試數(shù)據(jù)。所不同的是選擇C的方式不同。對(duì)一般的軟件來(lái)講,D都是非常大的,以至窮舉測(cè)試是不可能的,否則,是可以驗(yàn)證一個(gè)軟件的正確性的。黑盒測(cè)試是根據(jù)程序的外部特性、也就是說(shuō)程序的功能產(chǎn)生測(cè)試用例的。理論上講,采用黑盒測(cè)試技術(shù)并不需要提供程序的源代碼,在有些情況下,由于用戶不能或者不愿意提供源代碼的情況下,黑盒測(cè)試是必須的方法。黑盒測(cè)試方法包括等價(jià)類劃分法、因果圖法、正交實(shí)驗(yàn)設(shè)計(jì)法、邊值分析法、判定表驅(qū)動(dòng)法等。這些方法大都來(lái)源于其它不同的學(xué)科理論和工程實(shí)踐,并不是軟件測(cè)試技術(shù)所獨(dú)有的,但在軟件測(cè)試技術(shù)中卻能發(fā)揮很好的效果。3.1等價(jià)類劃分法1.等價(jià)類的概念定義3.1:等價(jià)類。所謂等價(jià)類是指ED,對(duì)eE,若用e作為測(cè)試用例測(cè)試程序發(fā)現(xiàn)不了某類功能上明顯的錯(cuò)誤(例如,對(duì)沒(méi)有實(shí)現(xiàn)的功能等),那么對(duì)e’E,若用e’作為測(cè)試用例測(cè)試程序也發(fā)現(xiàn)不了這種錯(cuò)誤。也就是說(shuō),E中所有的元素對(duì)揭露此類錯(cuò)誤而言是等價(jià)的。等價(jià)類測(cè)試實(shí)際上是將D劃分成n個(gè)子集E1,E2,…,En,那么,測(cè)試時(shí)只需在每個(gè)Ei中隨機(jī)的選擇一個(gè)測(cè)試用例即可。定義3.2:有效等價(jià)類。有效等價(jià)類是指程序規(guī)格說(shuō)明書(shū)中規(guī)定的數(shù)據(jù)的集合。定義3.3:無(wú)效等價(jià)類。無(wú)效等價(jià)類是指超出程序規(guī)格說(shuō)明書(shū)中規(guī)定的數(shù)據(jù)的集合。有效等價(jià)類是可以理解的,而無(wú)效等價(jià)類雖然不是規(guī)格說(shuō)明中所規(guī)定的數(shù)據(jù),但又是實(shí)際使用時(shí)可能碰到的。例如,一個(gè)程序的輸入空間為[1,10],如果僅對(duì)該數(shù)據(jù)進(jìn)行測(cè)試,而當(dāng)輸入11或0時(shí)就出現(xiàn)錯(cuò)誤,這顯然不是用戶或編程者所希望的,這種軟件也無(wú)法使用。因?yàn)橛脩粼谑褂密浖r(shí),有意或無(wú)意輸入非法的數(shù)據(jù)是經(jīng)常的事情。但是要注意,無(wú)效等價(jià)類也不是沒(méi)有限制的,一般來(lái)講,無(wú)效等價(jià)類和有效等價(jià)類應(yīng)用相同的數(shù)據(jù)類型。否則,無(wú)法對(duì)無(wú)效等價(jià)類進(jìn)行確定。當(dāng)然用戶使用軟件時(shí)輸入的數(shù)據(jù)可以是五花八門的,輸入一個(gè)不相同數(shù)據(jù)類型的數(shù)據(jù)也不是什么罕見(jiàn)的事情,但這里是不可能考慮這些問(wèn)題的。2.如何確定等價(jià)類一般來(lái)講,等價(jià)類劃分首先要分析所有可能的輸入情況,然后,按照下列規(guī)則對(duì)其進(jìn)行劃分。(1)如果輸入條件中規(guī)定了取值的范圍,則可以確定一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。例如,輸入條件中規(guī)定了x是1到10的整數(shù),則有效等價(jià)類是[1,10],而無(wú)效等價(jià)類是x0的整數(shù)和x11的整數(shù)。(2)如果輸入條件中規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的情況下,則可以確定一個(gè)有效等價(jià)類即該集合本身;一個(gè)無(wú)效等價(jià)類即該集合的非。例如,一般的語(yǔ)言都規(guī)定:標(biāo)識(shí)符是以字母開(kāi)頭。則有效等價(jià)類是以字母開(kāi)頭的元素的集合,而無(wú)效等價(jià)類是以非字母開(kāi)頭的元素的集合。(3)如果輸入條件是一個(gè)BOOLEAN變量,則可以確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。(4)如果規(guī)定了輸入數(shù)據(jù)是一組值(假設(shè)n個(gè)),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確定n個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。(5)如果規(guī)定了輸入數(shù)據(jù)必須遵守規(guī)則的前提下,可確立一個(gè)等價(jià)類和若干個(gè)無(wú)效等價(jià)類(從不同的角度違反規(guī)則)。(6)在確知已劃分的等價(jià)類中各元素在程序處理中的方式是不同的,則應(yīng)將等價(jià)類進(jìn)一步劃分成更小的等價(jià)類。。例如,假設(shè)有效等價(jià)類是:以字母開(kāi)頭的元素的集合,而在該集合中,有些是程序規(guī)定的關(guān)鍵字,如:int、float、long、char,等,則此時(shí)可將該等價(jià)類劃分成兩個(gè)等價(jià)類,等價(jià)類1是關(guān)鍵字集合{int、float、long、char,…},等價(jià)類2是以字母開(kāi)頭的、且不在等價(jià)類1的元素的集合。3.如何確定測(cè)試用例(1)設(shè)計(jì)一個(gè)測(cè)試用例,使其盡可能多的覆蓋尚未覆蓋的有效等價(jià)類。重復(fù)這一步驟,直到所有的等價(jià)類都被覆蓋為止。(2)設(shè)計(jì)一個(gè)無(wú)效等價(jià)類,使其只覆蓋一個(gè)無(wú)效等價(jià)類。重復(fù)這一步驟,直到所有的無(wú)效等價(jià)類都被覆蓋為止。每次覆蓋盡可能多的有效等價(jià)類,是因?yàn)槊總€(gè)有效等價(jià)類中的元素對(duì)錯(cuò)誤檢測(cè)的效果是一樣的,越少越省事,但效果是相同的。而每次只覆蓋一個(gè)無(wú)效等價(jià)類,是因?yàn)槿绻粋€(gè)測(cè)試用例可以檢測(cè)多個(gè)錯(cuò)誤,則如果是覆蓋多個(gè)無(wú)效等價(jià)類,則有可能只檢測(cè)一個(gè)而忽略其它的錯(cuò)誤。例如等價(jià)類1是{科技書(shū)的集合},等價(jià)類2是{10x50},則無(wú)效等價(jià)類1是{非科技書(shū)的集合}、無(wú)效等價(jià)類2是{x10}、無(wú)效等價(jià)類2是{50x},如果選擇的覆蓋無(wú)效等價(jià)類的測(cè)試用例是小說(shuō)5,則可能只發(fā)現(xiàn)書(shū)類型的錯(cuò)誤而忽略了冊(cè)數(shù)錯(cuò)誤。4.應(yīng)用舉例【例3.1】對(duì)【例2.19】給出的判斷三角形類型的程序,根據(jù)題意,設(shè)計(jì)的有效等價(jià)類和無(wú)效等價(jià)類如表3.1所示。表3.1【例3.1】的等價(jià)類有效等價(jià)類編號(hào)無(wú)效等價(jià)類編號(hào)輸入條件輸入三個(gè)數(shù)整數(shù)1一邊為非整數(shù)a為非整數(shù)b為非整數(shù)c為非整數(shù)12131415161718兩邊為非整數(shù)a,b為非整數(shù)b,c為非整數(shù)c,a為非整數(shù)三邊為非整數(shù)a,b,c為非整數(shù)三個(gè)數(shù)2只給一邊只給a只給b只給c19202122232425只給兩邊只給a,b只給b,c只給c,a給出三邊以上非零數(shù)3一邊為0a=0b=0c=0262728兩邊為0a=b=0b=c=0c=a=0293031三邊為0a=b=c=032正數(shù)4一邊<0a<0b<0c<033343536373839兩邊<0a<0,b<0b<0,c<0c<0,a<0三邊<0a<0,b<0,c<0輸出條件構(gòu)成一般三角形a+b>cb+c>aa+c>b5a+b<ca+b=c4041424344456b+c<ab+c=a7c+c<ba+c=b構(gòu)成等腰三角形a=b且a+b>cb=c且b+c>ac=a且a+c>b8910構(gòu)成等邊三角形a=b=c11(1)覆蓋有效等價(jià)類的測(cè)試用例。如表3.2所示。表3.2覆蓋有效等價(jià)類的測(cè)試用例abc覆蓋的等價(jià)類號(hào)碼3454454555444441717,817,917,1017,11(2)覆蓋無(wú)效等價(jià)類的測(cè)試用例。如表3.3所示。表3.3覆蓋無(wú)效等價(jià)類的測(cè)試用例abc覆蓋的等價(jià)類號(hào)碼abc覆蓋的等價(jià)類號(hào)碼2.54534.55344.5121314005300040000293031323.54.5534.55.53.545.55.54.55.515161718-3453-4534-5333435345192021-3-45-34-53-4-5-3-4-5363738394455345622232425315325311321404142430453053402627281423414445【例3.2】對(duì)一元二次方程ax2+bx+c=0的求根程序,應(yīng)用等價(jià)類劃分技術(shù)進(jìn)行測(cè)試。根據(jù)題意,設(shè)計(jì)的有效等價(jià)類和無(wú)效等價(jià)類如表3.4所示。表3.4【例3.2】的等價(jià)類有效等價(jià)類編號(hào)無(wú)效等價(jià)類編號(hào)輸入條件輸入三個(gè)數(shù)實(shí)數(shù)1一個(gè)為非實(shí)數(shù)a為非實(shí)數(shù)b為非實(shí)數(shù)c為非實(shí)數(shù)891011121314兩個(gè)為非實(shí)數(shù)a,b為非實(shí)數(shù)b,c為非實(shí)數(shù)c,a為非實(shí)數(shù)三個(gè)為非實(shí)數(shù)a,b,c為非實(shí)數(shù)三個(gè)數(shù)2只給一個(gè)只給a只給b只給c15161718192021只給兩個(gè)只給a,b只給b,c只給c,a給出三個(gè)以上一個(gè)不給22輸出條件兩個(gè)實(shí)根b2-4ac>03一個(gè)實(shí)根b2-4ac=0a=0,b045兩個(gè)虛根b2-4ac<067無(wú)根a=0,b=0(1)覆蓋有效等價(jià)類的測(cè)試用例。如表3.5所示。表3.5覆蓋有效等價(jià)類的測(cè)試用例abc覆蓋的等價(jià)類號(hào)碼2652420550041312,412,512,6(2)覆蓋無(wú)效等價(jià)類的測(cè)試用例(x是一個(gè)字符),如表3.6所示。表3.6覆蓋無(wú)效等價(jià)類的測(cè)試用例 abc覆蓋的等價(jià)類號(hào)碼abc覆蓋的等價(jià)類號(hào)碼x453x534x8910456151617xx5x4x4xxxxx111213145566456718192021225.常見(jiàn)的等價(jià)類測(cè)試形式上述給出的等價(jià)類測(cè)試方法是最一般的形式。在實(shí)際使用等價(jià)類方法測(cè)試時(shí),要考慮等價(jià)類測(cè)試的程度,不同的程度測(cè)試的效果是不同的。究竟選取那一種要根據(jù)具體的問(wèn)題而定。弱等價(jià)類:是指選取的測(cè)試用例要覆蓋每一個(gè)有效等價(jià)類。強(qiáng)等價(jià)類:是指每個(gè)有效等價(jià)類要選擇至少一個(gè)測(cè)試用例。(3)弱健壯等價(jià)類:是指選取的測(cè)試用例要覆蓋每一個(gè)有效等價(jià)類和無(wú)效等價(jià)類,但不能同時(shí)覆蓋兩個(gè)無(wú)效等價(jià)類。強(qiáng)健壯等價(jià)類:每個(gè)有效等價(jià)類和無(wú)效等價(jià)類都至少要選擇一個(gè)測(cè)試用例?!纠?.3】假設(shè)ax1d,劃分三個(gè)等價(jià)類區(qū)間:[a,b),[b,c),[c,d]。ex2g,劃分兩個(gè)等價(jià)類區(qū)間:[e,f],[f,g]。則用弱等價(jià)類選取測(cè)試用例如圖3.1所示(表示在此區(qū)域內(nèi)選擇測(cè)試用例)。用強(qiáng)等價(jià)類選取測(cè)試用例如圖3.2所示。用弱健壯等價(jià)類選取測(cè)試用例如圖3.3所示。用強(qiáng)健壯等價(jià)類選取測(cè)試用例如圖3.4所示。6.等價(jià)類測(cè)試的指導(dǎo)方針使用等價(jià)類劃分測(cè)試時(shí),應(yīng)注意下列幾個(gè)問(wèn)題:(1)如果實(shí)現(xiàn)的語(yǔ)言是強(qiáng)類型語(yǔ)言(無(wú)效值輸入會(huì)引起系統(tǒng)運(yùn)行時(shí)出錯(cuò)),則沒(méi)有必要使用健壯等價(jià)類測(cè)試。(2)如果錯(cuò)誤輸入檢查非常重要,則應(yīng)進(jìn)行強(qiáng)健壯等價(jià)類測(cè)試。(3)如果輸入數(shù)據(jù)以離散區(qū)間或集合的形式定義,則等價(jià)類測(cè)試是合適的,當(dāng)然也適用于變量值越界會(huì)造成故障的系統(tǒng)。(4)在發(fā)現(xiàn)合適的等價(jià)關(guān)系之前,可能需要多次嘗試。如果不能肯定存在明顯或自然的等價(jià)關(guān)系,最好對(duì)任何合理的實(shí)現(xiàn)進(jìn)行再次預(yù)測(cè)?!纠?.4】作者參與鑒定的兩個(gè)大型工程應(yīng)用軟件采用等價(jià)類測(cè)試的效果。(1)軟件=1\*ROMANI包括兩個(gè)子系統(tǒng),每個(gè)子系統(tǒng)包括四模塊,軟件交付后,由于使用過(guò)程中出現(xiàn)問(wèn)題,該軟件交付第三方測(cè)試。根據(jù)軟件的特點(diǎn),測(cè)試過(guò)程中分別采用等價(jià)類測(cè)試技術(shù),共產(chǎn)生169個(gè)測(cè)試用例,共檢測(cè)出23個(gè)嚴(yán)重和比較嚴(yán)重的錯(cuò)誤,糾正了這些錯(cuò)誤之后,軟件執(zhí)行了三次重大任務(wù)尚沒(méi)出現(xiàn)問(wèn)題。(2)軟件=2\*ROMANII包括五個(gè)子系統(tǒng),軟件在交付用戶前由第三方實(shí)施測(cè)試,根據(jù)該軟件的特點(diǎn)采用等價(jià)類測(cè)試技術(shù)。每個(gè)子系統(tǒng)的測(cè)試結(jié)果為:子系統(tǒng)1:設(shè)計(jì)測(cè)試用例52個(gè),測(cè)試發(fā)現(xiàn)12個(gè)錯(cuò)誤。子系統(tǒng)2:設(shè)計(jì)測(cè)試用例37個(gè),測(cè)試發(fā)現(xiàn)13個(gè)錯(cuò)誤。子系統(tǒng)3:設(shè)計(jì)測(cè)試用例128個(gè),測(cè)試發(fā)現(xiàn)8個(gè)錯(cuò)誤。子系統(tǒng)4:設(shè)計(jì)測(cè)試用例84個(gè),測(cè)試發(fā)現(xiàn)14個(gè)錯(cuò)誤。子系統(tǒng)5:設(shè)計(jì)測(cè)試用例118個(gè),測(cè)試發(fā)現(xiàn)3個(gè)錯(cuò)誤。在修改了發(fā)現(xiàn)的錯(cuò)誤后,該系統(tǒng)多次應(yīng)用于重大任務(wù),尚無(wú)發(fā)現(xiàn)問(wèn)題。3.2因果圖法如果程序的輸入之間沒(méi)有什么關(guān)系,采用等價(jià)類劃分法是一種比較有效的方法。但如果輸入之間有關(guān)系,例如約束關(guān)系、組合關(guān)系等,則采用等價(jià)類劃分法是難以描述的,測(cè)試效果也難以保障。因果圖法正是在此背景下提出來(lái)的。1.因果圖的概念(1)原因—結(jié)果圖:這是描述輸入輸出之間關(guān)系的因果圖,共有四類圖形,如圖3.5所示。圖中輸入狀態(tài)ci表示原因,輸出狀態(tài)ei表示結(jié)果。ci和ei均可取值0或1,0表示狀態(tài)不出現(xiàn),1表示狀態(tài)出現(xiàn)。(2)約束圖:在實(shí)際問(wèn)題中,輸入狀態(tài)之間還可能存在某些依賴關(guān)系,稱之為約束。例如,某些輸入條件不可能同時(shí)出現(xiàn)。這些關(guān)系,對(duì)測(cè)試來(lái)說(shuō)是非常重要的。多個(gè)輸出之間可能有強(qiáng)制的約束關(guān)系,如圖3.6所示。各個(gè)符號(hào)的意義為:E(Exclusive,異或):表示只能1個(gè)為1;I(Inclusive,包含):表示至少1個(gè)為1;O(OneandOnly,唯一):只有一個(gè)為1;R(Require,包含):表示a是1,則b必須是1;M(Masks,屏蔽):表示a是1,則b必須是0。2.測(cè)試用例的生成步驟根據(jù)SRS,把程序劃分成可以工作的片段;確定規(guī)格中的原因和結(jié)果;分析規(guī)格,以確定原因和結(jié)果之間的邏輯關(guān)系,并用因果圖的方式表示出來(lái);確定因果圖中的各個(gè)約束;將因果圖轉(zhuǎn)化為判定表;從判定表中產(chǎn)生測(cè)試用例。3.應(yīng)用舉例【例3.5】某個(gè)軟件規(guī)格說(shuō)明書(shū)中規(guī)定:第一列字符必須是A或B,第二列字符必須是一個(gè)數(shù)字,在此情況下進(jìn)行文件的修改,但如果第一列字符不正確,則給出信息L;如果第二列字符不正確,則給出信息M。原因:1——第一列字符是A;2——第一列字符是B;3——第二列字符是一數(shù)字。結(jié)果:21——修改文件;22——給出信息L;23——給出信息M。分析可知,輸入的三個(gè)狀態(tài)只有六種取值。因?yàn)闋顟B(tài)1和2不能同時(shí)為1,為此,可以形成表如3.7所示:表3.7判定表及測(cè)試用例123456原因111000020011003101010結(jié)果210000112210100023010101測(cè)試用例A3AMB5BNC2DYA5A7B4B!X6P;上述給出的表格也稱判定表,在本章中將有詳細(xì)介紹。從本例中可以看出,通過(guò)因果圖和判定表,可以非常容易的找出測(cè)試用例?!纠?.6】FORTRAN語(yǔ)言的語(yǔ)法規(guī)定是非常嚴(yán)格的。在一個(gè)程序行中,第15列是標(biāo)號(hào)區(qū),第6列是續(xù)行區(qū)。如果前6列是空白,則執(zhí)行動(dòng)作A。如果15列有標(biāo)號(hào)且是正確的標(biāo)號(hào),則執(zhí)行動(dòng)作B后再執(zhí)行動(dòng)作A,反之,若是錯(cuò)誤的標(biāo)號(hào),則執(zhí)行動(dòng)作C。如果第6列不是空白且是字母C,則執(zhí)行動(dòng)作D后再執(zhí)行A,反之,執(zhí)行動(dòng)作C。原因:1——前6列是空白;2——前6列不是空白;3——15列是正確的標(biāo)號(hào);4——第6列是字母C。結(jié)果:A——正確執(zhí)行;B——處理標(biāo)號(hào);C——錯(cuò)誤處理;D——處理續(xù)行。根據(jù)圖3.8,可以列出表3.8。表3.8判定表及測(cè)試用例134原因110030104001結(jié)果A111B010C011D001測(cè)試用例15列第6列15列第6列15列第6列空白空白xyz123空白空白空白空白C?3.3判定表法判定表的作用在上一節(jié)中已經(jīng)介紹,實(shí)際上,判定表并不是因果圖法的一個(gè)輔助工具,在一個(gè)程序中,如果輸入輸出比較多,輸入之間、輸出之間相互制約的條件比較多,在這種情況下應(yīng)用判定表是更合適的,它可以更清楚的表達(dá)它們之間的各種復(fù)雜關(guān)系。1.判定表的概念判定表是把作為條件的所有輸入的各種組合值以及對(duì)應(yīng)輸出值都羅列出來(lái)形成的表格稱為判定表?!纠?.7】可以把本書(shū)的閱讀指南形成一個(gè)判定表。條件:會(huì)編程序嗎?熟悉軟件工程嗎?對(duì)書(shū)中的內(nèi)容感興趣嗎?能看懂嗎?動(dòng)作:學(xué)習(xí)C語(yǔ)言;學(xué)習(xí)軟件工程;繼續(xù)閱讀;放棄學(xué)習(xí)。這里,輸入有4個(gè),共有24=16種組合。在表的條件中,用Y表示肯定、N否定,用-表示無(wú)關(guān)項(xiàng)。在動(dòng)作中,用表示完成相應(yīng)的動(dòng)作,用空白表示沒(méi)有動(dòng)作。如表3.9所示。表3.9【例3.7】的判定表12345678910111213141516條件會(huì)編程序嗎?NNNNNNNNYYYYYYYY熟悉軟件工程嗎?NNNNYYYYNNNNYYYY對(duì)書(shū)中的內(nèi)容感興趣嗎?NNYYNNYYNNYYNNYY能看懂嗎?NYNYNYNYNYNYNYNY動(dòng)作學(xué)習(xí)C語(yǔ)言學(xué)習(xí)軟件工程繼續(xù)閱讀放棄學(xué)習(xí)2.判定表的化簡(jiǎn)對(duì)于n個(gè)條件的判定表,對(duì)應(yīng)的狀態(tài)有2n個(gè),但n比較大時(shí),這是非常繁瑣的。實(shí)際上,正如表3.9所給出的,有些項(xiàng)是可以簡(jiǎn)化的。判定表的化簡(jiǎn)包括下列兩個(gè)方面:(1)合并:如果一個(gè)條件項(xiàng)(表中一列中的條件值)和另外一個(gè)條件項(xiàng)所產(chǎn)生的動(dòng)作是相同的、且兩個(gè)條件項(xiàng)對(duì)應(yīng)的每一行的值只有一個(gè)是不同的,則可以將其合并。合并的項(xiàng)除了不同值變成無(wú)關(guān)項(xiàng)外,其余的保持不變。(2)包含:如果兩個(gè)條件項(xiàng)的動(dòng)作是相同的,對(duì)任意條件1中任意一個(gè)值和條件2中對(duì)應(yīng)的值,如果滿足:1)如果條件1的值是Y,則條件2中的值也是Y。如果條件1的值是N,則條件2中的值也是N。2)如果條件1的值是-,則條件2中的值是Y、N、-。則稱條件1包含條件2。此時(shí),條件2可以散去。重復(fù)1)和2)即可得到精簡(jiǎn)的判定表。實(shí)際上。判定表的化簡(jiǎn)和BOOLEAN表達(dá)式的化簡(jiǎn)是基本是一樣的?!纠?.8】在表3.9中,經(jīng)合并化簡(jiǎn)后如表3.10所示。表3.10【例3.7】的化簡(jiǎn)判定表123456789包括原來(lái)的列152436878911101213141516條件會(huì)編程序嗎?NNNNNYYYY熟悉軟件工程嗎?-NNYYNNYY對(duì)書(shū)中的內(nèi)容感興趣嗎?N-Y-Y--NY能看懂嗎?NYNY-NY--動(dòng)作學(xué)習(xí)C語(yǔ)言學(xué)習(xí)軟件工程繼續(xù)閱讀放棄學(xué)習(xí)3.選擇測(cè)試用例這部分工作是十分簡(jiǎn)單的,在簡(jiǎn)化的或最后的判定表給出之后,只要選擇適當(dāng)?shù)妮斎耄古卸ū砻恳涣械妮斎霔l件值都得到滿足亦可。4.方法評(píng)述(1)對(duì)于沒(méi)有實(shí)現(xiàn)的功能、或功能上有明顯錯(cuò)誤的程序,用等價(jià)類、因果圖和判定表等測(cè)試方法是比較有效的。例如在【例3.2】中,如果程序中沒(méi)有對(duì)a=0這種情況進(jìn)行處理,用該方法是很容易檢測(cè)出來(lái)的。因此,該技術(shù)可用于軟件的驗(yàn)收測(cè)試之中。(2)如果程序比較大,或涉及的變量、或功能比較多,用這種方法需要花費(fèi)大量的人工時(shí)間。上述例子可以看出,這種方法是難以自動(dòng)化的,完全是靠人的智慧。因此,它也要求測(cè)試人員必須具備相當(dāng)?shù)乃?。?)黑盒測(cè)試共同的特點(diǎn)是對(duì)程序的一些“小”錯(cuò)誤,例如關(guān)系運(yùn)算符漂移:變成、變成、或反之等,此類;此類錯(cuò)誤的檢測(cè)是比較困難的。3.4邊界值測(cè)試方法任何一個(gè)程序都可以看作是一個(gè)函數(shù),程序的輸入構(gòu)成函數(shù)的定義域,程序的輸出構(gòu)成函數(shù)的值域。人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,大量的軟件故障往往發(fā)生在定義域或輸出域的邊界上,而不是在其內(nèi)部。美國(guó)陸軍(CECCOM)對(duì)其軟件進(jìn)行了研究,驚奇地發(fā)現(xiàn),大量缺陷都是和邊界有關(guān)的缺陷。邊界條件邊界條件是一些特殊情況。一般來(lái)說(shuō),在條件C下,軟件執(zhí)行一種操作,對(duì)給任意小的值,C+就會(huì)執(zhí)行另外的操作,則C就是一個(gè)邊界。對(duì)給定的軟件,有顯式給出邊界的,也有隱式給出的。但對(duì)任何軟件來(lái)說(shuō),根據(jù)軟件的SRS或根據(jù)源代碼,都可以給出該軟件的邊界。邊界值分析測(cè)試為便于理解,這里討論一個(gè)有兩個(gè)變量x1和x2的程序P。假設(shè)輸入變量x1和x2的在下列范圍內(nèi)取值。ax1b,cx2d。程序P的輸入空間如圖3.9所示。邊界值測(cè)試的基本原理是故障往往出現(xiàn)在輸入變量的邊界值附近。例如“”錯(cuò)寫成“<”,計(jì)數(shù)器少記一次等。邊界值分析基于在可靠性理論中稱為“單故障”的假設(shè),也就是說(shuō),軟件的失效是由單故障引起的。邊界值分析利用輸入變量的最小值(min)、稍大于最小值(min+)、域內(nèi)任意值(nom)、稍小于最小值(max-)、最大值(max)來(lái)設(shè)計(jì)測(cè)試用例。圖3.9給出的例子的邊界值分析測(cè)試用例為:{<x1nom,x2min>,<x1nom,x2min+>,<x1nom,x2nom>,<x1nom,x2max>,<x1nom,x2max->,<x1min,x2nom>,<x1min,x2nom>,<x1max,x2nom>,<x1max-,x2nom>}對(duì)于一個(gè)含有n個(gè)變量的程序,保留其中一個(gè)變量,讓其余變量取正常值,這個(gè)被保留的變量依次取值min,min+,nom,max-和max,對(duì)每個(gè)變量重復(fù)進(jìn)行,則邊界值分析會(huì)產(chǎn)生4n+1個(gè)測(cè)試用例。邊界值分析的健壯性測(cè)試健壯性測(cè)試是邊界值分析測(cè)試的一種擴(kuò)展,變量除了考慮min,min+,nom,max-和max外,還要考慮min-和max+,如圖3.11所示?!纠?.9】三角形問(wèn)題的邊界值分析測(cè)試用例設(shè)計(jì)。假設(shè)邊長(zhǎng)為整數(shù),邊長(zhǎng)下界為1,上界為100。表3.11給出了其邊界值分析測(cè)試用例。表3.11邊界值分析測(cè)試用例測(cè)試用例abc預(yù)期輸出Test1Test2Test3Test4Test550505050505050505050135099100等腰三角形等腰三角形等腰三角形等腰三角形非三角形Test6Test7Test8Test950505050129910050505050等腰三角形等腰三角形等腰三角形非三角形Test10Test11Test12Test1312991005050505050505050等腰三角形等腰三角形等腰三角形非三角形【例3.10】某人事管理系統(tǒng)包括的內(nèi)容是:姓名、性別、籍貫、出生日期、學(xué)歷、身高、德才表現(xiàn)等。采用邊值測(cè)試技術(shù)如表3.12所示。表3.12邊界值分析測(cè)試用例輸入項(xiàng)描述邊值姓名20個(gè)字符0個(gè)字符、1個(gè)字符、20個(gè)字符、21個(gè)字符性別1個(gè)字符0個(gè)字符、1個(gè)字符、2個(gè)字符籍貫20個(gè)字符0個(gè)字符、1個(gè)字符、20個(gè)字符、21個(gè)字符出生日期年4位數(shù)0位數(shù)、1位數(shù)、4位數(shù)、5位數(shù)月120、1、12、13日310、1、31、32學(xué)歷2個(gè)字符0個(gè)字符、1個(gè)字符、2個(gè)字符、3個(gè)字符身高三位數(shù)0位數(shù)、1位數(shù)、3位數(shù)、4位數(shù)德才表現(xiàn)2000個(gè)字符0個(gè)字符、1個(gè)字符、2000個(gè)字符、2001個(gè)字符根據(jù)邊值的分析,可以很容易的產(chǎn)生測(cè)試用例。讀者可以自行練習(xí)。3.5正交實(shí)驗(yàn)設(shè)計(jì)法利用等價(jià)類劃分法、因果圖法和判定表法對(duì)軟件進(jìn)行測(cè)試時(shí),即使對(duì)中小規(guī)模的軟件,給出的等價(jià)類、因果圖、判定表可能都比較龐大,測(cè)試用例的數(shù)目驚人,給軟件測(cè)試工作帶來(lái)沉重的負(fù)擔(dān)。為有效合理地減少測(cè)試的代價(jià),可以利用在生產(chǎn)活動(dòng)中行之有效的正交實(shí)驗(yàn)設(shè)計(jì)法進(jìn)行測(cè)試用例的設(shè)計(jì)。所謂正交實(shí)驗(yàn)設(shè)計(jì)法,是從大量的實(shí)驗(yàn)點(diǎn)中挑選適量的、有代表性的點(diǎn),應(yīng)用伽羅瓦(Galois)理論導(dǎo)出的“正交表”,合理地安排實(shí)驗(yàn)的一種科學(xué)的實(shí)驗(yàn)設(shè)計(jì)方法。利用這種方法,可使所有的因子和水平在實(shí)驗(yàn)中均勻地分配與搭配,有規(guī)律的變化。在正交實(shí)驗(yàn)設(shè)計(jì)法中,通常把判斷實(shí)驗(yàn)結(jié)果優(yōu)劣的標(biāo)準(zhǔn)叫做實(shí)驗(yàn)的指標(biāo),把有可能影響實(shí)驗(yàn)指標(biāo)的條件稱為因子,而影響實(shí)驗(yàn)因子的稱為因子的水平(或狀態(tài))。在進(jìn)行實(shí)驗(yàn)優(yōu)化設(shè)計(jì)時(shí),為了完成明確的實(shí)驗(yàn)?zāi)康?,必須有合理的?shí)驗(yàn)指標(biāo),加上合理的基準(zhǔn)來(lái)挑選實(shí)驗(yàn)因子及相應(yīng)的水平。提取軟件的因子和水平的方法利用正交實(shí)驗(yàn)設(shè)計(jì)法來(lái)設(shè)計(jì)軟件的測(cè)試用例時(shí),首先要從軟件的規(guī)格說(shuō)明書(shū)找出其影響其功能實(shí)現(xiàn)的操作對(duì)象和外部因素,把它們當(dāng)作因子,而把各個(gè)因子的取值當(dāng)作狀態(tài),據(jù)此可以造出二元的因素分析表。然后,利用正交表進(jìn)行各因子的狀態(tài)組合,構(gòu)造出有效的測(cè)試用例,這樣得出的測(cè)試用例集中,測(cè)試用例的數(shù)目會(huì)大大減少。提取因子的方法是:需要對(duì)軟件規(guī)格說(shuō)明書(shū)中的功能進(jìn)行劃分,把整體概要性的功能進(jìn)行層層分解,形成具體的、相對(duì)獨(dú)立的基本功能集、或因子集,同時(shí)要確定各個(gè)因子的權(quán)值。然后,由用戶會(huì)同測(cè)試人員根據(jù)軟件規(guī)格說(shuō)明書(shū),確定各個(gè)因子的取值,即因子的狀態(tài)。由于有些因子的取值范圍較廣,必須進(jìn)行采樣取值,在各個(gè)不同的取值區(qū)間上取典型值與邊界值,并重點(diǎn)選取某些有特定意義的取值點(diǎn)。因素分析表的生成設(shè)S是被測(cè)軟件,{F1,F(xiàn)2,…,F(xiàn)n}是S提取的功能因子,由前趣的分析可知,如果n比較大,生成的測(cè)試數(shù)目會(huì)太多。由于每個(gè)因子及其狀態(tài)在S中所起的作用可能大不一樣,因此必須對(duì)眾多的因子及其狀態(tài)加以選擇。方法是:可根據(jù)各個(gè)因子及其狀態(tài)作用的大小、出現(xiàn)頻率的大小以及測(cè)試的需要,確定權(quán)值的大小。必要時(shí),可以刪除一部分權(quán)值較小,或者說(shuō)重要性較小的因子或狀態(tài),使最后生成的測(cè)試用例的數(shù)目控制在允許的范圍之內(nèi)。在不同測(cè)試階段,對(duì)因子及狀態(tài)的權(quán)值會(huì)有不同的要求。例如,初次測(cè)試時(shí),可以根據(jù)被測(cè)模塊的大小,確定是否有必要進(jìn)行加權(quán),在進(jìn)行子系統(tǒng)測(cè)試時(shí),由于被測(cè)對(duì)象的規(guī)??隙ㄒl(fā)生變化,因此因子及狀態(tài)也要隨著發(fā)生變化。在確定了各個(gè)因子及狀態(tài)的權(quán)值之后,可按下列方法進(jìn)行加權(quán)篩選。設(shè)Fi的權(quán)值為i,令i是Fi在總因子中所占的比例,則:接著選擇篩選標(biāo)準(zhǔn)。可以采用作為權(quán)值標(biāo)準(zhǔn)。當(dāng)時(shí),則刪掉該因子或狀態(tài),否則予以保留。如果剩余的因子或狀態(tài)仍然很多,則可以對(duì)剩余的因子或狀態(tài)重新選擇篩選標(biāo)準(zhǔn),并重復(fù)上述步驟,直到滿足要求為止。【例3.11】對(duì)某個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng),其因子——狀態(tài)表如表3.13所示。表3.13【例3.11】的因子——狀態(tài)表因子狀態(tài)ABCDEF系統(tǒng)管理數(shù)據(jù)編輯數(shù)據(jù)管理數(shù)據(jù)統(tǒng)計(jì)報(bào)表窗口管理123456權(quán)限設(shè)置系統(tǒng)維護(hù)插入記錄更新記錄刪除記錄插入字段更新字段刪除字段數(shù)據(jù)備份數(shù)據(jù)校驗(yàn)查詢求和求均值求方差總體報(bào)表部分報(bào)表最大化最少化恢復(fù)多窗口經(jīng)過(guò)加權(quán)篩選,得到精簡(jiǎn)的因子——狀態(tài)表如表3.14所示。表3.14【例3.11】精簡(jiǎn)的因子——狀態(tài)表因子狀態(tài)ABCD系統(tǒng)管理數(shù)據(jù)編輯數(shù)據(jù)管理數(shù)據(jù)統(tǒng)計(jì)123權(quán)限設(shè)置系統(tǒng)維護(hù)插入記錄刪除記錄刪除字段數(shù)據(jù)備份數(shù)據(jù)校驗(yàn)查詢求和3.構(gòu)造正交表正交表的推導(dǎo)過(guò)程是依據(jù)近世代數(shù)中的伽羅瓦理論,可以從一般的數(shù)理統(tǒng)計(jì)書(shū)中查到表3.15的正交表。表中的每一列表示一個(gè)因子,每一行表示一個(gè)項(xiàng)目,正交表的生成規(guī)律是:1)項(xiàng)目數(shù)=2因子數(shù)。2)設(shè)因子數(shù)為m:當(dāng)m=2i-1時(shí),項(xiàng)目數(shù)為2i-1(i2);當(dāng)2i-1-1<m2i-1時(shí),項(xiàng)目數(shù)是2i;表3.15正交表示例因子項(xiàng)目123456789101112131415…T1T2T3T4T5T6T7T8T9T10T11T12T13T14T15T16…0000000000000001010011010101010110101001100111100110011001100001111000011111011100010110100111010001111001101001011010010000000111111111010011101010100110101110011001100110100110010001111111100001011100101001010111010110000111101001100101103)正交表的生成是有規(guī)律的,大小不一的正交表都可以從一個(gè)二行一列的子表中推導(dǎo)出來(lái)。設(shè)已有一個(gè)子表Ai-1,并且滿足1)和2),則按下列方式由它可推導(dǎo)出Ai:例如:,則:【例3.12】對(duì)【例3.11】43的精簡(jiǎn)表,由于m=4,所以項(xiàng)目數(shù)為8。因子項(xiàng)目1234T1T2T3T4T5T6T7T8000010100110110000011011011111014.利用正交表構(gòu)造測(cè)試數(shù)據(jù)一般情況下,上述構(gòu)造的正交表的各個(gè)因子的狀態(tài)數(shù)幾乎不可能出現(xiàn)均勻分布的情況,為此,必須利用邏輯命令來(lái)組合各個(gè)因子的狀態(tài),做出BOOLEAN圖,然后再考慮正交表在BOOLEAN圖中各個(gè)結(jié)點(diǎn)上的應(yīng)用。將因素分析表中各因子的狀態(tài)作為輸入,結(jié)果作為輸出,用邏輯命令把輸入與輸出結(jié)合在一起,畫出BOOLEAN圖。假設(shè)圖中最左部并列的結(jié)點(diǎn)是各個(gè)因子的所有可能的狀態(tài),把它們按因子分組,某組是某個(gè)因子的所有狀態(tài),組內(nèi)各個(gè)狀態(tài)是邏輯或(OR)的關(guān)系,如果一個(gè)因子的狀態(tài)數(shù)超過(guò)2,還要增加中間結(jié)果結(jié)點(diǎn),以保證所有中間結(jié)點(diǎn)都是兩個(gè)輸入端。圖的最右邊是結(jié)果,它的輸入個(gè)數(shù)等于因子個(gè)數(shù),結(jié)果的所有輸入之間是邏輯與(AND)的關(guān)系?!纠?.13】對(duì)【例3.11】,其對(duì)應(yīng)的BOOLEAN圖如圖3.12所示。當(dāng)輸出結(jié)點(diǎn)11為1時(shí),要求所有的輸入結(jié)點(diǎn)21、22、23、24都為1,為保證它們?yōu)?,則這幾個(gè)結(jié)點(diǎn)的輸入必須是:(01)或者是(10),這里排除(11)的情況,因?yàn)橥粋€(gè)因子的所有狀態(tài)不可能在一次測(cè)試中同時(shí)出現(xiàn)。把結(jié)點(diǎn)21、22、23和24當(dāng)作因子,則它的輸入可以當(dāng)作狀態(tài),這時(shí)就可以使用正交表了。正交表中的0和1分別代表兩種不同的狀態(tài),故可以把狀態(tài)為0的替換成(01)結(jié)點(diǎn)的輸入值,把狀態(tài)為1的替換成(10)結(jié)點(diǎn)的輸入值,如表3.16所示。對(duì)中間結(jié)點(diǎn)31,可做同樣的工作,如表3.17所示,最后得到的測(cè)試數(shù)據(jù)如表3.18所示。利用這些數(shù)據(jù),構(gòu)造因果圖,可以得到實(shí)際的測(cè)試用例。表3.16替換中的正交表結(jié)點(diǎn)組合號(hào)21222324A1A231B3C1C2D1D212345678001100110011001010010110100101001011010010110010101001010101表3.17替換中的正交表結(jié)點(diǎn)組合號(hào)31B1B212001表3.18測(cè)試輸入數(shù)據(jù)集因子測(cè)試組號(hào)ABCD123456789101112A1A1A2A2A1A2A1A1A2A2A1A2B1B2B1B2B3B3B1B2B1B2B3B3C1C1C2C2C2C1C1C1C2C2C2C1D1D1D1D1D1D1D2D2D2D2D2D23.6功能測(cè)試功能測(cè)試是解決模塊測(cè)試問(wèn)題的一個(gè)重要方法。事實(shí)上,本章前幾節(jié)討論的幾種方法都是功能測(cè)試的范圍。功能測(cè)試的方法是根據(jù)軟件的規(guī)格說(shuō)明書(shū),選取測(cè)試用例,以檢驗(yàn)輸入輸出信息是否完全符合規(guī)格說(shuō)明書(shū)中有關(guān)功能需求的規(guī)定。實(shí)際上,模塊功能測(cè)試就是要驗(yàn)證模塊的每個(gè)功能是否能正確的實(shí)現(xiàn)。模塊功能測(cè)試的一般方法為敘述簡(jiǎn)單,假設(shè)M是一個(gè)數(shù)字計(jì)算模塊,可以將M的功能看作是一組變量到另一組變量的影射,即:假設(shè)xi的定義域是Di,yi的值域是Vi,定義域和值域空間可分別表示為:所謂功能測(cè)試,實(shí)際上就是根據(jù)軟件的規(guī)格說(shuō)明書(shū),選擇D中有代表性的點(diǎn)D’D,V中有代表性的點(diǎn)V’V,使得這些有代表性的點(diǎn)都被驗(yàn)證。xi是簡(jiǎn)單獨(dú)立的數(shù)字變量假設(shè):則至少應(yīng)選擇5個(gè)點(diǎn),即:mini-,mini,x[mini,maxi],maxi,maxi+(2)xi和xj是相關(guān)聯(lián)的數(shù)字變量:對(duì)于相關(guān)的兩個(gè)輸入,要具體問(wèn)題具體分析?!纠?.14】假設(shè)Di=[0,],Dj=[0,xi]。測(cè)試用例的選取方法為:xi=-1;xi=0,xj=0;xi>0,xj=0;xi>0,xj=0;xi>0,0<xj<xi;xi>0,xj=xi;xi>0,xj>xi;xi=0,xj>0.(3)對(duì)yi的各類取值都要至少驗(yàn)證一次【例3.15】假設(shè)模塊root(a,b,c,x1,x2)是一元二次方程求根函數(shù),a,b,c是輸入變量,x1,x2是輸出變量。其規(guī)格說(shuō)明書(shū)中規(guī)定:Da=Db=Dc=Dx1=Dx2=-,),方程的解分別為兩個(gè)不等實(shí)根、一個(gè)實(shí)根、兩個(gè)相等的實(shí)根、兩個(gè)虛根、無(wú)根。根據(jù)規(guī)格說(shuō)明書(shū),Vi={兩個(gè)不等實(shí)根、一個(gè)實(shí)根、兩個(gè)相等的實(shí)根、兩個(gè)虛根、無(wú)根}可以給出下列測(cè)試用例:a=1,b=-3,c=1:兩個(gè)不等實(shí)根a=0,b=-3,c=1:一個(gè)實(shí)根a=1,b=-2,c=1:兩個(gè)相等實(shí)根a=3,b=-2,c=1:兩個(gè)虛根a=0,b=0,c0:無(wú)根(4)xi是數(shù)字型數(shù)組變量:一個(gè)n維數(shù)組可以分解為n個(gè)一維數(shù)組,對(duì)于長(zhǎng)度為m的一維數(shù)組,可以分解為m個(gè)變量,對(duì)于單個(gè)數(shù)組變量,可以采用上面介紹的幾種方法來(lái)測(cè)試。而對(duì)于一個(gè)一維數(shù)組array[min,max]本身而言,至少要取三個(gè)測(cè)試點(diǎn),即array[min]、array[max]array[min<x<max]。(5)xi是非數(shù)字型變量:對(duì)非數(shù)字型變量,一般的做法是可將該變量的定義域影射成一個(gè)數(shù)字型的定義域,在此基礎(chǔ)上,可按數(shù)字型變量進(jìn)行測(cè)試。由于非數(shù)字型變量的情況比較復(fù)雜,具體問(wèn)題要具體分析。特別是要對(duì)一些特殊的情況進(jìn)行檢驗(yàn)?!纠?.16】函數(shù)Open(filename)是一個(gè)打開(kāi)文件的函數(shù),filename是輸入的文件名。該函數(shù)的功能是對(duì)正確的文件名且已存在的文件進(jìn)行打開(kāi)操作,對(duì)不正確的文件名給出錯(cuò)誤信息,對(duì)不存在的文件給出提示信息。假設(shè)文件名的長(zhǎng)度是由1n個(gè)英文字母和數(shù)字組成。假設(shè)A={英文字符、數(shù)字},B={所有可能字符}-A。從A中選擇任意選擇一個(gè)字符;從A中產(chǎn)生長(zhǎng)度為n的字符串;從A中產(chǎn)生長(zhǎng)度為n+1的字符串;從B中選擇任意選擇一個(gè)字符;從A和B中產(chǎn)生長(zhǎng)度為n的字符串;從A和B中產(chǎn)生長(zhǎng)度為n+1的字符串。2.模塊功能測(cè)試的分解測(cè)試當(dāng)一個(gè)模塊比較大時(shí),該模塊常常包括許多子功能,其輸入變量和輸出變量也可能比較多。一個(gè)子功能可能對(duì)應(yīng)其中的一個(gè)或幾個(gè)輸入輸出變量,而另一個(gè)子功能可能對(duì)應(yīng)另外一組輸入輸出變量。在此情況下,對(duì)模塊的功能進(jìn)行分解是必要的,這樣測(cè)試可能更為徹底。W.E.Howden稱一個(gè)模塊或函數(shù)的子功能為設(shè)計(jì)函數(shù)。設(shè)計(jì)函數(shù)可以分為下列三類:(1)平行設(shè)計(jì)函數(shù):此類函數(shù)最簡(jiǎn)單的例子就是幾個(gè)設(shè)計(jì)函數(shù)順序的組成一個(gè)函數(shù)。其程序結(jié)構(gòu)如FunctionA(x)所示,其對(duì)應(yīng)的關(guān)系結(jié)構(gòu)如圖3.13所示。FunctionA(x){casex1:…;break;//設(shè)計(jì)函數(shù)1casex2:…;break;//設(shè)計(jì)函數(shù)2…casexn:…;break;//設(shè)計(jì)函數(shù)n1}(2)順序設(shè)計(jì)函數(shù):此類設(shè)計(jì)函數(shù)比較常見(jiàn)的是程序被分解成有獨(dú)立意義的多段代碼,每一段代碼就是一個(gè)設(shè)計(jì)函數(shù),程序順序的執(zhí)行諸段代碼。其程序結(jié)構(gòu)如FunctionB(x)所示,其對(duì)應(yīng)的關(guān)系結(jié)構(gòu)如圖3.14所示。FunctionB(){計(jì)算支出;//設(shè)計(jì)函數(shù)1計(jì)算收入;//設(shè)計(jì)函數(shù)2計(jì)算余額;//設(shè)計(jì)函數(shù)3}(3)控制設(shè)計(jì)函數(shù):此類設(shè)計(jì)函數(shù)主要是用于控制設(shè)計(jì)函數(shù)的執(zhí)行順序,或者循環(huán)和遞歸的起始,并不用于實(shí)際的計(jì)算。其對(duì)應(yīng)的關(guān)系結(jié)構(gòu)如圖3.15所示。如FunctionC(x)所表示的控制結(jié)構(gòu),F(xiàn)unctionC(i,j){if(i>j)thenT=TRUE;elseT=FALSE;whileTdo{i=i-1;j=j+1;if(i<=j)thenT=FALSE;}}W.E.Howden曾對(duì)某些程序進(jìn)行了測(cè)試,給出了下列實(shí)驗(yàn)數(shù)據(jù),如表3.19所示。表3.19:W.E.Howden給出的實(shí)驗(yàn)數(shù)據(jù)測(cè)試方法實(shí)際故障數(shù)目被檢測(cè)的故障數(shù)目普通功能測(cè)試1420粗略計(jì)算設(shè)計(jì)函數(shù)的功能測(cè)試79詳細(xì)設(shè)計(jì)函數(shù)的功能測(cè)試79控制設(shè)計(jì)函數(shù)的功能測(cè)試35分支覆蓋測(cè)試1013路徑覆蓋測(cè)試33.7隨機(jī)測(cè)試隨機(jī)測(cè)試是測(cè)試?yán)碚摰闹匾M成部分,在VLSI測(cè)試、軟件測(cè)試中有廣泛的應(yīng)用。一般情況下,在被測(cè)系統(tǒng)比較復(fù)雜、其它測(cè)試方法測(cè)試效率不高的情況下,隨機(jī)測(cè)試都得到了廣泛的應(yīng)用。采用隨機(jī)測(cè)試技術(shù),可以有效的對(duì)系統(tǒng)的可靠性進(jìn)行綜合評(píng)估。隨機(jī)測(cè)試并不是黑盒測(cè)試所獨(dú)有的,也可以用于白盒測(cè)試之中。就隨機(jī)功能測(cè)試而言,由于隨機(jī)測(cè)試并不需要源代碼,且本文在這里引入隨機(jī)測(cè)試的目的是想和前面所介紹的各種黑盒測(cè)試方法相比較。3.7.1隨機(jī)測(cè)試的概念定義3.4:隨機(jī)測(cè)試。對(duì)給定的被測(cè)系統(tǒng)和系統(tǒng)的定義域,按照定義域中樣本取值的概率,隨機(jī)的選擇其樣本并作為其測(cè)試數(shù)據(jù)的過(guò)程稱為隨機(jī)測(cè)試。根據(jù)定義3.4,隨機(jī)測(cè)試涉及三個(gè)概念:一是定義域,二是定義域中數(shù)據(jù)取值的概率分布,三是樣本選擇。就軟件測(cè)試而言,定義域可以從規(guī)格說(shuō)明書(shū)中提出,定義域中數(shù)據(jù)取值的概率分布是軟件可靠性評(píng)估的一個(gè)重要概念,將第八章中敘述,這里不做詳細(xì)論述。目前常用的分布有:用戶實(shí)際使用的概率分布,均勻分布、正態(tài)分布等。按照樣本選擇數(shù)據(jù)的方式不同,有可以有下列幾種隨機(jī)測(cè)試技術(shù)。定義3.5:可替代的隨機(jī)測(cè)試技術(shù)。后面的樣本可以和前面的樣本相同,稱為可替代的隨機(jī)測(cè)試技術(shù),簡(jiǎn)稱隨機(jī)測(cè)試技術(shù)。定義3.6:不可替代的隨機(jī)測(cè)試技術(shù)。后面的樣本必須和前面的樣本不同,稱為不可替代的隨機(jī)測(cè)試技術(shù),簡(jiǎn)稱偽隨機(jī)測(cè)試技術(shù)。定義3.7:反隨機(jī)測(cè)試技術(shù)。第一個(gè)數(shù)據(jù)是隨機(jī)給出的,后面新增加的數(shù)據(jù)要和前面已存在數(shù)據(jù)的笛卡兒(Cartesian)距離、或漢明(Hamming)距離最大,這種產(chǎn)生數(shù)據(jù)的過(guò)程稱為反隨機(jī)測(cè)試技術(shù)。定義3.8:漢明距離(HD):兩個(gè)二進(jìn)制向量ti=(a0,a1,…,aN),tj=(b0,b1,…,bN),它們的HD被定義為:定義3.9:笛卡兒距離(CD):兩個(gè)二進(jìn)制向量ti=(a0,a1,…,aN),tj=(b0,b1,…,bN),它們的CD被定義為:若ti、tj是實(shí)數(shù)空間的向量,則它們的CD被定義為:定義3.10:總漢明距離(THD):對(duì)任一向量ti,則ti和已存在的向量為t1,t2,…,ti-1總的漢明距離為:定義3.11:總笛卡兒距離(CHD):對(duì)任一向量ti,則ti和已存在的向量為t1,t2,…,ti-1總的笛卡兒距離為:定義3.12:非隨機(jī)測(cè)試的最大距離序列(MDATS),MDATS是一個(gè)測(cè)試序列{ti},每個(gè)ti和t1,t2,…,ti-1的THD和CHD最大。即:反隨機(jī)測(cè)試是這幾年出現(xiàn)的一個(gè)新概念,目前對(duì)其測(cè)試效果在理論上缺乏評(píng)估模型,應(yīng)用缺乏大量實(shí)驗(yàn)數(shù)據(jù)的支持。不過(guò),直觀上看,反隨機(jī)測(cè)試技術(shù)一般不會(huì)比隨機(jī)測(cè)試和偽隨機(jī)測(cè)試的效果要差。如果測(cè)試數(shù)據(jù)比較多,偽隨機(jī)測(cè)試和隨機(jī)測(cè)試在理論上并沒(méi)有本質(zhì)的差別。因此,在下面的論述中,主要集中在隨機(jī)測(cè)試技術(shù)的理論與應(yīng)用上。圖3.16是隨機(jī)測(cè)試效果的一個(gè)非常典型的曲線,雖然上述給出的數(shù)據(jù)是偶然的,但這個(gè)曲線卻具有一般性。也就是說(shuō),對(duì)一般的系統(tǒng),用比較少的測(cè)試數(shù)據(jù)可以很快檢測(cè)40%~70%(當(dāng)然這個(gè)數(shù)字隨具體的系統(tǒng)而定)左右的錯(cuò)誤,再往上增加覆蓋率,測(cè)試長(zhǎng)度會(huì)大幅度的增加。這個(gè)結(jié)論也可以從理論上推倒出來(lái)。3.7.2隨機(jī)測(cè)試與劃分測(cè)試的比較嚴(yán)格的說(shuō),前面給出的等價(jià)類劃分法、因果圖法、邊值分析法等黑盒測(cè)試技術(shù)都是劃分測(cè)試,它們共同的特點(diǎn)是將定義域劃分成多個(gè)子域,并從每個(gè)子域中選擇一個(gè)或多個(gè)測(cè)試用例。因此,從這種意義講,功能測(cè)試或者黑盒測(cè)試都是劃分測(cè)試。下面論述劃分測(cè)試和隨機(jī)測(cè)試的效果比較。1.一般模型(1)隨機(jī)測(cè)試的模型:設(shè)D是被測(cè)軟件S的定義域,||D||=d。m是D中使S產(chǎn)生錯(cuò)誤輸出的輸入個(gè)數(shù),稱為引起錯(cuò)誤的輸入。c是D中使S產(chǎn)生正確輸出的輸入個(gè)數(shù),顯然:0cd,0md,c=d-mn是隨機(jī)測(cè)試時(shí)所選擇的測(cè)試用例的數(shù)目。定義是錯(cuò)誤率,是樣本率,即:(2)劃分測(cè)試的模型:將D劃分劃分成k(k2)個(gè)子域D1,D2,…,Dk,即:D=D1D2…Dk||Di||=d。mi是Di中使S產(chǎn)生錯(cuò)誤輸出的輸入個(gè)數(shù),稱為引起錯(cuò)誤的輸入。ci是Di中使S產(chǎn)生正確輸出的輸入個(gè)數(shù),顯然:0cidi,0midi,ci=di-mini是測(cè)試時(shí)在Di中所選擇的測(cè)試用例的數(shù)目。定義i是Di的錯(cuò)誤率,i是Di的樣本率,即:為便于比較,總是假設(shè)N=n。定義3.13:劃分測(cè)試。如果k個(gè)子域是互不相交的,即滿足下列條件的稱為劃分測(cè)試。定義3.14:子域測(cè)試。如果存在兩個(gè)子域的交集不為空,則稱為子域測(cè)試。(3)測(cè)試標(biāo)準(zhǔn)定義3.15:P—測(cè)量。n次測(cè)試中至少檢測(cè)一個(gè)錯(cuò)誤的概率稱為P—測(cè)量。對(duì)D的隨機(jī)測(cè)試,有:對(duì)子域測(cè)試,有:定義3.16:E—測(cè)量。n次測(cè)試中期望的檢測(cè)錯(cuò)誤的數(shù)目稱為E—測(cè)量。對(duì)D的隨機(jī)測(cè)試,有:對(duì)子域測(cè)試,有:對(duì)于不相交的子域,用Pp和Ep代表P—測(cè)量和E—測(cè)量。P—測(cè)量和E—測(cè)量是評(píng)價(jià)測(cè)試效果的兩個(gè)重要的度量標(biāo)準(zhǔn),目前被廣泛的使用。2.子域測(cè)試效果分析最好的劃分測(cè)試是這樣的情形,浪費(fèi)的測(cè)試用例數(shù)目最少。也就是說(shuō),一些子域不包含任何錯(cuò)誤,而另外的子域則包含的全是錯(cuò)誤。定理3.1:對(duì)不相交的k個(gè)子域,滿足dini1,則劃分測(cè)試最好的測(cè)試效果是:假設(shè)N>m,如果所有包含錯(cuò)誤的子域滿足:mi=di=ni,則Ep取得極大值,即:Ep=m。證明:因?yàn)閐ini1,所以有:2)假設(shè)Nm<d,Ep在下列的劃分與測(cè)試用例的選擇方式中取得極大值。即一個(gè)子域Di包含的全部是引起錯(cuò)誤的輸入,即mi=di=ni。而其它的子域則可能包含的可能全部是正確的輸入、或者既包含正確的輸入也包含引起錯(cuò)誤的輸入,在此情況下:證明:如圖3.17所示。最好的情況是:D1中包含的全部是引起錯(cuò)誤的輸入,并且輸入個(gè)數(shù)是N-1,而從D2~Dk可能包含引起錯(cuò)誤的輸入,也可能全部是正確的輸入。在此情況下,對(duì)D1來(lái)說(shuō),EPD1=N-1,而對(duì)D2~Dk來(lái)說(shuō):所以:定理3.2:對(duì)不相交的k個(gè)子域,則劃分測(cè)試最壞的測(cè)試效果是:1)假設(shè)Nk2,dk,0md-k+1,也就是說(shuō),至少有k-1個(gè)正確的輸入。如果nk=1,d1=d2=…=dk-1=1,dk=d-k+1,即所有m個(gè)引起錯(cuò)誤的輸入都在Dk中,則EP取得下列最少值:2)假設(shè)Nk2,dk,0md-N+1,也就是說(shuō),至少有N-1個(gè)正確的輸入。nidi(1ik)如果nk=1,dk=d-N+1,di=ni(1ik-1),則EP取得下列最少值:1)和2)的證明是簡(jiǎn)單的,讀者不妨自己試一試。定理3.3:對(duì)相交不為空的子域,如m>0,當(dāng)一個(gè)子域僅僅包含正確的輸入,此時(shí)僅在此子域中選擇一個(gè)測(cè)試用例,而其它的子域包含的全部是引起錯(cuò)誤的輸入,則ES取得下列極大值:證明:包含全部是引起錯(cuò)誤的輸入的子域?yàn)镋,則:EE=N-1,而其它的子域中包含的正確的輸入數(shù)目是d-m,則其它子域期望的錯(cuò)誤數(shù)目是:所以,在此情況下期望錯(cuò)誤數(shù)目的最大值是:定理3.4:對(duì)相交不為空的子域,如m<d,當(dāng)一個(gè)子域僅僅包含正確的錯(cuò)誤的輸入,此時(shí)僅在此子域中選擇一個(gè)測(cè)試用例,而其它的子域包含的全部是正確的輸入,則ES取得下列極小值:3.劃分測(cè)試和隨機(jī)測(cè)試的比較定理3.5:對(duì)不相交的子域,如果1=2=…=k則Ep=Er證明:定理3.6:如果D和Di的樣本率是相同的,則子域測(cè)試要好于隨機(jī)測(cè)試。即:但是定理3.6對(duì)P——測(cè)量是不成立的?!纠?.17】考慮軟件的定義域D,假設(shè)d=1200,m=181,n=12,所以=12/1200=0.01。將D劃分成兩個(gè)子域,分別是:d1=1100,m1=91,n1=11,所以1=11/1100=0.01,1=91/1100。d2=1100,m2=91,n2=11,所以2=11/1100=0.01,2=91/1100。因此:因此,有:1=2=0.01=,Es>Er,Ps<Pr。定理3.7:假設(shè)至少有兩個(gè)子域的交集是非空的,N=n,1=2=…=k<,則:證明:定理3.8:對(duì)不相交的子域,如果1=2=…=k則Ep=Er證明:定理3.9:設(shè)k=2,D1D2=。如果(1-2)(1-2)0,則EpEr證明:D1D2=,n=n1+n2,m1=m1+m2,d=d1+d2定理3.10:將D劃分成k+1個(gè)互不相交的子域,D1,D2,…,Dk,Dk+1,讓’和’分別是D’的錯(cuò)誤率和樣本率,如果ik+1,ik+1,則(’-k+1)(’-k+1)0。證明:m’是D’的錯(cuò)誤個(gè)數(shù),d’=||D’||,定理3.11:對(duì)不相交的子域,如果(i-j)(i-j)0,這里i,j=1,2,…,k,則EpEr。可以應(yīng)用數(shù)學(xué)歸納法證明之,步驟從略。推理3.1:對(duì)不相交的子域,如果存在和,使ni=mi+di,i=1,2,…,k,則EpEr。推理3.2:對(duì)不相交的子域,如果每個(gè)子域中測(cè)試的數(shù)量正比于該域中包含的錯(cuò)誤數(shù)目,則:EpEr。定理3.12:對(duì)不相交的子域,如果(i-j)(i-j)0,這里i,j=1,2,…,k,則EpEr?!纠?.18】考慮軟件的定義域D,將D劃分成兩個(gè)子域D1和D2,d=250,d1=200,d2=100,設(shè)共有25個(gè)錯(cuò)誤全部在D2中,則:1=0,2=25/100=0.25,=25/250=0.1若n=24,n1=15,n2=9,Er=2.4,Es=2.25<Er。若假設(shè)25個(gè)缺陷全部在D1D2中,則:1=25/200,2=25/1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版三年級(jí)語(yǔ)文下冊(cè)第六單元達(dá)標(biāo)測(cè)試卷(含答案)
- 關(guān)于食品gmp的單選試題及答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)押題練習(xí)試題B卷含答案
- 2019-2025年軍隊(duì)文職人員招聘之軍隊(duì)文職管理學(xué)與服務(wù)自我檢測(cè)試卷A卷附答案
- 酒店保潔合同(2篇)
- 2025年全國(guó)碩士研究生考試《政治》模擬試卷一
- H2H行業(yè)虛擬現(xiàn)實(shí)技術(shù)研究與應(yīng)用方案
- 智慧之書(shū)少兒版讀后感
- 火鍋店合伙人協(xié)議書(shū)
- 童年記憶繪本故事賞析與創(chuàng)作啟示
- 采礦學(xué)-I課件第七章-主要開(kāi)拓巷道類型和位置的選擇
- 人員招收、招聘來(lái)源及人員穩(wěn)定性保障措施
- 小學(xué)科學(xué)教育科學(xué)三年級(jí)下冊(cè)植物的生長(zhǎng)變化開(kāi)花了PPT
- 生育保險(xiǎn)待遇申請(qǐng)表
- 春節(jié)復(fù)工復(fù)產(chǎn)安全交底
- 四年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)教案 跟著節(jié)氣去探究 全國(guó)通用
- 培智康復(fù)課教案模板(共7篇)
- 楊光斌《政治學(xué)導(dǎo)論》考研重點(diǎn)整理(自己整理的超實(shí)用)
- CCS電氣電子產(chǎn)品型式認(rèn)可試驗(yàn)指南
- 員工面試登記表
- rcs-9611c-線路保護(hù)測(cè)控裝置-技術(shù)使用說(shuō)明
評(píng)論
0/150
提交評(píng)論