第1-2講基于模型的測試_第1頁
第1-2講基于模型的測試_第2頁
第1-2講基于模型的測試_第3頁
第1-2講基于模型的測試_第4頁
第1-2講基于模型的測試_第5頁
已閱讀5頁,還剩89頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件測試概述軟件測試概述nWhynWhatnHown基于模型的測試基于模型的測試l基于覆蓋的測試基于覆蓋的測試l一致性測試一致性測試n測試是保證軟件質(zhì)量和可信性的主要手段之一測試是保證軟件質(zhì)量和可信性的主要手段之一l是否符合用戶功能、性能需求是否符合用戶功能、性能需求l軟件產(chǎn)品交付前盡可能發(fā)現(xiàn)錯(cuò)誤軟件產(chǎn)品交付前盡可能發(fā)現(xiàn)錯(cuò)誤n測試的代價(jià)非常高測試的代價(jià)非常高l 占開發(fā)成本的占開發(fā)成本的30%-50%30%-50%或更高或更高n不測試代價(jià)更高不測試代價(jià)更高Whyn The top 10 IT disasters The top 10 IT disasters l 19831983年,前蘇聯(lián)導(dǎo)彈預(yù)

2、警軟件故障差點(diǎn)導(dǎo)致年,前蘇聯(lián)導(dǎo)彈預(yù)警軟件故障差點(diǎn)導(dǎo)致WW-IIIWW-IIIl 19901990年,年,AT&TAT&T網(wǎng)絡(luò)癱瘓導(dǎo)致美國網(wǎng)絡(luò)癱瘓導(dǎo)致美國75007500萬用戶受影響萬用戶受影響l 19961996年,阿麗亞娜年,阿麗亞娜5 5號(hào)火箭爆炸。號(hào)火箭爆炸。 64-bit 64-bit 1 16-bit6-bitl 20062006年,空客年,空客A380A380因軟件不兼容問題導(dǎo)致拖延交貨。英制因軟件不兼容問題導(dǎo)致拖延交貨。英制公制公制l 19981998年,美國火星氣候探測器因?qū)Ш较到y(tǒng)單位不同被毀年,美國火星氣候探測器因?qū)Ш较到y(tǒng)單位不同被毀l 20042004年,年

3、,EDS CS2EDS CS2計(jì)算機(jī)給納稅人帶來計(jì)算機(jī)給納稅人帶來1010億英鎊損失。億英鎊損失。l 1999/20001999/2000年,千年蟲問題年,千年蟲問題l 20062006年,索尼電池引發(fā)的一系列筆記本爆炸事年,索尼電池引發(fā)的一系列筆記本爆炸事l 19991999年,西門子計(jì)算機(jī)故障引發(fā)年,西門子計(jì)算機(jī)故障引發(fā)5050萬英居民新護(hù)照延遲萬英居民新護(hù)照延遲l 20072007年,軟件故障導(dǎo)致年,軟件故障導(dǎo)致1.71.7萬旅客滯留萬旅客滯留LALA國際機(jī)場國際機(jī)場8 8小時(shí)小時(shí)。Why19961996年年6 6月月4 4日阿麗亞娜日阿麗亞娜5 5號(hào)火箭號(hào)火箭在發(fā)射在發(fā)射4040秒后爆

4、炸秒后爆炸原因:慣性參考系統(tǒng)軟件的原因:慣性參考系統(tǒng)軟件的數(shù)據(jù)數(shù)據(jù)轉(zhuǎn)換異常轉(zhuǎn)換異常20042004年年1212月月2020日,美空軍的一架日,美空軍的一架F-F-2222猛禽猛禽戰(zhàn)斗機(jī)戰(zhàn)斗機(jī)因因軟件問題軟件問題在起飛過在起飛過程中失控墜毀程中失控墜毀170萬行代碼Why2005年年11月月1日,東京證券日,東京證券交易所因?yàn)檐浖?jí)出現(xiàn)交易所因?yàn)檐浖?jí)出現(xiàn)系統(tǒng)故障,導(dǎo)致早間股市系統(tǒng)故障,導(dǎo)致早間股市“停擺停擺” 2007年北京機(jī)場信息系統(tǒng)癱瘓。年北京機(jī)場信息系統(tǒng)癱瘓。短短短短50分鐘內(nèi),至少分鐘內(nèi),至少84個(gè)離港個(gè)離港航班發(fā)生延誤航班發(fā)生延誤海灣戰(zhàn)爭海灣戰(zhàn)爭美國美國F-18F-18戰(zhàn)斗機(jī)戰(zhàn)斗

