ch3-軟件測試方法stmt_第1頁
ch3-軟件測試方法stmt_第2頁
ch3-軟件測試方法stmt_第3頁
ch3-軟件測試方法stmt_第4頁
ch3-軟件測試方法stmt_第5頁
已閱讀5頁,還剩147頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

測試方法和技術(shù)第2版第3章

測試的方法Mobile:1第2章回顧缺陷是

質(zhì)量的對立面缺陷(Bug)是什么驗證和確認測試的分類和階段單元、集成、系統(tǒng)(性能、適用性、兼容性…)、驗收測試測試的工作范疇策略、計劃、設(shè)計、執(zhí)行、報告、評估…2第3章

測試的方法白盒測試方法黑盒測試方法靜態(tài)測試和動態(tài)測試主動測試和

測試形式化測試方法基于風險的測試模糊測試方法ALAC測試和隨機測試方法3方法論和具體方法從方法論看, 體現(xiàn)了一種哲學的思想,例如辯證的方法,在測試中有許多對立 體,如靜態(tài)測試和動態(tài)測試、白盒測試和黑盒測試、自動化測試和手工測試等。測試的方法論來源于 工程的方法論,例面 象的開發(fā)方法,就有面 象的測試方法;有敏捷方法,就有和敏捷方法對應(yīng)的測試方法。4黑盒子和白盒子功能測試

數(shù)據(jù)驅(qū)動測試結(jié)構(gòu)測試

邏輯驅(qū)動測試客戶需求事件驅(qū)動輸入輸出5靜態(tài)的和動態(tài)的內(nèi)審員作者列席技術(shù)專業(yè)記錄員用戶代表不正式正式互審走讀會議運行程序6自動測試和手工測試手工模擬用戶操作73.1白盒測試方法語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋路徑覆蓋基本路徑測試法8白盒測試方法邏輯覆蓋:以程序的邏輯結(jié)構(gòu)為基礎(chǔ),分為語句覆蓋、判定覆蓋、判定-條件覆蓋、條件組合覆蓋等基本路徑測試:在程序控制流程的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復雜性,導出基本可執(zhí)行路徑集合,從而設(shè)計測試用例。9白盒測試的基本原則白盒測試主要用于單元測試,其基本原則有:保證每個模塊中所有獨立路徑至少被執(zhí)行一次完成所有邏輯值分別為True和False的條件下的測試在上下邊界及可操作范圍內(nèi)運行所有循環(huán),完成循環(huán)覆蓋測試檢查 數(shù)據(jù)結(jié)構(gòu)以確保其有效性,完成邊界條件的測試103.1.1

語句覆蓋語句覆蓋法的基本思想是設(shè)計若干測試用例,運行被測程序,使程序中的每個可執(zhí)行語句至少被執(zhí)行一次如果是順序結(jié)構(gòu),就是讓測試從頭執(zhí)行到尾如果有分支、條件和循環(huán),需要利用下面的方法,執(zhí)行足夠的測試覆蓋全部語句11語句覆蓋-example12Dim

a,b

As

IntegerDim

c

As

DoubleIF

(a>0

AND

b>0)

THENc=c/aEnd

IfIF

(a>1

OR

c>1)

THEN7

c=c+1End

Ifc=b+c語句覆蓋-continueda>0

and

b>0c=c/aa>1

orc>1c=c+1c=b+cTTFFMKNJPTTFF條件M={a>0

and

b>0}條件N={a>1

or

c>1}簡化13語句覆蓋-continued2MKNJPFF條件M={a>0

and

b>0}條件N={a>1

or

c>1}1T23T45程序模塊有4條不同的路徑:M=T

AND

N=T:P1:1-2-4M=T

AND

N=F:P2:1-2-5M=F

AND

N=T:P3:1-3-4M=F

AND

N=F:P4:1-3-5符合語句覆蓋的路徑為:P1根據(jù)P1設(shè)計測試用例:a=2,b=1,c=6:a=2,b=1,c=514語句覆蓋-continued3使用語句覆蓋法設(shè)計測試用例時能夠使得所有的執(zhí)行語句都能被測試,但是不能準確的判斷運算中的邏輯關(guān)系錯誤。MKNJPFF條件

M={a>0

orb>0}條件N={a>1

or

c>1}1T23T45語句覆蓋的路徑為:P1輸入測試用例:a=2,b=1,c=6:a=2,b=1,c=5153.1.2

判定覆蓋判定覆蓋法的基本思想是設(shè)計若干用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。一個判定往往代表著程序的一個分支,所以判定覆蓋也被稱為分支覆蓋。3.1.2

判定覆蓋測試用例取值條件判定條件通過路徑輸入:{a=2,b=1,c=6}輸出:{a=2,b=1,c=5}M:a>0,b>0N:a>1,c>1M=TN=TP1(1-2-4)輸入:{a=-2,b=1,c=-6}輸出:{a=-2,b=1,c=-5}M:a<=0,b>0N:a<=1,c<=1M=FN=FP4(1-3-5)MNKJPT17TFF條件M={a>0

and

b>0}條件N={a>1

or

c>1}12345思考:如果把條件N改為:a>1

and

c>1呢?如果把條件N改為:a>1

or

c<1呢?判定測試-examplePROGRAM som

(

maxint,

N

:

INT

)INT result

:=

0

; i

:=0

;3IF

N

<04THEN

N

:=

-

N

;5WHILE

(

i

<

N

)

AND

(

result

<=

maxint

)6:= i

+1

;7result

:= result

+

i

;8OD;9IF

result

<=

maxint10THEN

OUTPUT

(

result

)11ELSE

OUTPUT(“toolarge”)12END.1819判定測試-continuedi:=i+1;result:=result+i;(i<N)

and(result<=maxint)result<=maxintN

:=

-N;output(too

large);output(result);exitstartYNNYNYN

<

0測試覆蓋全部語句:maxint

N10

-10

