《軟件工程》課件第12章_第1頁(yè)
《軟件工程》課件第12章_第2頁(yè)
《軟件工程》課件第12章_第3頁(yè)
《軟件工程》課件第12章_第4頁(yè)
《軟件工程》課件第12章_第5頁(yè)
已閱讀5頁(yè),還剩71頁(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)介

ZLL1BeiHua軟件工程第12章軟件測(cè)試測(cè)試基礎(chǔ)知識(shí)測(cè)試技術(shù)測(cè)試過(guò)程調(diào)試可靠性度量測(cè)試工具ZLL2BeiHua復(fù)習(xí):軟件開(kāi)發(fā)過(guò)程一一對(duì)應(yīng)

計(jì)劃&&實(shí)施單元測(cè)試組裝測(cè)試驗(yàn)收測(cè)試詳細(xì)設(shè)計(jì)概要設(shè)計(jì)需求分析ZLL3BeiHua軟件測(cè)試基本概念定義執(zhí)行程序、排除的錯(cuò)誤的過(guò)程;是對(duì)軟件規(guī)格說(shuō)明、設(shè)計(jì)和編碼的最全面最后的審查作用發(fā)現(xiàn)軟件中的錯(cuò)誤提高正確性、可靠性、質(zhì)量工作量工作量占的40%以上,甚至3~5倍以上目標(biāo)執(zhí)行,以發(fā)現(xiàn)錯(cuò)誤好用例,發(fā)現(xiàn)尚未發(fā)現(xiàn)的錯(cuò)誤好測(cè)試,發(fā)現(xiàn)錯(cuò)的測(cè)試用例ZLL4BeiHua12.1.1軟件測(cè)試的原則①盡早不斷地進(jìn)行軟件“測(cè)試”②輸入數(shù)據(jù),合理不合理都要選③按階段制定測(cè)試計(jì)劃,嚴(yán)格執(zhí)行④錯(cuò)多重測(cè)。⑤避免自測(cè)⑥勿用窮舉⑦長(zhǎng)期保存文檔ZLL5BeiHua12.1.2軟件測(cè)試方法靜態(tài)測(cè)試采用人工檢測(cè)和計(jì)算機(jī)輔助靜態(tài)分析的方法對(duì)程序進(jìn)行檢測(cè)2種方法動(dòng)態(tài)測(cè)試事先設(shè)計(jì)好一組測(cè)試用例,然后通過(guò)運(yùn)行程序來(lái)發(fā)現(xiàn)錯(cuò)誤ZLL6BeiHua合理的輸入:

x=4,y=2黑盒測(cè)試輸入輸出預(yù)期結(jié)果:

r=4x=-4,y=4x值有誤x=0,y=0y值有誤r=x+4/y輸入整數(shù)x、y,求r值不合理的輸入:

x=3.5,y=2.6值不正確???x=a,y=&又稱功能測(cè)試,不考慮內(nèi)部結(jié)構(gòu)和處理過(guò)程,測(cè)試僅在接口上進(jìn)行。主要應(yīng)用于快速應(yīng)用開(kāi)發(fā)環(huán)境(RAD)。

RAD:RapidApplicationDevelopment

ZLL7BeiHua

白盒測(cè)試完全了解程序的內(nèi)部結(jié)構(gòu)和詳細(xì)的處理過(guò)程,測(cè)試在程序內(nèi)部結(jié)構(gòu)上進(jìn)行。主要應(yīng)用于結(jié)構(gòu)化開(kāi)發(fā)環(huán)境。ZLL8BeiHua9.輸出r值3.x值錯(cuò)10.結(jié)束6.y值錯(cuò)1.輸入x,y2.x<0N4.r1=sqrt(x)5.y==07.r2=4/yN8.r=r1+r2路徑1:1,2,3,10路徑2:1,2,4,5,6,10路徑3:1,2,4,5,

7,8,9,10測(cè)試數(shù)據(jù)1:x=-2,y=7測(cè)試數(shù)據(jù)2:x=4,y=0測(cè)試數(shù)據(jù)3:x=4,y=7YYYNYNNr=x+4/y開(kāi)始ZLL9BeiHua黑、白盒對(duì)比分析總結(jié)類型測(cè)試依據(jù)開(kāi)發(fā)環(huán)境測(cè)試原則黑盒功能需求快速應(yīng)用開(kāi)發(fā)環(huán)境所有可能的輸入及其結(jié)果白盒程序內(nèi)部結(jié)構(gòu)結(jié)構(gòu)化開(kāi)發(fā)環(huán)境覆蓋所有的路徑(語(yǔ)句)ZLL10BeiHua12.1.3軟件測(cè)試階段的信息流測(cè)試評(píng)價(jià)糾錯(cuò)可靠性評(píng)價(jià)軟件配置測(cè)試配置測(cè)試結(jié)果錯(cuò)誤錯(cuò)誤統(tǒng)計(jì)預(yù)期結(jié)果正確的程序預(yù)期的可靠性ZLL11BeiHua12.1.4軟件測(cè)試過(guò)程部件代碼部件代碼部件代碼單元測(cè)試單元測(cè)試單元測(cè)試…其他軟件需求設(shè)計(jì)規(guī)格說(shuō)明系統(tǒng)功能需求用戶需求規(guī)格說(shuō)明集成測(cè)試集成后的模塊功能測(cè)試功能系統(tǒng)性能測(cè)試驗(yàn)證,生效的軟件驗(yàn)收測(cè)試被接受的系統(tǒng)安裝測(cè)試用戶環(huán)境在使用中的系統(tǒng)測(cè)試后的模塊ZLL12BeiHua12.1.5軟件測(cè)試中常見(jiàn)的錯(cuò)誤類型性質(zhì)、范圍不同可分為代碼數(shù)據(jù)功能系統(tǒng)ZLL13BeiHua思考方向:測(cè)試中如何建立和使用數(shù)學(xué)模型1如何對(duì)Web應(yīng)用程序進(jìn)行測(cè)試2如何快速開(kāi)發(fā)測(cè)試工具3ZLL14BeiHua12.2軟件測(cè)試技術(shù)