5、機(jī)飛行控制軟件飛行控制軟件共發(fā)生共發(fā)生500500多次故障多次故障愛國者導(dǎo)彈因?yàn)閻蹏邔?dǎo)彈因?yàn)檐浖栴}軟件問題誤傷了誤傷了2828名美軍士兵名美軍士兵WhyWhatn測試的發(fā)展測試的發(fā)展n什么是軟件測試什么是軟件測試n軟件缺陷軟件缺陷測試的發(fā)展測試的發(fā)展參考:參考:GelperinGelperin D, D, HetzelHetzel B. The growth of software testing. Communications of the B. The growth of software testing. Communications of the Association of Co

6、mputing Machinery,1988,31(6):687695Association of Computing Machinery,1988,31(6):687695測試的發(fā)展測試的發(fā)展n面向調(diào)試階段面向調(diào)試階段調(diào)試(調(diào)試(debuggingdebugging)、檢查)、檢查(checkout)(checkout)、測試、測試(testing)(testing)無明顯差別無明顯差別n面向求真(面向求真(DemonstrationDemonstration)階段)階段測試從調(diào)試中分離,成為生命周期中極為關(guān)鍵的環(huán)節(jié)測試從調(diào)試中分離,成為生命周期中極為關(guān)鍵的環(huán)節(jié)調(diào)試:調(diào)試: Make sur

7、e the program runs Make sure the program runs測試:測試: Make sure the program solves the problem Make sure the program solves the problem測試的發(fā)展測試的發(fā)展n面向證偽(面向證偽(DestructionDestruction)階段)階段 MyersMyers定義測試是為發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程定義測試是為發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程n6060以上的軟件錯(cuò)誤并非程序錯(cuò)誤,而以上的軟件錯(cuò)誤并非程序錯(cuò)誤,而是需求和設(shè)計(jì)錯(cuò)誤是需求和設(shè)計(jì)錯(cuò)誤n錯(cuò)誤理解用戶需求會(huì)導(dǎo)致開發(fā)完美優(yōu)良錯(cuò)誤

8、理解用戶需求會(huì)導(dǎo)致開發(fā)完美優(yōu)良的,但卻是不正確的產(chǎn)品的,但卻是不正確的產(chǎn)品n需求和設(shè)計(jì)階段的質(zhì)量保證非常重要需求和設(shè)計(jì)階段的質(zhì)量保證非常重要 測試的發(fā)展測試的發(fā)展 軟件缺陷分布其他其他10%軟件產(chǎn)品說明軟件產(chǎn)品說明書(需求)書(需求)56%編寫代碼編寫代碼7%設(shè)計(jì)設(shè)計(jì)27%測試的發(fā)展測試的發(fā)展n面向評(píng)估(Evaluation)階段 集成分析(Analysis)、評(píng)審(review)和測試活動(dòng),軟件生命周期的每個(gè)階段對(duì)應(yīng)相應(yīng)的活動(dòng)和產(chǎn)品集n面向預(yù)防(Prevention)階段測試與開發(fā)并行,包括:l 測試計(jì)劃l 測試分析(建立測試需求或目標(biāo))l 測試設(shè)計(jì)(指明測試集的結(jié)構(gòu)、單個(gè)測試用例和過程)l

9、 測試實(shí)現(xiàn)(開發(fā)測試數(shù)據(jù)、測試支持軟件)l 測試執(zhí)行(運(yùn)行測試、分析測試結(jié)果)l 測試維護(hù)(保存測試,在軟件變化時(shí)更新測試)什么是軟件測試什么是軟件測試nMyers (1979)Myers (1979)執(zhí)行程序的過程,其目的是發(fā)現(xiàn)錯(cuò)誤nIEEEIEEE標(biāo)準(zhǔn)標(biāo)準(zhǔn)610.12 (IEEE, 1990)610.12 (IEEE, 1990) 在特定的條件下運(yùn)行系統(tǒng)或構(gòu)件,觀察或記錄結(jié)果,對(duì)系統(tǒng)的某個(gè)方面做出評(píng)價(jià) 分析某個(gè)軟件項(xiàng)以發(fā)現(xiàn)現(xiàn)存的和要求的條件之差別(即錯(cuò)誤)并評(píng)價(jià)此軟件項(xiàng)的特性軟件缺陷軟件缺陷l未達(dá)到產(chǎn)品說明書中標(biāo)明的功能未達(dá)到產(chǎn)品說明書中標(biāo)明的功能l未達(dá)到產(chǎn)品說明書未指出但應(yīng)當(dāng)達(dá)到的目標(biāo)未

