White Box and Black Box Testing

44
White Box and Black Box Testing Tor Stålhane

description

White Box and Black Box Testing. Tor Stålhane. What is White Box testing. White box testing is testing where we use the info available from the code of the component to generate tests. This info is usually used to achieve coverage in one way or another – e.g. Code coverage Path coverage - PowerPoint PPT Presentation

Transcript of White Box and Black Box Testing

Page 1: White Box and Black Box Testing

White Box and Black BoxTesting

Tor Stålhane

Page 2: White Box and Black Box Testing

What is White Box testing White box testing is testing where we use the

info available from the code of the component to generate tests.

This info is usually used to achieve coverage in one way or another – e.g.

• Code coverage• Path coverage• Decision coverage

Debugging will always be white-box testing

Page 3: White Box and Black Box Testing

Coverage report. Example – 1

Page 4: White Box and Black Box Testing

Coverage report. Example – 2

Page 5: White Box and Black Box Testing

McCabe’s cyclomatic complexityMathematically, the cyclomatic complexity of a structured program is defined with reference to a directed graph containing the basic blocks of the program, with an edge between two basic blocks if control may pass from the first to the second (the control flow graph of the program). The complexity is then defined as:

v(G) = E − N + 2P

v(G) = cyclomatic complexityE = the number of edges of the graphN = the number of nodes of the graphP = the number of connected components

Page 6: White Box and Black Box Testing

Graph example We have eight nodes – N = 8 – nine edges – E = 9 – and we haveonly one component – P = 1.

Thus, we have v(G) = 9 – 8 + 2 = 3.

Page 7: White Box and Black Box Testing

Simple case - 1

S1;IF P1 THEN S2 ELSE S3S4;

One predicate – P1. v(G) = 2Two test cases can cover all codeS4

S3S2

S1

P1

Page 8: White Box and Black Box Testing

Simple case – 2

S1;IF P1 THEN X := a/c ELSE S3;S4;

One predicate – P1. v(G) = 2Two test cases will cover all pathsbut not all cases. What about thecase c = 0?

S4

S3

S1

a/cP1

Page 9: White Box and Black Box Testing

Statement coverage – 1

IF in_data > 10 {out_data = 4;}ELSE {out_data = 5;}IF out_data == 8 {update_panel();}

How can we obtain full statement coverage?

P1

P2

S2S1

S3 empty

Page 10: White Box and Black Box Testing

Statement coverage – 2

out_data = 0IF in_data > 10 {out_data = 4;}update_panel();

If we set in_data to 12 we will have full statement coverage. What is the problem?

Page 11: White Box and Black Box Testing

Decision coverageIF (in_data > 10 OR sub_mode ==3) {out_data = 4;}ELSE {…..}

P1 is really two decisions P1-1: in_data > 10P1-2: sub_mode == 3

We need to cover both decisions

P1P1-1

P1-2

S1

empty empty

Page 12: White Box and Black Box Testing

Using v(G)The minimum number of paths through the

code is v(G).As long as the code graph is a DAG – Directed

Acyclic Graph – the maximum number of paths is 2**|{predicates}|

Thus, we have thatV(G) < number of paths < 2**|{predicates}|

Page 13: White Box and Black Box Testing

Problem – the loop

S4

S2

S1

P1

S5

S3

P2

S1;DO IF P1 THEN S2 ELSE S3; S4OD UNTIL P2S5;

No DAG. v(G) = 3 and Max is 4 but there is an “infinite” number of paths.

Page 14: White Box and Black Box Testing

Nested decisions

P1

P2

S5

S4

S6

S3

S2

S1

S1;IF P1 THEN S2 ELSE S3; IF P2 THEN S4 ELSE S5FIS6;

v(G) = 3, while Max = 4. Three test case will cover allpaths.

Page 15: White Box and Black Box Testing

Using a decision table – 1

A decision table is a general technique used to achieve full path coverage. It will, however, in many cases, lead to over-testing.