黑盒測(cè)試——邊界值分析、錯(cuò)誤推測(cè)、組合數(shù)據(jù)測(cè)試黑盒測(cè)試——等價(jià)類劃分白盒測(cè)試——循環(huán)測(cè)試白盒測(cè)試——基本路徑

白盒測(cè)試——邏輯覆蓋ZLL15BeiHua12.2軟件測(cè)試技術(shù)一.白盒測(cè)試基礎(chǔ):內(nèi)部邏輯結(jié)構(gòu)原則:

獨(dú)立路徑、分支路徑、條件結(jié)果、循環(huán)邊界/一般條件、內(nèi)部數(shù)據(jù)的有效性,至少各執(zhí)行一次ZLL16BeiHua白盒測(cè)試——邏輯覆蓋名稱測(cè)試內(nèi)容弱強(qiáng)語(yǔ)句覆蓋每條語(yǔ)句一次,查語(yǔ)句,不查判定條件判定覆蓋判定每種結(jié)果(分支),含1,只覆全部路徑一半條件覆蓋每個(gè)條件的所有值,都滿足判定/條件每個(gè)條件所有值;每個(gè)判定表達(dá)式的所有結(jié)果條件組合每個(gè)判定式條件各種可能值的組合路徑所有可能路徑(x>1)AND(y=0)(x=2)OR(z>1)語(yǔ)句段1語(yǔ)句段2開(kāi)始結(jié)束TTFFabcdeZLL17BeiHua4個(gè)條件,共有8種組合:①x>1,y=0;②x>1,y≠0;③x≤1,y=0;④x≤1,y≠0;⑤x=2,z>1;⑥x=2,z≤1;⑦x≠2,z>1;⑧x≠2,z≤1。(x>1)AND(y=0)(x=2)OR(z>1)語(yǔ)句段1語(yǔ)句段2開(kāi)始結(jié)束TTFFabcdex=2,y=0,z=3;覆蓋條件組合①和⑤,通過(guò)路徑abcde;x=2,y=1,z=1;覆蓋條件組合②和⑥,通過(guò)路徑acde;x=0,y=0,z=3;覆蓋條件組合③和⑦,通過(guò)路徑acde;x=1,y=1,z=1;覆蓋條件組合④和⑧,通過(guò)路徑ace。但未通過(guò)路徑abce。條件組合覆蓋ZLL18BeiHua路徑覆蓋共有4條路徑,設(shè)計(jì)4組測(cè)試用例,就可以覆蓋這4條路徑:x=2,y=0,z=3;覆蓋路徑abcdex=2,y=1,z=1;覆蓋路徑acdex=1,y=1,z=1;覆蓋路徑acex=3,y=0,z=1;覆蓋路徑abce(x>1)AND(y=0)(x=2)OR(z>1)語(yǔ)句段1語(yǔ)句段2開(kāi)始結(jié)束TTFFabcde沒(méi)有覆蓋條件組合③和⑦③x≤1,y=0⑦x≠2,z>1ZLL19BeiHua白盒測(cè)試——基本路徑控制流程已知流圖1環(huán)形復(fù)雜性2基本路徑集合3測(cè)試用例412345689111012R1R2R4R67步驟2:據(jù)流圖確定環(huán)形復(fù)雜性度量V(G):

1)V(G)=E–N+2=16–12+2=6;其中E為流圖中的邊數(shù),N為結(jié)點(diǎn)數(shù);

2)V(G)=6(個(gè)區(qū)域);

3)V(G)=P+1=5+1=6;其中P為謂詞結(jié)點(diǎn)的個(gè)數(shù)。在流圖中,結(jié)點(diǎn)2、3、5、6、9是謂詞結(jié)點(diǎn)。步驟3:確定基本路徑集合(即獨(dú)立路徑集合)。路徑1:1—2—…—2—9—10—12路徑2:1—2—9—11—12路徑3:1—2—3—9—10—12路徑4:1—2—3—4—5—8—2…路徑5:1—2—3—4—5—6—8—2…路徑6:1—2—3—4—5—6—7—8—2…步驟4:為每一條獨(dú)立路徑各設(shè)計(jì)一組測(cè)試用例,以便強(qiáng)迫程序沿著該路徑至少執(zhí)行一次。ZLL20BeiHua白盒測(cè)試——循環(huán)測(cè)試1)對(duì)于最多為n次的單循環(huán),可設(shè)計(jì)測(cè)試用例實(shí)現(xiàn)下列測(cè)試:①跳過(guò)循環(huán),即一次也不執(zhí)行;②僅循環(huán)1次;③循環(huán)2次;④循環(huán)m次,m<n;⑤分別循環(huán)n–1次,n次,n+1次。2)對(duì)于嵌套循環(huán)的測(cè)試:①?gòu)淖顑?nèi)層循環(huán)開(kāi)始測(cè)試,此時(shí)外層循環(huán)都取最小值,對(duì)內(nèi)層進(jìn)行單循環(huán)的測(cè)試;②向外退一層進(jìn)行測(cè)試,此時(shí)其內(nèi)層循環(huán)取一些典型值,其外層循環(huán)仍取最小值;③繼續(xù)向外層擴(kuò)展,直至測(cè)試完成。ZLL21BeiHua

