You are on page 1of 29

Khoa Cng ngh ph n m m Tr ng H Cng Ngh Thng Tin Tp.

HCM 1

Ki m th ph n m m

Coverage Testing: Bao ph cu l nh trong Ki m th h p tr ng


Nhm th c hi n: Phan Th Duy- 08520068 Tr n Hong Minh- 08520231 L V n Quang- 08520302

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

N i dung
1 2 3 4

T ng qut ki m th h p tr ng

Ph ki m th

Bao ph cu l nh& ph m r ng

nh gi

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

T ng qut ki m th

h p tr ng

Ki m th h p tr ng d a vo thu t gi i c th , vo c u trc d li u bn trong c a n v ph n m m c n ki m th xc nh n v ph n m m c th c hi n ng khng.

Do ng i ki m th h p tr ng ph i c k n ng, ki n th c nh t nh c th thng hi u chi ti t v o n code c n ki m th .

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

T ng qut ki m th
Th

h p tr ng

ng t n r t nhi u th i gian v cng s c n u m c ki m th c nng ln c p ki m th tch h p hay ki m th h th ng. Do k thu t ny ch y u c dng ki m th n v . Trong l p trnh h ng i t ng, ki m th n v l ki m th t ng tc v c a 1 class ch c n ng no . C 2 ho t


ng ki m th h p tr ng :

Ki m th lu ng i u khi n(control flow) hay cn g i l ph ki m th (coverage Testing)  Ki m th dng d li u(data flow).


Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM 5

Ki m th


lu ng i u khi n

ng thi hnh (Execution path) : l 1 k ch b n thi hnh n v ph n m m t ng ng : danh sch c th t cc l nh c thi hnh ng v i 1 l n ch y c th c a n v ph n m m, b t u t i m nh p c a n v ph n m m n i m k t thc c a n v ph n m m.

 M c tiu c a ph ng php ki m th lu ng i u khi n l m b o m i ng thi hnh c a n v ph n m m c n ki m th u ch y ng. R t ti c trong th c t , cng s c v th i gian t m c tiu trn y l r t l n, ngay c trn nh ng n v ph n m m nh .

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

 Th d

o n code sau :

for (i=1; i<=1000; i++) for (j=1; j<=1000; j++) for (k=1; k<=1000; k++) doSomethingWith(i,j,k); c 1 ng thi hnh di 1000*1000*1000 = 1 t l nh g i doSomethingWith(i,j,k) khc nhau.

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

 Th d

o n code g m 32 l nh if else sau :

if (c1) s11 else s12; if (c2) s21 else s22; if (c3) s31 else s32; ... if (c32) s321 else s322; c 2^32 = 4 t ng thi hnh khc nhau.

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

Do , ta nn ki m th s test case t i thi u m k t qu tin c y t i a. Nh ng lm sao xc nh c s test case t i thi u no c th em l i k t qu c tin c y t i a ?

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

N i dung
1 2 3 4

T ng qut ki m th h p tr ng

Ph ki m th

Bao ph cu l nh& ph m r ng

nh gi

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

10

Ph ki m th ( Coverage Testing)
 Ph ki m th (Coverage) : l t l cc thnh ph n th c s c ki m th so v i t ng th sau khi ki m th cc test case c ch n. Ph cng l n th tin c y cng cao.  ph : l t l ph n tr m code ch ng trnh c ki m tra  Thnh ph n lin quan c th l l nh, i m quy t nh, i u ki n con, ng thi hnh hay l s k t h p c a chng.

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

11

Cc d ng ph ki m th
Bao g m cc lo i c b n sau:  Bao ph ph ng th c(Method Coverage): ph c p 0  Bao ph cu l nh(Statement Coverage): ph c p 1  Bao ph nhnh(Branch Coverage): ph c p 2  Bao ph i u ki n(Condition Coverage): hur c p 3  Bao ph nhnh & i u ki n(branch&condition Coverage): ph c p 4 Ngoi ra ng i ta cn qui c:  Ph c p 0: ki m th nh ng g c th ki m th c, ph n cn l i ng i dng pht hi n v bo l i sau. y l m c ki m th khng th c s c trch nhi m.

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

12

N i dung
1 2 3 4

T ng qut ki m th h p tr ng

Ph ki m th

Bao ph cu l nh& ph m r ng

nh gi

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

13

Coverage Testing
1 2 3 4 5 6 7 8 9 10 11 12 } } e = 1/x; return e;
14

