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