黑盒測(cè)試目的:主要是測(cè)試軟件是否滿足功能需求。測(cè)試的錯(cuò)誤類型有:①不正確或遺漏的功能;②接口錯(cuò)誤;③性能錯(cuò)誤;④數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)訪問(wèn)錯(cuò)誤;⑤初始化或終止條件錯(cuò)誤等等。黑盒測(cè)試設(shè)計(jì)測(cè)試用例的方法:等價(jià)類的劃分、邊界值分析、錯(cuò)誤推測(cè)、組合數(shù)據(jù)測(cè)試等。ZLL22BeiHua黑盒測(cè)試——等價(jià)類劃分【例12.1】設(shè)有一個(gè)檔案管理系統(tǒng),要求用戶輸入以年月表示的日期。假設(shè)日期限定在1990年1月~2003年12月,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年,后2位表示月?,F(xiàn)用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例,來(lái)測(cè)試程序的“日期檢查功能”。1)劃分等價(jià)類并編號(hào)表12-1等價(jià)類劃分的結(jié)果輸入等價(jià)類有效等價(jià)類無(wú)效等價(jià)類日期的類型及長(zhǎng)度①6位數(shù)字字符②有非數(shù)字字符③少于6位數(shù)字字符④多于6位數(shù)字字符年份范圍⑤在1990~2003之間⑥小于1990⑦大于2003月份范圍⑧在01~12之間⑨等于00⑩大于12ZLL23BeiHua黑盒測(cè)試——等價(jià)類劃分2)設(shè)計(jì)測(cè)試用例,以便覆蓋所有的有效等價(jià)類(每個(gè)用例盡可能多地覆蓋尚未被覆蓋過(guò)的有效等價(jià)類)在表12-1中列出了3個(gè)有效等價(jià)類,編號(hào)分別為①、⑤、⑧,設(shè)計(jì)的測(cè)試用例如下:測(cè)試數(shù)據(jù)期望結(jié)果覆蓋的有效等價(jià)類200211輸入有效①、⑤、⑧ZLL24BeiHua黑盒測(cè)試——等價(jià)類劃分3)為每一個(gè)無(wú)效等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例,設(shè)計(jì)結(jié)果如下:

測(cè)試數(shù)據(jù)期望結(jié)果覆蓋的無(wú)效等價(jià)類

95June無(wú)效輸入②

20036無(wú)效輸入③

2001006無(wú)效輸入④

198912無(wú)效輸入⑥

200401無(wú)效輸入⑦

200100無(wú)效輸入⑨

200113無(wú)效輸入⑩ZLL25BeiHua等價(jià)類劃分的幾條經(jīng)驗(yàn)性原則①如果規(guī)定了輸入值的范圍,則可劃分出一個(gè)有效的和兩個(gè)無(wú)效的等價(jià)類。②如果規(guī)定了數(shù)據(jù)輸入的個(gè)數(shù),則可劃分出一個(gè)有效的和兩個(gè)無(wú)效的等價(jià)類。③如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序?qū)Σ煌妮斎胫颠M(jìn)行不同的處理,則每個(gè)允許的輸入值是一個(gè)有效的等價(jià)類,有一個(gè)無(wú)效的等價(jià)類(這組值以外的值)。④如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則有一個(gè)有效的等價(jià)類和若干個(gè)無(wú)效的等價(jià)類(從不同的角度違反規(guī)則)。⑤如果輸入條件規(guī)定了一個(gè)集合,則可劃分出一個(gè)有效的等價(jià)類和一個(gè)無(wú)效的等價(jià)類。ZLL26BeiHua黑盒測(cè)試——邊界值分析邊界值分析(boundaryvalueanalysis,BVA)是指設(shè)計(jì)測(cè)試用例,使程序在輸入或輸出的邊界值或者邊界值左右的值執(zhí)行。邊界值分析方法可以單獨(dú)設(shè)計(jì)測(cè)試用例,也可以作為等價(jià)類劃分方法的補(bǔ)充,即在各個(gè)等價(jià)類中主要是選擇邊界上及其左右的值。例如例14.1中對(duì)月份范圍的測(cè)試就可以選擇00、01、02、11、12、13等數(shù)據(jù)作為測(cè)試用例。ZLL27BeiHua邊界值分析方法設(shè)計(jì)測(cè)試用例的經(jīng)驗(yàn)性原則1)如果輸入條件指定了范圍[a,b],則a、b以及緊挨a、b左右的各一個(gè)值都應(yīng)作為測(cè)試用例。比如,學(xué)生成績(jī)?yōu)閇0,100],應(yīng)取-1、0、1、99、100、101共6個(gè)值作為測(cè)試用例。2)如果輸入條件指定了輸入數(shù)據(jù)的個(gè)數(shù)范圍,則按最大、最小個(gè)數(shù)及其左右的個(gè)數(shù)各設(shè)計(jì)一個(gè)測(cè)試用例。比如,一個(gè)輸入文件應(yīng)包括1~255個(gè)記錄,則應(yīng)分別設(shè)計(jì)輸入0個(gè)、1個(gè)、2個(gè)、254個(gè)、255個(gè)、256個(gè)記錄的測(cè)試用例。3)將規(guī)則1)和2)應(yīng)用于輸出條件,即設(shè)計(jì)測(cè)試用例使輸出值達(dá)到邊界值及其左右的值。ZLL28BeiHua黑盒測(cè)試——錯(cuò)誤推測(cè)基本思想是:程序測(cè)試員通過(guò)已經(jīng)掌握的測(cè)試?yán)碚摵蛯?shí)際測(cè)試中積累的經(jīng)驗(yàn),推測(cè)程序在哪些情況下可能發(fā)生錯(cuò)誤,并將可能發(fā)生錯(cuò)誤的情況列出,然后為每一可能發(fā)生錯(cuò)誤的情況各設(shè)計(jì)一個(gè)測(cè)試用例。例如,測(cè)試一個(gè)對(duì)線性表(比如數(shù)組)進(jìn)行排序的程序,可推測(cè)列出以下幾項(xiàng)需要特別測(cè)試的情況:1)輸入的線性表為空表;2)表中只含有一個(gè)元素;3)輸入表中所有元素已排好序;4)輸入表已按逆序排好;5)輸入表中部分或全部元素相同。可以針對(duì)以上列出的每一種情況各設(shè)計(jì)一個(gè)測(cè)試用例。ZLL29BeiHua黑盒測(cè)試——組合數(shù)據(jù)測(cè)試

