軟件測試復習_第1頁
軟件測試復習_第2頁
軟件測試復習_第3頁
軟件測試復習_第4頁
軟件測試復習_第5頁
已閱讀5頁,還剩62頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

目錄

1CC1測試概述..........................................................3

1.軟件測試SoftwareTesting.......................................................................................................3

2.術語Terminology......................................................................................................................3

3.一些對比...................................................................4

lec2單元測試UnitTesting.............................................................................................5

1.概述......................................................................5

2.JUnit............................................................................................................................................6

lec3白盒測試..........................................................6

lec3.1圖論與結構化覆蓋...........................................................6

1.GraphinTesting軟件測試的圖...............................................6

2.Path路徑..................................................................8

3.GraphCoverageCriteria圖覆蓋準貝U....................................................................................9

4.StructuralCoverage結構化覆蓋..............................................10

5.ControlFlowGraphandItsCoverage控制流圖及其覆蓋........................11

lec3.2主路徑和基本路徑覆蓋......................................................17

1.PrimePathCoverage主路徑覆蓋.............................................17

2.BasicPathCoverage基本路徑覆蓋..........................................19

lec3.3數據流覆蓋和事件流覆蓋....................................................21

1.DataFlow數據流.........................................................21

2.DataFlowCoverageCriteria數據流覆蓋標準................................22

3.DataFlowTesting.....................................................................................................................23

4.EventFlowGraph事件流圖.................................................26

5.GUITAR.....................................................................................................................................26

6.CoverageCriteria覆蓋率標準................................................26

lec3.4變異測試和缺陷測拭........................................................26

1.MutationTesting變異測試..................................................26

2.Fault-basedTesting基于缺陷的測試..........................................28

lec3.5邏輯覆蓋...................................................................30

1.LogicCoverage邏輯覆蓋...................................................30

2.MC/DC.......................................................................................................................................32

lec4自動化測試......................................................33

lec5黑盒測試.........................................................34

Iec5.1隨機測試...................................................................34

1.BlackboxTesting黑盒測試.......................................34

2.DiversityRandominUniformDistribution均勻分布中的隨機...............34

lcc5.2等價-邊界-組合測試........................................................35

1.EquivalencePartitioning等價類劃分.........................................35

2.Assumptions假設Equivalence等價....................................36

3.Boundary-ValueAnalysis邊界值分析.........................................38

4.CombinatorialTesting組合測試.............................................42

5.CostEffectiveTesting成本效益測試.........................................43

lec5.3缺省-約束-決策表..........................................................46

1.DefaultOptionsinTesting測試中的默認選項.................................46

2.ConstraintsinTesting測試約束..............................................46

3.DecisionTables決策表.....................................................47

lec6測試前沿專題....................................................48

丘6.1多樣性.....................................................................49

1.OtherTesting.............................................................................................................................49

lec6.2測試預言與測試約簡........................................................49

l.TestOracle測試預言........................................................49

2.TestSuiteReduction測試用例集約簡........................................50

lec7集成與系統、驗收測試、移動測試..................................52

lec7.I集成與系統................................................................52

1.系統集成的模式與方法....................................................52

2.功能測試FunctionalTesting.............................................................................................56

3.回歸測試.................................................................57

4.非功能性測試............................................................57

lec7.2驗收測試...................................................................61

1.驗收測試的過程和主要內容................................................61

2.產品規格說明書的驗證....................................................62

3.用戶界面和可用性測試....................................................62

4.兼容性測試..............................................................62

5.可安裝性和可恢復性測試..................................................63

6.文檔測試.................................................................64

lec7.3移動應用測試..............................................................64

1.報告中發現的缺陷........................................................64

2.缺陷.....................................................................65

2

led測試概述

1.軟件測試SoftwareTesting

(1)Fault,Error&Failure

SoftwareFault:Astaticdefectinthesoftware(i.e.,defect)

軟件中的靜態缺陷(即缺陷)

SoftwareError:Anincorrectinternalstatethatisthemanifestationofsomefault

