Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 30

White Box Testing

Sumber : http://www.if.itb.ac.id/~bayu
Introduction White Box testing
• White Box Testing or Glass Box Testing
– Test case design method that uses the control structure of the procedural
design to derive test cases
• SW Engineer can derive test cases that
– guarantee that all independent paths within a module have been exercised
at least once
– exercise all logical decisions on their true and false bounds
– execute all loops at their boundaries and within their operational bounds
– exercise internal data structures to assure their validity
• Why not just validate the requirement ?
– Logic errors and incorrect assumptions are inversely proportional to the
probability that a program path will be executed
– We often believe that a logical path is not likely to be executed when, in
fact, it may be executed on a regular basis
– Typographical errors are random

06/03/2021 Rini/S2 LIKMI 2


Basis Path/Control Structure Testing
• Proposed by Tom McCabe
• The basis path method enables the test case designer to derive a
logical complexity measure of a procedural design and use this
measure as a guide for defining a basis set of execution paths
• Flow Graph Notation: If

W h ile
Sequence

Case
R e p e a t - U n til

06/03/2021 Rini/S2 LIKMI 3


Pseudo Code - Flow Chart
• Procedure Sort • Flow Chart
Procedure Sort
1. do while not eof
2. Read Record
3. if record field 1 = 0 1
4. then process record
5. store in buffer; 2
6. increment counter
7. else if record field 2 = 0
8. then reset counter 3

9. else process record


4
10. store in file 7

11. endif
9 5
12. endif 8
13. enddo
10 6

11

12

06/03/2021 Rini/S2 LIKMI 4


Flow Chart - Flow Graph
• Flow Chart • Flow Graph

1
2 ,3

2
7
3
R2
7
4 8 R1 9 ,1 0 4 ,5 ,6

9 5
8
11
10 6

11
12
R3
12

R4
06/03/2021 Rini/S2 LIKMI
Compound Logic

P r e d ic a t e N o d e

IF a or b b
then procedure X
else procedure Y
y x x
endif

06/03/2021 Rini/S2 LIKMI 6


Cyclomatic Complexity ( V(G) )
• Cyclomatic Complexity
– software metric that provide a quantitative measure of the
logical complexity of a program]

V(G) = E - N + 2

V(G) = 9 - 8 + 2
=3

• The number of regions of the flow graph


correspond to the cyclomatic complexity.
• V(G) = P + 1, where P is the number of
predicate nodes

06/03/2021 Rini/S2 LIKMI 7


Independent Path
• An independent path is any path through the program that introduces
at least one new set of processing statements or a new condition
• An independent path must move along at least one edge that has not
been traversed before the path is defined

path 1: 1-13
1
path 2: 1-2-3-7-8-11-12-1-13
2 ,3 path 3: 1-2-3-7-9-10-11-12-1-13
path 4: 1-2-3-4-5-6-12-1-13
7

8 9 ,1 0 4 ,5 ,6 Is the path
1-2-3-4-5-6-12-1-2-3-7-8-11-12-1-13
11
an independent path ?
13
12

06/03/2021 Rini/S2 LIKMI 8


Deriving Test Cases
• Draw a corresponding flowgraph using the design or
code as a foundation
• Determine the cyclomatic complexity of the resultant
flow graph (V(g))
• Determine a basis set of linearly independent paths
• Prepare test cases that will force execution of each
path in the basis set
– if we have 6 independent paths, then we should have at
least 6 test cases. For each test cases, we should define
• the input conditions and
• the expected result.

06/03/2021 Rini/S2 LIKMI 9


Graph Matrices
• Can automate derivation of flow graph and determination of a set of
basis paths.
• Software tools to do this can use a graph matrix.
• Graph matrix:
· is square with #sides equal to #nodes
· Rows and columns correspond to the nodes
· Entries correspond to the edges.
• Can associate a number with each edge entry.
• Use a value of 1 to calculate the cyclomatic complexity
· For each row, sum column values and subtract 1.
· Sum these totals and add 1.

06/03/2021 Rini/S2 LIKMI 10


