0% found this document useful (0 votes)
101 views

White Box Testing

1. White box testing, also known as glass box testing, is a method of software testing that tests internal structures or workings of an application, as opposed to its functionality alone. 2. It uses test cases designed based on internal program structure like flow graphs and logic paths. This helps ensure all independent paths are tested and all logical decisions are exercised under true and false conditions. 3. Cyclomatic complexity is a software metric used to derive test cases, which is the number of linearly independent paths within a program's source code. The number of test cases should be equal to or greater than the cyclomatic complexity.

Uploaded by

m1214w
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
101 views

White Box Testing

1. White box testing, also known as glass box testing, is a method of software testing that tests internal structures or workings of an application, as opposed to its functionality alone. 2. It uses test cases designed based on internal program structure like flow graphs and logic paths. This helps ensure all independent paths are tested and all logical decisions are exercised under true and false conditions. 3. Cyclomatic complexity is a software metric used to derive test cases, which is the number of linearly independent paths within a program's source code. The number of test cases should be equal to or greater than the cyclomatic complexity.

Uploaded by

m1214w
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 22

White Box Testing

by :
Oerip S. Santoso
Overview

Reviews
Expert opinions
Software testing
Software maintenance
Assurance of the quality of
the subcontractors work and
the customersupplied parts.
Software tests are formal SQA components
that are targeted toward review of the
actual running of the software.
Software Testing Strategy

White box testing


Black box testing (dibahas
setelah UTS)

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 3


Introduction
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

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 4


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

While
Sequence

Case
Repeat - Until

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 5


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

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 6


Flow Chart - Flow Graph
Flow Chart Flow Graph
1

1
2,3

2
7

4 8 9,10 4,5,6
7

9 5
8
11
10 6

11 12
12

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 7


Compound Logic-1

Predicate Node

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

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 8


Compound Logic-2

Predicate Node

IF a and b
b
then procedure X
else procedure Y
endif
y x yx

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 9


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
1
2
3 V(G) = 9 - 8 + 2
=3
4 5
The number of regions of the flow graph
6
correspond to the cyclomatic complexity.
7 V(G) = P + 1, where P is the number of
predicate nodes
8
10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 10
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

7
path 4: 1-2-3-4-5-6-12-1-13

8 9,10 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

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 11


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.

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 12


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.

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 13


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

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 14


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

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 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

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 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

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 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 doesnt 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.

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 18


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

Nested Loops
Concatenated
Simple Loops
Loops

Unstructured
Loops
10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 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.
10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 20
Latihan
Buka file Exercise
Untuk setiap soal :
1. Buat flow graf
2. Tentukan region
3. Hitung V(G) = E-N + 2 dan predicate node
4. Tentukan jalur independen
5. Buat matriks graf
6. Buat test case sesuai jalur independen

10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 21


Tes 7
1
Program Coba;
var a , b, c : integer;
begin R1 2
a := 5; b := 8; c := 4; .. (1)
R2
if (a > b) or (a > c)then .. (2,3)
Begin .. 4 3
a := 2; .. (4)
end R3
5
Else ..(5)
begin
if b = a then ..(6) 6
b := a ..(7) 7
Else b := c; ..(8) R4
end; ..(9)
8
readln;; ..(10) 9
end.
10
10/10/2017 Bayu Hendradjaya - http://www.if.itb.ac.id/~bayu 22

You might also like