-1但沒有覆蓋所有分支;用例采取:maxint

N10

30

-1則覆蓋全部分支(N>=0)result=0

i=0203.1.3

條件覆蓋條件覆蓋的基本思想是設(shè)計若干測試用例,執(zhí)行被測程序以后,要使每個判斷中每個條件的可能取值至少滿足一次。(i<N)

and

(result<=maxint)TrueFalsei<Nresult<=maxintTrueFalse條件測試目標:保證測試到每個邏輯條件取值為true

和false簡單條件:(a

rel-op

b)where

rel-op={<,≤,=,≠,≥,>}(和NOT連用),即a≤b;NOT(a≤b)組合條件:由AND,

OR連接的多個簡單條件,即(a>b)

AND

(c<d)關(guān)系表達式: (E1

rel-op

E2)

其中

E1

E2

是算術(shù)表達式,即((a*b+c)>(a+b+c))測試發(fā)現(xiàn)的錯誤:布爾操作符

關(guān)系操作符布爾變量

算術(shù)表達式布爾括弧21條件測試

(2)域測試表達式

E1

rel-op

E2,

測試

E1

≧≦

=

<

> ≠

E2如果E1

和E2

正確,發(fā)現(xiàn)rel-op的錯誤發(fā)現(xiàn)E1

或E2的錯誤,全面分析它們的不同如果某表達式含有n個變量,則需要進行2n

測試分支測試組合條件C,

測試C為

true和

false分支、以及每個條件例如

C

=(a>b)

AND

(c<d)

測試:a>b

TRUE,

FALSEc<d

TRUE,

FALSEC

TRUE,

FALSE True

AND

TrueT.

AndF.,

F.

And

T.,F.

AndF.2223條件測試的示例1(i

=result

=0

):

i<Ntrueresult<=maxintfalsemaxint

N-1

11

0

falsetrue測試了所有條件但沒有覆蓋判定(decision)條件覆蓋不等于判定覆蓋i:=i+1;result:=result+i;(i<N)

and(result<=maxint)N

<

0N

:=

-N;output(result);output(too

large);exitstartYNNYN

result<=maxintY24測試用例具體取值條件取值條件通過路徑輸入:{a=2,b=-1,c=-2}輸出:{a=2,b=-1,c=-2}M:a>0,b<=0N:a>1,c<=1T1,F2T3,F4P3(1-3-4)輸入:{a=-1,b=2,c=3}輸出:{a=-1,b=2,c=-6}M:a<=0,b>0N:a<=1,c>1F1,T2F3,T4P3(1-3-4)MNKJPTTFF條件M={a>0

and

b>0}條件N={a>1

or

c>1}12345條件測試的示例2TRUEFALSEa>0T1F1b>0T2F2a>1T3F3c>1T4F4MN條件覆蓋不能保證所有的判定(分支)覆蓋被測試253.1.4

判定條件覆蓋判定-條件覆蓋是判定和條件覆蓋設(shè)計方法的交集,即設(shè)計足夠的測試用例,使得判斷條件中的所有條件可能取值至少執(zhí)行一次,同時,所有判斷的可能結(jié)果至少執(zhí)行一次測試用例取值條件具體取值條件判定條件通過路徑輸入:a=2,b=1,c=6輸出:a=2,b=1,c=5T1,T2,T3,T4a>0,b>0,a>1,c>1M=TN=TP1(1-2-4)輸入:a=-1,b=-2,c=-3輸出:a=-1,b=-2,c=-5F1,F2,F(xiàn)3,F4a<=0,

b<=0,

M=Fa<=1,

c<=1

N=FP4(1-3-5)b>0?3.1.5

條件組合測試條件組合覆蓋的基本思想是設(shè)計足夠的測試用例,使得判斷中每個條件的所有可能至少出現(xiàn)一次,并且每個判斷本身的判定結(jié)果也至少出現(xiàn)一次。它與條件覆蓋的差別是它不是簡單地要求每個條件都出現(xiàn)“真”與“假”兩種結(jié)果,求讓這些結(jié)果的所有可能組合都至少出現(xiàn)一次26示例(1)組合覆蓋條件取值判定條件取值判定-條件組合1T1,T2M=.T.a>0,b>0,M為真2T1,F(xiàn)2M=.F.a>0,b<=0,M為假3F1,T2M=.F.a<=0,b>0,M為假4F1,F(xiàn)2M=.F.a<=0,b<=0,M為假5T3,T4N=.T.a>1,c>1,N為真6T3,F(xiàn)4N=.T.a>1,c<=1,N為真7F3,T4N=.T.a<=1,c>1,N為真8F3,F(xiàn)4N=.F.a<=1,c<=1,N為假27示例(2)測試用例覆蓋條件覆蓋路徑覆蓋組合輸入:a=2,b=1,c=6輸出:a=2,b=1,c=5T1,T2,T3,T4P1(1-2-4)1,5輸入:a=2,b=-1,c=-2輸出:a=2,b=-1,c=-2T1,F(xiàn)2,T3,F(xiàn)4P3(1-3-4)2,6輸入:a=-1,b=2,c=3輸出:a=-1,b=2,c=6F1,T2,F(xiàn)3,T4P3(1-3-4)3,7輸入:a=-1,b=-2,c=-3輸出:a=-1,b=-2,c=-5F1,F(xiàn)2,F(xiàn)3,F(xiàn)4P4(1-3-5)4,8覆蓋了所有組合,但覆蓋路徑有限,1-2-5

沒被覆蓋283.1.6

