軟件工程軟件測試_第1頁
軟件工程軟件測試_第2頁
軟件工程軟件測試_第3頁
軟件工程軟件測試_第4頁
軟件工程軟件測試_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1軟件生存周期軟件生存周期可行性研究可行性研究需求分析需求分析概要設(shè)計概要設(shè)計詳細設(shè)計詳細設(shè)計編編 碼碼集成測試集成測試確認測試確認測試使用與維護使用與維護退役退役軟件定義軟件定義軟件開發(fā)軟件開發(fā)軟件使用軟件使用與維護與維護軟件生命周期軟件生命周期2軟件測試軟件測試3防不勝防的軟件錯誤防不勝防的軟件錯誤 例:例:1963年年, 美國美國, 飛往火星的火箭爆炸飛往火星的火箭爆炸, 損失損失$ 10 million. 原因原因: fortran循環(huán)循環(huán) do 5 i = 1, 3 誤寫為誤寫為 do 5 i = 1.3軟軟 件件 測測 試試 (testing)軟件測試是保證軟件質(zhì)量的關(guān)鍵步驟,是對

2、軟件規(guī)軟件測試是保證軟件質(zhì)量的關(guān)鍵步驟,是對軟件規(guī)格說明、設(shè)計和編碼的最后復(fù)審,其工件量約占總格說明、設(shè)計和編碼的最后復(fù)審,其工件量約占總工作量工作量40%以上(對于人命關(guān)天的情況,測試相當(dāng)以上(對于人命關(guān)天的情況,測試相當(dāng)于其它部分總成本的于其它部分總成本的3 5倍倍)。)。41. 基本概念基本概念1、定義:測試是為了、定義:測試是為了發(fā)現(xiàn)程序中的錯誤發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序而執(zhí)行程序的過程。的過程。注意:注意: 只能盡可能查錯,不能證明程序中只能盡可能查錯,不能證明程序中 沒有錯;沒有錯; 測試員與程序員不應(yīng)是同一個人。測試員與程序員不應(yīng)是同一個人。2、黑盒和白盒測試、黑盒和白盒測試 黑

3、盒測試黑盒測試(black-box , or closed-box testing): 不考慮程序內(nèi)部的結(jié)構(gòu),只觀察程序的入口和出口,不考慮程序內(nèi)部的結(jié)構(gòu),只觀察程序的入口和出口,是否能完成規(guī)格要求的輸入輸出是否能完成規(guī)格要求的輸入輸出. 功能測試功能測試5 白盒測試白盒測試(white-box , or open-box, clear-box testing): 程序的結(jié)構(gòu)和處理過程象白盒子一樣透明程序的結(jié)構(gòu)和處理過程象白盒子一樣透明. 結(jié)構(gòu)測試結(jié)構(gòu)測試1. 基本概念基本概念141416161616161610103 32 22 22 2若程序執(zhí)行需若程序執(zhí)行需10-3秒,則對于所有合法輸入

4、秒,則對于所有合法輸入的測試大約需用一萬年,而且還應(yīng)測試輸入非法的測試大約需用一萬年,而且還應(yīng)測試輸入非法數(shù)據(jù)的情況。數(shù)據(jù)的情況。主要問題:窮盡測試主要問題:窮盡測試(complete test)通常通常是不可能的。是不可能的。例:例:(black-box) 程序要求輸入程序要求輸入3個整形數(shù)據(jù)。若字長個整形數(shù)據(jù)。若字長16位,則各種可能輸入的排列組合共有位,則各種可能輸入的排列組合共有 (種)(種)6例:例:(white-box) 下圖所示的程序中共有下圖所示的程序中共有 520 1014條可能的執(zhí)行通路,顯然,每條通路都執(zhí)行條可能的執(zhí)行通路,顯然,每條通路都執(zhí)行一遍是不現(xiàn)實的。一遍是不現(xiàn)實

