《軟件工程》07-結(jié)構(gòu)化軟件實(shí)現(xiàn)_第1頁(yè)
《軟件工程》07-結(jié)構(gòu)化軟件實(shí)現(xiàn)_第2頁(yè)
《軟件工程》07-結(jié)構(gòu)化軟件實(shí)現(xiàn)_第3頁(yè)
《軟件工程》07-結(jié)構(gòu)化軟件實(shí)現(xiàn)_第4頁(yè)
《軟件工程》07-結(jié)構(gòu)化軟件實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩104頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程2022/12/102第7章實(shí)現(xiàn)通常把編碼和測(cè)試統(tǒng)稱為實(shí)現(xiàn)。所謂編碼就是把軟件設(shè)計(jì)翻譯成計(jì)算機(jī)可以理解的形式——用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫的程序。編碼是設(shè)計(jì)的自然結(jié)果,程序的質(zhì)量主要取決于軟件設(shè)計(jì)的質(zhì)量。但所選用的程序設(shè)計(jì)語(yǔ)言的特點(diǎn)和編碼風(fēng)格也會(huì)對(duì)程序的可靠性、可讀性、可測(cè)試性和可維護(hù)性產(chǎn)生深遠(yuǎn)的影響。2022/12/103軟件測(cè)試對(duì)軟件可靠性的影響是重要的。人的主觀認(rèn)識(shí)不可能完全符合客觀現(xiàn)實(shí)與工程密切相關(guān)的各類人員之間的通信和配合也不可能完美無(wú)缺在軟件生命周期的每個(gè)階段都不可避免地會(huì)產(chǎn)生差錯(cuò)盡可能早地發(fā)現(xiàn)并糾正差錯(cuò)經(jīng)驗(yàn)表明階段審查并不能發(fā)現(xiàn)所有差錯(cuò)此外在編碼過(guò)程中還不可避免地會(huì)引入新的錯(cuò)誤測(cè)試的目的就是在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤目前軟件測(cè)試仍然是保證軟件質(zhì)量的關(guān)鍵步驟,它是對(duì)軟件規(guī)格說(shuō)明、設(shè)計(jì)和編碼的最后復(fù)審。2022/12/104軟件測(cè)試在軟件生命周期中橫跨兩個(gè)階段。單元測(cè)試,模塊的編寫者和測(cè)試者是同一個(gè)人,編碼和單元測(cè)試屬于軟件生命周期的同一個(gè)階段。對(duì)軟件系統(tǒng)還應(yīng)該進(jìn)行各種綜合測(cè)試,這是軟件生命周期中的另一個(gè)獨(dú)立的階段,通常由專門的測(cè)試人員承擔(dān)這項(xiàng)工作。統(tǒng)計(jì)資料表明,軟件測(cè)試的工作量往往占軟件開(kāi)發(fā)總工作量的40%以上,對(duì)于關(guān)鍵應(yīng)用系統(tǒng)的測(cè)試,可能相當(dāng)于軟件工程其他步驟總成本的3~5倍。2022/12/105測(cè)試目標(biāo)是發(fā)現(xiàn)軟件中的錯(cuò)誤,但不是最終目的。調(diào)試是診斷并改正錯(cuò)誤,這是最終目的。調(diào)試是測(cè)試階段最困難的工作。對(duì)測(cè)試結(jié)果進(jìn)行收集和評(píng)價(jià),確定系統(tǒng)的可靠性。軟件可靠性模型使用故障率數(shù)據(jù),估計(jì)軟件將來(lái)出現(xiàn)故障的情況并預(yù)測(cè)軟件的可靠性。2022/12/1067.1編碼7.2軟件測(cè)試基礎(chǔ)7.3單元測(cè)試7.4集成測(cè)試7.5確認(rèn)測(cè)試7.6白盒測(cè)試技術(shù)7.7黑盒測(cè)試技術(shù)7.8調(diào)試7.9軟件可靠性7.10小結(jié)2022/12/1077.1編碼選擇程序設(shè)計(jì)語(yǔ)言高級(jí)語(yǔ)言明顯優(yōu)于匯編語(yǔ)言,除了對(duì)程度執(zhí)行時(shí)間和使用的空間都有很嚴(yán)格限制的情況需要產(chǎn)生任意的甚至非法的指令序列體系結(jié)構(gòu)特殊的微處理機(jī),以致在這類機(jī)器上通常不能實(shí)現(xiàn)高級(jí)語(yǔ)言編譯程序或者大型系統(tǒng)中執(zhí)行時(shí)間非常關(guān)鍵的(或直接依賴于硬件的)一小部分代碼其他程序應(yīng)該一律用高級(jí)語(yǔ)言書(shū)寫。2022/12/108高級(jí)語(yǔ)言應(yīng)該有理想的模塊化機(jī)制,以及可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);高級(jí)語(yǔ)言的編譯程序能夠盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤;除了理論標(biāo)準(zhǔn),實(shí)用方面還要考慮:系統(tǒng)用戶要求、可用的編譯程序、可得到的軟件工具、工程規(guī)模、程序員知識(shí)、可移植性、應(yīng)用領(lǐng)域等。2022/12/109編碼風(fēng)格源程序代碼的邏輯簡(jiǎn)明清晰、易讀易懂是好程序的一個(gè)重要標(biāo)準(zhǔn),應(yīng)該遵循下述規(guī)則。程序內(nèi)部的文檔恰當(dāng)?shù)臉?biāo)識(shí)符、適當(dāng)注解和程序的視覺(jué)組織等。數(shù)據(jù)說(shuō)明雖然在設(shè)計(jì)期間已經(jīng)確定了數(shù)據(jù)結(jié)構(gòu)的組織和復(fù)雜程度,但數(shù)據(jù)說(shuō)明的風(fēng)格是在寫程序時(shí)確定的。數(shù)據(jù)說(shuō)明次序、同一說(shuō)明語(yǔ)句中變量的字母排序、復(fù)雜數(shù)據(jù)結(jié)構(gòu)的方法和特點(diǎn)的說(shuō)明等。2022/12/1010語(yǔ)句構(gòu)造構(gòu)造語(yǔ)句時(shí)應(yīng)該遵循的原則是,每個(gè)語(yǔ)句都應(yīng)該簡(jiǎn)單而直接,不能為了提高效率而使程序變得過(guò)分復(fù)雜。2022/12/1011輸入/輸出輸入/輸出風(fēng)格的規(guī)則:對(duì)所有輸入數(shù)據(jù)都進(jìn)行檢驗(yàn);檢查輸入項(xiàng)重要組合的合法性;保持輸入格式簡(jiǎn)單;使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶指定數(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)志。2022/12/1012效率處理機(jī)時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面。原則:首先,效率是性能要求,應(yīng)在需求分析階段確定效率方面的要求。軟件應(yīng)該像對(duì)它要求的那樣有效,而不應(yīng)該如同人類可能做到的那樣有效。其次,效率是靠好設(shè)計(jì)來(lái)提高的。第三,程序的效率和程序的簡(jiǎn)單程度是一致的。不要犧牲程序的清晰性和可讀性來(lái)不必要地提高效率。2022/12/10137.2軟件測(cè)試基礎(chǔ)測(cè)試目標(biāo)G.Myers關(guān)于測(cè)試的一些規(guī)則,是測(cè)試的目標(biāo)或定義:測(cè)試是為發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程;好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案;成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。2022/12/1014由于測(cè)試的目標(biāo)是暴露程序中的錯(cuò)誤,從心理學(xué)角度看,由程序的編寫者自己進(jìn)行測(cè)試是不恰當(dāng)?shù)?。在綜合測(cè)試階段通常由其他人員組成測(cè)試小組來(lái)完成測(cè)試工作。2022/12/1015測(cè)試方法(黑盒測(cè)試和白盒測(cè)試)黑盒測(cè)試法把程序看成一個(gè)黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過(guò)程。黑盒測(cè)試是在程序接口進(jìn)行的測(cè)試只檢查程序功能是否能按照規(guī)格說(shuō)明書(shū)的規(guī)定正常使用程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息(如,數(shù)據(jù)庫(kù)或文件)的完整性。黑盒測(cè)試又稱為功能測(cè)試。2022/12/1016白盒測(cè)試法是把程序看成裝在一個(gè)透明的白盒子里,也就是完全了解程序的結(jié)構(gòu)和處理過(guò)程。白盒測(cè)試按照程序內(nèi)部的邏輯測(cè)試程序,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作。白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試。2022/12/1017測(cè)試準(zhǔn)則指導(dǎo)軟件測(cè)試的基本準(zhǔn)則:所有的測(cè)試都應(yīng)該能追溯到用戶需求。應(yīng)該在測(cè)試開(kāi)始之前的相當(dāng)長(zhǎng)時(shí)間,就制定出測(cè)試計(jì)劃。把Pareto原理應(yīng)用于軟件測(cè)試:測(cè)試發(fā)現(xiàn)的錯(cuò)誤中的80%很可能是由程序中20%的模塊造成的。2022/12/1018測(cè)試應(yīng)該從“小規(guī)模”開(kāi)始,并逐步進(jìn)行“大規(guī)?!睖y(cè)試。窮舉測(cè)試是不可能的。為了達(dá)到最佳的測(cè)試效果,應(yīng)該由獨(dú)立的第三方來(lái)從事測(cè)試工作。2022/12/10192022/12/1020對(duì)一個(gè)具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能是天文數(shù)字。給出一個(gè)小程序的流程圖,它包括了一個(gè)執(zhí)行20次的循環(huán)。包含的不同執(zhí)行路徑數(shù)達(dá)520條,對(duì)每一條路徑進(jìn)行測(cè)試需要1毫秒,假定一年工作365×24小時(shí),要想把所有路徑測(cè)試完,需3170年。2022/12/10212022/12/10222022/12/1023測(cè)試策略測(cè)試步驟從過(guò)程的觀點(diǎn)考慮測(cè)試,在軟件工程環(huán)境中的測(cè)試過(guò)程,實(shí)際上是順序進(jìn)行的四個(gè)步驟的序列。最開(kāi)始著重測(cè)試每個(gè)單獨(dú)的模塊,確保它作為一個(gè)單元來(lái)說(shuō)功能是正確的。這種測(cè)試稱為單元測(cè)試。單元測(cè)試大量使用白盒測(cè)試技術(shù),檢查模塊控制結(jié)構(gòu)中的特定路徑,以確保做到完全覆蓋并發(fā)現(xiàn)最大數(shù)量的錯(cuò)誤。2022/12/10242022/12/1025接下來(lái),必須把模塊裝配(即集成)在一起形成完整的軟件包。在裝配的同時(shí)進(jìn)行測(cè)試,因此稱為集成測(cè)試。同時(shí)解決程序驗(yàn)證和程序構(gòu)造這兩個(gè)問(wèn)題。集成過(guò)程中最常用的是黑盒測(cè)試用例設(shè)計(jì)技術(shù),當(dāng)然,為了保證覆蓋主要的控制路徑,也可能使用一定數(shù)量的白盒測(cè)試。集成后,要驗(yàn)證需求分析階段確定下來(lái)的確認(rèn)標(biāo)準(zhǔn),確認(rèn)測(cè)試是對(duì)軟件滿足所有功能的、行為的和性能的需求的最終保證。在確認(rèn)測(cè)試過(guò)程中僅使用黑盒測(cè)試技術(shù)。2022/12/10267.3單元測(cè)試單元測(cè)試和編碼屬于軟件工程過(guò)程同一階段。在編寫出源程序代碼并通過(guò)了編譯程序的語(yǔ)法檢查之后,應(yīng)用人工測(cè)試和計(jì)算機(jī)測(cè)試這樣兩種類型的測(cè)試,完成單元測(cè)試工作。這兩種類型的測(cè)試各有所長(zhǎng),互相補(bǔ)充。2022/12/1027代碼審查人工測(cè)試源程序可以由編寫者本人非正式地進(jìn)行,也可以由審查小組正式進(jìn)行。后者稱為代碼審查,是一種非常有效的程序驗(yàn)證技術(shù),對(duì)于典型的程序來(lái)說(shuō),可以查出30%~70%的邏輯設(shè)計(jì)錯(cuò)誤和編碼錯(cuò)誤。審查小組最好由下述四人組成:組長(zhǎng),應(yīng)該是一個(gè)很有能力的程序員,而且沒(méi)有直接參與這項(xiàng)工程;程序的設(shè)計(jì)者;程序的編寫者;程序的測(cè)試者。2022/12/1028測(cè)試軟件模塊并不是一個(gè)獨(dú)立的程序,必須為每個(gè)單元測(cè)試開(kāi)發(fā)驅(qū)動(dòng)軟件和(或)存根軟件。驅(qū)動(dòng)程序就是一個(gè)“主程序”,接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測(cè)試的模塊,并且輸出有關(guān)結(jié)果。存根程序代替被測(cè)試的模塊所調(diào)用的模塊,也可以稱為“虛擬子程序”。(樁模塊)使用被它代替的模塊的接口,做最少量的數(shù)據(jù)操作,輸出對(duì)入口的檢驗(yàn)或操作結(jié)果,并且把控制歸還給調(diào)用它的模塊。2022/12/10292022/12/1030正文加工系統(tǒng)的層次圖2022/12/10317.4集成測(cè)試集成測(cè)試是測(cè)試和組裝軟件的系統(tǒng)化技術(shù),在把模塊按照設(shè)計(jì)要求組裝起來(lái)的同時(shí)進(jìn)行測(cè)試,主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問(wèn)題。由模塊組裝成程序時(shí)有兩種方法。一種方法是先分別測(cè)試每個(gè)模塊,再把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所要的程序,稱為非漸增式測(cè)試方法;另一種方法是把下一個(gè)要測(cè)試的模塊同已經(jīng)測(cè)試好的那些模塊結(jié)合起來(lái)進(jìn)行測(cè)試,測(cè)試完以后再把下一個(gè)應(yīng)該測(cè)試的模塊結(jié)合進(jìn)來(lái)測(cè)試。這種每次增加一個(gè)模塊的方法稱為漸增式測(cè)試。2022/12/1032自頂向下集成從主控制模塊(主程序)開(kāi)始,沿著軟件的控制層次向下移動(dòng),逐漸把各個(gè)模塊結(jié)合起來(lái)。在把附屬于(以及最終附屬于)主控制模塊的那些模塊組裝到軟件結(jié)構(gòu)中去時(shí),或者使用深度優(yōu)先的策略,或者使用寬度優(yōu)先的策略。把模塊結(jié)合進(jìn)軟件結(jié)構(gòu)的具體過(guò)程由下述四個(gè)步驟完成:2022/12/1033對(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)為止。2022/12/1034自頂向下結(jié)合2022/12/1035自底向上集成從“原子”模塊(在軟件結(jié)構(gòu)最低層的模塊)開(kāi)始組裝和測(cè)試。不需要存根程序。用下述步驟可以實(shí)現(xiàn)自底向上的結(jié)合策略:把低層模塊組合成實(shí)現(xiàn)某特定軟件子功能的簇;寫一個(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)形成更大的子功能簇。第2步到第4步循環(huán)。2022/12/1036自底向上結(jié)合2022/12/1037回歸測(cè)試每當(dāng)一個(gè)新模塊作為集成測(cè)試的一部分加進(jìn)來(lái)的時(shí)候,軟件就發(fā)生了變化:建立了新的數(shù)據(jù)流路徑,可能出現(xiàn)了新的I/O操作,激活了新的控制邏輯。這些變化可能使原來(lái)工作正常的功能出現(xiàn)問(wèn)題。在集成測(cè)試的范疇中,所謂回歸測(cè)試是指重新執(zhí)行已經(jīng)做過(guò)的測(cè)試的某個(gè)子集,以保證上述這些變化沒(méi)有帶來(lái)非預(yù)期的副作用。2022/12/1038回歸測(cè)試集(已執(zhí)行過(guò)的測(cè)試用例的子集)包括下述三種不同的測(cè)試用例。檢測(cè)軟件全部功能的代表性測(cè)試用例。專門針對(duì)可能受修改影響的軟件功能的附加測(cè)試。針對(duì)被修改過(guò)的軟件成分的測(cè)試。2022/12/1039不同集成測(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)是需要存根程序,低層關(guān)鍵模塊中的錯(cuò)誤發(fā)現(xiàn)較晚,而且在早期不能充分展開(kāi)人力。自底向上測(cè)試方法的優(yōu)缺點(diǎn)與上述自頂向下測(cè)試方法的優(yōu)缺點(diǎn)剛好相反。2022/12/1040應(yīng)該根據(jù)軟件的特點(diǎn)以及工程進(jìn)度安排,選用適當(dāng)?shù)臏y(cè)試策略。純粹自頂向下或純粹自底向上的策略可能都不實(shí)用,人們?cè)趯?shí)踐中創(chuàng)造出許多混合策略。在組裝測(cè)試時(shí),應(yīng)當(dāng)確定關(guān)鍵模塊,對(duì)這些關(guān)鍵模塊及早進(jìn)行測(cè)試。關(guān)鍵模塊的特征:

①滿足某些軟件需求;

②在程序的模塊結(jié)構(gòu)中位于較高的層次(高層控制模 塊);

③較復(fù)雜、較易發(fā)生錯(cuò)誤;

④有明確定義的性能要求。2022/12/10417.5確認(rèn)測(cè)試確認(rèn)測(cè)試也稱為驗(yàn)收測(cè)試,目標(biāo)是驗(yàn)證軟件的有效性。使用了確認(rèn)(Validation)和驗(yàn)證(Verification)這樣兩個(gè)不同的術(shù)語(yǔ)。驗(yàn)證是保證軟件正確地實(shí)現(xiàn)了某一特定要求的一系列活動(dòng)確認(rèn)是保證軟件實(shí)現(xiàn)滿足了用戶需求的一系列活動(dòng)。2022/12/1042確認(rèn)測(cè)試的范圍必須有用戶積極參與,或者以用戶為主進(jìn)行。軟件配置復(fù)查確認(rèn)測(cè)試的一個(gè)重要內(nèi)容是復(fù)查軟件配置。Alpha和Beta測(cè)試如果一個(gè)軟件是為許多客戶開(kāi)發(fā)的(例如,向大眾出售的盒裝軟件產(chǎn)品),那么讓每個(gè)客戶都進(jìn)行正式的驗(yàn)收測(cè)試是不現(xiàn)實(shí)的。絕大多數(shù)軟件開(kāi)發(fā)商使用被稱為Alpha測(cè)試和Beta測(cè)試的過(guò)程,來(lái)發(fā)現(xiàn)那些看起來(lái)只有最終用戶才能發(fā)現(xiàn)的錯(cuò)誤。2022/12/1043α測(cè)試由用戶在開(kāi)發(fā)者的場(chǎng)所進(jìn)行,并且在開(kāi)發(fā)者對(duì)用戶的“指導(dǎo)”下進(jìn)行測(cè)試。開(kāi)發(fā)者負(fù)責(zé)記錄錯(cuò)誤和使用中遇到的問(wèn)題。Alpha測(cè)試是在受控的環(huán)境中進(jìn)行的。β測(cè)試由最終用戶在一(多)個(gè)客戶場(chǎng)所進(jìn)行。Beta測(cè)試是軟件在開(kāi)發(fā)者不能控制的環(huán)境中的“真實(shí)”應(yīng)用。用戶記錄下在Beta測(cè)試過(guò)程中遇到的一切問(wèn)題(真實(shí)的或想像的),定期把這些問(wèn)題報(bào)告給開(kāi)發(fā)者。接收到Beta測(cè)試報(bào)告的問(wèn)題后,軟件開(kāi)發(fā)者對(duì)產(chǎn)品進(jìn)行修改,并準(zhǔn)備向客戶發(fā)布最終的軟件產(chǎn)品。2022/12/10447.6白盒測(cè)試技術(shù)邏輯覆蓋是設(shè)計(jì)白盒測(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é)果稱為測(cè)試用例。為提高測(cè)試效率降低成本,應(yīng)選用高效測(cè)試數(shù)據(jù)。不可能進(jìn)行窮盡的測(cè)試,選用少量“最有效的”測(cè)試數(shù)據(jù),做到盡可能完備的測(cè)試。2022/12/1045選擇執(zhí)行某些最有代表性的通路是對(duì)窮盡測(cè)試的唯一可行的替代辦法。邏輯覆蓋是對(duì)一系列測(cè)試過(guò)程的總稱,逐漸進(jìn)行越來(lái)越完整的通路測(cè)試。測(cè)試數(shù)據(jù)執(zhí)行(或叫覆蓋)程序邏輯的程度可以劃分成不同的等級(jí):語(yǔ)句覆蓋為暴露程序的錯(cuò)誤,至少每個(gè)語(yǔ)句應(yīng)該執(zhí)行一次。含義是,選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每個(gè)語(yǔ)句至少執(zhí)行一次。2022/12/1046(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce2022/12/1047L1(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)

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)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)

