




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第六章、程序的測(cè)試 程序設(shè)計(jì)強(qiáng)調(diào)的是過(guò)程的實(shí)現(xiàn)。如何評(píng)價(jià)一個(gè)程序,首要的是看這個(gè)程序能否得出正確的結(jié)果。在保證正確性的前提下,看它執(zhí)行程序的計(jì)算工作量(時(shí)間效率)和所占用的內(nèi)存(空間效率)。 在聯(lián)賽的評(píng)分測(cè)試中,評(píng)分者一般采用的是黑箱測(cè)試,即不看你的程序編得如何,而是看你的程序是否完成了試題給出的任務(wù)。評(píng)分者不僅在編程者最有可能失誤的環(huán)節(jié)上設(shè)置了測(cè)試數(shù)據(jù),以考核程序的正確性,而且對(duì)編程者可能采用的各種算法也作了效率分析,通過(guò)設(shè)定時(shí)間檻值來(lái)判定算法的優(yōu)劣。由此可見(jiàn),選手測(cè)試程序和優(yōu)化效率的能力是聯(lián)賽考核的重要內(nèi)容。 正確性是考察程序質(zhì)量永恒的準(zhǔn)則,誰(shuí)也不想設(shè)計(jì)一個(gè)得不出正確結(jié)果的程序,這是顯而易
2、見(jiàn)的事。然而錯(cuò)誤的程序比比皆是,甚至被多數(shù)人認(rèn)為是正確的題解,還在不斷地發(fā)現(xiàn)小的程序錯(cuò)誤。這是因?yàn)椋?(1)正確性是指程序本身具備且僅具備問(wèn)題所列舉的全部功能。至于驗(yàn)證這些功能的背景條件(例如試題描述)是否正確,不是正確性考核的范疇。(2)檢驗(yàn)程序正確性的基本手段是測(cè)試,但測(cè)試只能指出程序的錯(cuò)誤,而不能證明程序完全沒(méi)有錯(cuò)誤。因?yàn)橐氚岩粋€(gè)不太復(fù)雜的程序所有可能發(fā)生的值驗(yàn)算一遍,即便是頻率為每秒千萬(wàn)次的計(jì)算機(jī)幾十年也做不完,然而舍此又無(wú)法驗(yàn)證它的完全正確性。 由上可知,測(cè)試是檢驗(yàn)程序是否具備問(wèn)題所列舉的全部功能的途徑。通過(guò)測(cè)試發(fā)現(xiàn)的錯(cuò)誤越多,則程序的隱患越少,正確率越高,因而價(jià)值也就越大。第一節(jié)
3、第一節(jié) 系統(tǒng)的測(cè)試工具系統(tǒng)的測(cè)試工具 程序設(shè)計(jì)是一項(xiàng)容易出現(xiàn)差錯(cuò)的工作。一般來(lái)說(shuō),程序的錯(cuò)誤有兩種:n語(yǔ)法錯(cuò)誤。這類錯(cuò)誤可由編譯程序查出。避免這類錯(cuò)誤發(fā)生的辦法:認(rèn)真學(xué)習(xí)和切實(shí)掌握語(yǔ)言的功能和規(guī)范。 n語(yǔ)義錯(cuò)誤。它是源程序經(jīng)編譯通過(guò)之后,在運(yùn)行中出現(xiàn)的各種錯(cuò)誤。通常有以下幾種: 書(shū)寫(xiě)錯(cuò)誤的計(jì)算公式; 忽視很少出現(xiàn)的極端情況,如溢出、越界、死鎖、死循環(huán)等; 程序結(jié)構(gòu)或邏輯出錯(cuò)。 如果程序被證明語(yǔ)義有錯(cuò),就轉(zhuǎn)入調(diào)試,確定程序中可疑錯(cuò)誤的確切性質(zhì),改正錯(cuò)誤。 調(diào)試程序的方法一般有兩種:(1)靜態(tài)查錯(cuò)。不用執(zhí)行程序,僅根據(jù)程序和框圖對(duì)求解過(guò)程的描述來(lái)發(fā)現(xiàn)錯(cuò)誤。(2)動(dòng)態(tài)查錯(cuò)。在程序執(zhí)行的過(guò)程中尋找錯(cuò)誤
4、的確切位置。 這就要求選手必須熟悉所用語(yǔ)言(如turbo pascal)的集成環(huán)境,這些環(huán)境中含大量的動(dòng)態(tài)調(diào)試工具。主要有:?jiǎn)尾礁?執(zhí)行到光標(biāo)所在行;設(shè)置斷點(diǎn);狀態(tài)檢查等。第二節(jié)第二節(jié) 測(cè)試用例的選取方法測(cè)試用例的選取方法選取測(cè)試用例的方法一般有兩種: n(1)邏輯覆蓋測(cè)試的白箱法; n(2)根據(jù)程序功能導(dǎo)出測(cè)試用例的黑箱法。一、白箱法一、白箱法白箱測(cè)試是根據(jù)對(duì)程序內(nèi)部邏輯結(jié)構(gòu)的分析來(lái)選取測(cè)試用例。由于測(cè)試用例對(duì)程序邏輯覆蓋的程度決定了測(cè)試完全性的程度,因此,白箱測(cè)試也稱為邏輯覆蓋測(cè)試。白箱測(cè)試用例的設(shè)計(jì)準(zhǔn)則有: n(1)語(yǔ)句覆蓋 n(2)分支覆蓋 n(3)條件覆蓋 n(4)組合條件覆蓋1語(yǔ)
5、句覆蓋n語(yǔ)句覆蓋準(zhǔn)則是用足夠多的測(cè)試用例,使程序中的每個(gè)語(yǔ)句都執(zhí)行一遍,以盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤。 n例如,某程序段為: if(a1)&(b=0) x=x/a; if(a=2)|(x1) x=x+1;n下圖為這個(gè)程序段的流程圖。 從流程圖可以看出,只要能經(jīng)過(guò)路徑 acbe ,便可以將所有語(yǔ)句都執(zhí)行一遍。顯然,若取a=2與b=0(x任意)為測(cè)試數(shù)據(jù),就可以完成這一測(cè)試任務(wù)。 但是,這個(gè)測(cè)試用例不能檢查出下列錯(cuò)誤:第一個(gè)語(yǔ)句中的“and”誤寫(xiě)為“or”;第二個(gè)語(yǔ)句中的“x1”誤寫(xiě)為“x=1”等。因此,語(yǔ)句覆蓋準(zhǔn)則是很弱的,通常不宜采用。 2分支覆蓋分支覆蓋準(zhǔn)則也稱判定覆蓋準(zhǔn)則。它要求通
6、過(guò)足夠多的測(cè)試用例,使程序中的每個(gè)分支至少通過(guò)一次。如在上圖中,需要通過(guò) acbe 和 abd 兩條路徑。為此,可以選用下列兩個(gè)測(cè)試用例: (1)a=3,b=0,x=4(測(cè)試路徑 acbe); (2)a=1,x=1,b任意(測(cè)試路徑 abd)。 也就是說(shuō),通過(guò)兩次測(cè)試,就可以使程序中的每個(gè)分支都通過(guò)一次。分支覆蓋準(zhǔn)則比語(yǔ)句覆蓋準(zhǔn)則嚴(yán)密了一些,但還是不夠充分。這是因?yàn)樵谝粋€(gè)判定中往往包含有多個(gè)條件,而用分支覆蓋并沒(méi)有考慮將每個(gè)條件都測(cè)試一次。3條件覆蓋 條件覆蓋準(zhǔn)則是通過(guò)執(zhí)行足夠的測(cè)試用例,使每個(gè)判定中的每個(gè)條件都能得到兩種不同的結(jié)果(true與false)。例如,上述例子中共有四個(gè)條件,有以下
7、兩個(gè)測(cè)試用例可使每個(gè)條件都能得到true值和false值。 n(1)a=2,b=1,x=1(a1為true,b=0為false,a=2為true, x1為false);n(2)a=1,b=0,x=3(a1為false,b=0為true,a=2為false, x1為true); 4.組合條件覆蓋 通常,條件覆蓋要比分支覆蓋優(yōu)越。但是條件覆蓋并不能完全滿足分支覆蓋。例如,上述條件覆蓋所使用的兩個(gè)測(cè)試用例不能使第一個(gè)判定框?yàn)閠rue ,也不能使第二個(gè)判定框?yàn)閒alse。于是,人們便提出一種更強(qiáng)的準(zhǔn)則組合條件覆蓋準(zhǔn)則。組合條件覆蓋準(zhǔn)則要求通過(guò)足夠多的測(cè)試用例,使每個(gè)判定中各條件的各種可能組合至少出現(xiàn)一
8、次。 例如,對(duì)于上述例子來(lái)說(shuō),第一個(gè)判定框中的兩個(gè)條件有以下四種組合:n(1)條件組合1:a1,b=0 ; n(2)條件組合2:a1,b不等于0 ; n(3)條件組合3:a=1,b=0 ;n(4)條件組合4:a1;n(2)條件組合6:a=2,x1; n(4)條件組合8:a不等于2,x=1。下面的四個(gè)測(cè)試用例就可以覆蓋上述八種可能的條件組合: n(1) a=2,b=0,x=4(覆蓋條件組合1和5)n(2) a=2,b=1,x=1(覆蓋條件組合2和6)n(3) a=1,b=0,x=2(覆蓋條件組合3和7)n(4) a=1,b=1,x=1(覆蓋條件組合4和8) 組合條件覆蓋準(zhǔn)則既能滿足分支覆蓋準(zhǔn)則,
9、也能滿足條件覆蓋準(zhǔn)則,但是,它也不是完全測(cè)試。如果仔細(xì)檢查上述四個(gè)測(cè)試用例,就會(huì)發(fā)現(xiàn)漏掉了路徑 acbd。 白箱法經(jīng)常被編程者用來(lái)測(cè)試程序內(nèi)部的邏輯錯(cuò)誤。但問(wèn)題是,在聯(lián)賽中不管選手自以為測(cè)試后的程序如何“完美”,但評(píng)委們卻全然不顧這一切,而是完全根據(jù)程序的功能要求設(shè)計(jì)測(cè)試用例,由測(cè)試結(jié)果衡量其正確程度的。“知己知彼,百戰(zhàn)不殆”,對(duì)于以程序的功能要求為根據(jù)和準(zhǔn)繩的黑箱測(cè)試方法,選手更應(yīng)該掌握。二、黑箱法二、黑箱法 黑箱測(cè)試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測(cè)試用例。常用的黑箱測(cè)試有:n( 1 )等價(jià)分類法 n( 2 )邊值分析法 n( 3 )因果圖法 n( 4 )錯(cuò)誤
10、推測(cè)法1等價(jià)分類法 窮盡的黑箱測(cè)試是不現(xiàn)實(shí)的,通常只能選取少量最有代表性的輸入數(shù)據(jù),以期用較小的代價(jià)暴露出較多的程序錯(cuò)誤。n等價(jià)分類是把所有可能的輸入數(shù)據(jù)(有效的和無(wú)效的)劃分成若干等價(jià)類,使每一類中的一個(gè)典型數(shù)據(jù)在測(cè)試中的作用與這一類中所有其他數(shù)據(jù)的作用相同。因此,在實(shí)際進(jìn)行測(cè)試時(shí),可以從每個(gè)等價(jià)類中只取一組數(shù)據(jù)作為測(cè)試用例。由此可知,等價(jià)分類法分為兩步: n(1)劃分等價(jià)類(包括有效等價(jià)類和無(wú)效等價(jià)類); n(2)從每個(gè)等價(jià)類中選取測(cè)試用例。n劃分等價(jià)類的基本方法是:根據(jù)程序的功能說(shuō)明,找出所有的輸入條件,然后為每一個(gè)輸入條件劃分等價(jià)類。n例如,對(duì)計(jì)算n的程序劃分等價(jià)類。由程序的功能可以得
11、到輸入條件為合理的x,其中包括分母不為零和根號(hào)內(nèi)分于式的值大于等于0,即n可以得到等價(jià)類的劃分如表所示。然后選取若干測(cè)試用例,使它們能夠覆蓋表。 在給出了輸入條件后,確定等價(jià)類大體上是一個(gè)啟發(fā)的過(guò)程,取決于測(cè)試人員對(duì)問(wèn)題的理解力和創(chuàng)造力,帶有很大的試探性。通常,以下劃分等價(jià)類的原則可以作為參考: n(1)如果輸入數(shù)據(jù)通過(guò)文件進(jìn)行且明確不須判錯(cuò),則可以確定一個(gè)有效等價(jià)類;n(2)如果輸入條件規(guī)定了值的個(gè)數(shù)或每個(gè)值的范圍,則可以確定一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類; n(3)如果輸入條件規(guī)定了一個(gè)輸入值的有限集,且確信程序?qū)γ總€(gè)輸入值單獨(dú)處理,則可以對(duì)集合中的每一個(gè)輸入值確定一個(gè)有效等價(jià)類,同時(shí)可以
12、確定一個(gè)無(wú)效等價(jià)類; n(4)如果輸入條件規(guī)定了“必須如何”的條件,則可以確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類; n(5)如果確信某一等價(jià)類中的各元素在程序中的處理方式是有區(qū)別的,則應(yīng)把這個(gè)等價(jià)類分成更小的等價(jià)類。2 邊值分析法 經(jīng)驗(yàn)表明,程序錯(cuò)誤往往發(fā)生于邊緣情況。因此,考慮邊界條件的測(cè)試比沒(méi)有考慮邊界條件的測(cè)試效果要好得多。 特別要指出的是,邊值分析不是從等價(jià)類中隨便選一個(gè)例子作為代表,而是著眼于使該等價(jià)類的邊界情況成為測(cè)試的主要目標(biāo)來(lái)選取測(cè)試用例;并且邊值分析不僅要考慮輸入條件,還要考慮輸出條件。采用邊值分析法設(shè)計(jì)測(cè)試用例,通常要考慮以下幾條原則:n(1)如果輸入條件規(guī)定了值的范圍,則要對(duì)
13、這個(gè)范圍的邊界情況以及稍超出范圍的無(wú)效情況進(jìn)行測(cè)試; n(2)如果輸入條件規(guī)定了值的個(gè)數(shù),則要分別對(duì)值的最大個(gè)數(shù)、最小個(gè)數(shù)、稍多于最大個(gè)數(shù)及稍少于最小個(gè)數(shù)的情況進(jìn)行測(cè)試;n(3)對(duì)于輸出條件使用上述(1)和(2) ; n(4)如果輸入和輸出是有序集,則應(yīng)把注意力集中在第一個(gè)和最后一個(gè)元素上。3.因果圖法上述的等價(jià)分類法與邊值分析法的缺點(diǎn)是:只獨(dú)立地檢查了各個(gè)輸入條件,而沒(méi)有檢查各種輸入條件的組合。但要對(duì)各條件的組合進(jìn)行檢查并非易事。一般來(lái)說(shuō),沒(méi)有一種系統(tǒng)的方法是不行的。 因果圖法是設(shè)計(jì)測(cè)試用例的一種系統(tǒng)方法,有助于測(cè)試人員系統(tǒng)地選擇高效的測(cè)試用例。其基本思想是把輸入條件視為“因”,輸出條件視為
14、“果”,把黑箱視為從因到果的邏輯網(wǎng)絡(luò)圖。通過(guò)因果圖可以得到一張判定表,然后為判定表的每一列設(shè)計(jì)測(cè)試用例。4.錯(cuò)誤推測(cè)法 也稱猜錯(cuò)法。它無(wú)固定的規(guī)律可循,在很大程度上是憑經(jīng)驗(yàn)或直覺(jué)推測(cè)程序中可能存在的各種錯(cuò)誤,從而有針對(duì)性地編寫(xiě)測(cè)試用例。 例如,要測(cè)試一個(gè)排序程序,特別需要檢查的情況有: n(1)輸入表為空; n(2)輸入表只含有一個(gè)元素; n(3)輸入表中所有元素值相同; n(4)輸入表實(shí)際有序。三、綜合策略三、綜合策略n前面敘述的各種方法都提供了部分實(shí)用的測(cè)試情況,但是沒(méi)有一種方法能夠單獨(dú)地產(chǎn)生一套“完整”的測(cè)試用例。在實(shí)際進(jìn)行測(cè)試時(shí),可以將各種方法聯(lián)合使用。n下面的綜合策略可供參考。測(cè)試從
15、黑箱法開(kāi)始,突破那種“自以為是”的思維定勢(shì),全面客觀地按照程序的功能要求設(shè)計(jì)測(cè)試用例: (1)如果程序功能說(shuō)明中有輸入條件的組合,便從因果圖開(kāi)始,以減少組合情況; (2)在任何情況下都要用邊值分析法,通過(guò)分析輸入和輸出條件的邊界值,補(bǔ)充一些測(cè)試用例; (3)判別輸入/輸出的有效和無(wú)效等價(jià)類,進(jìn)一步補(bǔ)充測(cè)試用例; (4)利用錯(cuò)誤推測(cè)法補(bǔ)充一些測(cè)試用例: (5)查看上述測(cè)試用例的覆蓋程序,對(duì)未滿足的覆蓋標(biāo)準(zhǔn),增加一些測(cè)試用例。 通過(guò)黑箱法找出程序中不具備功能要求的地方后,應(yīng)使用白箱法檢測(cè)程序內(nèi)部是哪些子程序段導(dǎo)致其錯(cuò)誤。修改后再使用黑箱法測(cè)試結(jié)果。這樣循環(huán)往復(fù),提高程序的正確率。 最后需強(qiáng)調(diào)的是,無(wú)論使用什么
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織晚餐活動(dòng)方案
- 公司夢(mèng)想活動(dòng)方案
- 公司春節(jié)布置活動(dòng)方案
- 公司組織旅行活動(dòng)方案
- 公司活動(dòng)秋游活動(dòng)方案
- 公司紅酒品鑒活動(dòng)方案
- 公司歡送儀式活動(dòng)方案
- 公司系列大講堂活動(dòng)方案
- 公司母親節(jié)日活動(dòng)方案
- 公司水餃比賽活動(dòng)方案
- 【學(xué)校心理健康教育系列】心理韌性:成為更堅(jiān)韌的自己
- AI技術(shù)支持的學(xué)情分析
- 核電站sdm手冊(cè)第7章
- JGJ-130-2011建筑施工扣件式鋼管腳手架安全技術(shù)規(guī)范(新版)
- 魯東教師心理健康期末考試復(fù)習(xí)題及參考答案
- 蛋白質(zhì)純化技術(shù)PPT幻燈片課件
- 企業(yè)部門(mén)人員需求申請(qǐng)表
- 手太陰肺經(jīng)ppt課件
- 城市居住區(qū)規(guī)劃設(shè)計(jì)規(guī)范(含條文說(shuō)明)
- (完整版)《普通心理學(xué)-彭聃齡》知識(shí)要點(diǎn)
- 借款擔(dān)保人擔(dān)保承諾書(shū)
評(píng)論
0/150
提交評(píng)論