實(shí)踐表明,在單個(gè)測(cè)試用例沒(méi)有測(cè)試出錯(cuò)誤的情況下,采用測(cè)試數(shù)據(jù)的某種組合卻可能檢測(cè)出程序中隱藏很深的錯(cuò)誤。組合數(shù)據(jù)測(cè)試法可以采用的有效工具有判定表、判定樹(shù)等。以判定表為例,即列出輸入數(shù)據(jù)的各種組合情況和程序相應(yīng)的動(dòng)作、可能的輸出結(jié)果之間的對(duì)應(yīng)關(guān)系,然后為判定表的每一列至少設(shè)計(jì)一個(gè)測(cè)試用例。ZLL30BeiHua12.3測(cè)試執(zhí)行的步驟:?jiǎn)卧獪y(cè)試單元測(cè)試的內(nèi)容

1)接口

2)局部數(shù)據(jù)結(jié)構(gòu)

3)重要的執(zhí)行路徑

4)錯(cuò)誤處理

5)邊界測(cè)試模塊(部件)詳細(xì)設(shè)計(jì)ZLL31BeiHua測(cè)試執(zhí)行的步驟:集成測(cè)試集成測(cè)試的內(nèi)容:①通過(guò)接口的數(shù)據(jù)②模塊間的功能影響③子功能組合起來(lái)有沒(méi)有實(shí)現(xiàn)主功能;④全局?jǐn)?shù)據(jù)結(jié)構(gòu)⑤誤差積累接口概要設(shè)計(jì)ZLL32BeiHua測(cè)試執(zhí)行的步驟:集成測(cè)試自頂向下自底向上深度優(yōu)先或廣度優(yōu)先ZLL33BeiHua測(cè)試執(zhí)行的步驟:驗(yàn)收測(cè)試集成測(cè)試的內(nèi)容:又稱為確認(rèn)測(cè)試。確認(rèn)測(cè)試是一種驗(yàn)收形式的測(cè)試,主要是檢查軟件是否滿足軟件需求規(guī)格說(shuō)明書(shū)中的確認(rèn)標(biāo)準(zhǔn),即測(cè)試軟件能否按照合同的要求運(yùn)行。功能需求分析ZLL34BeiHua測(cè)試執(zhí)行的步驟:系統(tǒng)測(cè)試幾類系統(tǒng)測(cè)試簡(jiǎn)介:1)功能測(cè)試2)性能測(cè)試3)恢復(fù)測(cè)試4)安全測(cè)試5)容量測(cè)試6)壓力測(cè)試7)可用性測(cè)試8)存儲(chǔ)器測(cè)試9)兼容性/轉(zhuǎn)換性能測(cè)試10)構(gòu)成測(cè)試11)可靠性測(cè)試12)可服務(wù)性測(cè)試13)資料測(cè)試14)規(guī)程測(cè)試15)安裝測(cè)試ZLL35BeiHua12.4調(diào)試——調(diào)試的概念

調(diào)試則是在進(jìn)行了一次成功的測(cè)試之后立即開(kāi)始的。1調(diào)試的目的是確定錯(cuò)誤的位置和引起錯(cuò)誤的原因,并加以改正。因此,又稱為排錯(cuò)或糾錯(cuò)。2錯(cuò)誤定位是軟件工程中最困難的工作,確定發(fā)生錯(cuò)誤的位置和內(nèi)在原因所需的工作量幾乎占整個(gè)調(diào)試工作量的90%。3ZLL36BeiHua隱藏在程序中的錯(cuò)誤的特殊的性質(zhì)包括:①錯(cuò)誤的表現(xiàn)遠(yuǎn)離引起錯(cuò)誤的位置和內(nèi)在原因,尤其對(duì)高度耦合的程序結(jié)構(gòu)更是如此;②某些錯(cuò)誤現(xiàn)象可能是假象;③糾正一個(gè)錯(cuò)誤可能引起多個(gè)錯(cuò)誤,也可能掩蓋其他錯(cuò)誤;④由于操作員的疏忽致使錯(cuò)誤現(xiàn)象無(wú)法重現(xiàn),很難追蹤;⑤錯(cuò)誤可能不是直接由程序引起的;⑥某些輸入條件難于精確地再構(gòu)造(如某些實(shí)時(shí)系統(tǒng)的輸入次序不確定);⑦錯(cuò)誤現(xiàn)象時(shí)有時(shí)無(wú)。12.4調(diào)試——調(diào)試的概念ZLL37BeiHua12.4.2調(diào)試策略分為三類:原始類;歸納法排除類;回溯類。演繹法1.原始類(bruteforce)其主要思想是“通過(guò)程序運(yùn)行現(xiàn)場(chǎng)找錯(cuò)”。例如輸出存儲(chǔ)器、寄存器的內(nèi)容,在程序中插入打印語(yǔ)句等等。這種方法的效率低,還需要修改程序,更依賴測(cè)試人員的能力和經(jīng)驗(yàn)。ZLL38BeiHua12.4.2調(diào)試策略——2.歸納法調(diào)試1收集數(shù)據(jù)收集程序做對(duì)了什么和做錯(cuò)了什么的有關(guān)全部數(shù)據(jù)2整理、分析數(shù)據(jù)對(duì)收集的數(shù)據(jù)進(jìn)行分析、比較和整理,注意觀察數(shù)據(jù)間的關(guān)系,從錯(cuò)誤的癥狀中發(fā)現(xiàn)線索3提出假設(shè)對(duì)這些線索進(jìn)行研究和推測(cè),提出有關(guān)錯(cuò)誤產(chǎn)生的原因和部位的一個(gè)或多個(gè)假設(shè)。如果有多個(gè)假設(shè),首先選擇可能性最大的一個(gè)。4證明假設(shè)由數(shù)據(jù)驗(yàn)證或反正假設(shè),如果假設(shè)得到證實(shí),據(jù)此閱讀程序找出出錯(cuò)原因和位置并進(jìn)行改正;如果無(wú)法驗(yàn)證,則可能假設(shè)錯(cuò)誤或有多重錯(cuò)誤,需要提出新的假設(shè),進(jìn)行新的驗(yàn)證。ZLL39BeiHua12.4.2調(diào)試策略3.演繹法調(diào)試演繹法是枚舉所有可能引起出錯(cuò)的原因作為假設(shè),然后從中排除不可能發(fā)生的原因和假設(shè),對(duì)余下的假設(shè)進(jìn)行不斷地驗(yàn)證和改進(jìn),最后從中推演出出錯(cuò)的原因和部位。4.回溯法調(diào)試對(duì)小型程序進(jìn)行調(diào)試,回溯法是一種有效的方法。該方法是從發(fā)現(xiàn)錯(cuò)誤現(xiàn)象的地方出發(fā),人工沿程序的控制流程向回追蹤,直至找到產(chǎn)生錯(cuò)誤的原因?yàn)橹?。但是,?dāng)程序的規(guī)模較大時(shí),由于需回溯的路線顯著增加,因此無(wú)法做到完全回溯,只好采用其他的調(diào)試方法。ZLL40BeiHua12.5軟件可靠性度量1.軟件可靠性由于大型軟件投入使用后還是要?dú)埩粢欢〝?shù)量的錯(cuò)誤。于是,當(dāng)某些操作或輸入數(shù)據(jù)導(dǎo)致遇到這些錯(cuò)誤時(shí),就會(huì)使程序失效,從而出現(xiàn)軟件故障。軟件可靠性定義為在某個(gè)給定時(shí)間間隔內(nèi),程序按照規(guī)格說(shuō)明成功運(yùn)行的概率。12.5.1軟件可靠性的有關(guān)概念ZLL41BeiHua1.軟件可靠性令:隨機(jī)變量t表示發(fā)生故障的時(shí)刻,t∈[0,∞];函數(shù)f(t)為隨機(jī)變量t的概率密度函數(shù),