10、達(dá)到產(chǎn)品說明書未指出但應(yīng)當(dāng)達(dá)到的目標(biāo) l出現(xiàn)了產(chǎn)品說明書中指明不應(yīng)出現(xiàn)的功能出現(xiàn)了產(chǎn)品說明書中指明不應(yīng)出現(xiàn)的功能l難以理解、不易使用難以理解、不易使用軟件缺陷軟件缺陷軟件缺陷的特征軟件缺陷的特征n看不到看不到 軟件的特殊性決定了缺陷不易看到n看到但抓不到看到但抓不到 發(fā)現(xiàn)了缺陷,但不易找到問題發(fā)生的原因軟件缺陷軟件缺陷n相關(guān)術(shù)語l軟件故障(Fault)軟件中的一個(gè)靜態(tài)缺陷l軟件錯(cuò)誤(Error) 不正確的內(nèi)部狀態(tài),某個(gè)故障的體現(xiàn)l軟件失效(Failure)外部的、不正確的行為Hown測試原理n測試過程n測試技術(shù)n幾個(gè)關(guān)鍵問題幾個(gè)關(guān)鍵問題l誰來測試誰來測試l何時(shí)測試何時(shí)測試l何時(shí)停止測試何時(shí)停止

11、測試l怎樣進(jìn)行測試怎樣進(jìn)行測試測試原理測試原理測試原理測試原理l測試應(yīng)可追溯到需求測試應(yīng)可追溯到需求l盡早、及時(shí)測試(盡早、及時(shí)測試(何時(shí)開始?何時(shí)開始?)l測試計(jì)劃先于測試執(zhí)行測試計(jì)劃先于測試執(zhí)行l(wèi)80%的錯(cuò)誤很可能由的錯(cuò)誤很可能由20%的模塊造成的模塊造成l小規(guī)模小規(guī)模大規(guī)模大規(guī)模l一般來講,完全測試不可能一般來講,完全測試不可能l充分覆蓋程序邏輯充分覆蓋程序邏輯/圖結(jié)構(gòu)是可行的(圖結(jié)構(gòu)是可行的(何時(shí)停止?何時(shí)停止?)l由獨(dú)立第三方測試由獨(dú)立第三方測試 (誰?誰?)l保存測試相關(guān)文檔,以便維護(hù)和回歸測試保存測試相關(guān)文檔,以便維護(hù)和回歸測試測試原理測試原理軟件缺陷在不同階段發(fā)現(xiàn)時(shí)修復(fù)的費(fèi)用軟

12、件缺陷在不同階段發(fā)現(xiàn)時(shí)修復(fù)的費(fèi)用0 02020404060608080100100編制說明書編制說明書設(shè)計(jì)階段設(shè)計(jì)階段編寫代碼編寫代碼測試測試發(fā)布發(fā)布測試過程模型測試過程模型nV V模型模型l把測試過程作為編碼之后的一個(gè)階段l需求分析階段隱藏的問題一直到驗(yàn)收測試才被發(fā)現(xiàn)l不能體現(xiàn)“盡早地和不斷地進(jìn)行軟件測試”的原則用戶需求需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼驗(yàn)收測試系統(tǒng)測試集成測試單元測試測試模型測試模型nW W模型模型軟件測試技術(shù)軟件測試技術(shù)n白盒測試和黑盒測試(另一種:灰盒測試)(另一種:灰盒測試)n靜態(tài)測試和動(dòng)態(tài)測試(驗(yàn)證測試和確認(rèn)測試)n傳統(tǒng)測試和面向?qū)ο鬁y試n基于代碼的測試和基于模型的測試軟

13、件測試技術(shù)軟件測試技術(shù)n白盒測試白盒測試根據(jù)程序的結(jié)構(gòu)和內(nèi)部邏輯設(shè)計(jì)用例l控制流覆蓋:語句、判定、條件、判定控制流覆蓋:語句、判定、條件、判定/ /條件、條件條件、條件組合、基本路徑測試、條件測試等等組合、基本路徑測試、條件測試等等l數(shù)據(jù)流覆蓋:全定義、全使用、全定義使用等等數(shù)據(jù)流覆蓋:全定義、全使用、全定義使用等等n黑盒測試根據(jù)系統(tǒng)的功能性規(guī)格說明設(shè)計(jì)測試用例l等價(jià)劃分、邊界值分析、因果圖測試、錯(cuò)誤推測、組等價(jià)劃分、邊界值分析、因果圖測試、錯(cuò)誤推測、組合測試等合測試等軟件測試技術(shù)軟件測試技術(shù)n靜態(tài)測試l又稱靜態(tài)分析技術(shù)l人工或利用工具對(duì)程序和文檔進(jìn)行分析與檢查l走查、審查、符號(hào)執(zhí)行等n動(dòng)態(tài)測

14、試l運(yùn)行程序,分析程序的執(zhí)行狀態(tài)和外部表現(xiàn)l白盒測試、黑盒測試及灰盒測試等基于模型的測試基于模型的測試u依據(jù)(形式)模型依據(jù)(形式)模型/ /規(guī)約進(jìn)行測試規(guī)約進(jìn)行測試 UML, (E)FSM, LTS,CSP, Promela, . . . u更快、更便宜更快、更便宜自動(dòng)生成算法自動(dòng)生成算法形式的、非歧義形式的、非歧義測試的完全性測試的完全性2022年2月5日27測試測試用例用例測試選擇測試選擇準(zhǔn)則準(zhǔn)則被測被測系統(tǒng)系統(tǒng)環(huán)環(huán)境境測試測試腳本腳本測試測試模型模型基于模型的測試基于模型的測試28軟件制品軟件制品模型模型測試需求測試需求測試規(guī)約測試規(guī)約測試用例測試用例測試腳本測試腳本測試結(jié)果測試結(jié)果通

15、過通過/失敗失敗實(shí)現(xiàn)抽象級(jí)實(shí)現(xiàn)抽象級(jí)設(shè)計(jì)抽象級(jí)設(shè)計(jì)抽象級(jí)基于模型的測試基于模型的測試29建模準(zhǔn)則精化測試生成腳本生成執(zhí)行評(píng)估軟件制品軟件制品模型模型測試需求測試需求測試規(guī)約測試規(guī)約測試用例測試用例測試腳本測試腳本測試結(jié)果測試結(jié)果通過通過/失敗失敗實(shí)現(xiàn)抽象級(jí)實(shí)現(xiàn)抽象級(jí)設(shè)計(jì)抽象級(jí)設(shè)計(jì)抽象級(jí)基于模型的測試基于模型的測試30測試設(shè)計(jì)測試設(shè)計(jì)測試評(píng)估測試評(píng)估軟件制品軟件制品模型模型測試需求測試需求測試規(guī)約測試規(guī)約測試用例測試用例測試腳本測試腳本測試結(jié)果測試結(jié)果通過通過/失敗失敗實(shí)現(xiàn)抽象級(jí)實(shí)現(xiàn)抽象級(jí)設(shè)計(jì)抽象級(jí)設(shè)計(jì)抽象級(jí)基于覆蓋的測試基于覆蓋的測試u傳統(tǒng)的方法從實(shí)現(xiàn)代碼導(dǎo)出測試用例傳統(tǒng)的方法從實(shí)現(xiàn)代碼導(dǎo)出測

16、試用例u基于模型的方法從模型導(dǎo)出測試用例基于模型的方法從模型導(dǎo)出測試用例u依賴于測試準(zhǔn)則依賴于測試準(zhǔn)則32測試覆蓋準(zhǔn)則測試覆蓋準(zhǔn)則g測試需求測試需求說明測試期間必須滿足什么或必須覆蓋什么說明測試期間必須滿足什么或必須覆蓋什么g測試準(zhǔn)則測試準(zhǔn)則定義測試需求的規(guī)則或規(guī)則集定義測試需求的規(guī)則或規(guī)則集g測試準(zhǔn)則的滿足測試準(zhǔn)則的滿足給定特定測試準(zhǔn)則給定特定測試準(zhǔn)則C對(duì)應(yīng)的測試需求集對(duì)應(yīng)的測試需求集TR ,測試包,測試包T滿足滿足C當(dāng)且僅當(dāng)當(dāng)且僅當(dāng)TR中的每個(gè)測試需求中的每個(gè)測試需求tr,T中存在一條中存在一條測試路徑測試路徑t覆蓋覆蓋tr 測試就是定義一個(gè)模型,然后設(shè)法覆蓋它測試就是定義一個(gè)模型,然后設(shè)

17、法覆蓋它33圖圖(not X or not Y) and A and Bif (x y) z = x - y;else z = 2 * x;A: 0, 1, 1B: 600, 700, 800C: swe, cs, isa, infs邏輯表達(dá)式邏輯表達(dá)式輸入域特性輸入域特性語法結(jié)構(gòu)語法結(jié)構(gòu)34圖覆蓋圖覆蓋圖可以表示:語句和分支,組件和信號(hào),狀態(tài)和遷移圖可以表示:語句和分支,組件和信號(hào),狀態(tài)和遷移 G = (N, N0, Nf, E)6021345l路徑路徑:, El路徑長度路徑長度:路徑中的邊數(shù):路徑中的邊數(shù)l子路徑子路徑:路徑中的節(jié)點(diǎn)子序列:路徑中的節(jié)點(diǎn)子序列l(wèi)Reach (n) :從節(jié)點(diǎn):

18、從節(jié)點(diǎn)n可到達(dá)的子圖可到達(dá)的子圖l測試路徑測試路徑:從開始節(jié)點(diǎn)到終止節(jié)點(diǎn)的路徑:從開始節(jié)點(diǎn)到終止節(jié)點(diǎn)的路徑35圖覆蓋圖覆蓋n圖結(jié)構(gòu)覆蓋圖結(jié)構(gòu)覆蓋覆蓋圖的節(jié)點(diǎn)、邊或子路徑n數(shù)據(jù)流覆蓋數(shù)據(jù)流覆蓋用變量的引用標(biāo)注圖,覆蓋變量的定義、使用或它們之間的關(guān)系36圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋6021345節(jié)點(diǎn)覆蓋節(jié)點(diǎn)覆蓋測試路徑測試路徑 0, 1, 2, 3, 6 0, 1, 2, 4, 5, 4, 6 邊覆蓋邊覆蓋測試路徑測試路徑 0, 1, 2, 3, 6 0, 2, 4, 5, 4, 6 37圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋邊對(duì)覆蓋邊對(duì)覆蓋 :測試覆蓋每一個(gè)可達(dá)的長度不超過:測試覆蓋每一個(gè)可達(dá)的長度不超過

19、2的路徑的路徑6021345邊對(duì)覆蓋邊對(duì)覆蓋 邊對(duì)集邊對(duì)集 0,1,2, 0,2,3, 0,2,4, 1,2,3, 1,2,4, 2,3,6, 2,4,5, 2,4,6, 4,5,4, 5,4,5, 5,4,6 測試路徑測試路徑 0, 1, 2, 3, 6 , 0, 1, 2, 4, 6 , 0, 2, 3, 6 , 0, 2, 4, 5, 4, 5, 4, 6 38圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋:不幸的是,如果圖包含循環(huán),全路徑覆蓋可能不切實(shí)際不幸的是,如果圖包含循環(huán),全路徑覆蓋可能不切實(shí)際39圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋n測試循環(huán)測試循環(huán)l1970s : 1970s : 執(zhí)行執(zhí)行1 1次循環(huán)

20、次循環(huán)l1980s : 1980s : 執(zhí)行每個(gè)循環(huán)執(zhí)行每個(gè)循環(huán)1 1次次l1990s : 1990s : 執(zhí)行循環(huán)執(zhí)行循環(huán)0 0次、次、1 1次和多次次和多次l2000s : 2000s : 覆蓋主路徑覆蓋主路徑40圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋n簡單路徑簡單路徑除開始和結(jié)束節(jié)點(diǎn)可能相同外沒有重復(fù)節(jié)點(diǎn)除開始和結(jié)束節(jié)點(diǎn)可能相同外沒有重復(fù)節(jié)點(diǎn)l 無內(nèi)部循環(huán)無內(nèi)部循環(huán)l 簡單路徑的所有的子路徑也是簡單路徑簡單路徑的所有的子路徑也是簡單路徑l 一個(gè)循環(huán)是簡單路徑一個(gè)循環(huán)是簡單路徑n主路徑主路徑 不是其它簡單路徑的真子路徑,即:最大子路徑不是其它簡單路徑的真子路徑,即:最大子路徑41圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋

21、結(jié)構(gòu)覆蓋簡單路徑簡單路徑 0, 1, 2, 3 0, 1, 0, 2 , 1, 3 , 2, 3 , 3, 0 , 0, 1, 3 , 0, 2, 3 , 1, 3, 0 , 2, 3, 0 , 3, 0, 1 , 3, 0, 2 , 0, 1, 3, 0 , 0, 2, 3, 0, 1, 3, 0, 1 , 2, 3, 0, 2 , 3, 0, 1, 3 , 3, 0, 2, 3 , 1, 3, 0, 2 , 2, 3, 0, 1, 主路徑主路徑 0, 1, 3, 0 , 0, 2, 3, 0, 1, 3, 0, 1 , 2, 3, 0, 2 , 3, 0, 1, 3 , 3, 0, 2,

22、3 , 1, 3, 0, 2 , 2, 3, 0, 1120342圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋主路徑覆蓋:測試覆蓋每個(gè)主路徑主路徑覆蓋:測試覆蓋每個(gè)主路徑n遍歷長度為遍歷長度為 0, 1, , 0, 1, , n的所有路徑的所有路徑(n為指定的主路徑最大長度)為指定的主路徑最大長度)n主路徑覆蓋包含節(jié)點(diǎn)、邊和邊對(duì)覆蓋主路徑覆蓋包含節(jié)點(diǎn)、邊和邊對(duì)覆蓋43圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋Len 00123456 ! 表示終止Len 10, 10, 21, 22, 32, 43, 6 !4, 6 !4, 55, 4Len 20, 1, 20, 2, 30, 2, 41, 2, 31, 2, 42, 3,