ornot(A>1)and

(X>1)

ornot(B=0)and(A=2)

ornot(B=0)and(X>1)2022/12/1048測(cè)試用例的設(shè)計(jì)格式如下

【輸入的(A,B,X),輸出的(A,B,X)】為圖例設(shè)計(jì)滿足語(yǔ)句覆蓋的測(cè)試用例是:

【(2,0,4),(2,0,3)】

覆蓋ace【L1】(A=2)and(B=0)

or

(A>1)and(B=0)and(X/A>1)

2022/12/1049判定覆蓋又叫分支覆蓋不僅每個(gè)語(yǔ)句必須至少執(zhí)行一次,而且每個(gè)判定的每種可能的結(jié)果都應(yīng)該至少執(zhí)行一次,也就是每個(gè)判定的每個(gè)分支都至少執(zhí)行一次。條件覆蓋不僅每個(gè)語(yǔ)句至少執(zhí)行一次,而且判定表達(dá)式中每個(gè)條件都取到各種可能的結(jié)果。2022/12/1050【(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)判定覆蓋2022/12/1051如果選擇路徑L3和L4,還可得另一組可用的測(cè)試用例:

【(2,1,1),(2,1,2)】覆蓋abe【L3】

【(3,0,3),(3,1,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)2022/12/1052測(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)條件覆蓋2022/12/1053判定/條件覆蓋判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,判定/條件覆蓋能同時(shí)滿足這兩種覆蓋標(biāo)準(zhǔn)。選取足夠多的測(cè)試數(shù)據(jù),使得判定表達(dá)式中的每個(gè)條件都取到各種可能的值,而且每個(gè)判定表達(dá)式也都取到各種可能的結(jié)果。條件組合覆蓋要求選取足夠多的測(cè)試數(shù)據(jù),使每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。2022/12/1054