一種不正確的內部狀態,它是某些故障的表現

SoftwareFailure:External,incoirectbehaviorwithrespecttotherequirementsor

otherdescriptionoftheexpectedbehavior

關于預期行為的要求或其他描述的外部的不正確行為

Bug:informaltermforfault/failure

fault/failure的非正式術語

(2)PIEModel鉗圖模型

執行/可達性:必須到達程序中包含故障的一個或多個位置

感染:程序的狀態一定不正確

傳播:受感染的狀態必須傳播以導致程序的某些瑜出不正確

討論:

測試可能無法執行故障位置

執行錯誤的測試可能不會產生錯誤

錯誤可能不會傳播到輸出

(3)練習

Isthereisafault,whichcannotberevealedbyanytest?

是否存在無法通過任何測試發現的故障?

Isitafaultornotafault?

PleaseconstructasimpleprogramP(withafault)and3tests(tl,t2,t3),s.t.

①tlexecutesthefault,butnoerror

②t2(executesthefaultand)producesanerror,butnofailure

(3)t3producesafailure

2.術語Terminology

(1)TestCase測試用例

TestCase包含:TestInputf^rData)、TestOrac\e(Expectedoutput)>Others

(Environment)

(2)Testoracle

3

給定輸入的軟件預期輸出

測試用例的一部分

自動測試中最困難的問題:測試Oracle生成

⑶Testfixture

被測軟件的一種固定狀態,用作運行測試的基準;也稱為測試上下文,例如:

用一組已知的特定數據加載數據庫

準備輸入數據以及設置/創建偽造或模擬對象

(4)Testsuite&Testscript測試套件&測試腳本

Testsuite

測試用例集

通常,這些測試用例具有相似的先決條件和配置

通常可以按順序一起運行

用于不同目的的不同測試套件

某些平臺,某些功能,性能……

Testscript

自動運行一系列測試用例或測試套件的腳本

(5)Testdriver測試驅動

可以加載測試用例集合或測試套件的軟件框架

它還可以處理預期輸出和實際輸出之間的配置和比較

(6)Testadequacy

需要一種策略來確定何時完成了足夠的工作

充分性標準:一個規則,可讓我們判斷某個軟件的一組測試數據的充分性

example:testcoverage測試覆蓋率

評估測試代碼百分比的度量

聲明范圍

分支機構覆蓋率

3.一些對比

(1)Testingvs.Debugging

Testingistorevealabugbyexecutingtestandobservingfailure.

測試是通過執行測試并觀察故障來發現錯誤

Debuggingistofixabugbylocating,understandingandcorrectingfault.

調試是通過定位、理解和糾正錯誤來修復錯誤

(2)Verificationvs.Validation驗證

Verification:對產品、服務或系統是否符合規定、要求、規范或強加條件的評估。

這通常是一個內部過程

4

Validation:產品、服務或系統滿足顧客和其他確定的利益相關者的需求的保證。

它通常涉及外部客戶的接受度和適用性

(3)StaticTestingvs.DynamicTesting

StaticTesting靜態測試

withoutexecutingprograms不執行程序

DynamicTesting

withexecutingprograms

(4)Black-boxTestingvs.White-boxTesting

Black-boxTesting

withoutsourcecode源代碼

White-boxTesting

withsourcecode

Gray-boxTesting=Black-boxTesting+White-boxTesting

lec2單元測試UnitTesting

1.概述

(1)GranularityofTesting測試粒度

單元測試:每個模塊的測試

集成測試:測試模塊之間的交互

系統測試:開發人員將系統作為一個整體進行測試

驗收測試:由沒有正式測試用例的客戶根據用戶需求驗證系統

(2)單元測試

軟件測試的基本模塊

函數,類,組件

5

發現的典型問題

本地數據結構

演算法

邊界條件

錯誤處理

(3)單元測試的作用

分而治之的方法

將系統拆分為多個單元

單獨調試單元

縮小可能存在錯誤的地方

不追逐其他單元的錯誤