5、的。1. 基本概念基本概念循環(huán)循環(huán)2020次次73、測試步驟:測試步驟:(1) 單元測試單元測試 程序設(shè)計程序設(shè)計 & 編碼編碼 bugs(2) 集成測試集成測試 模塊之間的連接模塊之間的連接(3) 系統(tǒng)測試系統(tǒng)測試 需求需求 & 系統(tǒng)設(shè)計系統(tǒng)設(shè)計(4) 驗收測試驗收測試 用戶參與用戶參與(5) 平行測試平行測試 新老系統(tǒng)進行比較新老系統(tǒng)進行比較.綜合綜合測試測試1. 基本概念基本概念測試階段的信息流:測試階段的信息流:測試測試評價評價調(diào)試調(diào)試可靠性可靠性模型模型軟件配置軟件配置測試配置測試配置測試結(jié)果測試結(jié)果可靠性預(yù)測可靠性預(yù)測錯錯 誤誤正正 確確錯誤率數(shù)據(jù)錯誤率數(shù)據(jù)預(yù)期結(jié)果

6、預(yù)期結(jié)果82. 單元測試(白盒)單元測試(白盒)主要測試以下五個方面:主要測試以下五個方面:1、模塊接口:、模塊接口: 內(nèi)部檢查:傳輸參數(shù)的數(shù)目、屬性、單位、次內(nèi)部檢查:傳輸參數(shù)的數(shù)目、屬性、單位、次序是否匹配;全程變量的定義是否一致;只做序是否匹配;全程變量的定義是否一致;只做輸入的變元有無被修改,等等。輸入的變元有無被修改,等等。 外部檢查:打開、結(jié)束、關(guān)閉文件的操作;文外部檢查:打開、結(jié)束、關(guān)閉文件的操作;文件和屬性;件和屬性;io錯誤處理;輸出拼寫,等等。錯誤處理;輸出拼寫,等等。2、局部數(shù)據(jù)結(jié)構(gòu):、局部數(shù)據(jù)結(jié)構(gòu): 數(shù)據(jù)說明數(shù)據(jù)說明(declaration);初始化與缺省值的設(shè)置;初始

7、化與缺省值的設(shè)置;變量名拼寫;數(shù)據(jù)類型的相容性;上變量名拼寫;數(shù)據(jù)類型的相容性;上下溢出及下溢出及地址異常,等等。地址異常,等等。92.單元測試單元測試3、重要的執(zhí)行通路:、重要的執(zhí)行通路: 由于窮盡測試不可能,故通常針對最常見的由于窮盡測試不可能,故通常針對最常見的錯誤設(shè)計測試方案。錯誤設(shè)計測試方案。4、出錯處理通路:、出錯處理通路: 預(yù)見出現(xiàn)錯誤的條件,設(shè)置處理。預(yù)見出現(xiàn)錯誤的條件,設(shè)置處理。5、邊界條件、邊界條件 單元測試中最后,也可能是最重單元測試中最后,也可能是最重要的任務(wù),因為軟件常在其邊界失效。要的任務(wù),因為軟件常在其邊界失效。101、代碼審查、代碼審查(code inspect

8、ion) 徹底檢查徹底檢查: 例如例如 lucent technologies 的測試策略,是的測試策略,是由三人一組由三人一組(包括包括 author, reader, 和和recorder),逐行,逐行檢查源代碼。檢查源代碼。 演習(xí):由人扮演演習(xí):由人扮演computer,模擬執(zhí)行情況。,模擬執(zhí)行情況。2.單元測試單元測試優(yōu)點優(yōu)點: 一次審查可發(fā)現(xiàn)多個錯誤,不必改一個測一個。一次審查可發(fā)現(xiàn)多個錯誤,不必改一個測一個。單元測試的主要手段單元測試的主要手段 :2、制作測試軟件:、制作測試軟件:stub (存根)和(存根)和 driver(驅(qū)動)軟(驅(qū)動)軟件的編寫,屬額外開支。模塊高內(nèi)聚可簡化

9、這一過件的編寫,屬額外開支。模塊高內(nèi)聚可簡化這一過程。程。113. 集成測試集成測試 (integration testing)1、非漸增式測試、非漸增式測試 (big-bang testing)test a,b, c, dtestatestbtestctestd123.集成測試集成測試兩種方式的比較:兩種方式的比較: incremental testing 可以較早發(fā)現(xiàn)模塊間的接口錯誤;可以較早發(fā)現(xiàn)模塊間的接口錯誤;big-bang testing 最后才組裝,因此錯誤發(fā)現(xiàn)得晚。最后才組裝,因此錯誤發(fā)現(xiàn)得晚。 big-bang testing 中發(fā)現(xiàn)錯誤后難以診斷定位;中發(fā)現(xiàn)錯誤后難以診斷定

