Professional Documents
Culture Documents
HCM 1
Ki m th ph n m m
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
T ng qut ki m th
h p tr ng
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
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 .
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.
Th d
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.
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
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.
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.
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
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
15
16
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.
hng l nh 10
17
Tr
18
c
19
3 (a == 0)
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)
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
(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
(c==d)
bug(a)
y bug(a)
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
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
28
www.uit.edu.vn
Tr Khoa CNPM ng H Cng Ngh Thng Tin Tp. HCM 29