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

下載本文檔

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

文檔簡介

軟件測試概述WhyWhatHow基于模型的測試基于覆蓋的測試一致性測試Why測試是保證軟件質(zhì)量和可信性的主要手段之一是否符合用戶功能、性能需求軟件產(chǎn)品交付前盡可能發(fā)現(xiàn)錯誤測試的代價非常高占開發(fā)成本的30%-50%或更高不測試代價更高WhyThetop10ITdisasters1983年,前蘇聯(lián)導彈預警軟件故障差點導致WW-III1990年,AT&T網(wǎng)絡癱瘓導致美國7500萬用戶受影響1996年,阿麗亞娜5號火箭爆炸。64-bit16-bit2006年,空客A380因軟件不兼容問題導致拖延交貨。英制

公制

1998年,美國火星氣候探測器因?qū)Ш较到y(tǒng)單位不同被毀2004年,EDSCS2計算機給納稅人帶來10億英鎊損失。

1999/2000年,千年蟲問題

2006年,索尼電池引發(fā)的一系列筆記本爆炸事1999年,西門子計算機故障引發(fā)50萬英居民新護照延遲

2007年,軟件故障導致1.7萬旅客滯留LA國際機場8小時。Why1996年6月4日阿麗亞娜5號火箭在發(fā)射40秒后爆炸原因:慣性參考系統(tǒng)軟件的數(shù)據(jù)轉(zhuǎn)換異常2004年12月20日,美空軍的一架F-22猛禽戰(zhàn)斗機因軟件問題在起飛過程中失控墜毀170萬行代碼Why2005年11月1日,東京證券交易所因為軟件升級出現(xiàn)系統(tǒng)故障,導致早間股市“停擺”2007年北京機場信息系統(tǒng)癱瘓。短短50分鐘內(nèi),至少84個離港航班發(fā)生延誤海灣戰(zhàn)爭美國F-18戰(zhàn)斗機飛行控制軟件共發(fā)生500多次故障愛國者導彈因為軟件問題誤傷了28名美軍士兵WhyWhat測試的發(fā)展什么是軟件測試軟件缺陷測試的發(fā)展參考:GelperinD,HetzelB.Thegrowthofsoftwaretesting.CommunicationsoftheAssociationofComputingMachinery,1988,31(6):687–695測試的發(fā)展面向調(diào)試階段

調(diào)試(debugging)、檢查(checkout)、測試(testing)無明顯差別面向求真(Demonstration)階段

測試從調(diào)試中分離,成為生命周期中極為關鍵的環(huán)節(jié)

調(diào)試:Makesuretheprogramruns

測試:Makesuretheprogramsolvestheproblem測試的發(fā)展面向證偽(Destruction)階段

Myers定義測試是為發(fā)現(xiàn)錯誤而執(zhí)行程序的過程測試的發(fā)展60%以上的軟件錯誤并非程序錯誤,而是需求和設計錯誤錯誤理解用戶需求會導致開發(fā)完美優(yōu)良的,但卻是不正確的產(chǎn)品需求和設計階段的質(zhì)量保證非常重要測試的發(fā)展

軟件缺陷分布其他10%軟件產(chǎn)品說明書(需求)56%編寫代碼7%設計27%測試的發(fā)展面向評估(Evaluation)階段

集成分析(Analysis)、評審(review)和測試活動,軟件生命周期的每個階段對應相應的活動和產(chǎn)品集面向預防(Prevention)階段

測試與開發(fā)并行,包括:測試計劃測試分析(建立測試需求或目標)測試設計(指明測試集的結構、單個測試用例和過程)測試實現(xiàn)(開發(fā)測試數(shù)據(jù)、測試支持軟件)測試執(zhí)行(運行測試、分析測試結果)測試維護(保存測試,在軟件變化時更新測試)什么是軟件測試Myers(1979)

執(zhí)行程序的過程,其目的是發(fā)現(xiàn)錯誤IEEE標準610.12(IEEE,1990)在特定的條件下運行系統(tǒng)或構件,觀察或記錄結果,對系統(tǒng)的某個方面做出評價分析某個軟件項以發(fā)現(xiàn)現(xiàn)存的和要求的條件之差別(即錯誤)并評價此軟件項的特性軟件缺陷未達到產(chǎn)品說明書中標明的功能未達到產(chǎn)品說明書未指出但應當達到的目標

出現(xiàn)了產(chǎn)品說明書中指明不應出現(xiàn)的功能難以理解、不易使用軟件缺陷軟件缺陷的特征看不到—軟件的特殊性決定了缺陷不易看到看到但抓不到—發(fā)現(xiàn)了缺陷,但不易找到問題發(fā)生的原因軟件缺陷相關術語軟件故障(Fault)