10、位; incremental testing 中,出現(xiàn)的錯誤往往跟最新加入中,出現(xiàn)的錯誤往往跟最新加入的模塊有關(guān)。的模塊有關(guān)。 incremental testing 在不斷集成的過程中使模塊不斷在在不斷集成的過程中使模塊不斷在新的條件下受到新的檢測,測試更徹底。新的條件下受到新的檢測,測試更徹底。 incremental testing 較較 big-bang testing 費時。費時。 big-bang testing 可以同時并行測試所有模塊,能充分可以同時并行測試所有模塊,能充分利用人力。利用人力。2、漸增式測試、漸增式測試 (incremental testing)13 自頂向下測

11、試自頂向下測試第第1步:測試頂端模塊,用存根程序步:測試頂端模塊,用存根程序(stub)代替直接附屬的下層模塊代替直接附屬的下層模塊 stub: 模擬未測試模塊的活動模擬未測試模塊的活動.3.集成測試集成測試3、incremental testing 的幾種策略的幾種策略ms1s214第第2步:根據(jù)深度優(yōu)先或?qū)挾葍?yōu)先的策略,每次步:根據(jù)深度優(yōu)先或?qū)挾葍?yōu)先的策略,每次用一個實際模塊代換一個用一個實際模塊代換一個stub。3.集成測試集成測試第第3步:在結(jié)合進一個模塊的同時進行測試。步:在結(jié)合進一個模塊的同時進行測試。ms1s2m1s3s4m2s2第第4步:回歸測試步:回歸測試(regressio

12、n testing)全部或全部或部分地重復(fù)以前做過的測試。部分地重復(fù)以前做過的測試。15 自底向上測試自底向上測試第第1步:把低層模塊組合成族,每族實現(xiàn)一個子功能。步:把低層模塊組合成族,每族實現(xiàn)一個子功能。第第2步:用驅(qū)動程序步:用驅(qū)動程序(driver)協(xié)調(diào)測試數(shù)據(jù)的協(xié)調(diào)測試數(shù)據(jù)的io,測,測試子功能族。試子功能族。3.集成測試集成測試優(yōu)點:在早期即對主要控制及關(guān)鍵的抉擇進行檢驗。優(yōu)點:在早期即對主要控制及關(guān)鍵的抉擇進行檢驗。問題:問題:stub只是對低層模塊的模擬,測試時沒有重只是對低層模塊的模擬,測試時沒有重要的數(shù)據(jù)自下往上流,許多重要的測試須推要的數(shù)據(jù)自下往上流,許多重要的測試須推遲

13、進行,而且在早期不能充分展開人力。遲進行,而且在早期不能充分展開人力。driver: 調(diào)用模塊細節(jié)逐個進行測試調(diào)用模塊細節(jié)逐個進行測試.dm1m216第第3 3步:去掉步:去掉driverdriver,自下而上把子功能族合成,自下而上把子功能族合成更大的子功能族。更大的子功能族。mmmmmmmmmmmmdddddd3.集成測試集成測試注意:注意:兩種策略兩種策略的優(yōu)、缺點剛好的優(yōu)、缺點剛好互補,但單用其互補,但單用其中任一種都不實中任一種都不實際,通常根據(jù)軟際,通常根據(jù)軟件的特點將二者件的特點將二者混用?;煊?。17 sandwich testing (三文治測試)(三文治測試)3.集成測試集成

14、測試target layertop-downbottom-up184. 驗收測試驗收測試(acceptance testing)任務(wù):驗收軟件的有效性(功能和性能達標(biāo))。任務(wù):驗收軟件的有效性(功能和性能達標(biāo))。手段:黑盒測試;用戶參與;主要用實際數(shù)據(jù)進手段:黑盒測試;用戶參與;主要用實際數(shù)據(jù)進行測試。行測試。內(nèi)容:按合同規(guī)定審查軟件配置;內(nèi)容:按合同規(guī)定審查軟件配置; 設(shè)計測試計劃,使通過測試保證軟件能滿設(shè)計測試計劃,使通過測試保證軟件能滿足所有功能、性能要求;足所有功能、性能要求; 文檔與程序一致,具有維護階段所必須的文檔與程序一致,具有維護階段所必須的細節(jié);細節(jié); 嚴格按用戶手冊操作,以

