《軟件工程》課件第12章_第1頁
《軟件工程》課件第12章_第2頁
《軟件工程》課件第12章_第3頁
《軟件工程》課件第12章_第4頁
《軟件工程》課件第12章_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

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

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

x=4,y=2黑盒測試輸入輸出預(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=&又稱功能測試,不考慮內(nèi)部結(jié)構(gòu)和處理過程,測試僅在接口上進行。主要應(yīng)用于快速應(yīng)用開發(fā)環(huán)境(RAD)。

RAD:RapidApplicationDevelopment

ZLL7BeiHua

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

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

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

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

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

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

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

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

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

95June無效輸入②

20036無效輸入③

2001006無效輸入④

198912無效輸入⑥

200401無效輸入⑦

200100無效輸入⑨

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

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

1)接口

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

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

4)錯誤處理

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

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

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

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

F(t)=∫

f(x)dx(12-1)

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

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

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

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

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

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

1R(t)dF(t)

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

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

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

R(t)=e–λt

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

R(t)=e–kt2/2

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

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

A(t)≥R(t)。ZLL49BeiHua軟件穩(wěn)態(tài)有效性的兩種度量方法1)軟件系統(tǒng)投入運行后,在一段時間內(nèi),可統(tǒng)計軟件系統(tǒng)的故障停機時間tdi和正常運行時間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)運行時,可統(tǒng)計其平均故障間隔時間MTBF(meantimebetweenfailurs,即程序正常運行時間的平均值)和平均修復(fù)時間MTTR(meantimetorepair,即平均停機時間),則軟件系統(tǒng)的穩(wěn)態(tài)有效性為:

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

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

ET=Nt·n/nt

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

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

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

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

(12-13)

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

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

λ≈r/H于是有:

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

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

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

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

Er(τ)=ET–Ec(τ)(12-15)ZLL56BeiHua2)軟件故障率與程序殘留錯誤數(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)軟件故障率與程序殘留錯誤數(shù)成正比

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

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

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

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

j=1,2,…,n。此時k的估計值為:

k

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

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

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

R(t)=exp[–kεr(τ)t]=exp(–t/MTBF)(12-22)上式中時間參數(shù)τ以月計,表示對程序調(diào)試和維護的時間,t∈[0,τ],以小時計,表示程序運行的時間。式2-46可理解為經(jīng)過τ個月的調(diào)試后所達到的軟件可靠性。ZLL60BeiHua【例12-3】對一個包含10000LOC的程序進行一個月的測試后,總共改正了15個錯誤,此時MTBF=10h,又經(jīng)過一個月測試后,改正了10個錯誤,此時MTBF=15h。試求出:1)測試前程序中的錯誤總數(shù);2)為做到MTBF=100h,應(yīng)進行多長時間的測試?此時程序中還殘留多少個錯誤?3)分析測試各階段的可靠性。解: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è):單位時間內(nèi)改正錯誤后剩余的錯誤數(shù)與改正前錯誤總數(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(個)3)分析測試各階段的可靠性:12.5.3軟件可靠性估算舉例ZLL63BeiHuaτ(月)MTBF與τ的關(guān)系曲線MTBF(τ)(小時)12011010090807060504030201012345678113.975.950.637.7522.251510100ZLL64BeiHua可靠性的公式如下:R(t)=exp[–kεr(τ)t]=exp(–t/MTBF(τ))當(dāng)τ=1(月)時,MTBF(1)=10h,此時的可靠性公式為:R(t)=exp(–t/MTBF(1))

=exp(–t/10)

=e–0.1t

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

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

=exp(–t/100)

=e–0.01t12.5.3軟件可靠性估算舉例ZLL65BeiHuat(小時)測試τ月后的可靠性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測試工具測試執(zhí)行與評價測試設(shè)計與開發(fā)測試計劃評審與檢查TestExecution&Evaluation

ToolsforTestDesign&Development

ToolsforTestplanning

Toolsforreviewsandinspections

ZLL67BeiHua12.6測試工具——

12.5.1自動測試工具

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

14.7設(shè)計并實現(xiàn)上題說明的程序(必要的地方增加出錯處理),用基本路徑測試法設(shè)計測試用例,實際測試和調(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開始結(jié)束12、3和456和789101112131415161718ZLL71BeiHua2)C語言程序如下:#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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論