float foo(int a, int b, int c, int d, float e) { float e; if (a==0) { return 0; } int x = 0; if ((a==b) || ((c==d) && bug(a))){ x = 1;
y Trong : bug(a) l hm yIf a > 1 return FALSE yElse return TRUE

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

Bao ph ph ng th c (Method Coverage)


L ph th c ng php ki m th sao cho m i ph c th c hi n t nh t 1 l n. ng

Test Case 1: foo(0, 0, 0, 0, 0.), expected return value of 0.

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

15

Bao ph cu l nh(Statement Coverage)


L ph ng php ki m th sao cho m i l nh th c thi t nh t 1 l n. c

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

16

Bao ph cu l nh(Statement Coverage)




TestCase 1, dng l nh t 1-5 c th c thi=> 42% (5/12) ph cu l nh.  Thm TestCase 2: g i ph ng th c foo(1, 1, 1, 1,1), gi tr mong i tr v l 1 => 100% ph cu l nh.

Tm l i,v i hm foo c p, ta ch c n 2 test case sau y l t 100% ph cu l nh :


 TestCase 1: foo(0,0,0,0,0), tr v 0  TestCase 2: foo(1,1,1,1,1), tr v 1

nh ng khng pht hi n l i chia 0

hng l nh 10

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

17

Bao ph cu l nh(Statement Coverage)


nh gi: Ph ng php bao ph cu l nh th ng kh y u trong vi c tm ra cc l i trong ch ng trnh V v y ph ng php ny ch s d ng trong m t s tr ng h p ki m th m c nv,k th p v i cc ph ng php ki m th khc.

Tr

Khoa CNPM ng H Cng Ngh Thng Tin Tp. HCM

18

Bao ph nhnh(Branch Coverage)


L ph ng php ki m th sao cho m i i m quy t nh u c th c hi n t nh t 1 l n cho tr ng h p TRUE l n FALSE. Ta g i m c ki m th ny l ph cc nhnh (Branch coverage). Ph cc nhnh m b o ph cc l nh.
Line Predicate True Test Case 1 foo(0, 0, 0, 0, 0) return 0 Test Case 2 foo(1, 1, 1, 1, 1) return 1 False Test Case 2 foo(1, 1, 1, 1, 1) return 1 3 (a == 0)

7 ((a==b) OR ((c == d) AND bug(a) ))

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

V i TestCase1 v TestCase2 ch m i bao ph 75% nhnh

c
19

Bao ph nhnh(Branch Coverage)


Thm vo TestCase3
Line Predicate True Test Case 1 foo(0, 0, 0, 0, 0) return 0 Test Case 2 foo(1, 1, 1, 1, 1) return 1

ph hon ton 100%:


False Test Case 2 foo(1, 1, 1, 1, 1) return 1 TestCase 3 Foo(1,2,1,2,1) return 1

3 (a == 0)

7 ((a==b) OR ((c == d) AND bug(a) ))

V i TestCase 3, ta pht hi n ra c l i chia cho 0 dng l nh 10 m tr c khng pht hi n c


Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM 20

Bao ph

i u ki n(Condition Coverage)

L ph ng php ki m th sao cho m i i u ki n lu n l con (subcondition) c a t ng i m quy t nh u c th c hi n t nh t 1 l n cho tr ng h p TRUE l n FALSE. Ta g i m c ki m th ny l ph cc i u ki n con (subcondition coverage). Ph cc i u ki n con ch a ch c m b o ph cc nhnh. Khng c tiu chu n bao ph bao ph 100%)
Xt i u ki n dng 7 AND bug(a) )) {

i u ki n(khng yu c u
if ((a==b) OR ((c == d)

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

21

Bao ph

a ==0

i u ki n(Condition Coverage)
c: 50%
False Test Case 2 foo(1, 1, 1, 1) return 1 Test Case 3 foo(1, 2, 1, 2) division by zero! Test Case 3 foo(1, 2, 1, 2) division by zero!

i u ki n bao ph
True

Predicate

Test Case 1 foo(0, 0, 0, 0) return 0 Test Case 2 foo(1, 1, 1, 1) return value 0

(a==b)

(c==d)

bug(a)

 (c==d) -> TRUE: khng bao gi c ki m tra  short-circuit Boolean has prevented the method bug(int) from ever being executed
22

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

Bao ph i u ki n(Condition Coverage)


Predicate True (a==b) Test Case 2 foo(1, 1, x, x, 1) return value 0 Test Case 4 foo(1, 2, 1, 1, 1) return value 1 Test Case 4 foo(1, 2, 1, 1, 1) return value 1 False Test Case 3 foo(1, 2, 1, 2, 1) division by zero! Test Case 3 foo(1, 2, 1, 2, 1) division by zero! Test Case 5 foo(3, 2, 1, 1, 1) division by zero!

(c==d)

bug(a)

y bug(a)

y If a > 1 return FALSE y Else return TRUE


23

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

Bao ph nhnh & i u ki n(branch&condition Coverage)


L ph ng php ki m th sao cho m i i u ki n lu n l con (subcondition) c a t ng i m quy t nh u c th c hi n t nh t 1 l n cho tr ng h p TRUE l n FALSE & i m quy t nh c ng c ki m th cho c 2 nhnh. Ta g i m c ki m th ny l ph cc nhnh & i u ki n con (branch & subcondition coverage).

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

24

N i dung
1 2 3 4

T ng qut ki m th h p tr ng

Ph ki m th

Bao ph cu l nh& ph m r ng

nh gi

Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

25

nh gi
Tm l i:
 Ki m th lu ng i u khi n(control flow) hay cn g i l ph ki m th (coverage testing) l m t trong 2 ph ng php ki m th h p tr ng, ki m th d a trn c u trc module code c a ch ng trnh.  i m th s test case t i thi u v i tin c y t i a khi ph (coverage) cng cao.  Ph ng php bao ph cu l nh(Statement Coverage) th ng kh y u trong vi c tm ra cc l i trong ch ng trnh. V v y c n k t h p v i cc k thu t khc khi ki m th .
Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM

26

Tham kh o
Beizer, Boris (1990). Software Testing Techniques (Second Edition). Van Nostrand Reinhold. Myers, Glenford (1979). The Art of Software Testing. John Wiley & Sons. Pressman, Roger S. (1982). Software Engineering: A Practitioner's Approach (Fourth Edition). McGraw-Hill. Watson, Arthur H. and Thomas J. McCabe. Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric. NIST Special Publication 500-235 available at http://www.mccabe.com/nist/nist_pub.php
Khoa CNPM Tr ng H Cng Ngh Thng Tin Tp. HCM 27

Q& A

Tr

Khoa CNPM ng H Cng Ngh Thng Tin Tp. HCM

28

www.uit.edu.vn
Tr Khoa CNPM ng H Cng Ngh Thng Tin Tp. HCM 29

You might also like