測(cè)試用例

覆蓋分支

條件取值【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)(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)判定/條件覆蓋2022/12/1055

andorA>1TB=0TX=X/ATFFA=2TFX>1FX=X+12022/12/1056條件組合覆蓋條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。記①A>1,B=0作

②A>1,B≠0作

③A≯1,B=0作④A≯1,B≠0作2022/12/1057

⑤A=2,X>1作

⑥A=2,X≯1作

⑦A≠2,X>1作

⑧A≠2,X≯1作

測(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) ④,⑧2022/12/1058控制結(jié)構(gòu)測(cè)試基本路徑測(cè)試TomMcCabe提出的一種白盒測(cè)試技術(shù)。首先計(jì)算過(guò)程設(shè)計(jì)結(jié)果的邏輯復(fù)雜度,并以該復(fù)雜度為指南定義執(zhí)行路徑的基本集合,從該基本集合導(dǎo)出的測(cè)試用例可以保證程序中每條語(yǔ)句至少執(zhí)行一次,而且每個(gè)條件在執(zhí)行時(shí)都將分別取true(真)和false(假)值。使用基本路徑測(cè)試技術(shù)設(shè)計(jì)測(cè)試用例步驟如下。根據(jù)過(guò)程設(shè)計(jì)結(jié)果畫出相應(yīng)的流圖2022/12/1059求平均值過(guò)程的流圖2022/12/1060PROCEDUREaverage;/*這個(gè)過(guò)程計(jì)算不超過(guò)100個(gè)在規(guī)定值域內(nèi)的有效數(shù)字的平均值;同時(shí)計(jì)算有效數(shù)字的總和及個(gè)數(shù)。*/INTERFACERETURNSaverage,total_input,total_valid;INTERFACEACCEPTSvalue,minimum,maximum;TYPEvalue[1...100]ISSCALARARRAY;TYPEaverage,total_input,total_valid,minimum,maximum,sumISSCALAR;2022/12/1061TYPEiISINTEGER;1:i=1;total_input=total_valid=0;sum=0;2:DOWHILEvalue[i]<>-9993: ANDtotal_input