The idea is simple. 1. Make a table of all predicates.2. Insert all combinations of True / False – 1 / 0

– for each predicate3. Construct a test for each combination.

Page 16: White Box and Black Box Testing

Using a decision table – 2

P1 P2 P3 Test description or reference

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

Page 17: White Box and Black Box Testing

Using a decision table – 3

Three things to remember: The approach as it is presented here is only practical for

• Situations where we have binary decisions. • Small chunks of code – e.g. class methods and

small components. It will be too laborious for large chunks of code.

Note that code that is difficult to reach – difficult to construct the necessary predicates – may not be needed as part of the system.

Page 18: White Box and Black Box Testing

Decision table example – binary

P1

P2

S5

S4

S6

S3

S2

S1P1 P2 Test description or

reference

0 0 S1, S3, S5, S6

0 1 S1, S3, S4, S6

1 0 S1, S2, S6

1 1 S1, S2, S6

The last test is not necessary

Page 19: White Box and Black Box Testing

Decision table example – tertiary

S2

S1

S4

S3

S6

S10

S5

S9

S8S7

P3 P2

P1

P1 P2 P3Test description or reference

0 0 0 S1, S3, S90 0 1 S1, S4, S90 0 2 S1, S5, S90 1 0 S1, S3, S90 1 1 S1, S4, S90 1 2 S1, S5, S91 0 0 S2, S6, S81 0 1 S2, S6, S81 0 2 S2, S6, S81 1 0 S2, S7, S81 1 1 S2, S7, S81 1 2 S2, S7, S8

Page 20: White Box and Black Box Testing

What about loops Loops are the great problem in white box

testing. It is common practice to test the system going through each loop

• 0 times – loop code never executed• 1 time – loop code executed once• 5 times – loop code executed several times• 20 times – loop code executed “many” times

Page 21: White Box and Black Box Testing

Loop diagram

for (i; P1; i++) {S1}

The empty branch is taken when P1 is False

<<empty>>S1

P1

Page 22: White Box and Black Box Testing

Error messages

Since we have access to the code we should1. Identify all error conditions2. Provoke each identified error condition3. Check if the error is treated in a satisfactory

manner – e.g. that the error message is clear, to the point and helpful for the intended users.

Page 23: White Box and Black Box Testing

What is Black Box testing

Black box testing is also called functional testing. The main ideas are simple:

1.Define initial component state, input and expected output for the test.

2.Set the component in the required state.3.Give the defined input4.Observe the output and compare to the

expected output.

Page 24: White Box and Black Box Testing

Info for Black Box testing

That we do not have access to the code does not mean that one test is just as good as the other one. We should consider the following info:

• Algorithm understanding• Parts of the solutions that are difficult to

implement • Special – often seldom occurring – cases.

Page 25: White Box and Black Box Testing

Clues from the algorithm

We should consider two pieces of info:• Difficult parts of the algorithm used• Borders between different types of solution –

e.g. if P1 then use S1 else use S2. Here we need to consider if the predicate is– Correct, i.e. contain the right variables– Complete, i.e. contains all necessary conditions

Page 26: White Box and Black Box Testing

Black Box vs. White Box testing

We can contrast the two methods as follows:• White Box testing

– Understanding the implemented code.– Checking the implementation – Debugging

• Black Box testing– Understanding the algorithm used.– Checking the solution – functional testing

Page 27: White Box and Black Box Testing

Testing real time systemsW-T. Tsai et al. have suggested a pattern based

way of testing real time / embedded systems. They have introduced eight patterns. Using

these they have shown through experiments that, using these eight patterns, they identified on the average 95% of all defects. We will have a look at three of the patterns.

Together, these three patterns discovered 60% of all defects found

Page 28: White Box and Black Box Testing

Patterns and coverage (from Tsai)

Page 29: White Box and Black Box Testing

Basic scenario pattern - BSP

Check for precondition

Check post-condition

PreCondition == true / {Set activation time}

IsTimeout == true / [report fail]

PostCondition == true / [report success]