軟件中的一個靜態(tài)缺陷軟件錯誤(Error)

不正確的內(nèi)部狀態(tài),某個故障的體現(xiàn)軟件失效(Failure)

外部的、不正確的行為How測試原理測試過程測試技術幾個關鍵問題誰來測試何時測試何時停止測試怎樣進行測試測試原理測試原理測試應可追溯到需求盡早、及時測試(何時開始?)測試計劃先于測試執(zhí)行80%的錯誤很可能由20%的模塊造成小規(guī)模

大規(guī)模一般來講,完全測試不可能充分覆蓋程序邏輯/圖結構是可行的(何時停止?)由獨立第三方測試(誰?)保存測試相關文檔,以便維護和回歸測試測試原理軟件缺陷在不同階段發(fā)現(xiàn)時修復的費用020406080100編制說明書設計階段編寫代碼測試發(fā)布測試過程模型V模型把測試過程作為編碼之后的一個階段需求分析階段隱藏的問題一直到驗收測試才被發(fā)現(xiàn)不能體現(xiàn)“盡早地和不斷地進行軟件測試”的原則用戶需求需求分析概要設計詳細設計編碼驗收測試系統(tǒng)測試集成測試單元測試測試模型W模型軟件測試技術白盒測試和黑盒測試(另一種:灰盒測試)靜態(tài)測試和動態(tài)測試(驗證測試和確認測試)傳統(tǒng)測試和面向?qū)ο鬁y試基于代碼的測試和基于模型的測試軟件測試技術白盒測試根據(jù)程序的結構和內(nèi)部邏輯設計用例控制流覆蓋:語句、判定、條件、判定/條件、條件組合、基本路徑測試、條件測試等等數(shù)據(jù)流覆蓋:全定義、全使用、全定義使用等等黑盒測試根據(jù)系統(tǒng)的功能性規(guī)格說明設計測試用例等價劃分、邊界值分析、因果圖測試、錯誤推測、組合測試等軟件測試技術靜態(tài)測試又稱靜態(tài)分析技術人工或利用工具對程序和文檔進行分析與檢查走查、審查、符號執(zhí)行等動態(tài)測試運行程序,分析程序的執(zhí)行狀態(tài)和外部表現(xiàn)白盒測試、黑盒測試及灰盒測試等基于模型的測試依據(jù)(形式)模型/規(guī)約進行測試

UML,(E)FSM,LTS,CSP,Promela,...更快、更便宜自動生成算法形式的、非歧義測試的完全性2023年9月21日27測試用例測試選擇準則被測系統(tǒng)環(huán)境測試腳本測試模型基于模型的測試28軟件制品模型測試需求測試規(guī)約測試用例測試腳本測試結果通過/失敗實現(xiàn)抽象級設計抽象級基于模型的測試29建模準則精化測試生成腳本生成執(zhí)行評估軟件制品模型測試需求測試規(guī)約測試用例測試腳本測試結果通過/失敗實現(xiàn)抽象級設計抽象級基于模型的測試30測試設計測試執(zhí)行測試評估軟件制品模型測試需求測試規(guī)約測試用例測試腳本測試結果通過/失敗實現(xiàn)抽象級設計抽象級測試建?;诟采w的測試傳統(tǒng)的方法從實現(xiàn)代碼導出測試用例基于模型的方法從模型導出測試用例依賴于測試準則32測試覆蓋準則測試需求

說明測試期間必須滿足什么或必須覆蓋什么測試準則

定義測試需求的規(guī)則或規(guī)則集測試準則的滿足

給定特定測試準則C對應的測試需求集TR,測試包T滿足C當且僅當TR中的每個測試需求tr,T中存在一條測試路徑t覆蓋tr測試就是定義一個模型,然后設法覆蓋它334種模型圖(notXornotY)andAandBif(x>y)z=x-y;elsez=2*x;A:{0,1,>1}B:{600,700,800}C:{swe,cs,isa,infs}邏輯表達式輸入域特性語法結構34圖覆蓋圖可以表示:語句和分支,組件和信號,狀態(tài)和遷移…

G=(N,N0,Nf,E)6021345路徑:<n1,n2,…,nm>,<ni,ni+1>

E路徑長度:路徑中的邊數(shù)子路徑:路徑中的節(jié)點子序列Reach(n)

:從節(jié)點n可到達的子圖測試路徑:從開始節(jié)點到終止節(jié)點的路徑35圖覆蓋圖結構覆蓋覆蓋圖的節(jié)點、邊或子路徑數(shù)據(jù)流覆蓋