(4)如何做單元測試

分層構建系統

從不依賴其他的類開始

在已經測試過的類上繼續測試

好處

避免編寫模擬類

在測試模塊時,它所依賴的模塊是可靠的

(5)Unitlestframework

xUnit>JUnit

2.JUnit

⑴測試

通過測試程序自動驗證

可以自己編寫這樣的測試程序,

或使用測試工具支持,例如JUnil

JUnit

一個簡單,靈活,易于使用的開放源代碼且實用的Java單元測試框架

可以處理大量的測試用例集

(2)JUnitTestSuite

測試套件:一組測試(或其他測試套件)

將測試組織到更大的測試集中

幫助自動化測試

Iec3白盒測試

lec3.1圖論與結構化覆蓋

1.GraphinTesting軟件測試的圖

6

(1)概述

圖可能是計算機科學中最常用的結構

ControlFlowGraph控制流程圖

(2)Graphscomefrommanysources

需求說明書、有限狀態機、用例圖、活動圖

(3)FormalDefinitionofGraphs

AgraphGisdefinedasfollows:G=(V,E)

?V:一組有限的、非空的頂點集

V={vhv2fv3tv4}

?E:一組邊(成對的頂點)

E={(vbV2)f(v2,v4),(v^v^)}

=v

?vo:一組初始頂點,V0{i}

?Vf:一組最終頂點,V廠{vj

?VoandVjaresubsetsofVV。和Vf是V的子集

(4)練習

Isasinglevertexagraph?

一個頂點是圖嗎?

CanEbeaninfiniteset?

7

E可以是一個無限集嗎?

討論

Multipleinitialvertices多個初始頂點

vo=伍引

Multiplefinalvertices多個最終頂點

2.Path路徑

(l)Path

Path:Asequenceofvertices-[vl,v2,…,vn]路徑:頂點序列

Eachpairofverticesisanedge每對頂點都是一條邊

Length:Thenumberofedges長度:邊的數目

Asinglevertexisapathoflength0單個頂點是長度為0的路徑

Subpath:Asubsequenceofverticesinp子路徑:p中頂點的子序列

(2)TestPath

測試路徑:從初始頂點開始,到最終頂點結束的路徑

pl=vlv2v4v5v7

p2=vlv2v4v6v7

p3=vlv3v4v5v7

p4=vlv3v4v6v7

測試路徑代表測試用例的執行

一些測試路徑可以由許多測試執行

某些測試路徑無法通過任何測試執行

(3)TestandTestPath

path(t):測試t執行的測試路徑

path(T):由測試集T執行的測試路徑集

每個測試僅執行一個測試路徑

8

3.GraphCoverageCriteria圖覆蓋準則

(1)Reach

如果存在以vl開頭并以v2結尾的路徑,則vl可以到達v2

如果存在一條以vl開頭并以G中的頂點結尾的路徑,則vl可以到達G,

v1canreachv5

v2canreachv6

v2canreachG'

V,={v4,v5,v6},E'二{(v4,v5),(v4,v6)}

Syntacticreach:Apathexistsinthegraph

語法范圍:圖中存在一條路徑

Semanticreach:Atestexiststhatcanexecutethatpath

語義范圍:存在一個可以執行該路徑的測試

v2cansyntactically語法上reachv5

v2maynotsemantically語義上reachv5

⑵Cover

如果v在p中,則測試路徑p覆蓋頂點v

如果e在p中,則測試路徑p覆蓋邊e

如果正在p中,則測試路徑p覆蓋子路徑p'

若pl=vlv2v4v5v7

p1coversv5

p1coversv4v5

p1doesnotcoverv4v6

①GraphCoverage

在測試中使用的圖形如下:

將軟件模型開發為圖形

要求測試覆蓋特定的頂點、邊或子路徑集

②StructuralCoverage結構覆蓋

在圖上僅根據頂點和邊定義

源代碼

9

需求規格

設計圖

③DataFlowCoverage

要求對圖進行引用變量的注釋

(3)TestCriteria測試標準

測試要求(TR):描述測試路徑的屬性

測試標準:定義測試要求的規則

滿足度:給定一個準則C的一組測試需求TR,一組測試T滿足圖上的C當且僅

當對于TR中的每個測試需求,路徑(T)中有一個測試路徑滿足測試需求TR

4.StructuralCoverage結構化覆蓋

(1)VertexCoverage(VC)頂點覆蓋率(VC)

當且僅當對于V中的每個語法上可到達的頂點v,在path(T)中存在一條路徑p

使得p覆蓋v時,測試集T滿足圖G上的頂點覆蓋

TR包含G中的每個可ii頂點

(2)EdgeCoverage(EC)邊緣覆蓋率(EC)

當且僅當對于E中每個句法可到達的邊e,在path(T)中存在一條路徑p使得p

覆蓋e時,測試集T滿足圖G的邊緣覆蓋率

TR包含G中的每個可到達邊緣

⑶VCandEC

VertexCoverage:TR={vl,v2,v3}

TestPath=[vl,v2,v3]

EdgeCoverage:TR=|(vl,v2),(vl,v3),(v2,v3)]