15、檢查手冊的完整嚴格按用戶手冊操作,以檢查手冊的完整性和正確性。性和正確性。195. 設(shè)計測試方案設(shè)計測試方案(plan of testing)主要技術(shù):主要技術(shù):1、邏輯覆蓋、邏輯覆蓋(logical coverage) 適用于白盒測試適用于白盒測試 覆蓋程度由弱到強順次為:覆蓋程度由弱到強順次為: 語句覆蓋語句覆蓋(statement coverage):每個語句至少執(zhí)行每個語句至少執(zhí)行一次。一次。任務(wù):任務(wù):預(yù)定要測試的功能預(yù)定要測試的功能 設(shè)計輸入的測試數(shù)據(jù)設(shè)計輸入的測試數(shù)據(jù)(test cases) 列出預(yù)期結(jié)果列出預(yù)期結(jié)果(expected output)205. 設(shè)計測試方案設(shè)計測試

16、方案例:例:問題:若問題:若and錯錯寫 為寫 為 o r , 或, 或x1錯寫為錯寫為x 1and b=0ta=2or x 1tx = x / ax = x + 1返回返回fftest case : a=2 , b=0 , x=4. 21判定覆蓋判定覆蓋(branch coverage):在:在的基礎(chǔ)上,的基礎(chǔ)上,每個判定的每個分支至少執(zhí)行一次。每個判定的每個分支至少執(zhí)行一次。5. 設(shè)計測試方案設(shè)計測試方案test cases:a=3 , b=0 , x=3a=2 , b=1 , x=1問題:若問題:若x1錯錯寫為寫為x 1and b=0ta=2or x 1tx = x / ax = x +