<1004: incrementtotal_inputby1;5: IFvalue[i]>=minimum6: ANDvalue[i]<=maximum7: THENincrementtotal_validby1; sum=sum+value[i];8: ENDIF incrementiby1;9:ENDDO2022/12/106210:IFtotal_valid>011:THENaverage=sum/total_valid;12:ELSEaverage=-999;13:ENDIFENDaverage2022/12/1063計(jì)算流圖的環(huán)形復(fù)雜度環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜性。三種方法來(lái)計(jì)算環(huán)形復(fù)雜度。流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度。流圖G的環(huán)形復(fù)雜度V(G)=E-N+2,其中E是流圖中邊的條數(shù),N是流圖中節(jié)點(diǎn)數(shù)。流圖G的環(huán)形復(fù)雜度V(G)=P+1,其中P是流圖中判定節(jié)點(diǎn)的數(shù)目。使用上述任何一種方法,都可以計(jì)算出流圖的環(huán)形復(fù)雜度為6。2022/12/1064確定線性獨(dú)立路徑的基本集合獨(dú)立路徑指至少引入程序一個(gè)新處理語(yǔ)句集合或一個(gè)新條件的路徑,用流圖術(shù)語(yǔ)描述,獨(dú)立路徑至少包含一條在定義該路徑之前不曾用過(guò)的邊。程序的環(huán)形復(fù)雜度決定了程序中獨(dú)立路徑的數(shù)量,而且這個(gè)數(shù)是確保程序中所有語(yǔ)句至少被執(zhí)行一次所需的測(cè)試數(shù)量的上界。對(duì)于所描述的求平均值過(guò)程來(lái)說(shuō),由于環(huán)形復(fù)雜度為6,因此共有6條獨(dú)立路徑。例如,下面列出了6條獨(dú)立路徑:2022/12/1065路徑1:1-2-10-11-13路徑2:1-2-10-12-13路徑3:1-2-3-10-11-13路徑4:1-2-3-4-5-8-9-2-路徑5:1-2-3-4-5-6-8-9-2-路徑6:1-2-3-4-5-6-7-8-9-2-路徑4、5、6后面的省略號(hào)(...)表示,可以后接通過(guò)控制結(jié)構(gòu)其余部分的任意路徑(例如,10-11-13)。通常在導(dǎo)出測(cè)試用例時(shí),識(shí)別出判定節(jié)點(diǎn)是很有必要的。本例中節(jié)點(diǎn)2、3、5、6和10是判定節(jié)點(diǎn)。2022/12/1066設(shè)計(jì)可強(qiáng)制執(zhí)行基本集合中每條路徑測(cè)試用例選取數(shù)據(jù)使得在測(cè)試每條路徑時(shí)都適當(dāng)設(shè)置好了各個(gè)判定節(jié)點(diǎn)的條件。路徑1的測(cè)試用例:

value[k]=有效輸入值,其中k<i(i的定義在下)

value[i]=-999,其中2≤i≤100

預(yù)期結(jié)果:基于k的正確平均值和總數(shù) 注意,路徑1無(wú)法獨(dú)立測(cè)試,必須作為路徑4、5和6的一部分來(lái)測(cè)試。路徑2的測(cè)試用例:

value[1]=-999

預(yù)期結(jié)果:average=-999,其他都保持初始值2022/12/1067路徑4的測(cè)試用例:

value[i]=有效輸入值,其中i<100

value[k]<minimum,其中k<i

預(yù)期結(jié)果:其于k的正確平均值和總數(shù)路徑5的測(cè)試用例:

value[i]=有效輸入值,其中i<100

value[k]>maximum,其中k<i

預(yù)期結(jié)果:其于k的正確平均值和總數(shù)路徑6的測(cè)試用例:

value[i]=有效輸入值,其中i<100