TestPaths=[v1,v2,v3]

fv1,v3]

(4)CoveringMultipleEdges覆蓋多個邊

邊對覆蓋需要一對邊

10

邊對覆蓋(EPC):TR包含每一條長度不超過2(含2)的可達路徑,單位為G

完全路徑覆蓋(CPC):TR包含G中的所有路徑

n路徑覆蓋(nPC):TR包含每個長度為n(含n)的可達路徑,單位為G

VC(n=O),EC(n=l),EPC(n=2),CPC(n=oo)

(5)Subsume包含

Cl包含C2,表示為C1NC2

對于任何T,如果T滿足Cl意味著T滿足C2

如果nl叁.2則nlPC叁n2PC

C1>C2并不意味著滿足C1的T1可以檢測到由T2檢測到的滿足C2的任何故障

(6)StructuralCoverageExample結構覆蓋率示例

VertexCoverage

TR={1,2,3,4,5,6,7「

TestPaths:[1,2,3,4,7][1,2,3,5,6,5,7]

EdeeCoverage

TR={(1,2),(1,3),(2,3),(3,4),(3,5),(4,7),(5,6),(5,7),(6,5)}

TestPaths:[1,2,3,4,7][1,3,5,6,5,7]

Edge-PairCoverage

TR={[1,23],[1,3,4],[1,3,5],[2,3,4],[2,3,5],[3,4,7],

[3,5,6],[3,5,7],[5,6,5],[6,5,6],[6,5,7]}

TestPaths:[1,2,3,4,7][1,2,3,5,7][1,3,4,7]

[1,3,5,6,5,6,5,7]

CompletePathCoverage

TestPaths:[1,2,3,4,7][1,2,3,5,7][1,2,3,5,6,5,6][1,2,3,

5,6,5,6,5,7][1,2,3,5,6,5,6,5,6,5,7]...

5.ControlFlowGraphandItsCoverage控制流圖及其覆蓋

(1)CodeCoverage代碼覆蓋率

代碼覆蓋率

控制流覆蓋

II

聲明范圍

分行覆蓋率

路徑覆蓋率

覆蓋率收集工具

EclEmma

獲得代碼覆蓋率:

一種常見的方法是將程序抽象成圖形

圖:通常是控制流圖(CFG)

節點覆蓋率:執行每條語句

邊緣覆蓋:執行每個分支

(2)ControlFlowGraph控制流程圖

控制流圖(CFG)是使用圖表示法表示程序在執行期間可能遍歷的所有路徑

①CFG:if

②CFG:if-return

③CFG:while

12

④CFG:do

x=0;

do

{

y=f(x,y);

x=x+1;

}while(x<y);

printIn(y)

⑤CFG:for

for(x=0;x<y;x++)

y=f(x,y);

?CFG:breakandcontinue

13

x=0;

while(x<y)

{

y=f(x,y);

if(y=0)

{

break;

}elseify<0)

(

y=y*2;

continue;

)

x=x+1;

)