路徑測試顧名思義,路徑覆蓋就是設(shè)計所有的測試用例,來覆蓋程序中的所有可能的執(zhí)行路徑。測試用例覆蓋路徑覆蓋條件覆蓋組合輸入:a=2,b=1,c=6輸出:a=2,b=1,c=5P1(1-2-4)T1,T2,T3,T41,5輸入:a=1,b=1,c=-3輸出:a=1,b=1,c=-2P2(1-2-5)T1,T2,F(xiàn)3,F(xiàn)41,8輸入:a=2,b=-1,c=-2輸出:a=2,b=-1,c=-2P3(1-3-4)T1,F(xiàn)2,T3,F(xiàn)42,6輸入:a=-1,b=2,c=3輸出:a=-1,b=2,c=6P3(1-3-4)F1,T2,F(xiàn)3,T43,7輸入:a=-1,b=-2,c=-3輸出:a=-1,b=-2,c=-5P4(1-3-5)F1,F(xiàn)2,F(xiàn)3,F(xiàn)44,8293.1.6

路徑測試

實際問題中,一個不太復雜的程序,其路徑都是一個龐大的數(shù)字,要在測試中覆蓋這樣多的路徑是無法實現(xiàn)的。所以,路徑覆蓋測試是相對的,要盡可能把路徑數(shù)壓縮到一個可承受范圍。對于一個簡短的程序段即使做到了路徑覆蓋測試,也不能保證源代碼不存在其他問題了。其他的測試也必要的,它們之間是相輔相成的。

沒有一個測試方法能夠找盡所有缺陷,只能說是盡可能多地查找缺陷。303.1.7

基本路徑測試依據(jù)代碼繪制流程圖確定流程圖的圈復雜度(cyclomatic

complexity

)確定線性獨立路徑的基本集合(basis

set)設(shè)計測試用例覆蓋每條基本路徑31示例1–源代碼32Procedure:

process

recordsDo

While

records

remainRead

record;If

record

field

1

=

0

Thenstore

in

buffer;increment

counter;Else

If

record

field

2

=

0

Thenreset

counter;Else

store

in

file;End

IfEnd

IfEnd

DoEnd示例1–流程圖36V(G)

=433基本路徑測試:流程圖簡化12,387694,5101134流程圖的圈復雜度V(G)

V(G)=區(qū)域數(shù)量(由節(jié)點、連線包圍的區(qū)域,包括圖形外部區(qū)域)

V(G)=邊界數(shù)目

-節(jié)點數(shù)目

+2

V(G)=判段節(jié)點數(shù)目

+1圈復雜度(Cyclomaticcomplexity):代碼邏輯復雜度的度量,提供了被測代碼的路徑數(shù)量。復雜度越高,出錯的概率越大modules35流程圖復雜度-示例1V(G)=42,33678694,510111Region

1Region

2Region

3Region

4確定線性獨立的路徑集合37獨立路徑:至少引入一系列新的處理語句或條件的任何路徑

基本集:由獨立路徑構(gòu)成的集合由基本集導出的測試用例,保證每行代碼語句至少被執(zhí)行一次;根據(jù)獨立路徑組成基本路徑集合,并由此得到能夠覆蓋所有程序語句的測試用例。基本集合不一定唯一Path1:

1-2-3-6-7-9-10-1-11示例1:基本路徑測試用例Path2:

1-2-3-6-8-9-10-1-11Path3:

1-2-3-4-5-10-1-11Path4:

1-113638示例2–源代碼39Dim

a,b

As

IntegerDim

c

As

DoubleIF

(a>0

AND

b>0)

THENc=c/aEnd

IfIF

(a>1

OR

c>1)

THEN7

c=c+1End

Ifc=b+c示例2–流程圖a>0

and

b>0c=c/aa>1

orc>1c=c+1c=b+cTTFFABDCE40示例2–

環(huán)路復雜度ABDCE①41②③法一:V(G)=區(qū)域數(shù)目=3法二:V(G)=邊界數(shù)目-節(jié)點數(shù)目+2=6-5+2=3法三:V(G)=判斷節(jié)點數(shù)目+1=2+1=3法四:圖形矩陣示例2–

環(huán)路復雜度ABDCE①42②③法四:圖形矩陣111111ABCDEABCDE判定節(jié)點判定節(jié)點示例2–

確定基本路徑ABDCE①43②③①

A-C-E②

A-B-C-E③

A-B-C-D-E①

A-C-E②

A-C-D-E③

A-B-C-D-E①

A-C-E②

A-B-C-E③

A-C-D-E示例2–

設(shè)計測試用例44①

A-C-E②

A-B-C-E③

A-B-C-D-Ea=-1,b=-2,c=-3a=1,b=1,c=-3a=2,b=1,c=6根據(jù)獨立路徑,設(shè)計測試用例(Test

Case

)的輸入數(shù)據(jù)和預期輸出。測試用例輸入數(shù)據(jù)預期輸出Test

Case

1a=-1,b=-2,c=-3a=-1,b=-2,c=-3Test

Case

2a=1,b=1,c=-3a=1,b=1,c=-2Test

Case

3a=2,b=1,c=6a=2,b=1,c=5測試用例覆蓋集合中每條路徑45基本路徑測試并不是測試所有路徑的組合,僅僅保證每條基本路徑被執(zhí)行一次。不需要活動圖,但最好繪制程序流程圖計算每個邏輯測試,也就是布爾操作符數(shù)加1

最好每個單元都進行基本路徑測試,對關(guān)鍵組件則是必要的46課后作業(yè)利用基本路徑測試方法設(shè)計下面C程序的測試用例。1 main

()2

{3 int

num1=0,

num2=0,

score=100;4 int

i;5 charstr;6 scanf

(“%d,%c\n”,&i,

&str);7 while

(i<5)8

{9 if

(str==’T’)10

num1++;11 else

if(str==’F’)12

{13

score=score-10;14 num2

++;15

}16

i++;17

}18 printf

(“num1=%d,

num2=%d,

score=%d\n”,

num1,

num2,

score);19

}3.2

黑盒測試方法等價類劃分法邊界值分析法判定表方法因果圖法正交試驗法功能圖法錯誤推測法47黑盒測試方法概述“黑盒”測試又稱為數(shù)據(jù)驅(qū)動測試或基于規(guī)格說明的測試。執(zhí)行黑盒測試的慮程序或

