




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件測試
-Ch4程序分析技術MPail:zhaohui@趙輝主要內容常用的程序分析技術文本視角句法視角控制流視角計算流視角功能視角
程序分析與測試的關系
程序分析:發(fā)現(xiàn)軟件特性的技術分析技術1分析技術n……測試技術n測試技術1……測試數(shù)據(jù)選擇程序執(zhí)行數(shù)據(jù)收集結果評價測試階段的分析視角:強調程序的不同特點,并且確定不同程序的特點文本視角
程序=字符+記號的序列文本的規(guī)模
文本視角分析工具:文本編輯器文本的行數(shù)文本詞匯數(shù)文本詞匯頻度句法視角
程序……
語句1語句組1子程序1子程序2子程序n語句組n語句組2……
語句2
語句n……
符號1
符號2
符號n……元素之間的組合關系由語法決定工具:語法分析器、句法編輯器句法視角
語句計數(shù)分析程序特性程序插裝技術:通過修改源程序或目標代碼揭示程序內部的工作原理。標識符交叉引用程序調用變量的聲明與未聲明變量使用頻度程序插裝
程序插裝方法:借助向被測試程序中插入操作來實現(xiàn)測試的目的。程序插裝應用類型:
測試覆蓋率和測試用例有效性度量斷言檢測數(shù)據(jù)流異常檢測路徑智能分解句法視角
測試覆蓋率度量類型:程序中每條語句至少被執(zhí)行一次流程圖中每個分支至少被執(zhí)行一次每個可能的路徑至少被執(zhí)行一次
方法:
在控制流中確定一個點集在程序中這些點上插入軟件計數(shù)器用一組測試用例測試這個程序檢查計數(shù)器的值,獲得覆蓋率的范圍1.應用于測試覆蓋率和測試用例有效性度量的程序插裝句法視角
1.應用于測試覆蓋率和測試用例有效性度量的程序插裝句法視角
1.應用于測試覆蓋率和測試用例有效性度量的程序插裝
插裝程序考慮的問題:
探測那些信息在程序什么部位設置探測點需要設置多少個探測點
探測點位置:
第一個可執(zhí)行語句之前
Entry語句前后有標號的可執(zhí)行語句處循環(huán)語句及終端語句之后If、elseif、else及ENDif語句之后
logicalif語句之后輸入/輸出語句之后Call語句之后計算GoTo語句之后句法視角
1.應用于測試覆蓋率和測試用例有效性度量的程序插裝
測試用例有效性:指該用例揭示程序錯誤的能力程序格式:Exp1opExp2=Exp1句法視角
1.應用于測試覆蓋率和測試用例有效性度量的程序插裝測試用例的單一指數(shù):在一次特定測試執(zhí)行期間,一個測試用例唯一關注于遇到的一個多重表達式的次數(shù)表達式:a×(c+(d/e))
關注因子:a,(c+(d/e)),dIf(a==0)si++;If((c+(d/e)==0)si++;If(d==0)si++;...a×(c+(d/e));單一指數(shù)越高測試有效性越低斷言:在程序的特定部位插入某些用以判斷變量特性的語句,使這些語句在程序執(zhí)行中得以證實,從而使程序的運行特性得以證實,這些插入語句即為斷言。句法視角
2.應用于斷言檢測的程序插裝困惑:在正確的位置插入正確的斷言.程序錯誤?斷言錯誤?句法視角
3.應用于數(shù)據(jù)流異常檢測的程序插裝變量在程序執(zhí)行中的4種狀態(tài):U狀態(tài)(未定義狀態(tài));D狀態(tài)(定義未被引用狀態(tài))R狀態(tài)(定義且被引用狀態(tài));A狀態(tài)(異常狀態(tài))對變量執(zhí)行的動作:d動作(定義動作)r動作(引用動作)u動作(取消定義動作)Sqq’aq’=f(q,a)f(U,d)=Df(D,d)=Af(R,d)=Df(A,d)=Af(U,r)=Af(D,r)=Rf(R,r)=Rf(A,r)=Af(U,u)=Uf(D,u)=Af(R,u)=Uf(A,u)=AX句法視角
控制流視角
控制流關系:敘述程序元素和它們的執(zhí)行次序之間的聯(lián)系。一個程序通常是一個條件、一個簡單的語句或者一個語句塊如果元素B可以在元素A之后立即執(zhí)行,那么(A,B)在程序的控制流關系中,后繼的B的執(zhí)行獨立于A的執(zhí)行ifx<xthenwrite(x)A:x<xB:write(x)控制流視角
控制流的一條路徑對應于一個潛在可執(zhí)行的程序元素序列。如果一個輸入引起一條路徑的執(zhí)行,那么這條路徑就被稱為可達的,否則為不可達。數(shù)據(jù)流視角
數(shù)據(jù)流關系:通過它們的數(shù)據(jù)訪問行為關聯(lián)起來的程序的元素之間的關系。如果元素B使用一個數(shù)據(jù)對象,該數(shù)據(jù)對象潛在的在元素A處被定義,那么(A,B)就出現(xiàn)在程序的數(shù)據(jù)流關系中。數(shù)據(jù)流的信息可以被引用到代碼優(yōu)化、異常檢測以及測試數(shù)據(jù)生成中ABv數(shù)據(jù)流圖例:X:=X+Y-Z數(shù)據(jù)流視角
程序切片:通過在一個特定的位置消除那些不影響表達式計算的所有語句產生的程序片斷。BeginRead(x,y)Total:=0.0;Sum:=0.0;Ifx<=1thensum:=y;elsebeginread(z);total:=x×y;endwrite(total,sum)End1Begin2Read(x,y)5Ifx<=16then7elsebegin8read(z);10end12EndZ在語句12處切片1BeginRead(x,y)3Total:=0.0;5Ifx<=16then7elsebegin9total:=x×y;10end12Endtotal在語句12處切片用變量切片數(shù)據(jù)流視角
切片標準:指獲得一個程序行為一個子集的規(guī)格,它包含程序中一個特定語句和一個變量的集合。
定義1:P是一個程序,并且假定其語句被連續(xù)標號,對于P中每一個語句n,定義兩個集合:REF(n)是所有在語句n處被引用的變量的集合;DEF(n)是語句在n處被定義的變量的集合。定義2:程序P的一個值的軌跡是一個有限的有序對集合:(n1,v1)(n2,v2)…(nk,vk)ni表示語句,vi表示執(zhí)行前所有變量值的向量。數(shù)據(jù)流視角
定義3:程序P的一個切片標準是一個有序對(i,V),其中i是P中一個語句,V是P中變量的一個子集。
C1=(12,{Z})C2=(12,{total})定義4:給定一個切片標準C=(i,V)和一個值軌跡T,定義一個映射函數(shù)Proj(C,T),該函數(shù)刪除了在值軌跡中,左邊成分不是i的所有有序對,并且在剩余的有序對中刪除其右邊向量中不在V中的成分。數(shù)據(jù)流視角
定義5:一個程序在一個切片標準C=(i,V)上的一個切片S(即S是使用切片標準C之后獲得的一個程序子集)是任何滿足下面兩個屬性的可執(zhí)行程序。屬性1:S可以從P中刪除零條和多條語句獲得屬性2:對于軌跡T,無論何時程序P在輸入I上阻塞,那么其切片S在軌跡T’上也會對輸入阻塞,并且Proj(C’,T’)=Proj(C,T),并且如果語句i在切片中,那么i’=i,或者i’是i最近的后繼語句。計算流視角
計算:當程序在執(zhí)行特定的輸入時產生的數(shù)據(jù)狀態(tài)的軌跡。一個程序可以被看成一個有限的“計算集”表示。計算流分析的作用:估計代碼中遺留缺陷的數(shù)量;測試數(shù)據(jù)撲捉缺陷的能力;程序隱藏缺陷的可能性;計算流視角
原本錯誤總數(shù)=(插入的錯誤總數(shù)/發(fā)現(xiàn)的插入的錯誤數(shù))×發(fā)現(xiàn)的原本錯誤數(shù)殘留的錯誤數(shù)=原本錯誤總數(shù)-發(fā)現(xiàn)的原本錯誤數(shù)目的:評價系統(tǒng)的危險模塊,進而評價系統(tǒng)的容錯能力。驗證測試用例的有效性。與其他測試不同點:測試從系統(tǒng)的故障開始,測試系統(tǒng)在發(fā)生故障時的容錯能力。1.故障插入
計算流視角
含義:使用故障插入技術來分析測試數(shù)據(jù)的屬性,帶有插入錯誤的程序成為一個變體或變異。執(zhí)行變體以確定它們的行為是否不同于原來程序的行為。變體分析的產物是關于測試數(shù)據(jù)殺死變體的程度。變體通過使用變體操作產生:
2.變體分析
表達式1表達式2變體操作計算流視角
2.變體分析
main(){inti;floate,sum,term,x;
scancf(“%f%f”x,e);
printf(“x=%10.6fe=%10.6f\n”x,e);term=x;for(i=3;i<=100&&term>e;i=i+2){term=term×X×X/(i×(i-1));if(i%2==0)sum=sum+term;elsesum=sum–term;}
printf(“sin(x)=%8.6f\n”sum);}變量設成常量main(){inti;floate,sum,term,x;
scancf(“%f%f”x,e);
printf(“x=%10.6fe=%10.6f\n”x,e);
term=0;for(i=3;i<=100&&term>e;i=i+2){term=term×X×X/(i×(i-1));if(i%2==0)sum=sum+term;elsesum=sum–term;}
printf(“sin(x)=%8.6f\n”sum);}<=變成>=main(){inti;floate,sum,term,x;
scancf(“%f%f”x,e);
printf(“x=%10.6fe=%10.6f\n”x,e);term=x;for(i=3;i>=100&&term>e;i=i+2){term=term×X×X/(i×(i-1));if(i%2==0)sum=sum+term;elsesum=sum–term;}
printf(“sin(x)=%8.6f\n”sum);}常量0換成1main(){inti;floate,sum,term,x;
scancf(“%f%f”x,e);
printf(“x=%10.6fe=%10.6f\n”x,e);term=X;for(i=3;i<=100&&term>e;i=i+2){term=term×X×X/(i×(i-1));if(i%2==1)sum=sum+term;elsesum=sum–term;}
printf(“sin(x)=%8.6f\n”sum);}計算流視角
變體操作:
常量變換:常量C變換成C+1,或C-1
標量變換:標量變量替換成另一個,A=B-1,A=D-1
標量替換常量:使用標量變量替換常量,A=1,A=B
常量替換標量:A=B,A=1
源常量進行替換:把程序中一個常量替換成另一個常量。
A=1,A=11,其中11在程序其他語句中出現(xiàn)。
數(shù)組引用替換常量:A=2,A=B(2)。2.變體分析
計算流視角
變體操作:數(shù)組引用替換標量:A=C+1,A=B(1)+1。
相似數(shù)組名字替換:A=B(2,4),A=D(2,4).
常量替換數(shù)組應用:A=X(1),A=1
源常量進行替換:把程序中一個常量替換成另一個常量。
A=1,A=11,其中11在程序其他語句中出現(xiàn)。
數(shù)組引用替換常量:A=2,A=B(2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織體檢活動方案
- 公司氣氛年會策劃方案
- 公司春訓活動策劃方案
- 公司植樹節(jié)春游活動方案
- 公司環(huán)保推廣活動方案
- 公司月度拓展活動方案
- 公司放假前活動方案
- 公司用凈水器展銷活動方案
- 公司給員工做美甲活動方案
- 公司福利電影票活動方案
- 江蘇泰州市:2024年小升初英語模擬卷(B)(譯林版三起)
- 六年級下冊語文試題-“快樂讀書吧”練習題|部編版(含答案)
- 國家開放大學《Python語言基礎》實驗9:函數(shù)定義和調用參考答案
- 高速公路交通事故處理流程與責任認定
- 觀光電梯方案
- 混凝土箱涵技術規(guī)程
- 電力電子技術在電力系統(tǒng)中的應用
- 《環(huán)保節(jié)能培訓》課件
- 視網膜靜脈阻塞護理查房
- 員工健康管理規(guī)定
- 飛機結構設計課件
評論
0/150
提交評論