print(y);

⑦CFG:switch

read(c);

switch(c)

{

caseN:

y=25;

break;

case'Y':

y=50;

break;y=o;

break;

default:

y=o;

break;

}

print(y);

ControlFlowGraph

14

publicstaticvoidCSta(int[]numbers)

{.

intlength"numbers.length:

doublevar,mean.sum.varsum;

sum=0.0;

for(inti=0;i<length;i++)=

{

sum+=numbers[i];一__

}

mean=sum/(double)length;

varsum=0.0;

fur(iuli-0;i<Icuglh;i++)■

{-

varsum=varsum+((numbers[i]-mean)*(numbers[i]-mean));

}

var=varsum/(length-1.0);

System.out.println("length:"+length);

System.out.println("mean:"+mean);

System.out.println("variance:"+var);____

}

⑶CFG-basedCoverage基于CFG的覆蓋范圍

若x=0,a=true,b=false

①CFG-basedCoverage:StatementCoverage聲明覆蓋范圍

測試覆蓋語句的百分比

SCov=4/5=80%

②CFG-basedCoverage:BranchCoverage分支覆蓋

測試覆蓋的分支百分比,考慮每個條件語句的false和true分支

BCov=2/4=50%

聲明覆蓋分支覆蓋

③CFG-basedCoverage:PathCoverage路徑覆蓋率

15

測試覆蓋的路徑百分比,考慮所有可能的程序執行路徑

PCov=1/4=25%

(4)CFG-basedCoverage:Comparison

①Statement聲明CoverageVS.Branch分支Coverage

如果一個測試套件達到100%的分支覆蓋,那么它必須達到100%的聲明覆蓋

不在分支中的語句將被任何測試覆蓋

所有其他語句都在某個分支中

分支覆蓋嚴格包含聲明覆蓋

②Branch分支CoverageVS.Path路徑Coverage

如果測試套件達到100%的路徑覆蓋率,則必須達到100%的分支覆蓋率

所有分支組合均已覆蓋,表明所有分支均已覆蓋

路徑覆蓋嚴格包含分支覆蓋

③總結

路徑覆蓋率

嚴格包含分支覆蓋

嚴格包含聲明覆蓋

PathCoverage

I

BranchCoverage

I

StatementCoverage

(5)CFG-basedCoverage:Effectiveness有效性

16

大約65%的錯誤可以在單元測試中捕獲

單元測試以控制流測試方法為主導

語句和分支測試在控制流測試中占主導地位

CFG-basedCoverage:Limitation

某些方面的100%覆蓋率永遠不能保證無bug軟件

CoverageCollection:Mechanism機制

源代碼已插入指令(源代碼/二進制代碼)

寫入跟蹤文件的日志代碼插入到每個分支、語句等中

執行插入指令的代碼時,覆蓋率信息將寫入跟蹤文件

lec3.2主路徑和基本路徑覆蓋

1.PrimePathCoverage主路徑覆蓋

(1)LoopsinGraphs圖中的循環

如果一個圖包含一個循環,那么它有無限多條路涇

因此,CPC是不可行的

⑵概念

①簡單路徑:如果沒有節點出現多次,則從節點ni到nj的路徑是簡單的,除非

第一個和最后一個節點可能相同

沒有內部循環

循環是一條簡單的路徑

SimplePaths:[1,2,4,1],[1,3,41],[2,4,1,2],

[24L3],[341,2].[34124],

[44,3,4],[1,2,4],[1,3,4],[2,4,1],[3,4,1],

[4,1,2],[4,1,3],[1,2],[1,3],[2,4],[3,4],[4,1],