23、 6 !2, 4, 6 !2, 4, 5 !4, 5, 4 *5, 4, 6 !5, 4, 5 * 表示循環(huán)Len 30, 1, 2, 30, 1, 2, 40, 2, 3, 6 !0, 2, 4, 6 !0, 2, 4, 5 !1, 2, 3, 6 !1, 2, 4, 5 !1, 2, 4, 6 !Len 40, 1, 2, 3, 6 !0, 1, 2, 4, 6 !0, 1, 2, 4, 5 !主路徑主路徑簡單路徑簡單路徑602134544圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋l3838條簡單路徑條簡單路徑l9 9條主路徑條主路徑主路徑主路徑 0, 1, 2, 3, 6 0, 1, 2, 4, 5

24、0, 1, 2, 4, 6 0, 2, 3, 6 0, 2, 4, 5 0, 2, 4, 6 5, 4, 6 4, 5, 4 5, 4, 5 1次循環(huán)次循環(huán)多次循環(huán)多次循環(huán)0次循環(huán)次循環(huán)602134545圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋問題問題n 測試用例的實(shí)例化(可執(zhí)行的測試用例)測試用例的實(shí)例化(可執(zhí)行的測試用例)語法可達(dá)語法可達(dá):圖中存在一條滿足需求的子路徑:圖中存在一條滿足需求的子路徑語義可達(dá)語義可達(dá):測試能真正執(zhí)行到一條子路徑:測試能真正執(zhí)行到一條子路徑n 不可行的測試需求不可行的測試需求不可達(dá)的節(jié)點(diǎn)不可達(dá)的節(jié)點(diǎn)不能嚴(yán)格按子路徑執(zhí)行不能嚴(yán)格按子路徑執(zhí)行46圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋測試