17、 1返回返回ff22 條件覆蓋條件覆蓋(condition coverage):在:在的基礎(chǔ)上,使的基礎(chǔ)上,使每個判定表達式的每個條件都取到各種可能的結(jié)果。每個判定表達式的每個條件都取到各種可能的結(jié)果。5. 設(shè)計測試方案設(shè)計測試方案test cases:a=2 , b=0 , x=4(滿足(滿足a1, b=0; a=2, x1)a=1, b=1, x=1(滿足滿足a 1, b 0; a 2, x 1)問:條件覆蓋問:條件覆蓋 ? 判定覆蓋判定覆蓋 答答: 不一定。不一定。 反例反例: a=2, b=0, x=1 a=1, b=1, x=2 判定判定/條件覆蓋:即條件覆蓋:即判定覆蓋判定覆蓋 條

18、件覆蓋條件覆蓋 入口入口a 1and b=0ta=2or x 1tx = x / ax = x + 1返回返回ff23 條件組合覆蓋:每個判定表達式條件組合覆蓋:每個判定表達式中條件的各種可能組合都至少出中條件的各種可能組合都至少出現(xiàn)一次。現(xiàn)一次。5. 設(shè)計測試方案設(shè)計測試方案入口入口a 1and b=0ta=2or x 1tx = x / ax = x + 1返回返回ff全部可能的條件組合為:全部可能的條件組合為: a1, b=0 a1, b 0 a 1, b=0 a 1, b 0 a=2, x1 a=2, x 1 a 2, x1 a 2,x 1 test cases: a=2, b=0,

19、x=4 (t t) a=2. b=1, x=1 (f t) a=1, b=0, x=2 (f t) a=1, b=1, x=1 (f f)問題:沒有測試到問題:沒有測試到(t f)的情形的情形24考察考察control flow graph 的角度,還可考慮下述覆蓋:的角度,還可考慮下述覆蓋: 點覆蓋點覆蓋5. 設(shè)計測試方案設(shè)計測試方案 邊覆蓋邊覆蓋= 語句覆蓋語句覆蓋 路徑覆蓋路徑覆蓋(path coverage): 每條可能的路徑都至少執(zhí)每條可能的路徑都至少執(zhí)行一次,若圖中有環(huán),則每行一次,若圖中有環(huán),則每個環(huán)至少經(jīng)過一次。個環(huán)至少經(jīng)過一次。=判定覆蓋判定覆蓋test cases: a=1

20、 , b=1 , x=1 a=1 , b=1 , x=2 a=3 , b=0 , x=1 a=2 , b=0 , x=4 路徑覆蓋路徑覆蓋 條件組合覆蓋條件組合覆蓋25 劃分經(jīng)驗劃分經(jīng)驗 當(dāng)規(guī)定了輸入范圍時:當(dāng)規(guī)定了輸入范圍時:5. 設(shè)計測試方案設(shè)計測試方案2、等價劃分、等價劃分(equivalence partitioning) 適用于黑盒測試適用于黑盒測試 劃分一組劃分一組 等價類等價類 描繪一組輸入條件的有效或無效條件描繪一組輸入條件的有效或無效條件, 測試測試程序是否有設(shè)計方案中該有的輸出結(jié)果程序是否有設(shè)計方案中該有的輸出結(jié)果.無效類無效類 有效類有效類 無效類無效類 當(dāng)規(guī)定了輸入的一

21、組值,且對不同值做不同處理時:當(dāng)規(guī)定了輸入的一組值,且對不同值做不同處理時:例:教工分房方案中,按教授、副教授、講師、助例:教工分房方案中,按教授、副教授、講師、助教分別計分教分別計分 有效類有效類4個;無效類個;無效類1個個26 當(dāng)規(guī)定了輸入的規(guī)則時:當(dāng)規(guī)定了輸入的規(guī)則時: 例:例:(pascal) 語言規(guī)定,每個語句以語言規(guī)定,每個語句以“ ;” 結(jié)結(jié) 束束 有效類有效類1個;無效類若干(以個;無效類若干(以“ ,”結(jié)束、以結(jié)束、以“ :”結(jié)束、以空格結(jié)束等等)結(jié)束、以空格結(jié)束等等) 當(dāng)輸入為整型時:有效類可分為當(dāng)輸入為整型時:有效類可分為z+、0、z 三種三種 當(dāng)處理表格時:有效類可分為

22、空表、含一項的表、當(dāng)處理表格時:有效類可分為空表、含一項的表、含多項的表等含多項的表等注:注: 以上經(jīng)驗亦適用于輸出數(shù)據(jù);以上經(jīng)驗亦適用于輸出數(shù)據(jù); 不需要測試編譯程序肯定能發(fā)現(xiàn)的錯誤不需要測試編譯程序肯定能發(fā)現(xiàn)的錯誤。5. 設(shè)計測試方案設(shè)計測試方案27 設(shè)計步驟設(shè)計步驟 設(shè)計一個新方案以設(shè)計一個新方案以盡可能多盡可能多地覆蓋尚未被覆蓋的地覆蓋尚未被覆蓋的有效有效等價類;重復(fù)這一步驟直到所有等價類;重復(fù)這一步驟直到所有有效類有效類都被都被覆蓋為止。覆蓋為止。 設(shè)計一個新方案以覆蓋設(shè)計一個新方案以覆蓋一個且僅一個一個且僅一個尚未被覆蓋尚未被覆蓋的的無效無效等價類;重復(fù)這一步驟直到所有等價類;重復(fù)

23、這一步驟直到所有無效類無效類都都被覆蓋為止。(通常程序執(zhí)行一個錯誤后即不繼被覆蓋為止。(通常程序執(zhí)行一個錯誤后即不繼續(xù)檢測其它錯誤,故每次只測一個無效類)續(xù)檢測其它錯誤,故每次只測一個無效類)5. 設(shè)計測試方案設(shè)計測試方案283、邊界值分析、邊界值分析(boundary value analysis)注意:注意: 程序最容易在邊界發(fā)生錯誤;程序最容易在邊界發(fā)生錯誤; 通常與等價劃分結(jié)合進行。通常與等價劃分結(jié)合進行。4、錯誤推測、錯誤推測(failure prediction)思路:思路: 列出可能有的錯誤;列出可能有的錯誤; 列出容易發(fā)生錯誤的特殊情況。列出容易發(fā)生錯誤的特殊情況。 以此為基礎(chǔ)

24、設(shè)計測試方案。以此為基礎(chǔ)設(shè)計測試方案。根據(jù):直覺、經(jīng)驗根據(jù):直覺、經(jīng)驗工具:常見錯誤清單、判定表等。工具:常見錯誤清單、判定表等。5. 設(shè)計測試方案設(shè)計測試方案295、實用策略、實用策略(practical strategies) 黑盒設(shè)計黑盒設(shè)計 白盒補充白盒補充 在任何情況下都應(yīng)該使用在任何情況下都應(yīng)該使用邊界值分析邊界值分析的方法;的方法; 必要時用必要時用等價劃分法等價劃分法補充;補充; 必要時再用必要時再用錯誤推測法錯誤推測法補充;補充; 對照程序邏輯,檢查測試方案??筛鶕?jù)對程對照程序邏輯,檢查測試方案??筛鶕?jù)對程序可靠性的要求采用不同的序可靠性的要求采用不同的邏輯覆蓋標(biāo)準邏輯覆蓋標(biāo)