的在完全不考邏輯結(jié)構(gòu)和處理過程的情況下,測試根據(jù) 的需求規(guī)格說明書設(shè)計測試用例,在程序或的界面上進 試。黑盒測試是從用戶角度出發(fā)進行的測試。48黑盒測試過程產(chǎn)生需求說明被測程序輸出49黑盒測試有兩種基本類型,即通過測試和失敗測試。在進行通過測試時,實際上是確認能做什么,而不會去考驗其能力如何。測試員只運用最簡單,最直觀的測試案例。在設(shè)計和執(zhí)試案例時,總是先要進行通過測試。在進行破壞性試驗之前,看一看基本功能是否能夠?qū)崿F(xiàn)。這一點很重要,否則在正常使用時就會奇怪地發(fā)現(xiàn),為什么會有那么多的缺陷出現(xiàn)?在確信了正確運行之后,就可以采取各種通過搞

“垮”來找出缺陷。純粹為了破壞而設(shè)計和執(zhí)行的測試案例,被稱為失敗測試或迫使出錯測試。黑盒測試的類型50黑盒測試主要是為了發(fā)現(xiàn)以下錯誤:功能錯誤或遺漏。在接口上,輸入能否正確地接受。能否輸出正確的結(jié)果。是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤。性能上是否能夠滿足要求。是否有初始化或終止性錯誤。界面錯誤,不美觀51黑盒測試方法概述黑盒方法不可能實現(xiàn)窮舉測試,是因為:在測試某功能時不可能對其所有輸入值進試,更不可能對其所有輸入取值組合進試。無法對需求規(guī)格說明書中未規(guī)定的潛在需求進試。黑盒測試方法概述黑盒測試的對象既可以是單個程序,也可以是模塊集成過程中的多個臨時版本及最終52黑盒測試的難點53黒盒測試的難點在于如何構(gòu)造有效的輸入。由于輸入空間通常是無限的,窮舉測試顯然行不通。尋找最小最重要的用例集合以精簡測試復雜性。黑盒測試的優(yōu)點黑盒測試不考慮程序或 的具體實現(xiàn),若程序或的 實現(xiàn)發(fā)生了變化,原先的測試用例依然可用。從用戶角度出發(fā),能很容易的知道用戶會用到哪些功能,會遇到哪些問題。基于

開 檔,所以也能知道 實現(xiàn)了文檔中的哪些功能。黑盒測試用例的設(shè)計可以與 的實現(xiàn)同時進行,因而加快了 測試與開發(fā)的速度。在做

自動化測試時較為方便。黑盒測試方法概述54黑盒測試方法概述黑盒測試的局限性從程序的界面上進試,有時難以查找出錯誤的具體原因和位置,還需要通過執(zhí)行白盒測試來進行更細致的錯誤定位。黑盒測試的惟一依據(jù)是的需求規(guī)格說明書,它無法發(fā)現(xiàn)需求規(guī)格說明本身存在的問題。不可能覆蓋所有的代碼,覆蓋率較低,大概只能達到總代碼量的30%。自動化測試的復用性較低。因此,在實際測試工作中,還要結(jié)合白盒測試方法進行條件、邏輯和路徑等方面的測試。55為什么需要不同類型的測試方法?假設(shè)一個程序P有輸入量X和Y及輸出量Z。在字長為32位的計算機上運行。若X、Y取整數(shù),按黑盒方法進行窮舉測試,請問需要多少時間?(假設(shè)1毫秒鐘執(zhí)行一組數(shù)據(jù))PXYZ232×232

/365×24×60×60×1000=5億年3.2.1

等價類劃分方法563.2.1

等價類劃分方法將程序可能的輸入數(shù)據(jù)分成若干個子集,從每個子集選取—

性的數(shù)據(jù)作為測試用例,等價類是某個輸入域的子集,在該子集中每個輸入數(shù)據(jù)的作用是等效的分為有效等價類和無效等價類。有效等價類是有意義的、合理的輸入數(shù)據(jù),可檢查程序是否實現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。無效等價類與有效等價類的意義相反在分析需求規(guī)格說明的基礎(chǔ)上劃分等價類,列出等價類表設(shè)計測試用例時,要同時考慮這兩種等價類。因為

不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗。經(jīng)過正反的測試才能確保具有更高的可靠性。allinputsi1i4i2i35758確定等價類的方法(1)在輸入條件規(guī)定了取值范圍或值的個數(shù)的情況下,則可以確立一個有效等價類和兩個無效等價類in

rangegreater

thanrangeless

than

rangeless

than

value

value greater

than

value例如:程序的輸入條件為滿足大于10小于100的整數(shù)x有效等價類:

10<x<100無效等價類:

x≤10和

x≥10在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類。確定等價類的方法(2)not

member

of

setmember

of

set59例如:用戶的口令長度必須是4位的串有效等價類:無效等價類:串的長度是4串的長度不為4確定等價類的方法(3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類Non-BooleanBoolean60例如:程序的輸入條件為Bool

x=false有效等價類:無效等價類:x=falsex=true確定等價類的方式

(4)61在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個),并且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。

例如:程序的輸入條件x的取值為一個固定的枚舉類型{Mon,Tues,Wed,Thur,F(xiàn)ri,Sat,Sun}有效等價類:無效等價類:x=Mon,x=Tues,x=Wed,x=Thur,x=Fri,x=Sat,x=Sunx≠{Mon,Tues,Wed,Thur,Fri,Sat,Sun}的集合確定等價類的方式

(5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度

規(guī)則)。

例如:C語言中輸入一個合法的變量名有效等價類:⑴變量名當中包含字母、數(shù)字或下劃線_無效等價類:⑵變量名應(yīng)當以字母或下劃線開始不滿足條件⑴或不滿足條件⑵或條件⑴⑵都不滿足62確定等價類的方式

(5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度

規(guī)則)。

