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

下載本文檔

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

文檔簡介

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

公制

1998年,美國火星氣候探測器因導航系統單位不同被毀2004年,EDSCS2計算機給納稅人帶來10億英鎊損失。

1999/2000年,千年蟲問題

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

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

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

測試從調試中分離,成為生命周期中極為關鍵的環節

調試:Makesuretheprogramruns

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

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

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

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

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

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

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

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

不正確的內部狀態,某個故障的體現軟件失效(Failure)

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

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

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

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

定義測試需求的規則或規則集測試準則的滿足

給定特定測試準則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圖覆蓋圖可以表示:語句和分支,組件和信號,狀態和遷移…

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

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

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

用變量的引用標注圖,覆蓋變量的定義、使用或它們之間的關系36圖覆蓋—結構覆蓋6021345節點覆蓋測試路徑 [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圖覆蓋—結構覆蓋全路徑覆蓋:

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

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

除開始和結束節點可能相同外沒有重復節點無內部循環簡單路徑的所有的子路徑也是簡單路徑一個循環是簡單路徑主路徑

不是其它簡單路徑的真子路徑,即:最大子路徑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為指定的主路徑最大長度)主路徑覆蓋包含節點、邊和邊對覆蓋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]*‘*’表示循環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次循環多次循環0次循環602134545圖覆蓋—結構覆蓋問題測試用例的實例化(可執行的測試用例)語法可達:圖中存在一條滿足需求的子路徑語義可達:測試能真正執行到一條子路徑不可行的測試需求不可達的節點不能嚴格按子路徑執行46圖覆蓋—結構覆蓋測試用例的實例化

游歷(Touring)

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

側訪(Sidetrips)

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

繞道游歷(Detours)

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

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

lj被使用du-路徑

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

從ni

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

從ni

開始的變量v的du-路徑集合圖覆蓋–數據流對每個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圖覆蓋–數據流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)遷移軟件規約程序判定語句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等,多條件覆蓋所要求的一些組合無法執行相似復雜性的謂詞所需測試用例數可能很不同(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活動從句覆蓋目標

產生測試使謂詞的每個從句能決定謂詞的值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輸入域特性輸入域描述表示輸入、參數輸入域劃分選擇輸入值組合系統級學生數{0,1,>1}主修{swe,cs,isa,infs}單元級參數

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參數取值參數值組合

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

溫馨提示

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

評論

0/150

提交評論