[1L[2],[3],[4]

②主路徑:一條簡單路徑,它不會作為任何其他簡單路徑的正確子路徑出現

PrimePaths:[2,41,2],[2,4,1,3],[1,3,4」],

[1,2A1],[3,4,1,2],[44,3,4],[4,1,2,4],

[3,4,13]

(3)PrimePathCoverage主路徑覆蓋

一個簡單、優雅和有限的標準,它要求執行循環和跳過循環

主路徑覆蓋(PPC):TR包含G中的每個基本路徑

將覆蓋所有長度的路徑0,1…

17

也就是說,它包含節點和邊覆蓋

PPC不包含EPC

如果頂點v本身有一條邊,EPC將需要[v,v,v,J

[V,V,V]不是素數

(4)RoundTrip

往返路徑:在同一節點上開始和結束的基本路徑

簡單往返覆蓋率(SRTC):TR包含至少一個往返路徑,用于開始和結束往返路徑

的G種每個可到達頂點

完全往返覆蓋(CRTC):TR包含G中每個可達頂點的所有往返路徑

這些條件會忽略不在往返中的節點和邊

也就是說,它們不包含邊對,邊或頂點覆蓋率

PrimePaths:[2,4,1,2],[2,4,1,3],[1,3,4」],

[1,2,4,1],[3A1,2],[4,13,4],[4,1,2,4],

[3,4,1,3]

(5)Simple&PrimePathExample

PrimePaths

[1,2,3,4,7]

[1,2,3,5,71Executeloop0times

[1,2,3,5,6]

[1,3,4,7]

[1,3,5,7]Executelooponce

[1,3,5,6]

[6,5,7]

[6,5,6]Executeloopmorethanonce

[5,6,5]

18

1T2

4H1L“,n

SimplepathsLen0_二Len3

[21r123

1L

uT,J,,聲3,4]

r13]r134

LL

,,,[1,2,3,5]

[2][23]r135

L,

3:,,[1,3,4,7]

r34]r234

LL,,

4,535[1,,5,7]

[3]r2,,

5,L

r47Tr347[1,3,5,6]

LJL,,

65,7357[2,3,4,7]

[]r,,

5,6L3562,3,5,6

[7][]r,,

L

6,556523,5,7

r1I,,

L,J657

[,,

[6,5,6

Len4

[1,2,3,4,7]

[1,2,3,5,7]

[1,2,3,5,6]

⑹練習

Howtogenerateteststocoverallprimepath?

如何生成覆蓋所有主路徑的測試?

Aresomeprimepathsinfeasible?

一些主路徑是不可行的嗎?

PrimePathCoverage

TRTestPath

A.[3,4,3]i.[1,2,3,4,3,5,6,7,6,8]

B.[4,3,4]ii.[1,2,3,4,3,4,3,

C.[7,6,7]5,6,7,6,7,6,8]

D.[7,6,8]iii.[1,2,3,4,3,5,6,8]

E.[6,7,6]iv.[1,2,3,5,6,7,6,8]

F.[l,2,3,4]v.[1,2,3,5,6,8]

G.[4,3,5,6,7]

H.[4,3,5,6,8]

I.[1,2,3,5,6,7]

J.[1,2,3,5,6,8]

Primepath:themaximal-longsimplepath

主路徑:最大長度的簡單路徑

2.BasicPathCoverage基本路徑覆蓋

(1)概述

McCabe提出的一種測試機制

19

分支覆蓋和所有路徑覆蓋之間的測試標準

滿足分支測試要求的測試;還測試可用于通過計算機程序構造任意路徑的所有

獨立路徑

⑵路徑

①IndependentPath獨立路徑

通過系統的路徑僅在其包含某些頂點或邊未被其他路徑覆蓋的情況下,才與其他

路徑無關

路徑1[1,23,4,5,6,8]

路徑2[1,2,356,7,8]

②LinearlyIndependentPath線性獨立路徑

[el,e2,e3,e4,e5,e6,e7,e8,e9]

[1』,0,0,1』,。。』]

0,0,1]

11,1,0,0,1,1,1,1,1]

flj,1,1,1,1,1,1,1]

[1,1,2,2,1,1,221]

從線性代數可知,每個矩陣都有一個唯一的秩(線性獨立行數),該秩小于或等于

