Representasi Pengetahuan
Download
Report
Transcript Representasi Pengetahuan
by :
Andika Bayu H
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
2
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
If
Flow Graph Notation:
While
Sequence
Case
Repeat - Until
3
Procedure Sort
Procedure Sort
1. do while not eof
2.
Read Record
3.
if record field 1 = 0
4.
then process record
5.
store in buffer;
6.
increment counter
7.
else if record field 2 = 0
8.
then reset counter
9.
else process record
10.
store in file
11.
endif
12.
endif
13. enddo
• Flow Chart
1
2
3
4
7
9
5
10
6
8
11
12
4
Flow Chart - Flow Graph
• Flow Chart
• Flow Graph
1
1
2,3
2
7
3
4
7
9
8
9,10
4,5,6
5
8
11
10
6
11
12
12
5
Predicate Node
a
IF a or
b
b
then procedure X
else procedure Y
endif
y
x
x
6
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
7
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
path 3: 1-2-3-7-9-10-11-12-1-13
2,3
path 4: 1-2-3-4-5-6-12-1-13
7
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
8
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.
9
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
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
11
Loop is fundamental to many algorithms.
Loop can be defined as simple, concatenated, nested, and unstructured.
Nested Loops
Simple Loops
Concatenated
Loops
Unstructured
Loops
12
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.
13