F(t)表示分布函數(shù);

P(0≤t≤t1)表示從初始時(shí)刻到t1時(shí)刻程序發(fā)生故障的概率。設(shè):初始時(shí)刻程序運(yùn)行正常,即F(0)=0。于是有:

F(t)=∫

f(x)dx(12-1)

f(t)=dF(t)(12-2)dt0tZLL42BeiHua令:Pf(t1)表示從0到t1時(shí)刻程序發(fā)生故障的概率,有:Pf(t1)=P(0≤t≤t1)=F(t1)–F(0)=F(t1)如果在[0,t]區(qū)間程序成功運(yùn)行的概率為Ps(t)、發(fā)生故障的概率為Pf(t),則有:

Ps(t)+Pf(t)=1Ps(t)就是可靠性,一般標(biāo)記為R(t)。由以上幾個(gè)式子可導(dǎo)出:R(t)=1–Pf(t)=1–F(t)=1–∫f(x)dx(12-3)上式說(shuō)明,當(dāng)軟件殘留的錯(cuò)誤數(shù)一定時(shí),程序運(yùn)行的時(shí)間越長(zhǎng),發(fā)生故障的次數(shù)越多,軟件的可靠性越小。0t1.軟件可靠性ZLL43BeiHuadR(t)

R(t)下面引入故障率函數(shù)Z(t),以比較一個(gè)程序在不同時(shí)期、或不同程序在同一時(shí)期的可靠性。設(shè)系統(tǒng)一直成功運(yùn)行至?xí)r刻t,t∈[t1,t1+△t],P(t1≤t≤t1+△t,t>t1)是系統(tǒng)在[t1,t1+△t]時(shí)間間隔且t>t1時(shí)發(fā)生故障的概率。故障率函數(shù)Z(t1)的值定義為:Z(t1)=limP(t1≤t≤t1+△t,t>t1)/△t(12-4)可以證明:

Z(t)=·(12-5)對(duì)式(12-3)的兩端對(duì)時(shí)間t求導(dǎo)得:

dF(t)/dt=–dR(t)/dt,代入上式,得:

=–Z(t)dt(12-6)

1R(t)dF(t)

d(t)1.軟件可靠性ZLL44BeiHua對(duì)上式兩端積分,利用初始條件R(0)=1,可得:

R(t)=exp[–∫Z(x)dx](12-7)上式即為可靠性和故障率的基本方程式。據(jù)此可以導(dǎo)出幾個(gè)常用的故障模型:

1)Z(t)=λ,其中λ是常數(shù)。將λ代入式(12-7),可得:

R(t)=e–λt

(12-8)上式稱為故障率為常數(shù)的可靠性模型。由于故障率是常數(shù),可靠性將隨著時(shí)間t的增加呈指數(shù)衰減。t01.軟件可靠性ZLL45BeiHua2)Z(t)=kt,這里k為常數(shù),t≥0。將kt代入式(12-7),可得:

R(t)=e–kt2/2