列數

③TheNumberofLinearlyIndependentPaths線性獨立路徑數

線性獨立路徑的個數就是這個矩陣的秩

這個矩陣的秩正是圖的圈復雜度

④McCabe'sBasicPathTestingMcCabe的基本路徑測試

20

生成控制流程圖

計算圈復雜度

選擇一組基本路徑

生成基本路徑的測試

(3)BasicPathCoverage

publicstaticvoidCSta(int[]numbers)

intlength=numbers.length;?CC=9-8+2=3

doublevar.mean,sum,varsum;

?[ebe2?e3?c4?e5?e6?e7.e8,e9]

sum=0.0;

for(inti=0;i<length;ij)?BasicPathSet1

sumnumbers[i];?[1,1,0,0JJ,0,0J]

)

mean=sum/(double)length;?[1,1,13,1,1,0,0,1]

varsum=0.0;?[1,1,0,0,1,1,1,1,1]

for(inti=0;i<length:i—)

,BasicPathSet2

varsuni=varsum?((numbers[i]-mean).(numbers[i]-mean));

?[1,1,0,03,1,0,0,1]

var=varsum,(Icngtli-1.0);

Systan.out.printh("laigtli:”+length);

Systan.out.println("mean:M+mean);

Systcm.out.println(、*ariancc:?』,

)[1,1,11,100,1]

LinearCombination:2*[1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1]=[1,1,2,2,1,1,2,2,1]

(4)練習

CC=9-7+2=4

BasicPathSet

所有路徑測試>=BPT>=分支測試

McCabe圈復雜度

基本路徑(線性獨立)

lec3.3數據流覆蓋和事件流覆蓋

1.DataFlow數據流

(1)DataFlow

超越結構

21

目標:嘗試確保正確計算和使用值

定義(加力將變量值存儲到內存中的位置

用途:訪問變量值的位置

Defs:def(l)={X}

def(5)={Z}

dcf(6)={Z}

Uses:use⑸={X}

use(6)={X}

defs中給出的值應至少達到一種,某些或所有可能的用途

⑵SetsofDefandUse定義和使用集

def(n)或def(e):由節點n或邊e定義的一組變量

use(n)或use(e):節點n或邊e所使用的變量集

⑶定義

①DUpair對:一對位置(li,lj),使得變量v在li處定義并在lj處使用

②Def-clear:如果變量v在路徑中的任何節點或邊上均未賦予其他值,則對于

變量v,從li到1j的路徑是def-clear的

到達率:如果從li到lj相對于v有def-clear的路徑,則li處的v的def到達Ij

③dupath:

一個簡單的子路徑是def-clear,和v的def到v的用法相關

du(ni,nj,v)

t從ni到nj的du路徑集

du(ni,v)

t從ni開始的du路徑集

2.DataFlowCoverageCriteria數據流覆蓋標準

全定義覆蓋率(ADC):對于每組du-pathsS=du(n,v),TR在S中至少包含一條

路徑d

所有使用覆蓋率(AUC):對于要使用S=du(ni,nj,v)的每組du路徑,TR至少

包含S中的一條路徑d

全du-paihs覆蓋(ADUPC):對于每個集合S=du(ni,nj,v),TR包含S中的每

22

個路徑d

3.DataFlowTesting

ControlPlowGraph控制流程圖

23

publicstaticvoidCSta(int[]numbers)

(

intlength=numbers.length;

(j)doublevar,mean,sum,varsum;

/、sum=0.0;

<2/for(inti=0;i<length;i-H-)

(V^um+=numbers[i];

mean=sum/(double)length;

^varsum=0.0;

$for(inti=0;i<length;i-H-)

(5)varsum=varsum+((numbers[i]-mean)*(numbers

[i]-mean));

var=varsum/length;

(8)System.out.printin("length:“+length);

System.out.printin("mean:'+mean);

System.out.println("variance:"+var);

Variable

溫馨提示

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

評論

0/150

提交評論