例如:程序的輸入條件為以字母‘a(chǎn)’開頭、長度為8的字符串,并且字符串不包含‘a(chǎn)’~‘z’之外的其它字符。有效等價類:

同時滿足上述三個條件的字符串無效等價類:⑴不以字符’a’開頭的字符串⑵長度不為8的字符串⑶包含‘a(chǎn)’~‘z’之外的其它字符的字符串63根據(jù)等價類創(chuàng)建測試用例的步驟a)建立等價類表,列出所有劃分出的等價類:為每個等價類規(guī)定一個唯一的

;設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類重復c),最后使得所有有效等價類均被測試用例所覆蓋;設(shè)計一個新的測試用例,使其只覆蓋一個無效等價類。重復e)使所有無效等價類均被覆蓋。輸入條件有效等價類無效等價類………………64等價類測試用例-Example165一個報表處理系統(tǒng),要求用戶輸入處理報表的日期,日期范圍是2000年1月至2020年12月,如果用戶輸入的日期不在該范圍內(nèi),則顯示錯誤信息,系統(tǒng)規(guī)定日期由年月的6位數(shù)字組成,前4位代表年,后2位代表月。輸入有效等價類無效等價類報表日期①6位數(shù)字字符②存在非數(shù)字字符③多于6個數(shù)字字符④少于6個數(shù)字字符年份范圍⑤在2000年~2020年之間⑥小于2000⑦大于2020月份范圍⑧在1~12之間⑨等于0⑩大于12①⑤⑧

201006②

200aob③

1012012④

20102⑥

198802⑦

203011⑨

200000⑩

202013根據(jù)下面給出的規(guī)格說明,利用等價類劃分的方法,給出足夠的測試用例。“一個程序讀入3個整數(shù),把這3個數(shù)值看作一個三角形的3條邊的長度,根據(jù)3條邊長確定該三角形是普通的、等腰的還是等邊的,并打印出結(jié)論。”66等價類測試用例-Example2

可以設(shè)三角形的3條邊分別為A,B,C。如果它們能夠構(gòu)成三角形的3條邊,必須滿足:A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B如果是等腰的,還要判斷A=B,或B=C,或A=C。如果是等邊的,則需判斷是否A=B,且B=C,且A=C。等價類測試用例-Example2673.2.2

邊界值分析方法長期的測試工作經(jīng)驗告訴 ,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的。因此針對各種邊界情況設(shè)計測試用例,可以查出的錯誤。對其 進行了研究,令人吃驚地發(fā)現(xiàn),大量ysis缺陷都是邊界值缺陷。BVA

Boundary

Value設(shè)計方法:確定邊界情況(輸入或輸出等價類的邊界),邊界值分析關(guān)注輸入空間的邊界,并從中標識測試用例。選取正好等于、剛剛大于或剛剛小于邊界值作為測試數(shù)據(jù)。68確定邊界值的方法(1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達到這個范圍的邊界的值,以及剛剛這個范圍邊界的值作為測試輸入數(shù)據(jù)。ab例如:如果輸入值的有效范圍是0~100那么應(yīng)針對-1,0,1,99,100,101設(shè)計測試用例69確定邊界值的方法(2)如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)、比最小個數(shù)少一、比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù)。a

b例如:如果某個輸入文件可容納1-255條記錄那么應(yīng)根據(jù)0、1、255和256條記錄的情況設(shè)計測試用例70確定邊界值的方法(3)71如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個元素和最后一個元素作為測試用例。例如:排序程序的邊界值分析排序序列為空排序序列僅有一個數(shù)據(jù)排序序列為最長序列排序序列已經(jīng)按要求排好序排序序列的順序與要求的順序恰好相反排序序列中的所有數(shù)據(jù)全部相等確定邊界值的方法(4)如果程序中使用了一個 數(shù)據(jù)結(jié)構(gòu),則應(yīng)當選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。Test

cases

for

ABS(x)

:class

x

<

0, arbitrary

value:x=-10class

x

>=

0,

arbitrary

valuex=100classes

x

<

0, x

>=

0, on

boundary

:x=0classes x

<

0, x

>=

0, below

andabove:x=-1, x

=

172目標:在循環(huán)及邊界上執(zhí)試循環(huán)測試-1簡單循環(huán)(迭代次數(shù)n)完全跳過循環(huán)只經(jīng)過循環(huán)一次經(jīng)過循環(huán)兩次經(jīng)過循環(huán)m(

m<n)次分別經(jīng)過循環(huán)n-1,n,n+1

次73循環(huán)測試-2嵌套(Nested)循環(huán)在最里面的循環(huán)完成前面所述的簡單循環(huán)測試,同時設(shè)定外部循環(huán)的最小迭代次數(shù)逐步向外循環(huán)進行直到所有循環(huán)被測試74數(shù)值的邊界值檢查—二進制Term取值范圍Bit0

or

1Nibble0-15 <Half

byte>Byte0-255Word0-65535

or

0-Kilo1024Mega1048576Giga1073741824Tera10995116277760

和1,byte

由8

bits

構(gòu)成,字由4

bytes構(gòu)成,…75字符的邊界值檢查—ASCIITableCharacterASCII