Some other interesting link weights:
· Probability that a link (edge) will be executed
· Processing time for traversal of a link
· Memory required during traversal of a link
· Resources required during traversal of a link

06/03/2021 Rini/S2 LIKMI 11


Branch Testing
• Branch testing is the simplest condition testing
strategy
• For a compound condition C, the true and false
branches of C and every simple condition in C need
to be executed at least once

06/03/2021 Rini/S2 LIKMI 12


2c
1
• Program Coba;
• Var a , b : integer;
• Begin 2
• a := 5; {1}
• b := 8; 3 4
R1
• if a > b then {2}
• a :=2 {3}
R2
• else 5
• b := a; {4} 1.region=2
• end. {5} 2. V(g)=5-5+2=2
3. V(g)=1+1=2
4. Jalur :
a. 1-2-3-5
b. 1-2-4-5

06/03/2021 Rini/S2 LIKMI 13


2D
• Program Coba;
• Var a , b : integer;
• Begin
• A := 5; (1)
• If a > 3 then (2)
• a := 2; (3)
• writeln(a); (4)
• end. (5)

06/03/2021 Rini/S2 LIKMI 14


tes3
• Program Coba;
• var a : integer;
• begin
• a := 5; (1)
• while a < 10 do (2)
• Begin (3)
• a := a + 1; (4)
• end; (5)
• a := a + 10; (6)
• writeln; (7)
• end.

06/03/2021 Rini/S2 LIKMI 15


Condition Testing (1)
• Condition Testing aims to exercise all logical conditions in a program
module.
• Can Define
– Relational Expression (E1 op E2) : where E1 and E2 are arithmetic
expression
– Simple Condition: Boolean variable or relational expression, possibly
preceded by a NOT operator
– Compound condition: composed of two or more simple conditions, boolean
operators and parentheses
– Boolean Expression: condition without relational expression
• Types of errors in a condition include the following
– boolean operator error (existence of incorrect/missing/extra boolean
operator)
– boolean variable error
– boolean parenthesis error
– relational operator error
– arithmetic expression error

06/03/2021 Rini/S2 LIKMI 16


Condition Testing (2)
• The condition testing method focuses on testing each condition in the
program.
• Advantage of condition testing strategies
– measurement of test coverage of a condition is simple
– the test coverage of conditions in a program provides guidance for the
generation of additional tests for the program
• Some condition testing strategies
– Branch Testing
– Domain Testing
– Branch and Relational Operator Testing - uses condition constraints
• Example 1: C1 = B1 & B2
– Where B1, B2 are boolean conditions
– condition constraint of form D1, D2 where D1 and D2 can be true (t) or
false (f)
– The branch and relational operator test requires the constraint set { (t,t),
(f,t), (t,f) } to be covered by the execution of C1
• coverage of the constraint set guarantees detection of relational operator errors

06/03/2021 Rini/S2 LIKMI 17


Data Flow Testing
• Data Flow testing method select test paths of a program according to
the locations of definitions and uses of variables in the program
• With Data flow testing
– each statement in a program is assigned a unique statement number and it
assumes that each function doesn’t modify its parameters or global
variables
• Defs( s ) = { x | statement S contains a definition of X }
• Use( s ) = { x | statement S contains a use of X }
• DU Chain (Definition - Use Chain) of variable X is of the form {X, S, S’},
where S, S’ are statement numbers, X is in Defs(S) and Defs(S’).
• Other possible chains are:
– DD (Definition-Definition Chain) - Should be avoided !! Why ??
– UU (Use-Use Chain) - common chain
– UD (Use-Definition Chain) - common chain
• One simple strategy is DU Testing Strategy.
– The strategy requires that every DU chain be covered at least once.

06/03/2021 Rini/S2 LIKMI 18


Loop Testing
• Loop is fundamental to many algorithms.
• Loop can be defined as simple, concatenated, nested, and unstructured.

N e s te d L o o p s
C o n c a te n a te d
S im p le L o o p s
Loops