預(yù)期結(jié)果:正確的平均值和總數(shù)2022/12/1068條件測(cè)試盡管基本路徑測(cè)試技術(shù)簡(jiǎn)單而且高效,但是僅有這種技術(shù)還不夠,還需要使用其他控制結(jié)構(gòu)測(cè)試技術(shù),才能進(jìn)一步提高白盒測(cè)試的質(zhì)量。用條件測(cè)試技術(shù)設(shè)計(jì)出的測(cè)試用例,能夠檢查程序模塊中包含的邏輯條件。一個(gè)簡(jiǎn)單條件是一個(gè)布爾變量或一個(gè)關(guān)系表達(dá)式,在布爾變量或關(guān)系表達(dá)式之前還可能有一個(gè)NOT(“┐”)算符。關(guān)系表達(dá)式的形式如下:E1<關(guān)系算符>E2其中,E1和E2是算術(shù)表達(dá)式,而<關(guān)系算符>是下列算符之一:“<”,“≤”,“=”,“≠”,“>”或“≥”。復(fù)合條件由兩個(gè)或多個(gè)簡(jiǎn)單條件、布爾算符和括弧組成。布爾算符有OR(“|”),AND(“&”)和NOT(“┐”)。不包含關(guān)系表達(dá)式的條件稱為布爾表達(dá)式。2022/12/1069在上述種種條件測(cè)試技術(shù)的基礎(chǔ)上,K.C.Tai提出了一種被稱為BRO(BranchandRelationalOperalor)測(cè)試的條件測(cè)試策略。如果在條件中所有布爾變量和關(guān)系算符都只出現(xiàn)一次而且沒(méi)有公共變量,則BRO測(cè)試保證能發(fā)現(xiàn)該條件中的分支錯(cuò)和關(guān)系算符錯(cuò)。BRO測(cè)試?yán)脳l件C的條件約束來(lái)設(shè)計(jì)測(cè)試用例。包含n個(gè)簡(jiǎn)單條件的條件C的條件約束定義為(D1,D2,…,Dn),其中Di(0<i≤n)表示條件C中第i個(gè)簡(jiǎn)單條件的輸出約束。如果在條件C的一次執(zhí)行過(guò)程中,C中每個(gè)簡(jiǎn)單條件的輸出都滿足D中對(duì)應(yīng)的約束,則稱C的這次執(zhí)行覆蓋了C的條件約束D。2022/12/1070對(duì)于布爾變量B來(lái)說(shuō),B的輸出約束指出,B必須是真(t)或假(f)。類似地,對(duì)于關(guān)系表達(dá)式來(lái)說(shuō),用符號(hào)>,=和<指定表達(dá)式的輸出約束。作為一個(gè)例子,考慮下列條件

C1:B1&B2

其中,B1和B2是布爾變量。C1的條件約束形式為(D1,D2),其中D1和D2中的每一個(gè)都是“t”或“f”。值(t,f)是C1的一個(gè)條件約束,并由使B1值為真B2值為假的測(cè)試所覆蓋。BRO測(cè)試策略要求,約束集{(t,t),(f,t),(t,f)}被C1的執(zhí)行所覆蓋。如果C1因布爾算符錯(cuò)誤而不正確,則至少上述約束集中的一個(gè)約束將迫使C1失敗。2022/12/1071循環(huán)測(cè)試循環(huán)測(cè)試是一種白盒測(cè)試技術(shù),專注于測(cè)試循環(huán)結(jié)構(gòu)的有效性。結(jié)構(gòu)化的程序中只有三種循環(huán),簡(jiǎn)單循環(huán)、串接循環(huán)和嵌套循環(huán)。簡(jiǎn)單循環(huán)使用下列測(cè)試集來(lái)測(cè)試簡(jiǎn)單循環(huán),其中n是允許通過(guò)循環(huán)的最大次數(shù)。跳過(guò)循環(huán)。只通過(guò)循環(huán)一次。通過(guò)循環(huán)兩次。通過(guò)循環(huán)m次,其中m<n-1。通過(guò)循環(huán)n-1,n,n+1次。2022/12/1072嵌套循環(huán)如果把簡(jiǎn)單循環(huán)的測(cè)試方法直接應(yīng)用到嵌套循環(huán),可能的測(cè)試數(shù)就會(huì)隨嵌套層數(shù)的增加按幾何級(jí)數(shù)增長(zhǎng),這會(huì)導(dǎo)致不切實(shí)際的測(cè)試數(shù)目。B.Beizer提出了一種能減少測(cè)試數(shù)的方法。從最內(nèi)層循環(huán)開(kāi)始測(cè)試,把所有其他循環(huán)都設(shè)置為最小值。對(duì)最內(nèi)層循環(huán)使用簡(jiǎn)單循環(huán)測(cè)試方法,而使外層循環(huán)的迭代參數(shù)(例如,循環(huán)計(jì)數(shù)器)取最小值,并為越界值或非法值增加一些額外的測(cè)試。由內(nèi)向外,對(duì)下一個(gè)循環(huán)進(jìn)行測(cè)試,但保持所有其他外層循環(huán)為最小值,其內(nèi)循環(huán)為“典型”值。繼續(xù)進(jìn)行下去,直到測(cè)試完所有循環(huán)。2022/12/1073串接循環(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)。2022/12/1074三種循環(huán)2022/12/10757.7黑盒測(cè)試技術(shù)黑盒測(cè)試著重測(cè)試軟件的功能需求,讓軟件工程師設(shè)計(jì)出能充分檢查程序所有功能需求的輸入條件集。黑盒測(cè)試并不能取代白盒測(cè)試技術(shù),它是與白盒測(cè)試互補(bǔ)的方法,它很可能發(fā)現(xiàn)白盒測(cè)試不易發(fā)現(xiàn)的其他不同類型的錯(cuò)誤。2022/12/1076黑盒測(cè)試力圖發(fā)現(xiàn)下述類型的錯(cuò)誤:①功能不正確或遺漏了功能;②界面錯(cuò)誤;③數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤;④性能錯(cuò)誤;⑤初始化和終止錯(cuò)誤。白盒測(cè)試在測(cè)試過(guò)程的早期階段進(jìn)行,而黑盒測(cè)試主要用于測(cè)試過(guò)程的后期。黑盒測(cè)試故意不考慮程序的控制結(jié)構(gòu),而把注意力集中于信息域。2022/12/1077等價(jià)劃分等價(jià)劃分是一種黑盒測(cè)試方法,把程序的輸入域劃分成數(shù)據(jù)類,據(jù)此導(dǎo)出測(cè)試用例。一個(gè)理想的測(cè)試用例能獨(dú)自發(fā)現(xiàn)一類錯(cuò)誤(例如,對(duì)所有字符數(shù)據(jù)的處理都不正確)。如果把所有可能的輸入數(shù)據(jù)(有效的和無(wú)效的)劃分成若干個(gè)等價(jià)類,則可以合理假定:每類中的一個(gè)典型值在測(cè)試中的作用與這一類中所有其他值的作用相同??梢詮拿總€(gè)等價(jià)類中只取一組數(shù)據(jù)作為測(cè)試數(shù)據(jù)。這樣選取的測(cè)試數(shù)據(jù)最有代表性,最可能發(fā)現(xiàn)程序中的錯(cuò)誤。2022/12/1078需要研究程序的功能說(shuō)明,確定輸入數(shù)據(jù)的有效等價(jià)類和無(wú)效等價(jià)類。在確定輸入數(shù)據(jù)的等價(jià)類時(shí)常常還需要分析輸出數(shù)據(jù)的等價(jià)類,以便根據(jù)輸出數(shù)據(jù)的等價(jià)類導(dǎo)出對(duì)應(yīng)的輸入數(shù)據(jù)等價(jià)類。劃分等價(jià)類需要經(jīng)驗(yàn),下述幾條啟發(fā)式規(guī)則可能有助于等價(jià)類的劃分。如果規(guī)定了輸入值的范圍,則可劃分出一個(gè)有效的等價(jià)類(輸入值在此范圍內(nèi)),兩個(gè)無(wú)效的等價(jià)類(輸入值小于最小值或大于最大值)。2022/12/1079如果規(guī)定了輸入數(shù)據(jù)的個(gè)數(shù),則類似地也可以劃分出一個(gè)有效的等價(jià)類和兩個(gè)無(wú)效的等價(jià)類。如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序?qū)Σ煌斎胫底霾煌幚?,則每個(gè)允許的輸入值是一個(gè)有效的等價(jià)類,此外還有一個(gè)無(wú)效的等價(jià)類(任一個(gè)不允許的輸入值)。如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則可以劃分出一個(gè)有效的等價(jià)類(符合規(guī)則)和若干個(gè)無(wú)效的等價(jià)類(從各種不同角度違反規(guī)則)。如果規(guī)定了輸入數(shù)據(jù)為整型,則可以劃分出正整數(shù)、零和負(fù)整數(shù)等三個(gè)有效類。如果程序的處理對(duì)象是表格,則應(yīng)該使用空表,以及含一項(xiàng)或多項(xiàng)的表。2022/12/1080劃分出等價(jià)類以后,等價(jià)類設(shè)計(jì)測(cè)試方案時(shí)主要使用下面兩個(gè)步驟。設(shè)計(jì)一個(gè)新的測(cè)試方案以盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,復(fù)重這一步驟直到所有有效等價(jià)類都被覆蓋為止。設(shè)計(jì)一個(gè)新的測(cè)試方案,使它覆蓋一個(gè)而且只覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步驟直到所有無(wú)效等價(jià)類都被覆蓋為止。2022/12/1081等價(jià)劃分法設(shè)計(jì)一個(gè)簡(jiǎn)單程序的測(cè)試方案。假設(shè)有一個(gè)把數(shù)字串轉(zhuǎn)變成整數(shù)的函數(shù)。運(yùn)行程序的計(jì)算機(jī)字長(zhǎng)16位,用二進(jìn)制補(bǔ)碼表示整數(shù)。這個(gè)函數(shù)是用PASCAL語(yǔ)言編寫的,它的說(shuō)明如下:functionstrtoint(dstr:shortstr):integer;