(12-9)上式稱為故障率是時(shí)間的線性函數(shù)時(shí)的可靠性模型。即當(dāng)存在損耗和退化時(shí),故障率將隨著時(shí)間的增加而線性增加。該模型一般不適合于軟件產(chǎn)品。需要指出,軟件中的錯(cuò)誤一般都是人為的設(shè)計(jì)錯(cuò)誤,其中多數(shù)是邏輯錯(cuò)誤。隨著對(duì)軟件的測(cè)試及修復(fù),軟件系統(tǒng)中的錯(cuò)誤會(huì)越來(lái)越少。因此,實(shí)際軟件系統(tǒng)的故障率函數(shù)曲線應(yīng)如圖2-5-1所示,即軟件故障率不是常數(shù)、也不是線性函數(shù),而是按指數(shù)規(guī)律下降。實(shí)際的統(tǒng)計(jì)結(jié)果也說(shuō)明了這一點(diǎn)。1.軟件可靠性ZLL46BeiHua圖12-12軟件系統(tǒng)故障率Z(t)OtZ(t)O圖12-12軟件系統(tǒng)故障率t2.軟件的有效性及其度量ZLL47BeiHua2.軟件的有效性及其度量軟件的有效性函數(shù)A(t)定義為軟件系統(tǒng)在時(shí)刻t按照規(guī)格說(shuō)明成功運(yùn)行的概率??煽啃耘c有效性之間的差別是,可靠性強(qiáng)調(diào)軟件系統(tǒng)在0~t這段時(shí)間間隔內(nèi)都有效,而有效性強(qiáng)調(diào)軟件系統(tǒng)在時(shí)刻t這一時(shí)間點(diǎn)有效。A(200)=0.93表示假設(shè)有100個(gè)相同的系統(tǒng)同時(shí)啟動(dòng)運(yùn)行,運(yùn)行到200小時(shí)這一時(shí)刻,其中有93個(gè)處于正常運(yùn)行狀態(tài),7個(gè)出現(xiàn)故障,等待修復(fù)。R(200)=0.93表示假設(shè)有100個(gè)相同的系統(tǒng)有93個(gè)無(wú)故障運(yùn)行了200小時(shí),有7個(gè)在此期間發(fā)生故障。ZLL48BeiHua2.軟件的有效性及其度量一般來(lái)說(shuō),對(duì)R(200)=0.93的要求比對(duì)A(200)=0.93的要求要嚴(yán)格得多。對(duì)于不可修復(fù)系統(tǒng)(即不允許程序停止運(yùn)行的系統(tǒng))或沒(méi)有修復(fù)能力的情況:

A(t)=R(t)對(duì)于可修復(fù)系統(tǒng)并能及時(shí)修復(fù)的情況:

A(t)≥R(t)。ZLL49BeiHua軟件穩(wěn)態(tài)有效性的兩種度量方法1)軟件系統(tǒng)投入運(yùn)行后,在一段時(shí)間內(nèi),可統(tǒng)計(jì)軟件系統(tǒng)的故障停機(jī)時(shí)間tdi和正常運(yùn)行時(shí)間tuj,則軟件系統(tǒng)的穩(wěn)態(tài)有效性為:

A(t)=Tu/(Tu+Td

)(12-10)其中:t=Tu+Td,Td=∑tdi,Tu=∑tujZLL50BeiHua軟件穩(wěn)態(tài)有效性的兩種度量方法2)軟件系統(tǒng)在穩(wěn)態(tài)運(yùn)行時(shí),可統(tǒng)計(jì)其平均故障間隔時(shí)間MTBF(meantimebetweenfailurs,即程序正常運(yùn)行時(shí)間的平均值)和平均修復(fù)時(shí)間MTTR(meantimetorepair,即平均停機(jī)時(shí)間),則軟件系統(tǒng)的穩(wěn)態(tài)有效性為:

A=MTBF/(MTBF+MTTR)(12-11)采用上述方法,在開(kāi)發(fā)階段和投入運(yùn)行后都可以定量地度量軟件系統(tǒng)的有效性和可靠性。軟件系統(tǒng)投入運(yùn)行的一段時(shí)間內(nèi),可以用各種輸入和操作來(lái)引發(fā)程序中殘留的錯(cuò)誤,經(jīng)過(guò)多次修復(fù)后錯(cuò)誤將逐漸減少,有效性和可靠性將不斷提高。ZLL51BeiHua2.5.2軟件可靠性的估算軟件可靠性估算模型大致分為宏觀和微觀模型兩類。宏觀模型是從程序中殘留錯(cuò)誤數(shù)的角度建立模型,并用統(tǒng)計(jì)方法確定模型參數(shù)。而微觀模型則以程序的控制結(jié)構(gòu)和語(yǔ)句分析為基礎(chǔ)。下面僅介紹幾個(gè)典型的宏觀模型。1.殘留錯(cuò)誤總數(shù)的估算模型對(duì)殘留錯(cuò)誤總數(shù)的估算是可靠性估算的基礎(chǔ)。典型的估算模型:錯(cuò)誤植入模型;分別測(cè)試模型。ZLL52BeiHua1)錯(cuò)誤植入模型Mills首先提出了估算程序中殘留錯(cuò)誤總數(shù)的錯(cuò)誤植入模型。即在進(jìn)行測(cè)試之前,由專人(比如統(tǒng)計(jì)人員)在程序中隨機(jī)地植入一些錯(cuò)誤(稱為帶有標(biāo)記的錯(cuò)誤),測(cè)試人員測(cè)試之后,通過(guò)統(tǒng)計(jì)測(cè)試人員發(fā)現(xiàn)的原有錯(cuò)誤和植入錯(cuò)誤的比例來(lái)估算程序中原有錯(cuò)誤總數(shù)。設(shè):Nt—植入的錯(cuò)誤數(shù),n—測(cè)試發(fā)現(xiàn)原有的錯(cuò)誤數(shù),

nt—發(fā)現(xiàn)植入的錯(cuò)誤數(shù),ET—原有的錯(cuò)誤總數(shù)。則有:ET/Nt≈n/nt于是ET的估算模型為:

ET=Nt·n/nt