25、準,必要時補充一些測試方案。必要時補充一些測試方案。注注: 即使用上述綜合策略設(shè)計測試方案,仍不能即使用上述綜合策略設(shè)計測試方案,仍不能保證發(fā)現(xiàn)一切錯誤。例如保證發(fā)現(xiàn)一切錯誤。例如lucent公司經(jīng)過包公司經(jīng)過包括逐行檢查源代碼在內(nèi)的多方面測試之后,括逐行檢查源代碼在內(nèi)的多方面測試之后,其軟件能達標(biāo)運行的成功率為其軟件能達標(biāo)運行的成功率為 5. 設(shè)計測試方案設(shè)計測試方案80%。306.調(diào)調(diào) 試試(debugging)測試測試 發(fā)現(xiàn)錯誤發(fā)現(xiàn)錯誤調(diào)試調(diào)試 改正錯誤改正錯誤第第1步:確定錯誤的位置步:確定錯誤的位置(95%工作量工作量); 第第2步:改正錯誤。步:改正錯誤。failure(外錯誤)(

26、外錯誤)通常是由系統(tǒng)設(shè)計產(chǎn)生的通常是由系統(tǒng)設(shè)計產(chǎn)生的.fault(故障、內(nèi)錯誤、(故障、內(nèi)錯誤、error、bug)起因于軟件生產(chǎn)中的起因于軟件生產(chǎn)中的人為錯誤人為錯誤.程序的程序的 failure 通常有一個清晰的表現(xiàn)特征,但是通常有一個清晰的表現(xiàn)特征,但是 fault 往往很難往往很難被發(fā)現(xiàn)。被發(fā)現(xiàn)。31execution of casestestcasesresultsdebuggingadditional testssuspected causesidentified causescorrectionsregression testsdebugging6.調(diào)調(diào) 試試321、調(diào)試技術(shù)、調(diào)

27、試技術(shù) 輸出存儲器內(nèi)容輸出存儲器內(nèi)容(memory dump): 以八進制或十六進制的形式印出存儲器的內(nèi)容。以八進制或十六進制的形式印出存儲器的內(nèi)容。缺點:缺點: 輸出信息量極大,輸出信息量極大, 不易解讀且大多無用;不易解讀且大多無用; 輸出的是程序在某一輸出的是程序在某一 時刻的靜態(tài)情況,且時刻的靜態(tài)情況,且 往往不是出錯時的狀態(tài)。往往不是出錯時的狀態(tài)。6.調(diào)調(diào) 試試33 插入插入“watch points”(或稱或稱“spy points”) 人工插入打印人工插入打印 缺點:缺點: 改動源代碼,增加了出錯機會;改動源代碼,增加了出錯機會; 打印信息可能太多。打印信息可能太多。 自動調(diào)試工

28、具自動調(diào)試工具 無須打印額外信息,且不無須打印額外信息,且不改動源代碼改動源代碼6.調(diào)調(diào) 試試342、調(diào)試策略、調(diào)試策略 調(diào)試過程的關(guān)鍵不是調(diào)試技術(shù),而是用來推調(diào)試過程的關(guān)鍵不是調(diào)試技術(shù),而是用來推斷錯誤原因的基本策略。主要有:斷錯誤原因的基本策略。主要有: 試探法,憑經(jīng)驗猜測。試探法,憑經(jīng)驗猜測。 回溯法:由癥狀回溯法:由癥狀(symptom)最先出現(xiàn)的地方,最先出現(xiàn)的地方,沿沿control flow向回檢查。適用于小型程序。向回檢查。適用于小型程序。 對分法:在關(guān)鍵點插入變量的正確值,則:對分法:在關(guān)鍵點插入變量的正確值,則:6.調(diào)調(diào) 試試輸出正確輸出正確錯誤在前半段錯誤在前半段錯誤在后

29、半段錯誤在后半段ny35收集數(shù)據(jù)收集數(shù)據(jù)組織數(shù)據(jù)組織數(shù)據(jù)研究數(shù)據(jù)研究數(shù)據(jù)間的關(guān)系間的關(guān)系提出假設(shè)提出假設(shè)證明假設(shè)證明假設(shè)糾正錯誤糾正錯誤能能能能不不能能不能不能yesno what where when how3w1h table6.調(diào)調(diào) 試試 歸納法:從錯誤癥狀中找出規(guī)律,推斷根源。歸納法:從錯誤癥狀中找出規(guī)律,推斷根源。36列舉可能列舉可能的原因的原因排除不正確排除不正確的假設(shè)的假設(shè)精化余下精化余下的假設(shè)的假設(shè)證明證明假設(shè)假設(shè)收集更多數(shù)據(jù)收集更多數(shù)據(jù)糾正糾正錯誤錯誤有剩余有剩余能能不能不能無剩余無剩余 演繹法:普通演繹法:普通 特殊特殊 從假設(shè)中逐步排除、精化,從而導(dǎo)出錯誤根源。從假設(shè)中逐

30、步排除、精化,從而導(dǎo)出錯誤根源。6.調(diào)調(diào) 試試377. 軟件可靠性軟件可靠性(reliability)1、基本概念、基本概念 可靠性可靠性(reliability):程序在給定的程序在給定的時間間隔內(nèi)時間間隔內(nèi),按照說明書的規(guī)定,成功地運行的概率。按照說明書的規(guī)定,成功地運行的概率。 可用性可用性(usability):程序在給定的:程序在給定的時間點時間點,按照,按照說明書的規(guī)定,成功地運行的概率。說明書的規(guī)定,成功地運行的概率。 正確性正確性(correctness):程序的功能正確。程序的功能正確。reliabilitycorrectnessusability387. 軟件可靠性軟件可靠

31、性設(shè)系統(tǒng)故障停機時間為設(shè)系統(tǒng)故障停機時間為td1, td2, ; 正常運行時間為正常運行時間為tu1, tu2, ; 則系統(tǒng)的則系統(tǒng)的“穩(wěn)態(tài)可用性穩(wěn)態(tài)可用性”為為availability = (shooman, 1983)其中其中 mttf = mean time to failure = mttr = mean time to repair = mttr mttfmttfn1iuitn10ttu1td1tu2td2n1iditn1392、估算、估算 mttf: mttf = 7. 軟件可靠性軟件可靠性)/i(e/ik(e1tctt其中:其中:k為經(jīng)驗常數(shù)(典型值約在為經(jīng)驗常數(shù)(典型值約在20

32、0左右);左右); et為測試前故障總數(shù);為測試前故障總數(shù); it為程序長度(機器指令總數(shù));為程序長度(機器指令總數(shù)); 為測試(包括調(diào)試)時間;為測試(包括調(diào)試)時間; ec( )為時間從為時間從0至至 期間改正的錯誤數(shù)。期間改正的錯誤數(shù)。前提假設(shè):前提假設(shè): et / it constant (通常為(通常為0.5 2%) 調(diào)試中沒有引入新故障(即調(diào)試中沒有引入新故障(即et與時間與時間 無關(guān))無關(guān)) mttf與剩余故障成反比與剩余故障成反比40換個角度看問題換個角度看問題7. 軟件可靠性軟件可靠性mttfkie)(ettc意義:可根據(jù)對軟件平穩(wěn)運行時間的要求,估算需改意義:可根據(jù)對軟件

33、平穩(wěn)運行時間的要求,估算需改正多少個錯誤后才能結(jié)束測試。正多少個錯誤后才能結(jié)束測試。還有一個問題還有一個問題 et = ?估算方法:估算方法: 植入故障法:植入故障法: 人為植入人為植入ns個故障,測后發(fā)現(xiàn)個故障,測后發(fā)現(xiàn)ns個植入故障和個植入故障和n個個原有故障,則設(shè)原有故障,則設(shè)tsssennnnnnn41 hyman 分別測試法:分別測試法: 二人(組)分別獨立測試同一程序,甲測得故二人(組)分別獨立測試同一程序,甲測得故障總數(shù)為障總數(shù)為b1,乙測得為,乙測得為b2,其中有,其中有bc是相同的,是相同的,設(shè)以甲的測試結(jié)果為基準(即相當(dāng)于設(shè)以甲的測試結(jié)果為基準(即相當(dāng)于中的植中的植入故障)

34、,則設(shè)入故障),則設(shè)7. 軟件可靠性軟件可靠性t1c221cebbbbbbbb一般多測幾個一般多測幾個 取平均。取平均。b423、正確性說明、正確性說明 目標(biāo):研究能證明程序正確性的自動系統(tǒng)。目標(biāo):研究能證明程序正確性的自動系統(tǒng)。7. 軟件可靠性軟件可靠性p1p2p3pn-1pna(1) = inputa(2)a(3)a(n-1)a(n) = outputa(i):斷言斷言(assertion)證明:對任一個證明:對任一個i,執(zhí)行了,執(zhí)行了pi到到pi+1之間的語句后,可將之間的語句后,可將a(i)變?yōu)樽優(yōu)閍(i+1),則證明由,則證明由a(1)可導(dǎo)出可導(dǎo)出a(n)。若。若a(1)和和a(n)

35、正確,且程序確定可終正確,且程序確定可終止,則證明程序正確。止,則證明程序正確。但是:即使有了正確性證明程序,軟件測試也仍然但是:即使有了正確性證明程序,軟件測試也仍然是需要的。是需要的。因為:因為:正確性證明只證明程序功能正確,但不能正確性證明只證明程序功能正確,但不能驗證動態(tài)特性;驗證動態(tài)特性; 證明過程本身也可能發(fā)生錯誤。證明過程本身也可能發(fā)生錯誤。原理:原理:43100%50%100%測試用例完成率測試用例完成率 = = 已完成用例已完成用例 / / 全部用例全部用例測試時間使用率測試時間使用率 = = 所用時間所用時間 / / 總時間總時間第一第一階段階段第二第二階段階段第三第三階段

36、階段8.日立預(yù)測法日立預(yù)測法日立預(yù)測法日立預(yù)測法 測試期間繪制并檢查兩種曲線測試期間繪制并檢查兩種曲線1、測試完成率曲線:、測試完成率曲線:經(jīng)驗:經(jīng)驗:工程的成敗取工程的成敗取決于第一階段決于第一階段向第二階段轉(zhuǎn)向第二階段轉(zhuǎn)移斷點的位置,移斷點的位置,一般成功的工一般成功的工程其轉(zhuǎn)折點位程其轉(zhuǎn)折點位于于15%;若超;若超過過55%則破產(chǎn)則破產(chǎn)不可避免。不可避免。44錯誤發(fā)現(xiàn)率錯誤發(fā)現(xiàn)率 = 單位時間內(nèi)發(fā)現(xiàn)的錯誤數(shù)單位時間內(nèi)發(fā)現(xiàn)的錯誤數(shù)時間時間峰值時間峰值時間成成功功的的工工程程失敗的失敗的工程工程極壞的工程極壞的工程8.日立預(yù)測法日立預(yù)測法2、錯誤發(fā)現(xiàn)率曲線:、錯誤發(fā)現(xiàn)率曲線:經(jīng)驗:經(jīng)驗:剛過峰值點后剛過峰值點后曲線的導(dǎo)數(shù)關(guān)曲線的導(dǎo)數(shù)關(guān)系到工程的成系到工程的成敗。若導(dǎo)數(shù)值敗。若導(dǎo)數(shù)值大于大于- 0.3,則,則失敗不可避免失敗不可避免。45其它可靠性預(yù)測模型其它可靠性預(yù)測模型(reliability pr

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論