函數(shù)的參數(shù)類型是shortstr,它的說(shuō)明是:

typeshortstr=array[1..6]ofchar;被處理的數(shù)字串是右對(duì)齊的,也就是說(shuō),如果數(shù)字串比六個(gè)字符短,則在它的左邊補(bǔ)空格。如果數(shù)字串是負(fù)的,則負(fù)號(hào)和最高位數(shù)字緊相鄰(負(fù)號(hào)在最高位數(shù)字左邊一位)。2022/12/1082PASCAL編譯程序固有的檢錯(cuò)功能,測(cè)試時(shí)不需要使用長(zhǎng)度不等于6的數(shù)組做實(shí)參,更不需要使用任何非字符數(shù)組類型的實(shí)參。分析程序的規(guī)格說(shuō)明,可劃分出如下等價(jià)類。有效輸入的等價(jià)類有1~6個(gè)數(shù)字字符組成的數(shù)字串(最高位數(shù)字不是零);最高位數(shù)字是零的數(shù)字串;最高位數(shù)字左鄰是負(fù)號(hào)的數(shù)字串。2022/12/1083無(wú)效輸入的等價(jià)類有空字符串(全是空格);左部填充的字符既不是零也不是空格;最高位數(shù)字右面由數(shù)字和空格混合組成;最高位數(shù)字右面由數(shù)字和其他字符混合組成;負(fù)號(hào)與最高位數(shù)字之間有空格。合法輸出的等價(jià)類有在計(jì)算機(jī)能表示最小負(fù)整數(shù)和零之間的負(fù)整數(shù);零;在零和計(jì)算機(jī)能表示最大正整數(shù)之間的正整數(shù)。2022/12/1084非法輸出的等價(jià)類有比計(jì)算機(jī)能表示的最小負(fù)整數(shù)還小的負(fù)整數(shù);比計(jì)算機(jī)能表示的最大正整數(shù)還大的正整數(shù)。因?yàn)樗玫挠?jì)算機(jī)字長(zhǎng)16位,用二進(jìn)制補(bǔ)碼表示整數(shù),所以能表示的最小負(fù)整數(shù)是-32768,能表示的最大正整數(shù)是32767。設(shè)計(jì)出下述測(cè)試方案(每個(gè)測(cè)試方案由三部分內(nèi)容組成)。1~6個(gè)數(shù)字組成的數(shù)字串,輸出是合法的正整數(shù)。輸入:‘1’預(yù)期的輸出:12022/12/1085最高位數(shù)字是零的數(shù)字串,輸出合法正整數(shù)。輸入:‘000001’預(yù)期的輸出:1負(fù)號(hào)與最高位數(shù)字緊相鄰,輸出合法負(fù)整數(shù)。輸入:‘-00001’預(yù)期的輸出:-1最高位數(shù)字是零,輸出也是零。輸入:‘000000’預(yù)期的輸出:0太小的負(fù)整數(shù)。輸入:‘-47561’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”2022/12/1086太大的正整數(shù)。輸入:‘132767’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”空字符串。輸入:‘’預(yù)期的輸出:“錯(cuò)誤——沒(méi)有數(shù)字”字符串左部字符既不是零也不是空格。輸入:‘╳

╳╳╳╳