(12-12)ZLL53BeiHua2)分別測(cè)試模型1973年,Hyman對(duì)錯(cuò)誤植入模型做了改進(jìn),即用甲、乙兩個(gè)程序測(cè)試員同時(shí)對(duì)一個(gè)程序的兩個(gè)副本進(jìn)行獨(dú)立測(cè)試。設(shè):ET——程序中原有的殘留錯(cuò)誤總數(shù),

E1——甲在[0,τ]時(shí)間內(nèi)發(fā)現(xiàn)的錯(cuò)誤數(shù),

E2——乙在[0,τ]時(shí)間內(nèi)發(fā)現(xiàn)的錯(cuò)誤數(shù),

E0——兩人在[0,τ]時(shí)間內(nèi)發(fā)現(xiàn)的相同的錯(cuò)誤的個(gè)數(shù),則有:ET=E1·E2/E0

(12-13)

Hyman提出的分別測(cè)試模型無(wú)論在技術(shù)上還是在經(jīng)濟(jì)上都比錯(cuò)誤植入模型優(yōu)越。ZLL54BeiHua2.軟件平均故障間隔時(shí)間的估算軟件的平均故障間隔時(shí)間MTBF是可靠性度量的一個(gè)重要參數(shù),往往作為一個(gè)重要的質(zhì)量指標(biāo)由用戶提出來(lái)。下面介紹MTBF的估算方法。

1)軟件故障率為常數(shù)當(dāng)軟件故障率λ為常數(shù)時(shí),假設(shè)程序運(yùn)行H小時(shí),共發(fā)生r次故障,則λ的估算值為:

λ≈r/H于是有:

MTBF=1/λ=H/r(12-14)ZLL55BeiHua2)軟件故障率與程序殘留錯(cuò)誤數(shù)成正比設(shè):IT—程序代碼長(zhǎng)度;

ET—測(cè)試之前程序中殘留錯(cuò)誤總數(shù);

Ec(τ)—[0,τ]區(qū)間內(nèi)改正的錯(cuò)誤數(shù);

Er(τ)—在τ時(shí)刻程序中剩余的錯(cuò)誤數(shù);其中τ為調(diào)試和排錯(cuò)時(shí)間。于是,剩余的錯(cuò)誤數(shù)為:

Er(τ)=ET–Ec(τ)(12-15)ZLL56BeiHua2)軟件故障率與程序殘留錯(cuò)誤數(shù)成正比Er(τ)=ET–Ec(τ)(12-16)用IT去除上式的兩邊,有:

Er(τ)/IT=ET/IT–Ec(τ)/IT令:εr(τ)=Er(τ)/IT,εT=ET/IT,

εc(τ)=Ec(τ)/IT,于是有:

εr(τ)=εT–εc(τ)(12-17)

ZLL57BeiHua2)軟件故障率與程序殘留錯(cuò)誤數(shù)成正比

由于軟件故障率λ=λ(τ)與程序殘留錯(cuò)誤數(shù)成正比,所以有:

λ=kεr(τ)=k(εT–εc(τ))(12-18)

其中的比例因子k可通過(guò)實(shí)驗(yàn)測(cè)試和統(tǒng)計(jì)的方法來(lái)估算。設(shè)進(jìn)行n次軟件排錯(cuò)實(shí)驗(yàn),時(shí)間區(qū)間為[0,τj],到τj

時(shí)刻為止,共排除了Ec(τj)個(gè)錯(cuò)誤,而在時(shí)間區(qū)間[0,τj]內(nèi),程序運(yùn)行了Hj小時(shí),出現(xiàn)了rj個(gè)錯(cuò)誤,

j=1,2,…,n。此時(shí)k的估計(jì)值為:

k

=∑rj/∑Hj[εT–εc(τj)](12-19)nj=1nj=1ZLL58BeiHua2)軟件故障率與程序殘留錯(cuò)誤數(shù)成正比k

=∑rj/∑Hj[εT–εc(τj)](12-19)當(dāng)n=1時(shí),

k=r/H[εT–εc(τ)](12-20)當(dāng)n=2時(shí),k=(r1+r2)/{H1[εT–εc(τ1)]++H2[εT–εc(τ2)]}(12-21)k的值估算出來(lái)之后,即可利用式(12-21)估算MTBF,它是τ的函數(shù)。ZLL59BeiHua2)軟件故障率與程序殘留錯(cuò)誤數(shù)成正比對(duì)于確定的τ值,λ=kεr(τ)為常數(shù),于是,經(jīng)過(guò)[0,τ]區(qū)間的排錯(cuò)后,軟件可靠性估算為:

R(t)=exp[–kεr(τ)t]=exp(–t/MTBF)(12-22)上式中時(shí)間參數(shù)τ以月計(jì),表示對(duì)程序調(diào)試和維護(hù)的時(shí)間,t∈[0,τ],以小時(shí)計(jì),表示程序運(yùn)行的時(shí)間。式2-46可理解為經(jīng)過(guò)τ個(gè)月的調(diào)試后所達(dá)到的軟件可靠性。ZLL60BeiHua【例12-3】對(duì)一個(gè)包含10000LOC的程序進(jìn)行一個(gè)月的測(cè)試后,總共改正了15個(gè)錯(cuò)誤,此時(shí)MTBF=10h,又經(jīng)過(guò)一個(gè)月測(cè)試后,改正了10個(gè)錯(cuò)誤,此時(shí)MTBF=15h。試求出:1)測(cè)試前程序中的錯(cuò)誤總數(shù);2)為做到MTBF=100h,應(yīng)進(jìn)行多長(zhǎng)時(shí)間的測(cè)試?此時(shí)程序中還殘留多少個(gè)錯(cuò)誤?3)分析測(cè)試各階段的可靠性。解:1)∵λ=kεr(τ),MTBF=1/λEr(τ)=ITεr(τ)=IT/(k·MTBF)∴EC(τ)=ET–IT/(k·MTBF)即:15=ET–10000/(k·10)