用變量的引用標注圖,覆蓋變量的定義、使用或它們之間的關系36圖覆蓋—結構覆蓋6021345節(jié)點覆蓋測試路徑 [0,1,2,3,6] [0,1,2,4,5,4,6]邊覆蓋測試路徑 [0,1,2,3,6] [0,2,4,5,4,6]37圖覆蓋—結構覆蓋邊對覆蓋

:測試覆蓋每一個可達的長度不超過2的路徑6021345邊對覆蓋

邊對集 {[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圖覆蓋—結構覆蓋全路徑覆蓋:

測試覆蓋所有可能的路徑指定路徑覆蓋:測試覆蓋用戶指定的路徑集

不幸的是,如果圖包含循環(huán),全路徑覆蓋可能不切實際39圖覆蓋—結構覆蓋測試循環(huán)1970s:執(zhí)行1次循環(huán)1980s:執(zhí)行每個循環(huán)1次1990s:執(zhí)行循環(huán)0次、1次和多次2000s:覆蓋主路徑40圖覆蓋—結構覆蓋簡單路徑

除開始和結束節(jié)點可能相同外沒有重復節(jié)點無內(nèi)部循環(huán)簡單路徑的所有的子路徑也是簡單路徑一個循環(huán)是簡單路徑主路徑

不是其它簡單路徑的真子路徑,即:最大子路徑41圖覆蓋—結構覆蓋簡單路徑

[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,3],[1,3,0,2],[2,3,0,1]42圖覆蓋—結構覆蓋主路徑覆蓋:測試覆蓋每個主路徑遍歷長度為0,1,…,n的所有路徑(n為指定的主路徑最大長度)主路徑覆蓋包含節(jié)點、邊和邊對覆蓋43圖覆蓋—結構覆蓋Len0[0][1][2][3][4][5][6]!‘!’表示終止Len1[0,1][0,2][1,2][2,3][2,4][3,6]![4,6]![4,5][5,4]Len2[0,1,2][0,2,3][0,2,4][1,2,3][1,2,4][2,3,6]![2,4,6]![2,4,5]![4,5,4]*[5,4,6]![5,4,5]*‘*’表示循環(huán)Len3[0,1,2,3][0,1,2,4][0,2,3,6]![0,2,4,6]![0,2,4,5]![1,2,3,6]![1,2,4,5]![1,2,4,6]!Len4[0,1,2,3,6]![0,1,2,4,6]![0,1,2,4,5]!主路徑簡單路徑602134544圖覆蓋—結構覆蓋38條簡單路徑9條主路徑主路徑[0,1,2,3,6][0,1,2,4,5][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)0次循環(huán)602134545圖覆蓋—結構覆蓋問題測試用例的實例化(可執(zhí)行的測試用例)語法可達:圖中存在一條滿足需求的子路徑語義可達:測試能真正執(zhí)行到一條子路徑不可行的測試需求不可達的節(jié)點不能嚴格按子路徑執(zhí)行46圖覆蓋—結構覆蓋測試用例的實例化

游歷(Touring)

如果q是p的子路徑,路徑p游歷路徑q

側(cè)訪(Sidetrips)

路徑p側(cè)訪路徑q當且僅當q的每條邊在p中,且邊次序相同

繞道游歷(Detours)

路徑p繞道路徑q,當且僅當q的每個節(jié)點在p中,且節(jié)點次序相同47圖覆蓋—結構覆蓋021534021534側(cè)訪021534繞道游歷設q:12448圖覆蓋–數(shù)據(jù)流目標:檢測變量值計算和使用定義(def):變量被賦值使用(use):變量被用于計算或判定 def(n)={x|節(jié)點n包含x的定義} def(e)={x|邊e包含x的定義} use(n)={x|節(jié)點n包含x的使用} use(e)={x|邊e包含x的使用}49圖覆蓋–數(shù)據(jù)流DU-對

位置對(li,lj),一個變量在li被定義,在

lj被使用du-路徑

從變量的一個定義到它的一個使用的路徑,且中間沒有對該變量重新定義(定義清純,def-clear)du(ni,nj,v)

從ni

nj的變量v的du-路徑集合du(ni,v)

從ni

開始的變量v的du-路徑集合圖覆蓋–數(shù)據(jù)流對每個du-路徑集合S=du(n,v),至少測試S中的一條路徑對每個du-路徑集合S=du(ni,nj,v),至少測試S中的一條路徑對每個du-路徑集合S=du(ni,nj,v),測試S中的所有路徑2,全使用覆蓋(all-uses)3,全du-路徑覆蓋(all-du-paths)1,全定義覆蓋(all-defs)51圖覆蓋–數(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邏輯表達式((a>b)

G)

(x<y)遷移軟件規(guī)約程序判定語句53邏輯表達式謂詞覆蓋:謂詞取true和false

((a>b)

G)

(x<y)=True,False從句覆蓋:每個從句(Clause)取true和false(a>b)=True,FalseG=True,False(x<y)=True,False組合覆蓋:從句取值的組合((a>b)

G)

(x<y)多條件覆蓋ID從句謂詞a>bGx<y((a>b)

G)

(x<y)1TTTT2TTFF3TFTT4TFFF5FTTT6FTFF7FFTF8FFFF短路操作對于C、C++和Java等,多條件覆蓋所要求的一些組合無法執(zhí)行相似復雜性的謂詞所需測試用例數(shù)可能很不同(1)a

b

(c

(d

e))(2)((a

b)

(c

d))

e短路操作多條件覆蓋需要6個測試用例(1)a

b

(c

(d

e))starta

=Ta

=F(短路)b

=Tb

=F(短路)c

=T(短路)c

=Fd

=Td

=F(短路)e

=Te

=F短路操作多條件覆蓋需要11個測試用例(2)((a

b)

(c

d))

estarta

=Ta

=Fc

=Tc

=Fe

=Te

=Fd

=Td

=F(短路)e

=Te

=Fb

=Tb

=F(短路)c

=Tc

=Fe

=Te

=Fd

=Td

=F(短路)e

=Te

=F58獨立地測試每個從句活動從句覆蓋謂詞p中的一個從句ci

(主從句)

決定

p當且僅當p中其它從句(次從句)的取值滿足:ci值的變化引起p值得變化從句決定謂詞示例

p=A

B,

B=false,A

決定

p;A=false,B

決定

p

p=A

B,B=true,A

決定

p;A=true,B

決定

p活動從句覆蓋目標

產(chǎn)生測試使謂詞的每個從句能決定謂詞的值59符號P

:謂詞集合p

:P中的某個謂詞Cp

:謂詞p中的從句集合c

:C中的某個從句活動從句覆蓋60活動從句覆蓋(ActiveClauseCoverage,ACC)

p

P,

ci

Cp,選擇次從句cj(j

i)的值使ci

決定p。

對應ci

的兩個測試需求為:ci取true和false61

(a>b)

G

(x<y)((a>b)

orG)

and

(x<y)1TFTT2FFTF重復3FTTT4FFTF5TTTT6TTFF活動從句覆蓋求從句決定謂詞的方法假定pc=true

:p中的從句被置換為

truepc=false

:p中的從句被置換為

false求次從句的值使主從句c決定ppc=pc=true

pc=false62示例63p=a

(b

c)pa=pa=true

pa=false=(true

(b

c))

(false

(b

c))=true

(b

c)=?(b

c)=?b

?c重復變量(a

b)

(c

b)==(a

c)

b(a

b)

(b

c)

(a

c)只有8個可能的組合,而非64個64示例65p=(a

b)

(a

?

b)pa=pa=true

pa=false=((true

b)

(true

?

b))

((false

b)

(false

?

b))=(b

?

b)

false=truepb=pb=true

pb=false=((a

true)

(a

?true))

((a

false)

(a

?false))=(a

false)

(false

a)=a

a=false

a

總是決定pb從不決定

p不可行的測試需求(a>b

b>c)

c>a(a>b)=true,(b>c)=true,(c>a)=true不可行不可行的測試需求必須被識別(不可決定的),忽略66邏輯覆蓋小結實際中謂詞常常很簡單,少于3個從句對從句謂詞,謂詞覆蓋2-3個從句的謂詞,

多條件覆蓋大于3個從句的謂詞,活動從句覆蓋控制軟件有許多復雜謂詞,包含許多從句6768輸入域特性輸入域描述表示輸入、參數(shù)輸入域劃分選擇輸入值組合系統(tǒng)級學生數(shù){0,1,>1}主修{swe,cs,isa,infs}單元級參數(shù)

F(intX,intY)可能值X:{<0,0,1,2,>2},Y:{10,20,30}69輸入域特性域劃分:將域D劃分為一個塊集Bq

bi

bj=,

i

j,bi,bj

Bqb1b2b3

b=D參數(shù)取值參數(shù)值組合

三角形問題輸入三個不大于100的整數(shù)a、b、c,分別作為三角形的三條邊,現(xiàn)通過程序判斷由三條邊

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論