1’預(yù)期的輸出:“錯(cuò)誤——填充錯(cuò)”2022/12/1087最高位數(shù)字后面有空格。輸入:‘12’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”最高位數(shù)字后面有其他字符。輸入:‘1╳

╳2’預(yù)期的輸出:“錯(cuò)誤——無(wú)效輸入”負(fù)號(hào)和最高位數(shù)字之間有空格。輸入:‘-12’預(yù)期的輸出:“錯(cuò)誤——負(fù)號(hào)位置錯(cuò)”2022/12/1088邊界值分析處理邊界情況時(shí)程序最容易發(fā)生錯(cuò)誤。如,許多程序錯(cuò)誤出現(xiàn)在下標(biāo)、純量、數(shù)據(jù)結(jié)構(gòu)和循環(huán)等的邊界附近。因此,設(shè)計(jì)使程序運(yùn)行在邊界情況附近的測(cè)試方案,暴露出程序錯(cuò)誤的可能性更大一些。使用邊界值分析方法設(shè)計(jì)測(cè)試方案首先應(yīng)該確定邊界情況,這需要經(jīng)驗(yàn)和創(chuàng)造性,通常輸入等價(jià)類和輸出等價(jià)類的邊界,就是應(yīng)該著重測(cè)試的程序邊界情況。2022/12/1089選取的測(cè)試數(shù)據(jù)應(yīng)該剛好等于、剛剛小于和剛剛大于邊界值。按照邊界值分析法,應(yīng)該選取剛好等于、稍小于和稍大于等價(jià)類邊界值的數(shù)據(jù)作為測(cè)試數(shù)據(jù),而不是選取每個(gè)等價(jià)類內(nèi)的典型值或任意值作為測(cè)試數(shù)據(jù)。2022/12/1090錯(cuò)誤推測(cè)錯(cuò)誤推測(cè)法在很大程度上靠直覺(jué)和經(jīng)驗(yàn)進(jìn)行。它的基本想法是列舉出程序中可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,并且根據(jù)它們選擇測(cè)試方案。2022/12/10917.8調(diào)試調(diào)試(也稱為糾錯(cuò))作為成功的測(cè)試的后果而出現(xiàn),即調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過(guò)程。調(diào)試過(guò)程調(diào)試不是測(cè)試,但是它總是發(fā)生在測(cè)試之后。如圖5.10所示,調(diào)試過(guò)程從執(zhí)行一個(gè)測(cè)試用例開(kāi)始,評(píng)估測(cè)試結(jié)果,如果發(fā)現(xiàn)實(shí)際結(jié)果與預(yù)期結(jié)果不一致,則這種不一致就是一個(gè)癥狀,它表明在軟件中存在著隱藏的問(wèn)題。調(diào)試過(guò)程試圖找出產(chǎn)生癥狀的原因,以便改正錯(cuò)誤。2022/12/1092調(diào)試過(guò)程2022/12/1093調(diào)試途徑調(diào)試的根本目標(biāo)都是尋找軟件錯(cuò)誤的原因并改正。這個(gè)目標(biāo)是通過(guò)把系統(tǒng)地評(píng)估、直覺(jué)和運(yùn)氣組合起來(lái)實(shí)現(xiàn)的。一般來(lái)說(shuō),有下列三種調(diào)試途徑可以采用:蠻干法:打印內(nèi)存數(shù)據(jù)、關(guān)鍵輸出、斷點(diǎn)回溯法:由癥狀回推可能的原因原因排除法:對(duì)分查找、歸納、演繹等方法2022/12/10947.9軟件可靠性基本概念軟件可靠性的定義軟件可靠性是程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說(shuō)明書(shū)的規(guī)定成功地運(yùn)行的概率。2022/12/1095軟件的可用性通常用戶也很關(guān)注軟件系統(tǒng)可以使用的程度。對(duì)于任何其故障是可以修復(fù)的系統(tǒng),都應(yīng)該同時(shí)使用可靠性和可用性衡量它的優(yōu)劣程度。軟件可用性的一個(gè)定義是:軟件可用性是程序在給定的時(shí)間點(diǎn),按照規(guī)格說(shuō)明書(shū)的規(guī)定,成功地運(yùn)行的概率。如果在一段時(shí)間內(nèi),軟件系統(tǒng)故障停機(jī)時(shí)間分別為td1,td2…,正常運(yùn)行時(shí)間分別為tu1,tu2,…,則系統(tǒng)的穩(wěn)態(tài)可用性為:2022/12/1096

其中Tup=∑tui,Tdown=∑tdi如果引入系統(tǒng)平均無(wú)故障時(shí)間MTTF和平均維修時(shí)間MTTR的概念,則(5.1)式可以變成2022/12/1097平均維修時(shí)間MTTR是修復(fù)一個(gè)故障平均需要用的時(shí)間,取決于維護(hù)人員的技術(shù)水平和對(duì)系統(tǒng)的熟悉程度,也和系統(tǒng)的可維護(hù)性有重要關(guān)系。平均無(wú)故障時(shí)間MTTF是系統(tǒng)按規(guī)格說(shuō)明書(shū)規(guī)定成功地運(yùn)行的平均時(shí)間,它主要取決于系統(tǒng)中潛伏的錯(cuò)誤的數(shù)目,因此和測(cè)試的關(guān)系十分密切。2022/12/1098估算平均無(wú)故障時(shí)間的方法軟件的平均無(wú)故障時(shí)間MTTF是一個(gè)重要的質(zhì)量指標(biāo),作為對(duì)軟件的一項(xiàng)要求由用戶提出。為估算MTTF,先引入一些有關(guān)的量。符號(hào)估算MTTF使用下述符號(hào)表示有關(guān)的數(shù)量:ET——測(cè)試之前程序中錯(cuò)誤總數(shù);IT——程序長(zhǎng)度(機(jī)器指令總數(shù));τ——測(cè)試(包括調(diào)試)時(shí)間;Ed(τ)——在0至τ期間發(fā)現(xiàn)的錯(cuò)誤數(shù)Ec(τ)——在0至τ

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論