版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一頁(yè),共一百三十二頁(yè),2022年,8月28日軟件測(cè)試基礎(chǔ)本章內(nèi)容7.2單元測(cè)試7.3集成測(cè)試7.4確認(rèn)測(cè)試7.5白盒測(cè)試技術(shù)7.67.1編碼7.7黑盒測(cè)試技術(shù)7.8調(diào)試第二頁(yè),共一百三十二頁(yè),2022年,8月28日編碼通常把編碼和測(cè)試統(tǒng)稱(chēng)為實(shí)現(xiàn)?編碼就是把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的程序編碼是對(duì)設(shè)計(jì)的進(jìn)一步具體化程序的質(zhì)量主要取決于軟件設(shè)計(jì)的質(zhì)量程序設(shè)計(jì)語(yǔ)言的特點(diǎn)及編碼風(fēng)格將影響程序的可靠性、可讀性、可測(cè)試性和可維護(hù)性編碼過(guò)程中還不可避免地會(huì)引入新的錯(cuò)誤測(cè)試主要是準(zhǔn)對(duì)編碼進(jìn)行的,測(cè)試和編碼反復(fù)進(jìn)行,而且單元測(cè)試和編碼還是同一個(gè)人完成的第三頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試測(cè)試是在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤,調(diào)試的目:診斷并改正測(cè)試發(fā)現(xiàn)的錯(cuò)誤是保證軟件質(zhì)量的關(guān)鍵步驟對(duì)軟件規(guī)格說(shuō)明、設(shè)計(jì)和編碼的最后復(fù)審軟件測(cè)試包括單元測(cè)試和整體測(cè)試兩個(gè)階段測(cè)試的工作量占軟件開(kāi)發(fā)總工作量的40%以上第四頁(yè),共一百三十二頁(yè),2022年,8月28日7.1.1選擇程序設(shè)計(jì)語(yǔ)言編碼之前第一步要做的事情就是選擇程序設(shè)計(jì)語(yǔ)言通常用高級(jí)語(yǔ)言寫(xiě)的程序容易閱讀,容易測(cè)試,容易調(diào)試,容易維護(hù)。(效率高)第五頁(yè),共一百三十二頁(yè),2022年,8月28日7.1.1選擇程序設(shè)計(jì)語(yǔ)言選擇程序設(shè)計(jì)語(yǔ)言的標(biāo)準(zhǔn):1、系統(tǒng)用戶(hù)的要求:由用戶(hù)負(fù)責(zé)維護(hù)的時(shí)候2、可以使用的編譯程序3、可以得到的軟件工具(開(kāi)發(fā)工具和數(shù)據(jù)庫(kù))4、工程規(guī)模5、程序員的知識(shí)6、軟件可移植性要求7、軟件的應(yīng)用領(lǐng)域Fortran合適科學(xué)計(jì)算,cobol合適商業(yè)領(lǐng)域,lisp合適組合問(wèn)題,prolog合適人工智能第六頁(yè),共一百三十二頁(yè),2022年,8月28日7.1.2編碼風(fēng)格源代碼質(zhì)量標(biāo)準(zhǔn):邏輯簡(jiǎn)明清晰、易讀易懂,為了做到這點(diǎn)應(yīng)該遵循的規(guī)則:程序內(nèi)部的文檔:數(shù)據(jù)說(shuō)明:次序應(yīng)該標(biāo)準(zhǔn)化、字母順序語(yǔ)句構(gòu)造規(guī)則不要為了節(jié)省空間而把多個(gè)語(yǔ)句寫(xiě)在同一行;盡量避免復(fù)雜的條件判斷;盡量減少對(duì)“非”條件的判斷;避免大量使用循環(huán)嵌套和條件嵌套;利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀。標(biāo)識(shí)符、注解、程序視角組織第七頁(yè),共一百三十二頁(yè),2022年,8月28日編碼風(fēng)格4.
輸入輸出風(fēng)格的規(guī)則對(duì)所有輸入數(shù)據(jù)都進(jìn)行檢驗(yàn);檢查輸入項(xiàng)重要組合的合法性;保持輸入格式簡(jiǎn)單;使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶(hù)指定數(shù)據(jù)的數(shù)目;明確提示交互式輸入的請(qǐng)求,詳細(xì)說(shuō)明可用的選擇或邊界數(shù)值;當(dāng)程序設(shè)計(jì)語(yǔ)言對(duì)格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式一致;設(shè)計(jì)良好的輸出報(bào)表;給所有輸出數(shù)據(jù)加標(biāo)志。如果有多個(gè)輸入組合的話第八頁(yè),共一百三十二頁(yè),2022年,8月28日編碼風(fēng)格5.效率:處理機(jī)時(shí)間和存儲(chǔ)器容量和輸入輸出效率是性能要求,在需求分析階段確定效率是靠好設(shè)計(jì)來(lái)提高的不要犧牲程序的清晰性和可讀性來(lái)提高效率(1)程序運(yùn)行時(shí)間1、算法的復(fù)雜度2、寫(xiě)程序的規(guī)則:第九頁(yè),共一百三十二頁(yè),2022年,8月28日編碼風(fēng)格(2)存儲(chǔ)器效率使用結(jié)構(gòu)化控制結(jié)構(gòu)、適當(dāng)?shù)木幾g程序和語(yǔ)言(3)輸入輸出的效率1、使用緩沖減少通信開(kāi)銷(xiāo);2、二級(jí)存儲(chǔ)器(硬盤(pán))選用最簡(jiǎn)單的訪問(wèn)方法3、二級(jí)存儲(chǔ)器(硬盤(pán))數(shù)據(jù)傳送以組為單位4、如果高效率輸入輸出不好被理解,則放棄第十頁(yè),共一百三十二頁(yè),2022年,8月28日7.2軟件測(cè)試基礎(chǔ)
7.2.1軟件測(cè)試的目標(biāo)軟件測(cè)試和其他階段的思路區(qū)別:“建設(shè)性”和“破壞性”。測(cè)試階段的根本目標(biāo):是盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶(hù)使用。(1)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程;(2)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案;(3)成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。通常由第三方或測(cè)試機(jī)構(gòu)來(lái)完成測(cè)試工作測(cè)試決不能證明程序是正確的第十一頁(yè),共一百三十二頁(yè),2022年,8月28日7.2.2軟件測(cè)試準(zhǔn)則(1)所有測(cè)試都應(yīng)該能追溯到用戶(hù)需求。 對(duì)需求進(jìn)行確認(rèn)(p56)(2)應(yīng)該遠(yuǎn)在測(cè)試開(kāi)始之前就制定出測(cè)試計(jì)劃。 設(shè)計(jì)階段制定詳細(xì)的測(cè)試方案(p93)(3)Pareto錯(cuò)誤集聚現(xiàn)象:測(cè)試發(fā)現(xiàn)的錯(cuò)誤中的80%很可能是由程序中20%的模塊造成的。(4)先進(jìn)行“小規(guī)?!睖y(cè)試,并逐步進(jìn)行“大規(guī)?!睖y(cè)試。(5)窮舉測(cè)試是不可能的。(6)由獨(dú)立的第三方從事測(cè)試工作。對(duì)所有的執(zhí)行路徑都檢查一遍的測(cè)試第十二頁(yè),共一百三十二頁(yè),2022年,8月28日例:Windows95有1000萬(wàn)行代碼
Windows2000有5000萬(wàn)行代碼Exchange2000和Windows2000開(kāi)發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項(xiàng)目經(jīng)理25人約250人開(kāi)發(fā)人員140人約1700人測(cè)試人員350人約3200人第十三頁(yè),共一百三十二頁(yè),2022年,8月28日7.2.3測(cè)試方法黑盒測(cè)試法(功能測(cè)試):完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過(guò)程。只在程序接口進(jìn)行的測(cè)試,只檢查程序功能是否能按照規(guī)格說(shuō)明書(shū)的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)并產(chǎn)生正確的輸出信息,程序運(yùn)行過(guò)程中能否保持外部信息的完整性。白盒測(cè)試法(結(jié)構(gòu)測(cè)試):把程序看成裝在一個(gè)透明的白盒子里,程序的結(jié)構(gòu)和處理算法完全可見(jiàn)。按照程序內(nèi)部的邏輯測(cè)試程序,檢測(cè)程序中的主要執(zhí)行通路是否都能按預(yù)定要求正確工作。第十四頁(yè),共一百三十二頁(yè),2022年,8月28日7.2.4測(cè)試步驟大型軟件系統(tǒng)的測(cè)試過(guò)程由以下步驟組成:1.模塊測(cè)試模塊測(cè)試的目的是保證每個(gè)模塊作為一個(gè)單元能正確運(yùn)行,所以模塊測(cè)試通常又稱(chēng)為單元測(cè)試該步驟中通常發(fā)現(xiàn)編碼和詳細(xì)設(shè)計(jì)的錯(cuò)誤2.子系統(tǒng)測(cè)試子系統(tǒng)測(cè)試是把經(jīng)過(guò)單元測(cè)試的模塊放在一起形成一個(gè)子系統(tǒng)來(lái)測(cè)試著重測(cè)試模塊接口間的協(xié)調(diào)和通信第十五頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試步驟3.系統(tǒng)測(cè)試系統(tǒng)測(cè)試是把經(jīng)過(guò)測(cè)試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來(lái)測(cè)試應(yīng)該驗(yàn)證系統(tǒng)確實(shí)能提供需求說(shuō)明書(shū)中指定的功能、性能、可靠性等要求往往發(fā)現(xiàn)軟件設(shè)計(jì)或需求說(shuō)明中的錯(cuò)誤集成測(cè)試:子系統(tǒng)測(cè)試與系統(tǒng)測(cè)試第十六頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試步驟4.驗(yàn)收測(cè)試(確認(rèn)測(cè)試)把軟件系統(tǒng)作為單一的實(shí)體進(jìn)行測(cè)試,測(cè)試內(nèi)容與系統(tǒng)測(cè)試基本類(lèi)似在用戶(hù)積極參與下,使用實(shí)際數(shù)據(jù)(系統(tǒng)將來(lái)要處理的信息)進(jìn)行測(cè)試驗(yàn)收測(cè)試的目的是驗(yàn)證系統(tǒng)確實(shí)能夠滿足用戶(hù)的需要往往發(fā)現(xiàn)系統(tǒng)需求說(shuō)明書(shū)中的錯(cuò)誤第十七頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試步驟5.平行運(yùn)行同時(shí)運(yùn)行新開(kāi)發(fā)出來(lái)的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個(gè)系統(tǒng)的處理結(jié)果。具體目的有如下幾點(diǎn):(1)可以在準(zhǔn)生產(chǎn)環(huán)境中運(yùn)行新系統(tǒng)而又不冒風(fēng)險(xiǎn);(2)用戶(hù)能有一段熟悉新系統(tǒng)的時(shí)間;(3)可以驗(yàn)證用戶(hù)指南和使用手冊(cè)之類(lèi)的文檔;(4)能夠以準(zhǔn)生產(chǎn)模式對(duì)新系統(tǒng)進(jìn)行全負(fù)荷測(cè)試,可以用測(cè)試結(jié)果驗(yàn)證性能指標(biāo)。第十八頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試步驟第十九頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試步驟第二十頁(yè),共一百三十二頁(yè),2022年,8月28日7.2.5測(cè)試階段的信息流測(cè)試階段輸入信息的信息流有兩類(lèi):(1)軟件配置,包括需求說(shuō)明書(shū)、設(shè)計(jì)說(shuō)明書(shū)和源程序清單等;(2)測(cè)試配置,包括測(cè)試計(jì)劃和測(cè)試方案。測(cè)試方案包括測(cè)試時(shí)使用的輸入數(shù)據(jù)(稱(chēng)為測(cè)試用例)、每組輸入數(shù)據(jù)預(yù)定要檢驗(yàn)的功能以及每組輸入數(shù)據(jù)預(yù)期的正確輸出。最終提交的軟件配置應(yīng)該包括測(cè)試配置、測(cè)試的實(shí)際結(jié)果和調(diào)試的記錄第二十一頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試階段的信息流第二十二頁(yè),共一百三十二頁(yè),2022年,8月28日經(jīng)驗(yàn)如果測(cè)試經(jīng)常出現(xiàn)要修改設(shè)計(jì),那軟件質(zhì)量和可靠性值得懷疑,不出現(xiàn)這樣的情況,則還有兩種可能:(1)軟件的可靠性是可以接受的;(2)所進(jìn)行的測(cè)試尚不足以發(fā)現(xiàn)嚴(yán)重的錯(cuò)誤。若測(cè)試沒(méi)有發(fā)現(xiàn)錯(cuò)誤,則很可能是因?yàn)闇y(cè)試不充分,無(wú)法暴露潛藏的錯(cuò)誤。隱藏的錯(cuò)誤最終將被用戶(hù)發(fā)現(xiàn),在維護(hù)階段改正它們,要付出高出許多倍的代價(jià)。第二十三頁(yè),共一百三十二頁(yè),2022年,8月28日7.3單元測(cè)試集中檢測(cè)軟件設(shè)計(jì)的最小單元——模塊單元測(cè)試和編碼屬于軟件過(guò)程的同一個(gè)階段可以應(yīng)用人工測(cè)試和計(jì)算機(jī)測(cè)試這樣兩種不同類(lèi)型的測(cè)試方法,完成單元測(cè)試工作單元測(cè)試主要使用白盒測(cè)試技術(shù)并行地進(jìn)行第二十四頁(yè),共一百三十二頁(yè),2022年,8月28日7.3.1測(cè)試重點(diǎn)1.模塊接口檢查參數(shù)的數(shù)目、次序、屬性或單位系統(tǒng)與變?cè)欠褚恢拢皇欠裥薷牧酥蛔鬏斎胗玫淖冊(cè)?;全局變量的定義和用法在各個(gè)模塊中是否一致。2.局部數(shù)據(jù)結(jié)構(gòu)主要發(fā)現(xiàn)局部數(shù)據(jù)說(shuō)明、初始化、默認(rèn)值等方面的錯(cuò)誤。3.重要的執(zhí)行通路選擇最有代表性、最可能發(fā)現(xiàn)錯(cuò)誤的執(zhí)行通路進(jìn)行測(cè)試,用來(lái)發(fā)現(xiàn)由于錯(cuò)誤的計(jì)算、不正確的比較或不適當(dāng)?shù)目刂屏鞫斐傻腻e(cuò)誤。數(shù)據(jù)庫(kù)中最小存儲(chǔ)和處理單位數(shù)據(jù)庫(kù)中最小存儲(chǔ)和處理單位第二十五頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試重點(diǎn)4.出錯(cuò)處理通路好的設(shè)計(jì)應(yīng)該能預(yù)見(jiàn)出現(xiàn)錯(cuò)誤的條件,設(shè)置適當(dāng)?shù)奶幚礤e(cuò)誤的通路。程序中應(yīng)包含出錯(cuò)處理通路,并認(rèn)真測(cè)試這種通路。評(píng)價(jià)出錯(cuò)處理通路時(shí),著重測(cè)試下述可能發(fā)生的錯(cuò)誤:(1)對(duì)錯(cuò)誤的描述是難以理解的;(2)記下的錯(cuò)誤與實(shí)際遇到的錯(cuò)誤不同;(3)在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件已經(jīng)引起系統(tǒng)干預(yù);(4)對(duì)錯(cuò)誤的處理不正確;(5)描述錯(cuò)誤的信息不足以幫助確定造成錯(cuò)誤的位置。第二十六頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試重點(diǎn)5.邊界條件邊界測(cè)試是單元測(cè)試中最后的也可能是最重要的任務(wù)。什么是邊界?軟件常常在它的邊界上失效。如:數(shù)組的循環(huán)使用剛好小于、剛好等于和剛好大于最大值或最小值的數(shù)據(jù)結(jié)構(gòu)、控制量和數(shù)據(jù)值的測(cè)試方案,容易發(fā)現(xiàn)錯(cuò)誤。第二十七頁(yè),共一百三十二頁(yè),2022年,8月28日7.3.2代碼審查由審查小組正式進(jìn)行人工測(cè)試源程序。是一種非常有效的程序驗(yàn)證技術(shù),通常可以查出30%~70%的邏輯設(shè)計(jì)錯(cuò)誤和編碼錯(cuò)誤。審查小組最好由下述4人組成:(1)組長(zhǎng),應(yīng)該是一個(gè)很有能力的程序員,而且沒(méi)有直接參與這項(xiàng)工程;(2)程序的設(shè)計(jì)者;(3)程序的編寫(xiě)者;(4)程序的測(cè)試者。第二十八頁(yè),共一百三十二頁(yè),2022年,8月28日審查會(huì)1、小組成員先研究設(shè)計(jì)說(shuō)明書(shū),力求理解這個(gè)設(shè)計(jì)。2、審查會(huì)上先由設(shè)計(jì)者扼要地介紹他的設(shè)計(jì)。3、由程序的編寫(xiě)者逐句解釋他是怎樣用程序代碼實(shí)現(xiàn)這個(gè)設(shè)計(jì)的邏輯,小組其他成員仔細(xì)傾聽(tīng)他的講解,并力圖發(fā)現(xiàn)其中的錯(cuò)誤。4、對(duì)照程序設(shè)計(jì)常見(jiàn)錯(cuò)誤清單,分析審查這個(gè)程序。5、當(dāng)發(fā)現(xiàn)錯(cuò)誤時(shí)由組長(zhǎng)記錄下來(lái),審查會(huì)繼續(xù)進(jìn)行(審查小組的任務(wù)是發(fā)現(xiàn)錯(cuò)誤而不是改正錯(cuò)誤)。代碼審查可以發(fā)現(xiàn)許多錯(cuò)誤,減少系統(tǒng)驗(yàn)證的總工作量。應(yīng)與計(jì)算機(jī)測(cè)試配合使用,提高查找錯(cuò)誤的效率。第二十九頁(yè),共一百三十二頁(yè),2022年,8月28日7.3.3計(jì)算機(jī)測(cè)試輔助模塊:驅(qū)動(dòng)軟件和(或)存根軟件。驅(qū)動(dòng)程序就是一個(gè)“主程序”,它接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測(cè)試的模塊,并且印出有關(guān)的結(jié)果。存根程序代替被測(cè)試的模塊所調(diào)用的模塊,也稱(chēng)為“虛擬子程序”、“樁模塊”。做最少量的數(shù)據(jù)操作,印出對(duì)入口的檢驗(yàn)或操作結(jié)果,并且把控制歸還給調(diào)用它的模塊。不作為軟件產(chǎn)品的一部分交給用戶(hù)第三十頁(yè),共一百三十二頁(yè),2022年,8月28日驅(qū)動(dòng)模塊和樁模塊第三十一頁(yè),共一百三十二頁(yè),2022年,8月28日驅(qū)動(dòng)模塊和樁模塊例如,要測(cè)試其中編號(hào)為3.0的關(guān)鍵模塊——正文編輯模塊。需要有一個(gè)測(cè)試驅(qū)動(dòng)程序來(lái)調(diào)用它,說(shuō)明必要的變量,接收測(cè)試數(shù)據(jù)——字符串,并且設(shè)置正文編輯模塊的編輯功能;正文編輯模塊3.0通過(guò)調(diào)用存根程序模擬下層模塊來(lái)完成簡(jiǎn)化的編輯功能。可以設(shè)置的編輯功能只有修改(CHANGE)和添加(APPEND)兩種,用控制變量CFUNCT標(biāo)記要求的編輯功能。以下是用偽碼書(shū)寫(xiě)的存根程序和驅(qū)動(dòng)程序。第三十二頁(yè),共一百三十二頁(yè),2022年,8月28日?qǐng)D7.2正文加工系統(tǒng)的層次圖第三十三頁(yè),共一百三十二頁(yè),2022年,8月28日存根程序TESTSTUB(*測(cè)試正文編輯模塊用的存根程序*) 初始化; 輸出信息“進(jìn)入了正文編輯程序”; 輸出“輸入的控制信息是”CFUNCT; 輸出緩沖區(qū)中的字符串;
IFCFUNCT=CHANGE THEN 把緩沖區(qū)中第二個(gè)字改為***//測(cè)試修改
ELSE 在緩沖區(qū)的尾部加???//測(cè)試添加
END IF; 輸出緩沖區(qū)中的新字符串;ENDTESTSTUB第三十四頁(yè),共一百三十二頁(yè),2022年,8月28日驅(qū)動(dòng)程序TESTDRIVER(*測(cè)試正文編輯模塊用的驅(qū)動(dòng)程序*) 說(shuō)明長(zhǎng)度為2500個(gè)字符的一個(gè)緩沖區(qū); 把CFUNCT置為希望測(cè)試的狀態(tài); 輸入字符串; 調(diào)用正文編輯模塊; 停止或再次初啟;ENDTESTDRIVER第三十五頁(yè),共一百三十二頁(yè),2022年,8月28日7.4集成測(cè)試集成測(cè)試是測(cè)試和組裝軟件的系統(tǒng)化技術(shù)目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問(wèn)題發(fā)現(xiàn)問(wèn)題:數(shù)據(jù)穿過(guò)接口時(shí)可能丟失;把子功能組合起來(lái)可能不產(chǎn)生預(yù)期的主功能;個(gè)別看來(lái)是可以接受的誤差可能積累到不能接受的程度;全程數(shù)據(jù)結(jié)構(gòu)可能有問(wèn)題。。。。。。第三十六頁(yè),共一百三十二頁(yè),2022年,8月28日組裝策略模塊組裝成程序有兩種方法:1、非漸增式測(cè)試:先分別測(cè)試每個(gè)模塊,再把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所要的程序;2、漸增式測(cè)試:把下一個(gè)要測(cè)試的模塊同已經(jīng)測(cè)試好的那些模塊結(jié)合起來(lái)進(jìn)行測(cè)試,測(cè)試完以后再把下一個(gè)應(yīng)該測(cè)試的模塊結(jié)合進(jìn)來(lái)測(cè)試。同時(shí)完成單元測(cè)試和集成測(cè)試。漸增方式下有自頂向下和自底向上兩種集成策略。第三十七頁(yè),共一百三十二頁(yè),2022年,8月28日非漸增式測(cè)試第三十八頁(yè),共一百三十二頁(yè),2022年,8月28日漸增式測(cè)試——自頂向下第三十九頁(yè),共一百三十二頁(yè),2022年,8月28日漸增式測(cè)試——自底向上第四十頁(yè),共一百三十二頁(yè),2022年,8月28日兩種集成策略?xún)?yōu)缺點(diǎn)非漸增式測(cè)試一下子把所有模塊放在一起,并把龐大的程序作為一個(gè)整體來(lái)測(cè)試,難于診斷定位一個(gè)錯(cuò)誤;一旦改正一個(gè)錯(cuò)誤之后,馬上又會(huì)遇到新的錯(cuò)誤。漸增式測(cè)試把程序劃分成小段來(lái)構(gòu)造和測(cè)試,比較容易定位和改正錯(cuò)誤;對(duì)接口可以進(jìn)行更徹底的測(cè)試;可以使用系統(tǒng)化的測(cè)試方法。目前普遍采用漸增式測(cè)試方法。第四十一頁(yè),共一百三十二頁(yè),2022年,8月28日7.4.1自頂向下集成自頂向下集成方法:從主控制模塊開(kāi)始,沿著程序的控制層次向下移動(dòng),逐漸把各個(gè)模塊結(jié)合起來(lái)。在把主控制模塊的附屬模塊組裝到程序結(jié)構(gòu)中去時(shí),它包括深度優(yōu)先和寬度優(yōu)先兩種組裝策略。深度優(yōu)先的結(jié)合方法先組裝在軟件結(jié)構(gòu)的一條主控制通路上的所有模塊。寬度優(yōu)先的結(jié)合方法是沿軟件結(jié)構(gòu)水平地移動(dòng),把處于同一個(gè)控制層次上的所有模塊組裝起來(lái)。第四十二頁(yè),共一百三十二頁(yè),2022年,8月28日自頂向下結(jié)合第四十三頁(yè),共一百三十二頁(yè),2022年,8月28日具體集成過(guò)程第一步,對(duì)主控制模塊進(jìn)行測(cè)試,測(cè)試時(shí)用存根程序代替所有直接附屬于主控制模塊的模塊;第二步,根據(jù)選定的結(jié)合策略(深度優(yōu)先或?qū)挾葍?yōu)先),每次用一個(gè)實(shí)際模塊代換一個(gè)存根程序(新結(jié)合進(jìn)來(lái)的模塊往往又需要新的存根程序);第三步,在結(jié)合進(jìn)一個(gè)模塊的同時(shí)進(jìn)行測(cè)試;第四步,為了保證加入模塊沒(méi)有引進(jìn)新的錯(cuò)誤,可能需要進(jìn)行回歸測(cè)試(即,全部或部分地重復(fù)以前做過(guò)的測(cè)試)。從第二步開(kāi)始不斷地重復(fù)進(jìn)行上述過(guò)程,直到構(gòu)造起完整的軟件結(jié)構(gòu)為止。第四十四頁(yè),共一百三十二頁(yè),2022年,8月28日7.4.2自底向上集成這種組裝的方式是從程序模塊結(jié)構(gòu)的最底層的模塊開(kāi)始組裝和測(cè)試。因?yàn)槟K是自底向上進(jìn)行組裝,對(duì)于一個(gè)給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)已經(jīng)組裝并測(cè)試完成,所以不再需要樁模塊。在模塊的測(cè)試過(guò)程中需要從子模塊得到的信息可以直接運(yùn)行子模塊得到。第四十五頁(yè),共一百三十二頁(yè),2022年,8月28日自底向上集成的過(guò)程第一步,把低層模塊組合成實(shí)現(xiàn)某個(gè)特定軟件子功能的族;第二步,寫(xiě)一個(gè)驅(qū)動(dòng)程序(用于測(cè)試的控制程序),協(xié)調(diào)測(cè)試數(shù)據(jù)的輸入和輸出;第三步,對(duì)由模塊組成的子功能族進(jìn)行測(cè)試;第四步,去掉驅(qū)動(dòng)程序,沿軟件結(jié)構(gòu)自下向上移動(dòng),把子功能族組合起來(lái)形成更大的子功能族。上述第二步到第四步實(shí)質(zhì)上構(gòu)成了一個(gè)循環(huán)。第四十六頁(yè),共一百三十二頁(yè),2022年,8月28日自底向上結(jié)合第四十七頁(yè),共一百三十二頁(yè),2022年,8月28日7.4.3不同集成測(cè)試策略的比較自頂向下測(cè)試方法的主要優(yōu)點(diǎn)是不需要測(cè)試驅(qū)動(dòng)程序,能夠在測(cè)試階段的早期實(shí)現(xiàn)并驗(yàn)證系統(tǒng)的主要功能,及早發(fā)現(xiàn)上層模塊的接口錯(cuò)誤。自頂向下測(cè)試方法的主要缺點(diǎn)是需要存根程序,可能產(chǎn)生測(cè)試?yán)щy,低層關(guān)鍵模塊中的錯(cuò)誤發(fā)現(xiàn)較晚,在早期不能充分展開(kāi)人力。兩種方法的優(yōu)缺點(diǎn)剛好相反。第四十八頁(yè),共一百三十二頁(yè),2022年,8月28日混合集成策略改進(jìn)的自頂向下測(cè)試方法。
基本上使用自頂向下的測(cè)試方法,但是在早期使用自底向上的方法測(cè)試軟件中的少數(shù)關(guān)鍵模塊。具有自頂向下方法的優(yōu)點(diǎn),而且能在測(cè)試的早期發(fā)現(xiàn)關(guān)鍵模塊中的錯(cuò)誤;它的缺點(diǎn)是測(cè)試關(guān)鍵模塊時(shí)需要驅(qū)動(dòng)程序。(2)混合法。對(duì)軟件結(jié)構(gòu)中較上層使用的自頂向下方法與對(duì)軟件結(jié)構(gòu)中較下層使用的自底向上方法相結(jié)合。兼有兩種方法的優(yōu)點(diǎn)和缺點(diǎn),當(dāng)關(guān)鍵模塊比較多時(shí)是最好的折衷方法。第四十九頁(yè),共一百三十二頁(yè),2022年,8月28日回歸測(cè)試集回歸測(cè)試是指重新執(zhí)行已經(jīng)做過(guò)的測(cè)試的某個(gè)子集,以保證最新變化沒(méi)有帶來(lái)非預(yù)期的副作用。為限制回歸測(cè)試用例的數(shù)量,應(yīng)該把回歸測(cè)試集設(shè)計(jì)成只包括可以檢測(cè)程序每個(gè)主要功能中的一類(lèi)或多類(lèi)錯(cuò)誤的那樣一些測(cè)試用例。第五十頁(yè),共一百三十二頁(yè),2022年,8月28日7.5確認(rèn)測(cè)試確認(rèn)測(cè)試(驗(yàn)收測(cè)試),它的目標(biāo)是驗(yàn)證軟件的有效性。確認(rèn)(validation)指的是為了保證軟件確實(shí)滿足了用戶(hù)需求而進(jìn)行的一系列活動(dòng)。驗(yàn)證(verification)指的是保證軟件正確地實(shí)現(xiàn)了某個(gè)特定要求的一系列活動(dòng)。第五十一頁(yè),共一百三十二頁(yè),2022年,8月28日軟件有效性軟件有效性的簡(jiǎn)單定義:如果軟件的功能和性能如同用戶(hù)所合理期待的那樣,軟件就是有效的。需求分析階段產(chǎn)生的軟件需求規(guī)格說(shuō)明書(shū),準(zhǔn)確地描述了用戶(hù)對(duì)軟件的合理期望,因此是軟件有效性的標(biāo)準(zhǔn),也是進(jìn)行確認(rèn)測(cè)試的基礎(chǔ)。第五十二頁(yè),共一百三十二頁(yè),2022年,8月28日7.5.1確認(rèn)測(cè)試的范圍確認(rèn)測(cè)試必須有用戶(hù)積極參與,或者以用戶(hù)為主進(jìn)行。用戶(hù)參與設(shè)計(jì)測(cè)試方案,使用用戶(hù)界面輸入測(cè)試數(shù)據(jù)并且分析評(píng)價(jià)測(cè)試的輸出結(jié)果。確認(rèn)測(cè)試通常使用黑盒測(cè)試法。應(yīng)該仔細(xì)設(shè)計(jì)測(cè)試計(jì)劃和測(cè)試過(guò)程通過(guò)測(cè)試和調(diào)試要確認(rèn)軟件能滿足所有功能和性能要求,文檔資料是準(zhǔn)確而完整的,還應(yīng)該保證軟件能滿足其他預(yù)定的要求(例如,安全性、可移植性、兼容性和可維護(hù)性等)。第五十三頁(yè),共一百三十二頁(yè),2022年,8月28日7.5.2軟件配置復(fù)查是確認(rèn)測(cè)試的一個(gè)重要內(nèi)容目的是保證軟件配置的所有成分都齊全,質(zhì)量符合要求,文檔與程序完全一致,具有完成軟件維護(hù)所必須的細(xì)節(jié),而且已經(jīng)編好目錄。還應(yīng)該檢驗(yàn)用戶(hù)指南及其他操作程序的完整性和正確性記錄發(fā)現(xiàn)的遺漏或錯(cuò)誤,并且適當(dāng)?shù)匮a(bǔ)充和改正。第五十四頁(yè),共一百三十二頁(yè),2022年,8月28日7.5.3Alpha和Beta測(cè)試驗(yàn)收測(cè)試是由最終用戶(hù)進(jìn)行,能夠發(fā)現(xiàn)隨著時(shí)間流逝降低系統(tǒng)質(zhì)量的累積錯(cuò)誤。產(chǎn)品軟件通常使用Alpha測(cè)試和Beta測(cè)試。Alpha測(cè)試由用戶(hù)在開(kāi)發(fā)現(xiàn)場(chǎng),在開(kāi)發(fā)者的“指導(dǎo)”下進(jìn)行測(cè)試(受控環(huán)境)。開(kāi)發(fā)者負(fù)責(zé)記錄發(fā)現(xiàn)的錯(cuò)誤和使用中遇到的問(wèn)題。Beta測(cè)試由軟件的用戶(hù)在實(shí)際使用環(huán)境中進(jìn)行。開(kāi)發(fā)者不在現(xiàn)場(chǎng)。用戶(hù)把遇到的一切問(wèn)題記錄并定期報(bào)告。開(kāi)發(fā)者根據(jù)報(bào)告的問(wèn)題對(duì)軟件進(jìn)行修改,發(fā)布最終的軟件產(chǎn)品。第五十五頁(yè),共一百三十二頁(yè),2022年,8月28日7.6白盒測(cè)試技術(shù)設(shè)計(jì)測(cè)試方案是測(cè)試階段的關(guān)鍵技術(shù)問(wèn)題。測(cè)試方案包括具體的測(cè)試目的(要測(cè)試的具體功能),應(yīng)該輸入的測(cè)試數(shù)據(jù)和預(yù)期的結(jié)果。通常又把測(cè)試數(shù)據(jù)和預(yù)期的輸出結(jié)果稱(chēng)為測(cè)試用例。關(guān)鍵問(wèn)題是設(shè)計(jì)測(cè)試用的輸入數(shù)據(jù)。選用少量“最有效的”測(cè)試數(shù)據(jù),做到盡可能完備的測(cè)試。第五十六頁(yè),共一百三十二頁(yè),2022年,8月28日7.6.1邏輯覆蓋測(cè)試選擇執(zhí)行程序中最有代表性的通路替代窮盡測(cè)試。邏輯覆蓋是對(duì)一系列測(cè)試過(guò)程的總稱(chēng),根據(jù)測(cè)試數(shù)據(jù)執(zhí)行(覆蓋)程序邏輯的程度劃分等級(jí),進(jìn)行越來(lái)越完整的通路測(cè)試。根據(jù)流程圖,分析下不同的覆蓋標(biāo)準(zhǔn)。第五十七頁(yè),共一百三十二頁(yè),2022年,8月28日例(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdce第五十八頁(yè),共一百三十二頁(yè),2022年,8月28日L1(ace)={(A>1)and(B=0)}and{(A=2)or(X/A>1)}=(A>1)and(B=0)and(A=2)or(A>1)and(B=0)and(X/A>1)=(A=2)and(B=0)
or
(A>1)and(B=0)and(X/A>1)
邏輯路徑第五十九頁(yè),共一百三十二頁(yè),2022年,8月28日L2(abd)=not{(A>1)and(B=0)}
andnot{(A=2)or(X>1)}={not(A>1)ornot(B=0)}and
{not(A=2)andnot(X>1)}=
not(A>1)andnot(A=2)andnot(X>1)
or
not(B=0)and
not(A=2)andnot(X>1)邏輯路徑第六十頁(yè),共一百三十二頁(yè),2022年,8月28日L3(abe)=not{(A>1)and(B=0)}and
{(A=2)or(X>1)}={not(A>1)ornot(B=0)}and
{(A=2)or(X>1)}=not(A>1)and(A=2)
or
not(A>1)and
(X>1)
or
not(B=0)and(A=2)
or
not(B=0)and(X>1)邏輯路徑第六十一頁(yè),共一百三十二頁(yè),2022年,8月28日L4(acd)={(A>1)and(B=0)}
andnot
{(A=2)or(X/A>1)}=(A>1)and(B=0)andnot(A=2)and
not(X/A>1)邏輯路徑第六十二頁(yè),共一百三十二頁(yè),2022年,8月28日1.語(yǔ)句覆蓋
語(yǔ)句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得每一可執(zhí)行語(yǔ)句至少執(zhí)行一次。在圖例中,選擇路徑L1設(shè)計(jì)測(cè)試用例,就可以覆蓋所有的可執(zhí)行語(yǔ)句。為圖例設(shè)計(jì)滿足語(yǔ)句覆蓋的測(cè)試用例是:
【(2,0,4),(2,0,3)】覆蓋ace【L1】第六十三頁(yè),共一百三十二頁(yè),2022年,8月28日語(yǔ)句覆蓋的缺點(diǎn)語(yǔ)句覆蓋是很弱的邏輯覆蓋標(biāo)準(zhǔn)。例如:intfoo(inta,intb)
{
returna/b;
}假如我們的測(cè)試人員編寫(xiě)如下測(cè)試案例:TeseCase:a=10,b=5測(cè)試人員的測(cè)試結(jié)果會(huì)告訴你,他的代碼覆蓋率達(dá)到了100%,并且所有測(cè)試案例都通過(guò)了。然而遺憾的是,我們的語(yǔ)句覆蓋率達(dá)到了所謂的100%,但是卻沒(méi)有發(fā)現(xiàn)最簡(jiǎn)單的Bug,比如,當(dāng)我讓b=0時(shí),會(huì)拋出一個(gè)除零異常。第六十四頁(yè),共一百三十二頁(yè),2022年,8月28日判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷測(cè)試一次。對(duì)于圖例,如果選擇路徑L1和L2,就可得滿足要求的測(cè)試用例:2.判定覆蓋(分支覆蓋)【(2,0,4),(2,0,3)】覆蓋ace【L1】
【(1,1,1),(1,1,1)】覆蓋abd【L2】(A=2)and(B=0)
or
(A>1)and(B=0)and(X/A>1)
not(A>1)andnot(A=2)andnot(X>1)
ornot(B=0)and
not(A=2)andnot(X>1)第六十五頁(yè),共一百三十二頁(yè),2022年,8月28日如果選擇路徑L3和L4,還可得另一組可用的測(cè)試用例:
【(2,1,1),(2,1,2)】覆蓋abe【L3】
【(3,0,3),(3,0,1)】覆蓋acd【L4】not(A>1)and(X>1)
ornot(B=0)and
(A=2)
ornot(B=0)and(X>1)(A>1)and(B=0)andnot(A=2)and
not(X/A>1)判定覆蓋(分支覆蓋)沒(méi)有對(duì)每一個(gè)條件進(jìn)行檢查,如果判定2中的條件X>1誤寫(xiě)成X>2,不一定能被發(fā)現(xiàn)。第六十六頁(yè),共一百三十二頁(yè),2022年,8月28日3.條件覆蓋條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。在圖例中,事先可對(duì)所有條件的取值加以標(biāo)記。對(duì)于第一個(gè)判斷:條件A>1取真,取假
條件B=0取真,取假對(duì)于第二個(gè)判斷:條件A=2取真,取假
條件X>1取真,取假第六十七頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試用例
覆蓋分支
條件取值【(2,0,4),(2,0,3)】L1(c,e)
【(1,0,1),(1,0,1)】L2(b,d)【(2,1,1),(2,1,2)】L3(b,e)或【(1,0,3),(1,0,4)】L3(b,e)
【(2,1,1),(2,1,2)】L3(b,e)
滿足條件覆蓋,卻不一定滿足判定覆蓋。條件覆蓋第六十八頁(yè),共一百三十二頁(yè),2022年,8月28日判定-條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次,每個(gè)判斷中的每個(gè)分支至少執(zhí)行一次。
測(cè)試用例
覆蓋分支
條件取值【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)4、判定/條件覆蓋(A=2)and(B=0)
or
(A>1)and(B=0)and(X/A>1)
not(A>1)andnot(A=2)andnot(X>1)
ornot(B=0)and
not(A=2)andnot(X>1)第六十九頁(yè),共一百三十二頁(yè),2022年,8月28日5、條件組合覆蓋條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。記①A>1,B=0作
②A>1,B≠0作③A≯1,B=0作④A≯1,B≠0作
⑤A=2,X>1作
⑥A=2,X≯1作
⑦A≠2,X>1作
⑧A≠2,X≯1作第七十頁(yè),共一百三十二頁(yè),2022年,8月28日
測(cè)試用例
路徑
覆蓋條件
覆蓋組合【(2,0,4),(2,0,3)】(L1) ①,⑤【(2,1,1),(2,1,2)】(L3) ②,⑥【(1,0,3),(1,0,4)】(L3) ③,⑦【(1,1,1),(1,1,1)】(L2) ④,⑧是前述幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的。滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù)并不一定能使程序中的每條路徑都執(zhí)行到。5、條件組合覆蓋第七十一頁(yè),共一百三十二頁(yè),2022年,8月28日6.點(diǎn)覆蓋點(diǎn)覆蓋定義:如果連通圖G的子圖G′是連通的,而且包含G的所有結(jié)點(diǎn),則稱(chēng)G′是G的點(diǎn)覆蓋。滿足點(diǎn)覆蓋標(biāo)準(zhǔn)要求選取足夠多的測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過(guò)流圖(連通的有向圖)的每個(gè)結(jié)點(diǎn)(若干條語(yǔ)句)一次,顯然,點(diǎn)覆蓋標(biāo)準(zhǔn)和語(yǔ)句覆蓋標(biāo)準(zhǔn)是相同的。第七十二頁(yè),共一百三十二頁(yè),2022年,8月28日7.邊覆蓋邊覆蓋定義:如果連通圖G的子圖G″是連通的,而且包含G的所有邊,則稱(chēng)G″是G的邊覆蓋。為了滿足邊覆蓋的測(cè)試標(biāo)準(zhǔn),要求選取足夠多測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過(guò)流圖中每條邊一次。通常邊覆蓋和判定覆蓋是一致的。第七十三頁(yè),共一百三十二頁(yè),2022年,8月28日8.路徑覆蓋路徑測(cè)試就是設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的路徑。
測(cè)試用例
通過(guò)路徑
覆蓋條件【(2,0,4),(2,0,3)】ace(L1)
【(1,1,1),(1,1,1)】abd
(L2)
【(1,1,2),(1,1,3)】abe
(L3)
【(3,0,3),(3,0,1)】acd
(L4)
滿足路徑覆蓋,未必滿足條件組合覆蓋,通常把兩種覆蓋結(jié)合起來(lái)測(cè)試。 第七十四頁(yè),共一百三十二頁(yè),2022年,8月28日7.6.2控制結(jié)構(gòu)測(cè)試1.基本路徑測(cè)試基本思想:在程序控制流圖的基礎(chǔ)上,首先計(jì)算程序的環(huán)形復(fù)雜度,并用該復(fù)雜度為指南定義基本可執(zhí)行路徑集合,從該基本集合導(dǎo)出的測(cè)試用例可以保證程序中的每條語(yǔ)句至少執(zhí)行一次,而且每個(gè)條件在執(zhí)行時(shí)都將分別取真、假兩種值。第七十五頁(yè),共一百三十二頁(yè),2022年,8月28日基本路徑測(cè)試的步驟設(shè)計(jì)測(cè)試用例的步驟如下:第一步,根據(jù)過(guò)程設(shè)計(jì)結(jié)果畫(huà)出相應(yīng)的流圖。第二步,計(jì)算流圖的環(huán)形復(fù)雜度。環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜性。可以用3種方法之一計(jì)算環(huán)形復(fù)雜度。圖7.6所示流圖的環(huán)形復(fù)雜度為6。第三步,確定線性獨(dú)立路徑的基本集合。第七十六頁(yè),共一百三十二頁(yè),2022年,8月28日第七十七頁(yè),共一百三十二頁(yè),2022年,8月28日獨(dú)立路徑是指至少引入程序的一個(gè)新處理語(yǔ)句集合或一個(gè)新條件的路徑,即獨(dú)立路徑至少包含一條在定義該路徑之前不曾用過(guò)的邊。程序的環(huán)形復(fù)雜度決定了程序中獨(dú)立路徑的數(shù)量,這個(gè)數(shù)是確保程序中所有語(yǔ)句至少被執(zhí)行一次所需的測(cè)試數(shù)量的上界。圖7.6所描述的求平均值過(guò)程共有6條獨(dú)立路徑。Path1:1-2-10-11-13Path2:1-2-10-12-13Path3:1-2-3-10-11-13Path4:1-2-3-4-5-8-9-2-…Path5:1-2-3-4-5-6-8-9-2-…Path6:1-2-3-4-5-6-7-8-9-2-…獨(dú)立路徑第七十八頁(yè),共一百三十二頁(yè),2022年,8月28日第四步,設(shè)計(jì)可強(qiáng)制執(zhí)行基本集合中每條路徑的測(cè)試用例。某些獨(dú)立路徑不能以獨(dú)立的方式測(cè)試(程序的正常流程不能形成獨(dú)立執(zhí)行該路徑所需要的數(shù)據(jù)組合),這些路徑必須作為另一個(gè)路徑的一部分來(lái)測(cè)試?;韭窂綔y(cè)試的步驟第七十九頁(yè),共一百三十二頁(yè),2022年,8月28日為每一條獨(dú)立路徑設(shè)計(jì)測(cè)試用例。假設(shè):n=5;minimum=0;maximum=100。路徑1:1-2-10-11-13測(cè)試數(shù)據(jù):value=[90,-999,0,0,0]預(yù)期結(jié)果:Average=90,total.input=1,total.valid=1路徑2:1-2-10-12-13測(cè)試數(shù)據(jù):value=[-999,0,0,0,0]預(yù)期結(jié)果:Average=-999,total.input=0,total.valid=0第八十頁(yè),共一百三十二頁(yè),2022年,8月28日路徑3:1-2-3-10-11-13測(cè)試數(shù)據(jù):value=[-1,90,70,-1,80]預(yù)期結(jié)果:Average=80,total.input=5,total.valid=3路徑4:1-2-3-4-5-8-9-2-10-12-13測(cè)試數(shù)據(jù):value=[-1,-2,-3,-4,-999]預(yù)期結(jié)果:Average=-999,total.input=4,total.valid=0第八十一頁(yè),共一百三十二頁(yè),2022年,8月28日路徑5:1-2-3-4-5-6-8-9-2-10-12-13測(cè)試數(shù)據(jù):value=[120,110,101,-999,0]預(yù)期結(jié)果:Average=-999,total.input=3,total.valid=0路徑6:1-2-3-4-5-6-7-8-9-2-10-11-13測(cè)試數(shù)據(jù):value=[95,90,70,65,-999]預(yù)期結(jié)果:Average=80,total.input=4,total.valid=4第八十二頁(yè),共一百三十二頁(yè),2022年,8月28日2.條件測(cè)試測(cè)試用例能夠檢查程序模塊中包含的邏輯條件。條件成分的類(lèi)型包括布爾算符、布爾變量、布爾括?。ɡㄗ『?jiǎn)單條件或復(fù)合條件)、關(guān)系算符及算術(shù)表達(dá)式。如果條件不正確,則至少條件的一個(gè)成分不正確。1、布爾算符錯(cuò)2、布爾變量錯(cuò)3、布爾括弧錯(cuò)4、關(guān)系算符錯(cuò)5、算術(shù)表達(dá)式錯(cuò)第八十三頁(yè),共一百三十二頁(yè),2022年,8月28日條件測(cè)試策略1、分支測(cè)試:復(fù)合條件C的真分支和假分支中的每個(gè)簡(jiǎn)單條件都至少執(zhí)行一次;2、域測(cè)試:每個(gè)關(guān)系表達(dá)式執(zhí)行3或4個(gè)測(cè)試,如果E1<關(guān)系算符>E2要執(zhí)行大于、等于和小于;3、布爾變量測(cè)試:有n個(gè)變量的布爾表達(dá)式要測(cè)試2n
個(gè)測(cè)試;4、BRO測(cè)試:利用條件C的條件約束來(lái)設(shè)計(jì)測(cè)試用例,如果布爾運(yùn)算符和關(guān)系運(yùn)算符只出現(xiàn)一次而且沒(méi)有公共變的條件下,BRO測(cè)試可以發(fā)現(xiàn)布爾運(yùn)算符和關(guān)系運(yùn)算符錯(cuò)誤。包括n個(gè)簡(jiǎn)單條件的條件C的約束條件定義為(D1,D2,…DN),其中Di表示第i個(gè)簡(jiǎn)單條件的輸出約束第八十四頁(yè),共一百三十二頁(yè),2022年,8月28日BRO測(cè)試舉例:例1:C1:B1&B2B1,B2為布爾變量。C1的條件約束形如(D1,D2),其中D1和D2的值是t或f。BRO測(cè)試策略要求約束集{(t,t),(f,t),(t,f)}由C1的執(zhí)行所覆蓋,如果C1由于布爾運(yùn)算符錯(cuò)誤而不正確,該約束集中至少有一個(gè)約束強(qiáng)制C1失敗。例2:C2:B1&(E3=E4){(t,=),(f,=),(t,<),(t,>)},此約束集的覆蓋率將保證檢測(cè)C2的布爾運(yùn)算符和關(guān)系運(yùn)算符錯(cuò)誤。例3:C3:(E1>E2)&(E3=E4){(>,=),(=,=),(<,=),(>,<),(>,>)}編程者經(jīng)?;煜齼山M運(yùn)算符:(&&,||,!)和(&,|,^)。第一組是邏輯運(yùn)算符,它的操作數(shù)是布爾型,而第二組則是位運(yùn)算符,其操作數(shù)是位序列。第八十五頁(yè),共一百三十二頁(yè),2022年,8月28日3.循環(huán)測(cè)試重點(diǎn)測(cè)試循環(huán)結(jié)構(gòu)的有效性。在結(jié)構(gòu)化的程序中通常只有3種循環(huán),即簡(jiǎn)單循環(huán)、串接循環(huán)和嵌套循環(huán)第八十六頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試簡(jiǎn)單循環(huán)(1)測(cè)試簡(jiǎn)單循環(huán):其中n是允許通過(guò)循環(huán)的最大次數(shù)。測(cè)試一下內(nèi)容:跳過(guò)循環(huán)。只通過(guò)循環(huán)一次。通過(guò)循環(huán)兩次。通過(guò)循環(huán)m次,其中m<n-1。通過(guò)循環(huán)n-1,n,n+1次。第八十七頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試嵌套循環(huán)(2)嵌套循環(huán)(直接應(yīng)用簡(jiǎn)單循環(huán)測(cè)試方法,測(cè)試數(shù)會(huì)隨嵌套層數(shù)的增加按幾何級(jí)數(shù)增長(zhǎng))從最內(nèi)層循環(huán)開(kāi)始測(cè)試,使用簡(jiǎn)單循環(huán)測(cè)試方法,使外層循環(huán)的迭代參數(shù)(循環(huán)計(jì)數(shù)器)取最小值(為越界值或非法值進(jìn)行額外的測(cè)試)。由內(nèi)向外,對(duì)下一個(gè)循環(huán)進(jìn)行測(cè)試,但保持所有其他外層循環(huán)為最小值,其他嵌套循環(huán)為“典型”值。繼續(xù)進(jìn)行下去,直到測(cè)試完所有循環(huán)。第八十八頁(yè),共一百三十二頁(yè),2022年,8月28日測(cè)試串接循環(huán)(3)串接循環(huán):如果串接循環(huán)的各個(gè)循環(huán)都彼此獨(dú)立,則可以使用前述的測(cè)試簡(jiǎn)單循環(huán)的方法來(lái)測(cè)試串接循環(huán)。如果兩個(gè)循環(huán)串接,而且第一個(gè)循環(huán)的循環(huán)計(jì)數(shù)器值是第二個(gè)循環(huán)的初始值,則這兩個(gè)循環(huán)并不是獨(dú)立的。當(dāng)循環(huán)不獨(dú)立時(shí),建議使用測(cè)試嵌套循環(huán)的方法來(lái)測(cè)試串接循環(huán)。第八十九頁(yè),共一百三十二頁(yè),2022年,8月28日7.7黑盒測(cè)試技術(shù)黑盒測(cè)試著重測(cè)試軟件功能。白盒測(cè)試在測(cè)試過(guò)程的早期進(jìn)行,而黑盒測(cè)試主要用于測(cè)試過(guò)程的后期。二者是互補(bǔ)的測(cè)試方法。力圖發(fā)現(xiàn)下述類(lèi)型的錯(cuò)誤:①功能不正確或遺漏了功能;②界面錯(cuò)誤;③數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤;④性能錯(cuò)誤;⑤初始化和終止錯(cuò)誤。白盒測(cè)試也稱(chēng)結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,通過(guò)測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照設(shè)計(jì)規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作。第九十頁(yè),共一百三十二頁(yè),2022年,8月28日黑盒測(cè)試用見(jiàn)方法等價(jià)類(lèi)劃分邊界值分析錯(cuò)誤推測(cè)第九十一頁(yè),共一百三十二頁(yè),2022年,8月28日如何劃分等價(jià)類(lèi)?有效等價(jià)類(lèi)(合理等價(jià)類(lèi))無(wú)效等價(jià)類(lèi)(不合理等價(jià)類(lèi))
劃分等價(jià)類(lèi)的標(biāo)準(zhǔn):覆蓋不相交代表性7.7.1等價(jià)劃分第九十二頁(yè),共一百三十二頁(yè),2022年,8月28日劃分等價(jià)類(lèi)的規(guī)則
(1)如果輸入條件規(guī)定了一個(gè)范圍,可定義一個(gè)有效等價(jià)類(lèi)和兩個(gè)無(wú)效等價(jià)類(lèi)。例
輸入值是學(xué)生成績(jī),范圍是0~100第九十三頁(yè),共一百三十二頁(yè),2022年,8月28日
劃分等價(jià)類(lèi)的規(guī)則(2)如果輸入條件規(guī)定了輸入數(shù)據(jù)值的集合或必須遵循的規(guī)則,則可以確定出一個(gè)有效的等價(jià)類(lèi)和若干個(gè)無(wú)效的等價(jià)類(lèi);例如:Pascal語(yǔ)言規(guī)定“一個(gè)語(yǔ)句必須以分號(hào)‘;’結(jié)束”。這時(shí),可以確定一個(gè)有效等價(jià)類(lèi)“以‘;’結(jié)束”,若干個(gè)無(wú)效等價(jià)類(lèi)“以‘:’結(jié)束”、“以‘,’結(jié)束”、“以‘’結(jié)束”、“以LF結(jié)束”等。例如:在Pascal語(yǔ)言中對(duì)變量標(biāo)識(shí)符規(guī)定為“以字母打頭的……串”。那么所有以字母打頭的構(gòu)成有效等價(jià)類(lèi),而不在此集合內(nèi)(不以字母打頭)的歸于無(wú)效等價(jià)類(lèi)。(3)如果輸入條件是一個(gè)布爾量,則可以確定一個(gè)有效等價(jià)類(lèi)和一個(gè)無(wú)效等價(jià)類(lèi)。
第九十四頁(yè),共一百三十二頁(yè),2022年,8月28日劃分等價(jià)類(lèi)的規(guī)則(4)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對(duì)每個(gè)輸入值分別進(jìn)行處理。這時(shí)可為每一個(gè)輸入值確立一個(gè)有效等價(jià)類(lèi),此外針對(duì)這組值確立一個(gè)無(wú)效等價(jià)類(lèi),它是所有不允許的輸入值的集合。例如,在教師上崗方案中規(guī)定對(duì)教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定4個(gè)有效等價(jià)類(lèi)為教授、副教授、講師和助教;一個(gè)無(wú)效等價(jià)類(lèi),它是所有不符合以上身分的人員的輸入值的集合,如工程師、技術(shù)員、科長(zhǎng)等。第九十五頁(yè),共一百三十二頁(yè),2022年,8月28日確立測(cè)試用例的原則建立等價(jià)類(lèi)表,列出所有劃分出的等價(jià)類(lèi)。再?gòu)膭澐殖龅牡葍r(jià)類(lèi)中按以下原則選擇測(cè)試用例:
(1)
設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類(lèi),重復(fù)這一步,直到所有的有效等價(jià)類(lèi)都被覆蓋為止;
(2)
設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類(lèi),重復(fù)這一步,直到所有的無(wú)效等價(jià)類(lèi)都被覆蓋為止。第九十六頁(yè),共一百三十二頁(yè),2022年,8月28日
例:用在某一PASCAL語(yǔ)言版本中規(guī)定:“標(biāo)識(shí)符是由字母開(kāi)頭,后跟字母或數(shù)字的任意組合構(gòu)成。有效字符數(shù)為8個(gè),最大字符數(shù)為80個(gè)?!?并且規(guī)定:“標(biāo)識(shí)符必須先說(shuō)明,再使用?!薄霸谕徽f(shuō)明語(yǔ)句中,標(biāo)識(shí)符至少必須有一個(gè)。”
等價(jià)類(lèi)劃分法實(shí)例第九十七頁(yè),共一百三十二頁(yè),2022年,8月28日建立輸入等價(jià)類(lèi)表第九十八頁(yè),共一百三十二頁(yè),2022年,8月28日下面選取了9個(gè)測(cè)試用例,它們覆蓋了所有的等價(jià)類(lèi)。
①VARx,T1234567:REAL;
BEGINx:=3.414;
T1234567:=2.732;
...…(1),(2),(4),(8),(9),(12),(14)
②VAR:REAL;(3)
③VARx,:REAL;(5)
④VART12345678:REAL;(6)⑤VART12345......:REAL;(7)
多于80個(gè)字符⑥VART$:CHAR;(10)⑦VARGOTO:INTEGER;(11)⑧VAR2T:REAL;(13)⑨VARPAR:REAL;(15)
BEGIN......
PAP:=SIN(3.14*0.8)/6;等價(jià)類(lèi)劃分法實(shí)例第九十九頁(yè),共一百三十二頁(yè),2022年,8月28日
例如:某一報(bào)表處理系統(tǒng),要求用戶(hù)輸入處理報(bào)表的日期。假設(shè)日期限制在1990年1月至1999年12月,即系統(tǒng)只能對(duì)該段時(shí)期內(nèi)的報(bào)表進(jìn)行處理。如果用戶(hù)輸入的日期不在此范圍內(nèi),則顯示輸入錯(cuò)誤信息。該系統(tǒng)規(guī)定日期由年、月的6位數(shù)字字符組成,前4位代表年,后兩位代表月?,F(xiàn)用等價(jià)類(lèi)劃分法設(shè)計(jì)測(cè)試用例,來(lái)測(cè)試程序的“日期檢查功能”。等價(jià)類(lèi)劃分法實(shí)例第一百頁(yè),共一百三十二頁(yè),2022年,8月28日①劃分等價(jià)類(lèi)并編號(hào):劃分成3個(gè)有效等價(jià)類(lèi),7個(gè)無(wú)效等價(jià)類(lèi),如表5-3所示。②為合理等價(jià)類(lèi)設(shè)計(jì)測(cè)試用例,對(duì)于表中編號(hào)為1,5,8對(duì)應(yīng)的3個(gè)合理等價(jià)類(lèi),用一個(gè)測(cè)試用例覆蓋。等價(jià)類(lèi)劃分法實(shí)例第一百零一頁(yè),共一百三十二頁(yè),2022年,8月28日③為每一個(gè)不合理等價(jià)類(lèi)至少設(shè)計(jì)一個(gè)測(cè)試用例:
測(cè)試數(shù)據(jù)期望結(jié)果覆蓋范圍
99MAY輸入無(wú)效219995輸入無(wú)效31999005輸入無(wú)效4198912輸入無(wú)效6200001輸入無(wú)效7199900輸入無(wú)效9199913輸入無(wú)效10等價(jià)類(lèi)劃分法實(shí)例第一百零二頁(yè),共一百三十二頁(yè),2022年,8月28日7.7.2邊界值分析人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。如:下標(biāo)、循環(huán)的邊界設(shè)計(jì)使程序運(yùn)行在邊界情況附近的測(cè)試方案,暴露出程序錯(cuò)誤的可能性更大一些。第一百零三頁(yè),共一百三十二頁(yè),2022年,8月28日三角形的邊長(zhǎng)例如:在做三角形計(jì)算時(shí),要輸入三角形的三個(gè)邊長(zhǎng):A、B和C。我們應(yīng)注意到這三個(gè)數(shù)值應(yīng)當(dāng)滿足
A>0、B>0、C>0、
A+B>C、A+C>B、B+C>A,才能構(gòu)成三角形。但如果把六個(gè)不等式中的任何一個(gè)大于號(hào)“>”錯(cuò)寫(xiě)成大于等于號(hào)“≥”,那就不能構(gòu)成三角形。問(wèn)題恰出現(xiàn)在容易被疏忽的邊界附近。第一百零四頁(yè),共一百三十二頁(yè),2022年,8月28日邊界值分析法測(cè)試方案首先確定邊界情況,通常輸入等價(jià)類(lèi)和輸出等價(jià)類(lèi)的邊界,就是應(yīng)該著重測(cè)試的程序邊界情況。選取剛好等于、稍小于和稍大于等價(jià)類(lèi)邊界值的數(shù)據(jù)作為測(cè)試數(shù)據(jù)。通常聯(lián)合使用等價(jià)劃分和邊界值分析兩種技術(shù)。第一百零五頁(yè),共一百三十二頁(yè),2022年,8月28日
例如:若輸入值的范圍是[1,100],可取0,1,100,101等值作為測(cè)試數(shù)據(jù)。若一個(gè)輸入文件可包括1~255個(gè)記錄,則分別設(shè)計(jì)有1個(gè)記錄、255個(gè)記錄,以及0個(gè)記錄和256個(gè)記錄的輸入文件的測(cè)試用例。若只能查詢(xún)05~09級(jí)大學(xué)生的各科成績(jī),測(cè)試用例應(yīng)查詢(xún)范圍內(nèi)的某一屆或五屆學(xué)生的學(xué)生成績(jī),還需設(shè)計(jì)查詢(xún)04級(jí)、10級(jí)學(xué)生成績(jī)的測(cè)試用例(不合理輸出等價(jià)類(lèi))。
邊界值分析法測(cè)試方案第一百零六頁(yè),共一百三十二頁(yè),2022年,8月28日錯(cuò)誤推測(cè)法主要靠直覺(jué)和經(jīng)驗(yàn)進(jìn)行。依據(jù)常見(jiàn)錯(cuò)誤的清單,列出可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,選擇測(cè)試方案。輸入或輸出數(shù)據(jù)為零個(gè)時(shí)往往容易發(fā)生錯(cuò)誤數(shù)據(jù)庫(kù)操作輸出結(jié)果為空時(shí),容易出錯(cuò)7.7.3錯(cuò)誤推測(cè)第一百零七頁(yè),共一百三十二頁(yè),2022年,8月28日例如,測(cè)試一個(gè)排序子程序,可考慮如下情況:輸入表為空;輸入表只有一個(gè)元素;輸入表的所有元素都相同;輸入表已排序。又如,測(cè)試二分法檢索子程序,可考慮如下情況:表中只有一個(gè)元素;表長(zhǎng)為2n;表長(zhǎng)為2n-1;表長(zhǎng)為2n+1第一百零八頁(yè),共一百三十二頁(yè),2022年,8月28日其它方法判定表或判定樹(shù):適合多個(gè)輸入數(shù)據(jù)組合的情況,列出輸入數(shù)據(jù)各種組合與程序應(yīng)作的動(dòng)作(及相應(yīng)的輸出結(jié)果)之間的對(duì)應(yīng)關(guān)系,然后為判定表的每一列至少設(shè)計(jì)一個(gè)測(cè)試用例。因果圖:適合描述在測(cè)試時(shí)必須考慮對(duì)于多種輸入條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來(lái)設(shè)計(jì)測(cè)試用例,最終生成判定表??梢园延?jì)算機(jī)測(cè)試和人工檢查代碼結(jié)合起來(lái)選擇輸入組合。第一百零九頁(yè),共一百三十二頁(yè),2022年,8月28日第一百一十頁(yè),共一百三十二頁(yè),2022年,8月28日系統(tǒng)測(cè)試(SystemTesting)系統(tǒng)測(cè)試是對(duì)整個(gè)基于計(jì)算機(jī)的系統(tǒng)進(jìn)行的一系列測(cè)試。系統(tǒng)測(cè)試的種類(lèi)很多,每種測(cè)試都有不同的目的,它們從不同的角度測(cè)試計(jì)算機(jī)系統(tǒng)是否被正常地集成,并完成相應(yīng)的功能。常用的系統(tǒng)測(cè)試包括:恢復(fù)測(cè)試(recoverytesting)安全測(cè)試(securitytesting)壓力測(cè)試(stresstesting)性能測(cè)試(performancetesting)第一百一十一頁(yè),共一百三十二頁(yè),2022年,8月28日恢復(fù)測(cè)試(recoverytesting)恢復(fù)測(cè)試是通過(guò)各種手段,強(qiáng)制軟件發(fā)生故障,然后來(lái)驗(yàn)證系統(tǒng)能否在指定的時(shí)間間隔內(nèi)恢復(fù)正常,包括修正錯(cuò)誤并重新啟動(dòng)系統(tǒng)。如果恢復(fù)是由系統(tǒng)自身來(lái)完成的,那么,需驗(yàn)證重新初始化、檢查點(diǎn)機(jī)制、數(shù)據(jù)恢復(fù)和重啟動(dòng)等的正確性。如果恢復(fù)需要人工干預(yù),那么要估算平均修復(fù)時(shí)間MTTR(meantimetorepair)是否在用戶(hù)可以接受的范圍內(nèi)。第一百一十二頁(yè),共一百三十二頁(yè),2022年,8月28日安全測(cè)試(securitytesting)安全測(cè)試用來(lái)驗(yàn)證集成在系統(tǒng)中的保護(hù)機(jī)制能否實(shí)際保護(hù)系統(tǒng)不受非法侵入。在安全測(cè)試過(guò)程中,測(cè)試者扮演一個(gè)試圖攻擊系統(tǒng)的角色,采用各種方式攻擊系統(tǒng)。例如,截取或碼譯密碼;借助特殊軟件攻擊系統(tǒng);“制服”系統(tǒng),使他人無(wú)法訪問(wèn);故意導(dǎo)致系統(tǒng)失效,企圖在系統(tǒng)恢復(fù)之機(jī)侵入系統(tǒng);通過(guò)瀏覽非保密數(shù)據(jù),從中找出進(jìn)入系統(tǒng)的鑰匙等等。一般來(lái)說(shuō),只要有足夠的時(shí)間和資源,好的完全測(cè)試一定能最終侵入系統(tǒng)。系統(tǒng)設(shè)計(jì)者的任務(wù)是把系統(tǒng)設(shè)計(jì)成:攻破系統(tǒng)所付出的代價(jià)大于攻破系統(tǒng)后得到信息的價(jià)值。第一百一十三頁(yè),共一百三十二頁(yè),2022年,8月28日壓力測(cè)試(stresstesting)壓力測(cè)試也稱(chēng)強(qiáng)度測(cè)試,它是在一種需要非正常數(shù)量、頻率或容量的方式下執(zhí)行系統(tǒng),其目的是檢查系統(tǒng)對(duì)非正常情況的承受程度。例如:當(dāng)系統(tǒng)的中斷頻率是每秒1或2個(gè)時(shí),執(zhí)行每秒10個(gè)中斷的測(cè)試用例將輸入數(shù)據(jù)的數(shù)量提高一個(gè)數(shù)量級(jí)來(lái)測(cè)試輸入功能如何響應(yīng)執(zhí)行需要最大內(nèi)存或其它資源的測(cè)試用例執(zhí)行可能導(dǎo)致大量磁盤(pán)駐留數(shù)據(jù)的測(cè)試用例第一百一十四頁(yè),共一百三十二頁(yè),2022年,8月28日性能測(cè)試(performancetesting)性能測(cè)試用來(lái)測(cè)試軟件在集成的系統(tǒng)中的運(yùn)行性能。它對(duì)實(shí)時(shí)系統(tǒng)和嵌入式系統(tǒng)尤為重要。性能測(cè)試可以發(fā)生在測(cè)試過(guò)程的所有步驟中單元測(cè)試時(shí),主要測(cè)試一個(gè)獨(dú)立模塊的性能,如算法的執(zhí)行速度。軟件集成后,進(jìn)行軟件整體的性能測(cè)試。計(jì)算機(jī)系統(tǒng)集成后,進(jìn)行整個(gè)計(jì)算機(jī)系統(tǒng)的性能測(cè)試。性能測(cè)試常常需要與壓力測(cè)試結(jié)合起來(lái)進(jìn)行,而且常常需要一些硬件和軟件測(cè)試設(shè)備,以監(jiān)測(cè)系統(tǒng)的運(yùn)行情況。第一百一十五頁(yè),共一百三十二頁(yè),2022年,8月28日7.8調(diào)試(糾錯(cuò))調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過(guò)程。調(diào)試過(guò)程有兩種結(jié)果:①找到了問(wèn)題的原因并改正和排除了問(wèn)題;②沒(méi)找出問(wèn)題的原因。猜想原因,設(shè)計(jì)測(cè)試用例來(lái)驗(yàn)證假設(shè),重復(fù)此過(guò)程直至找到原因并改正了錯(cuò)誤。是把軟件錯(cuò)誤的癥狀和內(nèi)在原因聯(lián)系起來(lái)的智力過(guò)程,很大程度上依賴(lài)于軟件工程師的經(jīng)驗(yàn)和技巧。第一百一十六頁(yè),共一百三十二頁(yè),2022年,8月28日7.8.1調(diào)試過(guò)程第一百一十七頁(yè),共一百三十二頁(yè),2022年,8月28日軟件錯(cuò)誤的特征(1)癥狀所在的模塊和產(chǎn)生癥狀的原因模塊可能在程序中相距甚遠(yuǎn)。緊耦合時(shí)更加典型。(2)當(dāng)改正了另一個(gè)錯(cuò)誤之后,癥狀可能暫時(shí)消失。(3)癥狀可能實(shí)際上并不是由錯(cuò)誤引起的(如誤差)。(4)癥狀可能是由不易跟蹤的人為錯(cuò)誤引起的。(5)癥狀可能是由定時(shí)問(wèn)題而不是由處理問(wèn)題引起的。(6)可能很難重新產(chǎn)生完全一樣的輸入條件(例如,輸入順序不確定的實(shí)時(shí)應(yīng)用系統(tǒng))。(7)癥狀可能時(shí)有時(shí)無(wú)。在嵌入式系統(tǒng)中特別常見(jiàn)。(8)癥狀可能是由分布運(yùn)行在不同的處理機(jī)上的任務(wù)中的原因引起的。第一百一十八頁(yè),共一百三十二頁(yè),2022年,8月28日調(diào)試的困難調(diào)試是軟件開(kāi)發(fā)過(guò)程中最艱巨的腦力勞動(dòng)。確定發(fā)生錯(cuò)誤的內(nèi)在原因和位置占整個(gè)調(diào)試工作量的90%左右。為什么調(diào)試這么困難?1、軟件錯(cuò)誤本身的特征2、心理方面的原因多于技術(shù)方面的原因3、與測(cè)試比較,調(diào)試技術(shù)缺乏系統(tǒng)的理論研究,調(diào)試方法多是實(shí)踐中的經(jīng)驗(yàn)積累。4、錯(cuò)誤的后果越嚴(yán)重,查找錯(cuò)誤原因的壓力也越大。導(dǎo)致軟件開(kāi)發(fā)人員在改正一個(gè)錯(cuò)誤的同時(shí)引入兩個(gè)甚至更多個(gè)錯(cuò)誤。第一百一十九頁(yè),共一百三十二頁(yè),2022年,8月28日7.8.2調(diào)試途徑經(jīng)驗(yàn):在調(diào)試之前,首先進(jìn)行周密的思考,明確目的,盡量減少無(wú)關(guān)信息的數(shù)量。1.蠻干法1)在程序中插入打印語(yǔ)句比較容易檢查源程序的有關(guān)信息,但低效率,有偶然性。2)運(yùn)行部分程序把不需要執(zhí)行的語(yǔ)句段前和后加上注釋符,使這段程序不再執(zhí)行。調(diào)試過(guò)后,再將注釋符去掉。在不需要執(zhí)行的語(yǔ)句段前加判定值為“假”的IF語(yǔ)句或者加GOTO語(yǔ)句,使該程序不執(zhí)行。調(diào)試結(jié)束后,再撤銷(xiāo)這些語(yǔ)句,使程序復(fù)原。3)借助于調(diào)試工具追蹤子程序調(diào)用、循環(huán)與分支執(zhí)行路徑、特定變量的變化情況;利用“置斷點(diǎn)”可以執(zhí)行特定語(yǔ)句或改變特定變量值引起的程序中斷,以便檢查程序的當(dāng)前狀態(tài)。第一百二十頁(yè),共一百三十二頁(yè),2022年,8月28日調(diào)試途徑2.回溯法是一種相當(dāng)常用的調(diào)試方法,當(dāng)調(diào)試小程序時(shí)這種方法是有效的。從發(fā)現(xiàn)癥狀的地
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 噪聲與振動(dòng)控制的生態(tài)補(bǔ)償機(jī)制考核試卷
- 2025年度行政合同主體義務(wù)履行與權(quán)益保障協(xié)議2篇
- 2025年度高速公路工程混泥土供應(yīng)合同2篇
- 基于光纖SBS效應(yīng)的隨機(jī)分布反饋光纖激光器的研究
- 初中生空間能力與數(shù)學(xué)能力的關(guān)系及其干預(yù)研究
- 二手房購(gòu)買(mǎi)補(bǔ)充合同:明確過(guò)戶(hù)流程與責(zé)任版B版
- 2025年全球及中國(guó)瓜爾豆籽行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球拉絲鋁箔行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球牙釉質(zhì)粘結(jié)劑行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 二零二五年度建筑材料國(guó)際貿(mào)易與結(jié)算協(xié)議3篇
- 2025年門(mén)診部工作計(jì)劃
- 2025福建中閩海上風(fēng)電限公司招聘14人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 智能網(wǎng)聯(lián)汽車(chē)技術(shù)應(yīng)用專(zhuān)業(yè)國(guó)家技能人才培養(yǎng)工學(xué)一體化課程標(biāo)準(zhǔn)
- 政治-北京市朝陽(yáng)區(qū)2024-2025學(xué)年高三第一學(xué)期期末質(zhì)量檢測(cè)考試試題和答案
- 物業(yè)公司績(jī)效考核與激勵(lì)機(jī)制
- 小學(xué)道德與法治學(xué)科教師專(zhuān)業(yè)素質(zhì)真題考試試題及答案
- 中建落地式卸料平臺(tái)專(zhuān)項(xiàng)施工方案
- 2023-2024學(xué)年浙江省麗水市蓮都區(qū)教科版六年級(jí)上冊(cè)期末考試科學(xué)試卷
- 2024北京初三(上)期末語(yǔ)文匯編:議論文閱讀
- 鋰電池應(yīng)急處理培訓(xùn)
- 交通信號(hào)燈安裝工程合同樣本
評(píng)論
0/150
提交評(píng)論