25、用例的實(shí)例化測試用例的實(shí)例化n 游歷(游歷(Touring)如果如果q是是p的子路徑,路徑的子路徑,路徑p游歷游歷路徑路徑q n 側(cè)訪(側(cè)訪(Sidetrips)路徑路徑p側(cè)訪側(cè)訪路徑路徑q當(dāng)且僅當(dāng)當(dāng)且僅當(dāng)q的每條邊在的每條邊在p中,且邊次序相同中,且邊次序相同n 繞道游歷(繞道游歷(Detours)路徑路徑p繞道繞道路徑路徑q,當(dāng)且僅當(dāng),當(dāng)且僅當(dāng)q的每個(gè)節(jié)點(diǎn)在的每個(gè)節(jié)點(diǎn)在p中,且節(jié)點(diǎn)次序相同中,且節(jié)點(diǎn)次序相同47圖覆蓋圖覆蓋結(jié)構(gòu)覆蓋結(jié)構(gòu)覆蓋021534021534側(cè)訪側(cè)訪021534繞道繞道游歷游歷設(shè)設(shè)q : 12448圖覆蓋圖覆蓋數(shù)據(jù)流數(shù)據(jù)流目標(biāo)目標(biāo):檢測變量值計(jì)算和使用:檢測變量值計(jì)算和

26、使用定義定義(def)(def):變量被賦值變量被賦值使用使用(use)(use):變量被用于計(jì)算或判定變量被用于計(jì)算或判定 def(n) =x節(jié)點(diǎn)節(jié)點(diǎn)n包含包含x的定義的定義 def(e) =x 邊邊e包含包含x的定義的定義 use(n) =x節(jié)點(diǎn)節(jié)點(diǎn)n包含包含x的使用的使用 use(e) =x邊邊e包含包含x的使用的使用 49圖覆蓋圖覆蓋數(shù)據(jù)流數(shù)據(jù)流DU-對(duì)對(duì) 位置對(duì)位置對(duì)(li, lj),一個(gè)變量在,一個(gè)變量在li被定義,在被定義,在 lj被使用被使用du-路徑路徑 從變量的一個(gè)定義到它的一個(gè)使用的路徑,且中間從變量的一個(gè)定義到它的一個(gè)使用的路徑,且中間沒有對(duì)該變量重新定義(沒有對(duì)該變量

27、重新定義(定義清純,定義清純,def-clear)du (ni, nj, v) 從從ni 到到 nj的變量的變量v的的du-路徑集合路徑集合du (ni, v)從從ni 開始的變量開始的變量v的的du-路徑集合路徑集合圖覆蓋圖覆蓋數(shù)據(jù)流數(shù)據(jù)流對(duì)每個(gè)對(duì)每個(gè)du-路徑集合路徑集合S = du(n, v),至少測試至少測試S中的一條路徑中的一條路徑對(duì)每個(gè)對(duì)每個(gè)du-路徑集合路徑集合S = du(),至少測試至少測試S中的一條中的一條路徑路徑對(duì)每個(gè)對(duì)每個(gè)du-路徑集合路徑集合S = du(), 測試測試S中的所有路徑中的所有路徑2,全使用覆蓋(,全使用覆蓋(all-uses)3,全,全du-路徑覆蓋(

28、路徑覆蓋(all-du-paths)1,全定義覆蓋(,全定義覆蓋(all-defs)51圖覆蓋圖覆蓋數(shù)據(jù)流數(shù)據(jù)流0216354x = 42z = x-8z = x*2全定義(x) 0, 1, 3, 4 全使用全使用(x) 0, 1, 3, 4 0, 1, 3, 5 全定義全定義-使用(使用(x) 0, 1, 3, 4 0, 2, 3, 4 0, 1, 3, 5 0, 2, 3, 5 52邏輯表達(dá)式邏輯表達(dá)式( (a b) G ) (x b) G ) (x b) = True, FalseG = True, False(x b) G ) (x bGx b) G ) (x b) G (x b) o

29、r G ) and (x b b c) c a(a b) = true, (b c) = true, (c a) = true不可行不可行不可行的測試需求必須被識(shí)別(不可決不可行的測試需求必須被識(shí)別(不可決定的),忽略定的),忽略66邏輯覆蓋小結(jié)邏輯覆蓋小結(jié)u實(shí)際中謂詞常常很簡單,少于實(shí)際中謂詞常常很簡單,少于3 3個(gè)從句個(gè)從句l對(duì)從句謂詞對(duì)從句謂詞, 謂詞覆蓋謂詞覆蓋l2 -3個(gè)從句的謂詞,個(gè)從句的謂詞, 多條件覆蓋多條件覆蓋l大于大于3個(gè)從句的謂詞,活動(dòng)從句覆蓋個(gè)從句的謂詞,活動(dòng)從句覆蓋u控制軟件有許多復(fù)雜謂詞,包含許多從控制軟件有許多復(fù)雜謂詞,包含許多從句句6768輸入域特性輸入域特性n

30、輸入域描述輸入域描述l表示輸入、參數(shù)表示輸入、參數(shù)l輸入域劃分輸入域劃分l選擇輸入值組合選擇輸入值組合n系統(tǒng)級(jí)系統(tǒng)級(jí)l學(xué)生數(shù)學(xué)生數(shù) 0, 1, 1 l主修主修 swe, cs, isa, infs n單元級(jí)單元級(jí)l參數(shù)參數(shù) F (int X, int Y)l可能值可能值 X: 2 , Y : 10, 20, 30 69輸入域特性輸入域特性n域劃分:將域域劃分:將域D劃分為一個(gè)塊集劃分為一個(gè)塊集Bqbi bj = , i j, bi, bj Bqb1b2b3 b = Dn參數(shù)取值參數(shù)取值n參數(shù)值組合參數(shù)值組合三角形問題三角形問題輸入三個(gè)不大于100的整數(shù)a、b、c,分別作為三角形的三條邊,現(xiàn)通過

31、程序判斷由三條邊構(gòu)成的三角形的類型為邊值無效、等邊三角形、等腰三角形、一般三角形、以及非三角形輸入條件輸入條件-1(1)邊長在輸入域范圍條件條件有效類有效類無效類無效類邊長在輸入域范圍邊長在輸入域范圍1 a 100 (1)a 100 (5)1 b 100 (2)b 100 (7)1 c 100 (3)c 100 (9)等價(jià)類劃分等價(jià)類劃分-1三角形問題三角形問題測試用例測試用例-1-1編號(hào)編號(hào)輸入輸入預(yù)期輸出預(yù)期輸出覆蓋的等價(jià)類覆蓋的等價(jià)類abcTC1567一般三角形一般三角形(1)(2)(3)TC2-256邊值無效邊值無效(4)TC35-25邊值無效邊值無效(6)TC455-2邊值無效邊值無

32、效(8)TC51056550邊值無效邊值無效(5)TC66510550邊值無效邊值無效(7)TC75065105邊值無效邊值無效(9)三角形問題三角形問題輸入條件輸入條件-2-2(1)邊長在輸入域范圍(2)兩邊之和大于第三邊條件條件有效類有效類無效類無效類邊長在輸入域范圍邊長在輸入域范圍1 a 100 (1)a 100 (5)1 b 100 (2)b 100 (7)1 c 100 (3)c 100 (9)兩邊之和大于第三邊兩邊之和大于第三邊a b + c (13), a = b + c (14)b a + c (15), b = a + c (16)c a + b (17), c = a +

33、b (18)等價(jià)類劃分等價(jià)類劃分-2-2三角形問題三角形問題測試用例測試用例-2編號(hào)編號(hào)輸入輸入預(yù)期輸出預(yù)期輸出覆蓋的等價(jià)類覆蓋的等價(jià)類abcTC1567一般三角形一般三角形(1)(2)(3)(10)(11)(12)TC2-256邊值無效邊值無效(4)TC75065105邊值無效邊值無效(9)TC81556非三角形非三角形 (13)TC95156非三角形非三角形(15)TC105615非三角形非三角形(17)TC111156非三角形非三角形(14)TC125116非三角形非三角形(16)TC135611非三角形非三角形(18)三角形問題三角形問題輸入條件輸入條件-3(1)邊長在輸入域范圍(2)

34、兩邊之和大于第三邊(3)兩邊是否相等三角形問題三角形問題條件條件有效類有效類無效類無效類邊長在輸入域范圍邊長在輸入域范圍1 a 100 (1)a 100 (5)1 b 100 (2)b 100 (7)1 c 100 (3)c 100 (9)兩邊之和大于第三邊兩邊之和大于第三邊a b + c (13), a = b + c (14)b a + c (15), b = a + c (16)c a + b (17), c = a + b (18)兩邊是否相等兩邊是否相等a = b (19), a c (20)a = c (21), a b (22)b = c (23), a c (24)等價(jià)類劃分等

35、價(jià)類劃分-3三角形問題三角形問題編號(hào)編號(hào)輸入輸入預(yù)期輸出預(yù)期輸出覆蓋的等價(jià)類覆蓋的等價(jià)類abcTC1567一般三角形一般三角形(1)(2)(3)(10)(11)(12)(20)(22)(24)TC2-256邊值無效邊值無效(4)TC65010565邊值無效邊值無效(7)TC75065105邊值無效邊值無效(9)TC81556非三角形非三角形 (13)TC135611非三角形非三角形(18)TC14555等邊三角形等邊三角形(19) (21) (23)測試用例測試用例-3-3三角形問題三角形問題輸入條件輸入條件-4-4(1)邊長在輸入域范圍(2)兩邊之和大于第三邊(3)三邊是否相等三角形問題三角

36、形問題條件條件有效類有效類無效類無效類邊長在輸入域范圍邊長在輸入域范圍1 a 100 (1)a 100 (5)1 b 100 (2)b 100 (7)1 c 100 (3)c 100 (9)兩邊之和大于第三邊兩邊之和大于第三邊a b + c (13), a = b + c (14)b a + c (15), b = a + c (16)c a + b (17), c = a + b (18)三邊是否相等三邊是否相等a = b a c (19)a = c a b (20)b = c a b (21)a = b a = c (22)a b a c (23)等價(jià)類劃分等價(jià)類劃分-4三角形問題三角形問

37、題編號(hào)編號(hào)輸入輸入預(yù)期輸出預(yù)期輸出覆蓋的等價(jià)類覆蓋的等價(jià)類abcTC1567一般三角形一般三角形(1)(2)(3)(10)(11)(12)(20)(22)(24)TC2-256邊值無效邊值無效(4)TC65010565邊值無效邊值無效(7)TC75065105邊值無效邊值無效(9)TC81556非三角形非三角形 (13)TC135611非三角形非三角形(18)TC14556等腰三角形等腰三角形(19)TC15565等腰三角形等腰三角形(20)TC16655等腰三角形等腰三角形(21)TC17555等邊三角形等邊三角形(22)測試用例測試用例-4-4三角形問題三角形問題x1x2a bcd(1)

38、(1) 邊界值分析測試用例邊界值分析測試用例x1a bx1x2a bcd(2) (2) 健壯性測試用例健壯性測試用例x1a b示例:三角形問題示例:三角形問題(1)邊長在輸入域范圍a的取值:的取值:0, 1, 2, 45, 99, 100, 101b的取值:的取值:0, 1, 2, 45, 99, 100, 101c的取值:的取值:0, 1, 2, 45, 99, 100, 101x x1x x2a bcdx x1a b(3) (3) 最壞情況測試用例最壞情況測試用例(4) (4) 健壯最壞情況測試用例健壯最壞情況測試用例86參數(shù)值組合參數(shù)值組合所有組合所有組合: 所有特性的所有塊的組合所有特

39、性的所有塊的組合測試數(shù)是每個(gè)變量的等價(jià)類數(shù)之積:測試數(shù)是每個(gè)變量的等價(jià)類數(shù)之積:Qi =1(Bi)三角形:三角形:7*7*7 = 343 太多太多?每選擇每選擇:每個(gè)特性的每個(gè)塊的一個(gè)值在至少一:每個(gè)特性的每個(gè)塊的一個(gè)值在至少一個(gè)測試用例中被使用使用個(gè)測試用例中被使用使用MaxQi =1(Bi)測試數(shù)是所有特性的塊數(shù)最大值:測試數(shù)是所有特性的塊數(shù)最大值: 太少太少?參數(shù)值組合參數(shù)值組合怎樣測試輸入的組合?l正交數(shù)組測試正交數(shù)組測試 (Orthogonal array testing)程序錯(cuò)誤都是由少數(shù)幾個(gè)參數(shù)的相互作用導(dǎo)致的程序錯(cuò)誤都是由少數(shù)幾個(gè)參數(shù)的相互作用導(dǎo)致的lt覆蓋正交數(shù)組覆蓋正交數(shù)組

40、任意任意t(一般是一般是2或或3)個(gè)參數(shù)的所有可能取值個(gè)參數(shù)的所有可能取值組合至少被一個(gè)測試用例覆蓋組合至少被一個(gè)測試用例覆蓋編號(hào)編號(hào)abcTC1000TC2011TC3022TC404545TC509999TC60100100TC70101101TC8101TC9112TC101245TC1114599TC12199100TC131100101TC1411010TC15202TC162145TC172299TC18245100TC19299101TC2021000TC2121011編號(hào)編號(hào)abcTC2245045TC2345199TC24452100TC254545101TC2645990TC27451001TC28451012TC2999099TC30991100TC31992101TC3299450TC3399991TC34991002TC359910145TC361000100TC3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論