U n s tru c tu re d
Loops
06/03/2021 Rini/S2 LIKMI 19
Loop Testing (2)
• To test:
· Simple Loops of size n:
· Skip loop entirely
· Only one pass through loop
· Two passes through loop
· m passes through loop where m<n.
· (n-1), n, and (n+1) passes through the loop.
· Nested Loops
· Start with inner loop. Set all other loops to minimum values.
· Conduct simple loop testing on inner loop.
· Work outwards
· Continue until all loops tested.
· Concatenated Loops
· If independent loops, use simple loop testing.
· If dependent, treat as nested loops.
· Unstructured loops
· Don't test - redesign.

06/03/2021 Rini/S2 LIKMI 20


tes2c
Program Coba; 1
Var a , b : integer;
• Begin 2
– a := 5; (1)
– b := 8; (2) 3
• if a > b then (3)
– a := 2 (4)
• Else b := a; (5)
• end. (6)

06/03/2021 Rini/S2 LIKMI


latihan
• Program Coba7;
• Program Coba;
• Var a , b : integer; • Var a : integer;ket :string
• Begin • Begin
Read(a) (1)
– A := 5; (1)
If a < 55 (2)
– If a > 3 then (2)
then ket=“gagal” (3)
– a := 2; (3)
Else if a < 65 (4)
– writeln(a); (4)
then ket=“perbaikan”
• end. (5) (5)
else ket=“lulus” (6)
endif
Endif (7)
writeln(a,ket); (8)
• end.

06/03/2021 Rini/S2 LIKMI 22


latihan
• Program tes3
• begin
Read(a,b,c) (1)
If (a >b) AND (a>c) (2,3)
then maks  a (4)
Else if b > c (5)
then maks  b (6)
else maks  c (7)
endif (8)
Endif (9)
write(a,b,c,maks) (10)
• end.

06/03/2021 Rini/S2 LIKMI 23


tes3
• Program Coba;
• var a : integer;
• begin
1
a := 5; (1)
while a < 10 do (2)
Begin (3)
2
a := a + 1; (4) 5
end; (5) 3 R1
a := a + 10; (6) 6
writeln; (7)
4
• end. 7
R2

06/03/2021 Rini/S2 LIKMI 24


tes4
• Program Coba;
• Var a : integer;
• Begin
• for a := 5 to 10 do (1)
• Begin (2)
• writeln(a); (3)
• end; (4)
• writeln; (5)
• end.

06/03/2021 Rini/S2 LIKMI 25


• Program Coba;
• Var a : integer;
• Begin
• a := 5; (1)
• Repeat (2)
• a := a + 1; (3)
• until a > 10; (4)
• a := a + 20; (5)
• writeln; (6)
• end.

06/03/2021 Rini/S2 LIKMI 26


7
• Program Coba;
• var a , b, c : integer;
• begin
• a := 5;
• b := 8; (1)
• c := 4;
• if (a > b) or (a > c) then (2,3)
Test case :
• begin
a := 2; ------------------
(4)
• end
• Else
• begin
if b = a then --------------- (5)
b := a
• else (6)
b := c; (7)
• end;
(8)
• readln;;
• end.
06/03/2021 Rini/S2 LIKMI 27
8
• Program Coba;
• var a : integer;
• begin
• a := 5; --- (1)
• while a < 10 do ---(2)
• begin
• if a > 5 then --- (3)
• writeln(a); --- (4)
• a := a + 1; --- (5)
• end; --- (6)
• a := a + 10; --- (7)
• writeln; --- (8)
• end.
06/03/2021 Rini/S2 LIKMI 28
tes11
• Program Coba;
• Var a, b : integer;
• Begin
• Readln (a, b); …(1)
• Case a of …(2)
• 1 : if a > b then …(3)
• writeln(a); …(4)
• 2 : if a < b then …(5)
• writeln(b); …(6)
• end; …(7)
• writeln(a, b); …(8)
• end.

06/03/2021 Rini/S2 LIKMI 29


Bhn UAS/kuis
• Presentasi ch 9, 10, 11, 17 dan kuliah
• s.d whitebox

06/03/2021 Rini/S2 LIKMI 30

You might also like