15+10=ET–10000/(k·15)解上述方程組,得:ET=45,k=100/312.5.3軟件可靠性估算舉例ZLL61BeiHua2)假設(shè):?jiǎn)挝粫r(shí)間內(nèi)改正錯(cuò)誤后剩余的錯(cuò)誤數(shù)與改正前錯(cuò)誤總數(shù)成正比,于是有:

Er(1)=k1ET

(1)

Er(2)=k1Er(1)=k12ET

(2)∴Er(τ)=k1τET

(3)由(1)式,45–15=k1×45,得k1=2/3,∴MTBF(τ)=IT/(kEr(τ))

=IT/(kk1τET

=10000/[(100/3)×(2/3)τ×45)]=6.666667×(3/2)τ

(4)

12.5.3軟件可靠性估算舉例ZLL62BeiHuaMTBF(τ)=6.666667×(3/2)τ

(4)將已知MTBF(τ)=100,代入(4)式:

MTBF(τ)=(20/3)×(3/2)τ

100=(20/3)×(3/2)τ

(1.5)τ=15τ=ln15/ln1.5=6.68(月)由上面的(3)式,

Er(τ)=k1τET=(2/3)τ×45,將τ=6.68(月)代入,得:

Er(6.68)=45×(2/3)6.68=2.99863≈3(個(gè))3)分析測(cè)試各階段的可靠性:12.5.3軟件可靠性估算舉例ZLL63BeiHuaτ(月)MTBF與τ的關(guān)系曲線MTBF(τ)(小時(shí))12011010090807060504030201012345678113.975.950.637.7522.251510100ZLL64BeiHua可靠性的公式如下:R(t)=exp[–kεr(τ)t]=exp(–t/MTBF(τ))當(dāng)τ=1(月)時(shí),MTBF(1)=10h,此時(shí)的可靠性公式為:R(t)=exp(–t/MTBF(1))

=exp(–t/10)

=e–0.1t

當(dāng)τ=6.68(月)時(shí),MTBF(6.68)=100h,則:

R(t)=exp(–t/MTBF(6.68))

=exp(–t/100)

=e–0.01t12.5.3軟件可靠性估算舉例ZLL65BeiHuat(小時(shí))測(cè)試τ月后的可靠性R(t)曲線10.90.80.70.60.50.40.30.20.1R(t)1020304050607080τ=6.68月,R(t)=e–0.01tτ=1月,R(t)=e–0.1tZLL66BeiHua12.6測(cè)試工具測(cè)試執(zhí)行與評(píng)價(jià)測(cè)試設(shè)計(jì)與開(kāi)發(fā)測(cè)試計(jì)劃評(píng)審與檢查TestExecution&Evaluation

ToolsforTestDesign&Development

ToolsforTestplanning

Toolsforreviewsandinspections

ZLL67BeiHua12.6測(cè)試工具——

12.5.1自動(dòng)測(cè)試工具

1)模塊驅(qū)動(dòng)工具(moduleanimatetool)2)靜態(tài)分析器(staticanalyzers);3)測(cè)試覆蓋監(jiān)視器;4)程序正確性證明器;5)測(cè)試數(shù)據(jù)生成器(testdatagenerators);6)環(huán)境模擬器;此外,還有:代碼審查器、測(cè)試文件產(chǎn)生器、測(cè)試驗(yàn)證器、符號(hào)處理系統(tǒng)、輸出比較器、測(cè)試套具,等等。ZLL68BeiHua12.6.2調(diào)試工具在早期,調(diào)試工具用符號(hào)調(diào)試器。目前的大多數(shù)程序設(shè)計(jì)環(huán)境,如VB、VC++、BorlandC++Builder、PB、C#等都是帶有CASE工具的集成開(kāi)發(fā)環(huán)境,即將編輯、編譯、連接、運(yùn)行、調(diào)試、打包、項(xiàng)目管理、文件管理、部件管理、數(shù)據(jù)庫(kù)等多個(gè)工具集成在一起。其中的調(diào)試工具常見(jiàn)的功能有設(shè)置斷點(diǎn),單步執(zhí)行,跟蹤,查看、修改變量或表達(dá)式的值等等。ZLL69BeiHua習(xí)題14.6假設(shè)某程序讀入三個(gè)整數(shù),分別解釋為三角形的各邊,并據(jù)此打印信息,說(shuō)明三角形是普通的、等腰的或等邊的。為此程序設(shè)計(jì)一組有效的測(cè)試用例。

14.7設(shè)計(jì)并實(shí)現(xiàn)上題說(shuō)明的程序(必要的地方增加出錯(cuò)處理),用基本路徑測(cè)試法設(shè)計(jì)測(cè)試用例,實(shí)際測(cè)試和調(diào)試后總結(jié)所得到的結(jié)果。ZLL70BeiHua解:1)程序流程圖如下:輸入a,b,ca+b<=c|||a-b|>=ca==ba<=0||b<=0||c<=0輸入a,b,c輸出不是a==c輸出等邊輸出等腰a==c輸出等腰b==c輸出等腰輸出普通FTTTTTTFFFFF開(kāi)始結(jié)束12、3和456和789101112131415161718ZLL71BeiHua2)C語(yǔ)言程序如下:#include"math.h"main(){inta,b,c;printf("pleaseinputa,b,c:

");scanf("%d%d%d

",&a,&b,&c);while(a<=0||b<=0||c<=0){printf("a,b,cmustbe>0!\npleaseinputa,b,c:

");scanf("%d%d%d

",&a,&b,&c);}if(a+b<=c||abs(a-b)>=c)printf(“Itisnotatriangle!\n

");elseif(a==b)if(a==c)printf("Itisaequilateraltriangle!\n

");elseprintf("Itisaisoscelestriangle!\n

");elseif(a==c)printf("Itisaisoscelestriangle!\n

");elseif(b==c)printf("Itisaisoscel

溫馨提示

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