版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件測試
-Ch4程序分析技術(shù)MPail:zhaohui@趙輝主要內(nèi)容常用的程序分析技術(shù)文本視角句法視角控制流視角計(jì)算流視角功能視角
程序分析與測試的關(guān)系
程序分析:發(fā)現(xiàn)軟件特性的技術(shù)分析技術(shù)1分析技術(shù)n……測試技術(shù)n測試技術(shù)1……測試數(shù)據(jù)選擇程序執(zhí)行數(shù)據(jù)收集結(jié)果評價測試階段的分析視角:強(qiáng)調(diào)程序的不同特點(diǎn),并且確定不同程序的特點(diǎn)文本視角
程序=字符+記號的序列文本的規(guī)模
文本視角分析工具:文本編輯器文本的行數(shù)文本詞匯數(shù)文本詞匯頻度句法視角
程序……
語句1語句組1子程序1子程序2子程序n語句組n語句組2……
語句2
語句n……
符號1
符號2
符號n……元素之間的組合關(guān)系由語法決定工具:語法分析器、句法編輯器句法視角
語句計(jì)數(shù)分析程序特性程序插裝技術(shù):通過修改源程序或目標(biāo)代碼揭示程序內(nèi)部的工作原理。標(biāo)識符交叉引用程序調(diào)用變量的聲明與未聲明變量使用頻度程序插裝
程序插裝方法:借助向被測試程序中插入操作來實(shí)現(xiàn)測試的目的。程序插裝應(yīng)用類型:
測試覆蓋率和測試用例有效性度量斷言檢測數(shù)據(jù)流異常檢測路徑智能分解句法視角
測試覆蓋率度量類型:程序中每條語句至少被執(zhí)行一次流程圖中每個分支至少被執(zhí)行一次每個可能的路徑至少被執(zhí)行一次
方法:
在控制流中確定一個點(diǎn)集在程序中這些點(diǎn)上插入軟件計(jì)數(shù)器用一組測試用例測試這個程序檢查計(jì)數(shù)器的值,獲得覆蓋率的范圍1.應(yīng)用于測試覆蓋率和測試用例有效性度量的程序插裝句法視角
1.應(yīng)用于測試覆蓋率和測試用例有效性度量的程序插裝句法視角
1.應(yīng)用于測試覆蓋率和測試用例有效性度量的程序插裝
插裝程序考慮的問題:
探測那些信息在程序什么部位設(shè)置探測點(diǎn)需要設(shè)置多少個探測點(diǎn)
探測點(diǎn)位置:
第一個可執(zhí)行語句之前
Entry語句前后有標(biāo)號的可執(zhí)行語句處循環(huán)語句及終端語句之后If、elseif、else及ENDif語句之后
logicalif語句之后輸入/輸出語句之后Call語句之后計(jì)算GoTo語句之后句法視角
1.應(yīng)用于測試覆蓋率和測試用例有效性度量的程序插裝
測試用例有效性:指該用例揭示程序錯誤的能力程序格式:Exp1opExp2=Exp1句法視角
1.應(yīng)用于測試覆蓋率和測試用例有效性度量的程序插裝測試用例的單一指數(shù):在一次特定測試執(zhí)行期間,一個測試用例唯一關(guān)注于遇到的一個多重表達(dá)式的次數(shù)表達(dá)式:a×(c+(d/e))
關(guān)注因子:a,(c+(d/e)),dIf(a==0)si++;If((c+(d/e)==0)si++;If(d==0)si++;...a×(c+(d/e));單一指數(shù)越高測試有效性越低斷言:在程序的特定部位插入某些用以判斷變量特性的語句,使這些語句在程序執(zhí)行中得以證實(shí),從而使程序的運(yùn)行特性得以證實(shí),這些插入語句即為斷言。句法視角
2.應(yīng)用于斷言檢測的程序插裝困惑:在正確的位置插入正確的斷言.程序錯誤?斷言錯誤?句法視角
3.應(yīng)用于數(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句法視角
控制流視角
控制流關(guān)系:敘述程序元素和它們的執(zhí)行次序之間的聯(lián)系。一個程序通常是一個條件、一個簡單的語句或者一個語句塊如果元素B可以在元素A之后立即執(zhí)行,那么(A,B)在程序的控制流關(guān)系中,后繼的B的執(zhí)行獨(dú)立于A的執(zhí)行ifx<xthenwrite(x)A:x<xB:write(x)控制流視角
控制流的一條路徑對應(yīng)于一個潛在可執(zhí)行的程序元素序列。如果一個輸入引起一條路徑的執(zhí)行,那么這條路徑就被稱為可達(dá)的,否則為不可達(dá)。數(shù)據(jù)流視角
數(shù)據(jù)流關(guān)系:通過它們的數(shù)據(jù)訪問行為關(guān)聯(lián)起來的程序的元素之間的關(guān)系。如果元素B使用一個數(shù)據(jù)對象,該數(shù)據(jù)對象潛在的在元素A處被定義,那么(A,B)就出現(xiàn)在程序的數(shù)據(jù)流關(guān)系中。數(shù)據(jù)流的信息可以被引用到代碼優(yōu)化、異常檢測以及測試數(shù)據(jù)生成中ABv數(shù)據(jù)流圖例:X:=X+Y-Z數(shù)據(jù)流視角
程序切片:通過在一個特定的位置消除那些不影響表達(dá)式計(jì)算的所有語句產(chǎn)生的程序片斷。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ù)流視角
切片標(biāo)準(zhǔn):指獲得一個程序行為一個子集的規(guī)格,它包含程序中一個特定語句和一個變量的集合。
定義1:P是一個程序,并且假定其語句被連續(xù)標(biāo)號,對于P中每一個語句n,定義兩個集合:REF(n)是所有在語句n處被引用的變量的集合;DEF(n)是語句在n處被定義的變量的集合。定義2:程序P的一個值的軌跡是一個有限的有序?qū)希?n1,v1)(n2,v2)…(nk,vk)ni表示語句,vi表示執(zhí)行前所有變量值的向量。數(shù)據(jù)流視角
定義3:程序P的一個切片標(biāo)準(zhǔn)是一個有序?qū)Γ╥,V),其中i是P中一個語句,V是P中變量的一個子集。
C1=(12,{Z})C2=(12,{total})定義4:給定一個切片標(biāo)準(zhǔn)C=(i,V)和一個值軌跡T,定義一個映射函數(shù)Proj(C,T),該函數(shù)刪除了在值軌跡中,左邊成分不是i的所有有序?qū)Γ⑶以谑S嗟挠行驅(qū)χ袆h除其右邊向量中不在V中的成分。數(shù)據(jù)流視角
定義5:一個程序在一個切片標(biāo)準(zhǔn)C=(i,V)上的一個切片S(即S是使用切片標(biāo)準(zhǔn)C之后獲得的一個程序子集)是任何滿足下面兩個屬性的可執(zhí)行程序。屬性1:S可以從P中刪除零條和多條語句獲得屬性2:對于軌跡T,無論何時程序P在輸入I上阻塞,那么其切片S在軌跡T’上也會對輸入阻塞,并且Proj(C’,T’)=Proj(C,T),并且如果語句i在切片中,那么i’=i,或者i’是i最近的后繼語句。計(jì)算流視角
計(jì)算:當(dāng)程序在執(zhí)行特定的輸入時產(chǎn)生的數(shù)據(jù)狀態(tài)的軌跡。一個程序可以被看成一個有限的“計(jì)算集”表示。計(jì)算流分析的作用:估計(jì)代碼中遺留缺陷的數(shù)量;測試數(shù)據(jù)撲捉缺陷的能力;程序隱藏缺陷的可能性;計(jì)算流視角
原本錯誤總數(shù)=(插入的錯誤總數(shù)/發(fā)現(xiàn)的插入的錯誤數(shù))×發(fā)現(xiàn)的原本錯誤數(shù)殘留的錯誤數(shù)=原本錯誤總數(shù)-發(fā)現(xiàn)的原本錯誤數(shù)目的:評價系統(tǒng)的危險(xiǎn)模塊,進(jìn)而評價系統(tǒng)的容錯能力。驗(yàn)證測試用例的有效性。與其他測試不同點(diǎn):測試從系統(tǒng)的故障開始,測試系統(tǒng)在發(fā)生故障時的容錯能力。1.故障插入
計(jì)算流視角
含義:使用故障插入技術(shù)來分析測試數(shù)據(jù)的屬性,帶有插入錯誤的程序成為一個變體或變異。執(zhí)行變體以確定它們的行為是否不同于原來程序的行為。變體分析的產(chǎn)物是關(guān)于測試數(shù)據(jù)殺死變體的程度。變體通過使用變體操作產(chǎn)生:
2.變體分析
表達(dá)式1表達(dá)式2變體操作計(jì)算流視角
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);}變量設(shè)成常量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);}計(jì)算流視角
變體操作:
常量變換:常量C變換成C+1,或C-1
標(biāo)量變換:標(biāo)量變量替換成另一個,A=B-1,A=D-1
標(biāo)量替換常量:使用標(biāo)量變量替換常量,A=1,A=B
常量替換標(biāo)量:A=B,A=1
源常量進(jìn)行替換:把程序中一個常量替換成另一個常量。
A=1,A=11,其中11在程序其他語句中出現(xiàn)。
數(shù)組引用替換常量:A=2,A=B(2)。2.變體分析
計(jì)算流視角
變體操作:數(shù)組引用替換標(biāo)量:A=C+1,A=B(1)+1。
相似數(shù)組名字替換:A=B(2,4),A=D(2,4).
常量替換數(shù)組應(yīng)用:A=X(1),A=1
源常量進(jìn)行替換:把程序中一個常量替換成另一個常量。
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)系上傳者。文件的所有權(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中電科投資控股有限公司2026年校園招聘備考題庫及答案詳解1套
- 2025年榆林實(shí)驗(yàn)幼兒園招聘備考題庫及答案詳解1套
- 廣東韶關(guān)翁源中學(xué)教育集團(tuán)2026年第一批赴外地院校公開招聘教師備考題庫及完整答案詳解一套
- 2025年玉溪市紅塔區(qū)李棋衛(wèi)生院招聘臨聘人員的備考題庫及參考答案詳解一套
- 中國數(shù)聯(lián)物流2026屆校園招聘50人備考題庫含答案詳解
- 成都市泡桐樹小學(xué)天府智造園分校2025年儲備教師招聘備考題庫及1套參考答案詳解
- 術(shù)后早期活動的康復(fù)方案動態(tài)調(diào)整機(jī)制
- 溫氏食品集團(tuán)秋招題庫及答案
- 數(shù)學(xué)中等考試試題及答案
- 風(fēng)的課件內(nèi)容
- 全科醫(yī)生基層實(shí)踐個人總結(jié)
- 批生產(chǎn)記錄的培訓(xùn)
- 靜脈輸液工具的合理選擇患者篇課件
- 真空冷凍干燥機(jī)操作手冊
- MOOC 電子線路設(shè)計(jì)、測試與實(shí)驗(yàn)(一)-華中科技大學(xué) 中國大學(xué)慕課答案
- 醫(yī)學(xué)裝備管理與使用理論考核試題及答案
- 夾膠玻璃檢驗(yàn)報(bào)告
- 黑龍江省哈爾濱市2023-2024學(xué)年高一上學(xué)期學(xué)業(yè)質(zhì)量檢測化學(xué)試卷(含答案解析)
- 佳能EOS2000D攝影機(jī)使用手冊
- 九宮格數(shù)獨(dú)(入門級-30題)
- 醫(yī)院產(chǎn)科培訓(xùn)課件:《妊娠期宮頸疾病的診治策略》
評論
0/150
提交評論