Page 30: White Box and Black Box Testing

BSP – example

Requirement to be tested:If the alarm is disarmed using the remote

controller, then the driver and passenger doors are unlocked.

• Precondition: the alarm is disarmed using the remote controller

• Post-condition: the driver and passenger doors are unlocked

Page 31: White Box and Black Box Testing

BSP test

1. Generate input to make preconditiona. False => nothing happensb. True => input activation time

2. Check system responsea. Timeout = true => failsb. Timeout = false and post condition OK => OKc. Timeout false and post condition not OK => fails

Page 32: White Box and Black Box Testing

Key-event service pattern - KSP

Check for key event

Check post-condition

Check precondition PreCondition == true

PostCondition == true / [report success]

KeyEventOccurred / [SetActivationTime]

IsTimeout == true / [report fail]

Page 33: White Box and Black Box Testing

KSP- example Requirement to be tested:When either of the doors are opened, if the

ignition is turned on by car key, then the alarm horn beeps three times

• Precondition: either of the doors are opened• Key-event: the ignition is turned on by car key• Post-condition: the alarm horn beeps three

times

Page 34: White Box and Black Box Testing

KSP test 1. Generate key event

a. Not right event => waitb. Right event => set activation time

2. Check preconditiona. Not OK => waitb. OK => check post condition

3. Check post conditiona. Timeout = true => failsb. Timeout = false and post condition OK => OKc. Timeout false and post condition not OK => fails

Page 35: White Box and Black Box Testing

Timed key-event service pattern - TKSP

Check for key event

Check post-condition

Check precondition PreCondition == true

IsTimeout == true / [report fail]

PostCondition == true / [report success]

KeyEventOccurred / [SetActivationTime]

DurationExpired /[report not exercised]

Page 36: White Box and Black Box Testing

TKSP – example (1)

Requirement to be tested:When driver and passenger doors remain

unlocked, if within 0.5 seconds after the lock command is issued by remote controller or car key, then the alarm horn will beep once

Page 37: White Box and Black Box Testing

TKSP – example (2)

• Precondition: driver and passenger doors remain unlocked

• Key-event: lock command is issued by remote controller or car key

• Duration: 0.5 seconds • Post-condition: the alarm horn will beep once

Page 38: White Box and Black Box Testing

TKSP test 1. Generate key event

a. Not right event => wait for new event or duration expired b. Right event => set activation time

2. Check preconditiona. Not OK => waitb. OK => check post condition

3. Check post conditiona. Timeout = true => failsb. Timeout = false and post condition OK => OKc. Timeout false and post condition not OK => fails

Page 39: White Box and Black Box Testing

Test automation – 1

Page 40: White Box and Black Box Testing

Test automation – 2

1. Generate stimuli2. Get necessary data 3. Collect events4. Check events

1

2

3

4

Page 41: White Box and Black Box Testing

Test automation example – BSP 1. Illegal command

a. Generate somethingb. Nothing happens => test OK

Post condition = “doors unlocked” => test fails

2. Legal commanda. Generate “alarm disabled”b. Activation time = Tc. Timeout = True => test fails

Timeout = falsepost condition = “doors unlocked” => test OK

Page 42: White Box and Black Box Testing

Needs, models and methods – 1

If we say to the developers that they need to do e.g. unit testing this is just a statement of need, it is not a statement of how – the method to use.

If we say that they should use white box testing, this helps a little, but there is still a lot of freedom when it comes to how.

Page 43: White Box and Black Box Testing

Example – white box testing

White box testing =>• Static white box testing =>

– Code inspection– Code walkthrough

• Dynamic white box testing =>– Statement coverage– Path coverage– Decision coverage – All define – use coverage

Page 44: White Box and Black Box Testing

Needs, models and methods – 2 We can use the following structure to organize

the decisions:Strategy or need => Technique => MethodThis will be applicable on all levels, e.g.

acceptance test, system test, integration tests and unit tests.

For unit test we can for instance use:Unit test => White box test => Path coverage