ValueCharacterASCIIValueNull0B66Space32Y89/47Z90048[91149‘96250a97957b98;58y121@64z122A65{12376字符編輯域DefaultEmptyBlankNullZeroNone77一些特殊的邊界值數(shù)值字符位置數(shù)量速度位置體積/last,

-1/Last+1Min/Max,Min-1/max+1Star/Finish,

Start-1/Finish+1Empty/FullLess

than

empty/

more

than

fullSlower/FasterLargest/SmallestOver/Under,

just

Over/JustUnderShortest/Longest…

…7879正常值(有效類):X1

=123123邊界值:X2=12345邊界值:X3=1234567邊界值:邊界值:X4=

1X5=

0無效類的值:無效類的值:X6=

-123123X7=asdasdBVA

示例1測試限制性用戶輸入:6位正整數(shù)其它?無效值:X8

=

000123X9=asd123X10=Empty80BVA

示例2Test

cases

:任意的正常值:

隨機選擇幾個選項邊界值:邊界值:選擇所有選項一個都不選邊界值:選擇一個選項abc有兩個變量x1和x2的函數(shù)F。如果函數(shù)F實現(xiàn)為一個程序,則輸入兩個變量x1和x2會有一些(可能未規(guī)定)邊界:a≤x1

≤bc≤x2

≤dd81邊界值分析測試用例的兩變量函數(shù)F的邊界值分析測試用例是:{<X1nom,X2min>,<

X1nom

,X2min+

>,<

X1nom

,X2nom

>,<

X1nom

,X2max

>,>,<X1nom,X2nom>,<X1nom

,X2max-

>,<X1min,X2nom

>

,<

X1min+

,X2nom<X1max,X2nom

>

,<

X1max-

,X2nom

>}abcd82三角形問題有三個輸入,即三條邊a、b、c,其取值范圍為:831≤a≤2001≤b≤2001≤c≤200a

=

{1,2,100,199,200}b

=

{1,2,100,199,200}c

=

{1,2,100,199,200}BVA

示例3-三角形問題的邊界值測試用例ABC預期輸出11001001等腰三角形21001002等腰三角形3100100100等邊三角形4100100199等腰三角形5100100200非三角形61001100等腰三角形71002100等腰三角形8100100100等邊三角形9100等腰三角形200100非三角形111100100等腰三角形122100100等腰三角形等邊三角形等腰三角形非三角形BVA

示例3-三角形問題的邊界值測試84NextDate是一個有三個變量(月份、日期和年)的函數(shù),函數(shù)返回輸入日期后面的那個日期。變量月份、日期和年都具有整數(shù)值,且滿足以下條件:1≤月份≤121≤日期≤311812≤年≤201285月份={1,2,6,11,12}日期={1,2,15,30,31}年={1812,1813,1912,2011,2012}BVA

示例4-NextDate函數(shù)的邊界值分析用例月份日期年預期輸出161518126/16/1812261518136/16/1813361519126/16/1912461520116/16/2011561520126/16/201266119126/2/6/3/1912861519126/16/1912963019127/1/1912106311912輸入1111519121/16/19121221519122/16/19121361519126/16/1912141115191211/16/1912151215191212/16/1912BVA

示例4-NextDate函數(shù)的邊界值測試用例863.2.3

判定表方法87在實際應(yīng)用中,許多輸入是由多個因素構(gòu)成,而不是單一因素,這時就需要多因素組合分析。對于多因素,有時可以直接對輸入條件進行組合設(shè)計,不需要進行因果分析,即直接采用判定表方法。一個判定表由“條件和活動”兩部分組成,也就是列出了一個測試活動執(zhí)行所需的條件組合,所有可能的條件組合定義了一系列的選擇,而測試活動需要考慮每一個選擇。判定表元素88條件樁,列出問題的所有條件動作樁:列出可能針對問題所采取的操作條件項:針對所列條件的具體賦值動作項:列出在條件項(各種取值)組合情況下應(yīng)該采取的動作。規(guī)則:任何一個條件組合的特定取值及其相應(yīng)要執(zhí)行的操作。判定表的構(gòu)造形式。判定表89判定表方法步驟90列出所有的條件樁和動作樁;填入條件項;填入動作項,制定初始判定表;簡化、合并相似規(guī)則或者相同動作91條件樁⑴驅(qū)動程序是否正確⑵是否有紙張⑶是否有墨粉動作樁⑴打印內(nèi)容⑵不同的錯誤提示警告優(yōu)先(高→低)⑴缺紙⑵缺墨粉⑶驅(qū)動程序不正確判定表實例—打印文件序

號12345678條件驅(qū)動程序是否正確?10101010是否有紙張?11001100是否有墨粉?11110000動作打印內(nèi)容10000000提示驅(qū)動程序不對01000000提示沒有紙張00110011提示沒有墨粉00001100打印文件問題初始化的判定表:說明:其中“1”表示“是”,“0”表示“否”92序

號125/63/4/7/8條件驅(qū)動程序是否正確?10——是否有紙張?1110是否有墨粉?110—動作打印內(nèi)容1000提示驅(qū)動程序不對0100提示沒有紙張0001提示沒有墨粉0010打印文件問題優(yōu)化后的判定表:說明:其中“-”表示某些因素取“1”或“0”沒有影響93問題描述:“…對功率大于50馬力且已運行10年以上的機器或者維修記錄不全且已運行10年以上的機器,給予優(yōu)先的維修處理…”條件:1.

功率大于50馬力維修記錄不全運行10年以上采取的措施:進行優(yōu)先的維修處理做其它處理94說明:其中“1”表示“是”;“0”表示“否”12345678問題功率大于50馬力嗎?11110000維修記錄不全嗎?11001100運行10年以上嗎?10101010建議進行優(yōu)先的維修處理√√√√√做其它處理√√√機器維修問題優(yōu)化后的判定表9512345問題功率大于50馬力嗎?11100維修記錄不全嗎?—10——運行10年以上嗎?10010建議進行優(yōu)先的維修處理√√√做其它處理√√機器維修問題說明:其中“-”表示某些因素取“1”或“0”沒有影響1345

6

7

8問題YYY

N

N

N

NYNN

Y

Y

N

N你覺得疲倦嗎?你對內(nèi)容感

嗎?內(nèi)容使你糊涂?

YYN

Y

N

Y

N建議請回到本章開頭重讀√繼續(xù)讀下去√跳到下一章去讀,請休息√2YYN√√

√ConditionStub:列出問題的所有條件(條件樁)Condition

Entry:針對左列條件取值,給出真假值(條件項)ActionStub:列出問題規(guī)定可能采取的行動(動作樁)√

√Action

Entry:在條件組合下應(yīng)采取的行動(動作項)規(guī)則讀書指南判定表判定表的化簡:設(shè)法合并具有相同動作、且條件項相似的規(guī)則讀書指南判定表12345678問題你覺得疲倦嗎?YYYYNNNN你對內(nèi)容感 嗎?YYNNYYNN內(nèi)容使你糊涂?YNYNYNYN建議請回到本章開頭重讀√繼續(xù)讀下去√跳到下一章去讀√√停止閱讀,請休息√√√√9798簡化后的判定表讀書指南判定表12345問題你覺得疲倦嗎?YYNNN你對內(nèi)容感 嗎?YNYYN內(nèi)容使你糊涂?——YN—建議請回到本章開頭重讀√繼續(xù)讀下去√跳到下一章去讀√停止閱讀,請休息√√99簡化后的判定表讀書指南判定表1234問題你覺得疲倦嗎?YNNN你對內(nèi)容感 嗎?—YYN內(nèi)容使你糊涂?—YN—建議請回到本章開頭重讀√繼續(xù)讀下去√跳到下一章去讀√停止閱讀,請休息√說明:其中“-”表示某些因素取“Y”或“N”沒有影響3.2.4

因果圖法多種輸入條件的組合,產(chǎn)生多種結(jié)果設(shè)計測試用例。設(shè)計方法:規(guī)格說明文檔描述的哪些是原因(輸入條件),哪些是結(jié)果(輸出條件),給每個原因和結(jié)果賦予一個標示符。找出原因與結(jié)果,原因與原因之間的對應(yīng)關(guān)系,劃出因果圖在因果圖上標上哪些不可能發(fā)生的因果關(guān)系,表明約束或限制條件根據(jù)因果圖,創(chuàng)建判定表,將復雜的邏輯關(guān)系和多種條件組合很具體明確的表示出來把判定表的每一行作為依據(jù)設(shè)計測試用例。1003.2.4

因果圖法因果圖中因果關(guān)系的基本符號。因果圖中有4種因果關(guān)系的基本符號,通常在因果圖中,用ci表示原因,ei表示結(jié)果。c1恒等e1

c1

e1非或c2c1∨

e1與c2c1∧

e11013.2.4

因果圖法102因果圖中因果關(guān)系的基本符號。

恒等:若原因出現(xiàn),則結(jié)果出現(xiàn);若原因不出現(xiàn),則結(jié)果不出現(xiàn)。

非(∽):若原因出現(xiàn),則結(jié)果不出現(xiàn);若原因不出現(xiàn),則結(jié)果出現(xiàn)。

或(∨):若幾個原因中有一個出現(xiàn),則結(jié)果出現(xiàn);若幾個原因都不出現(xiàn),則結(jié)果不出現(xiàn)。

與(∧):若幾個原因都出現(xiàn),結(jié)果才出現(xiàn);若其中有一個原因不出現(xiàn),則結(jié)果不出現(xiàn)。3.2.4

因果圖法103因果圖中的約束。在實際問題中輸入狀態(tài)相互之間、輸出狀態(tài)相互之間可能存在某種依賴關(guān)系,稱為“約束”。對于輸入條件的約束有E、I、O、R這四種約束。對于輸出條件的約束只有M約束。3.2.4

因果圖法因果圖中的約束。E約束(異):a、b中最多有一個可能為出現(xiàn),即a和b這兩個條件不能同時出現(xiàn)。aEb異(互斥)1043.2.4

因果圖法c或(包含)因果圖中的約束。I約束(或):a、b、c中至少有一個必須出現(xiàn),即a、b、c中不能都不出現(xiàn)。aIb1053.2.4

因果圖法因果圖中的約束。O約束(唯一):a和b中必須有一個而且僅有一個出現(xiàn)。aOb唯一1063.2.4

因果圖法因果圖中的約束。R約束(要求):a出現(xiàn)時,b必須出現(xiàn),a出現(xiàn)時,b不能不出現(xiàn)。aRb要求1073.2.4

因果圖法因果圖中的約束。M約束(強制):若結(jié)果a出現(xiàn),則結(jié)果b強制不能出現(xiàn)。aMb強制108因果圖法-示例1原因結(jié)果C1第一列字符是AE1修改文件C2第一列字符是BE2給出信息LC3第二列字符是一個數(shù)字E3給出信息M11中間原因某 規(guī)格說明中包含以下要求:⑴第一列字符必須是A或B,第二列字符必須是一個數(shù)字,在此情況下進行文件的修改。⑵如果第一列字符不正確,則輸出信息L⑶如果第二列字符不是數(shù)字,則給出信息M因果關(guān)系表109110因果圖法-示例1原因結(jié)果C1

第一列字符是AE1修改文件C2

第一列字符是BE2給出信息LC3

第二列字符是一個數(shù)字E3給出信息M11中間原因C111C2C3E2E1E3E∨∧~~111因果圖法-示例112345678原因C110101010C211001100C311110000中間結(jié)果11110110結(jié)果E1110000E2001001E3000111判定表C1C211C3E2E1E3E∨∧~~因果圖法-示例112345原因C1010—0C2100—0C311100中間結(jié)果1111010結(jié)果E111000E200101E300011優(yōu)化后的判定表112因果圖法-示例112345原因C1010—0C2100—0C311100結(jié)果E111000E200101E300011用例首字符為B,第2個字符為數(shù)字首字符為A,第2個字符為數(shù)字首字符非A,非B,第2個字符為數(shù)字首字符為任意字符,第2個字符不是數(shù)字首字符非A,非B,第2個字符不是數(shù)字優(yōu)化后的判定表113114因果圖法-示例2.有效類N

0,

N

0

k

maxint,

k

>

maxint有效等價類:輸入條件abs(N)maxint測試用例:maxint

Nresultmaxint

Nresult551055100005410error100-1000…1…給定maxint

N

,如果結(jié)果

<= maxint

,則按以下公式計算;否則提示出錯:|N|result =

kK=0

k

maxint

k

maxintN

0N

0errorand

k115xorandCauses

k

maxint1100Inputs

k

maxint0011N

01010N

00101Effects

k1100Outputserror0011因果圖法-示例21234原因

k

maxint1100

k

maxint0011N

01010N

00101結(jié)果

k1100error0011116因果圖法-示例2117測試用例的設(shè)計。其一個處理單價為5角錢的飲料的自動售貨機規(guī)格說明如下:若投入5角錢或1元錢的硬幣,按下〖橙汁〗或〖啤酒〗的按鈕,則相應(yīng)的飲料就送出來。若售貨機沒有零錢找,則一個顯示〖零錢找完〗的紅燈亮,這時在投入1元硬幣并押下按鈕后,飲料不送出來而且1元硬幣也退出;若售貨機有零錢找,則顯示〖零錢找完〗的紅燈滅,在送出飲料的同時退還5角硬幣。結(jié)果:21.

售貨機〖零錢找完〗燈亮退還1元硬幣退還5角硬幣送出橙汁飲料送出啤酒飲料原因:1.

售貨機有零錢找投入1元硬幣投入5角硬幣按下橙汁飲料按下啤酒飲料投入1元硬幣并按下飲料按鈕

13.應(yīng)當找5角零錢且售貨機有錢找按下〖橙汁〗或〖啤酒〗按鈕

14.錢已付清因果圖法-示例31182345送出橙汁飲料送出啤酒飲料找完〗燈亮退還1元硬幣退還5角硬幣2425131114E投入5角硬幣按下橙汁按鈕E按下啤酒按鈕把錢付清12按下按鈕該找5角可找5角因果圖法-示例3售貨機有

1

21 售貨機〖零錢零錢找投入1元硬幣∧∨∧∧∨~∧∧因果圖法-示例3判定表因果圖法-課后思考題以中國象棋中馬的走法為例,請繪制出因果圖和判定表。馬的走法說明:如果落點在棋盤外,則不移動棋子。如果落點與起點不構(gòu)成日字型,則不移動棋子。如果落點處有自己方棋子,則不移動棋子。如果在落點方向的

交叉點處有棋子(絆馬腿),則不移動棋子。如果不屬于1-4條,且落點處無棋子,則移動棋子。如果不屬于1-4條,且落點處為對方棋子(非老將),則移動棋子并除去對方棋子。如果不屬于1-4條,且落點處為對方老將,則移動棋子,并提示戰(zhàn)勝對方,

結(jié)束。120為什么要采用正交試驗法?在許多應(yīng)用系統(tǒng)的測試工作中,不會象判斷三角形那樣簡單,輸入條件的因素很多,而且每個因素也不能簡單用“是”和“否”來回答。比如,微軟

程序的打印測試,也需要考慮4個因素,每個因素也有多個選項打印范圍分:全部、當前幻燈片、給定范圍打印內(nèi)容分:幻燈片、講義、備注頁、大綱視圖打印顏色/灰度分:彩色、灰度、黑白打印效果分:幻燈片加框和幻燈片不加框。測試組合會變得很多,如果按照傳統(tǒng)的測試方導致很大的測試工作量121正交實驗法原理1223.2.5

正交實驗法基本概念

因子(factors)影響的條件因素稱為因子(變量)水平數(shù)(levels)每個因素的取值個數(shù)權(quán)值表示各個因子及狀態(tài)的作用大小、出現(xiàn)的頻率大小等1233.2.5

正交實驗法確定影響功能的因子與狀態(tài)選擇一個合適的正交表(拉丁方和正交拉丁方)利用正交表構(gòu)造測試數(shù)據(jù)集一般用L代表正交表,常用的有L8(27),L9(34),L16(45)等。其中L8(27)中的7為因子數(shù)(正交表的列數(shù));2為因子的水平數(shù);8為測試的次數(shù)(正交表的行數(shù))參考

/~njas124實例信息系統(tǒng)中,員工信息查詢功能是常見的。例如,設(shè)有3個獨立的查詢條件,以獲得特定員工的個人信息員工號(ID)。員工

(Name)。員工郵件地址(Mail

Address)1253.2.5

正交實驗法126對于因子數(shù)、水平數(shù)較高的情況,測試組合數(shù)會很多,這時利用正交實驗法可以實現(xiàn)用最小的測試用例集合去獲取最大的測試覆蓋率,從而有效的降低測試用例數(shù)和測試工作量,3.2.6

功能圖法-簡介127功能圖方法其實是一種灰盒測試一個程序的功能說明通常由動態(tài)說明和靜態(tài)說明組成。動態(tài)說明描述了輸入數(shù)據(jù)的次序或轉(zhuǎn)移的次序。靜態(tài)說明描述了輸入條件與輸出條件之間的對應(yīng)關(guān)系。對于較復雜的程序,由于存在大量的組合情況,因此,僅用靜態(tài)說明組成的規(guī)格說明對于測試來說往往是不夠的。必須用動態(tài)說明來補充功能說明。3.2.6

功能圖法-構(gòu)成128功能圖法就是為了解決動態(tài)說明問題的一種測試用例的設(shè)計方法功能圖由狀態(tài)遷移圖(state

transition

diagram,STD)和邏輯功能模型(logic

function

model,LFM)構(gòu)成狀態(tài)遷移圖用于表示輸入數(shù)據(jù)序列以及相應(yīng)的輸出數(shù)據(jù)。在狀態(tài)遷移圖中,由輸入數(shù)據(jù)和當前狀態(tài)決定輸出數(shù)據(jù)和后續(xù)狀態(tài)。邏輯功能模型只適合于描述靜態(tài)說明,用于表示在狀態(tài)中輸入條件和輸出條件之間的對應(yīng)關(guān)系。輸出數(shù)據(jù)僅由輸入數(shù)據(jù)決

溫馨提示

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

評論

0/150

提交評論