Ch07 Testing
Ch07 Testing
Ch07 Testing
”
Catching bugs early saves money
2
By the end of this chapter, you should:
Understand the concepts of black box tests, white
box tests, observability, and controllability.
Understand the principles of debugging.
Understand when a unit test is used and how it is
constructed.
Understand when an integration test is used and
how it is constructed.
Understand when an acceptance test is used and
how it is constructed.
3
Testing proceeds with design process
◦ Write tests while designing modules,
◦ Perform tests while implementing modules
The Test-Vee illustrates this process
Development Testing
Requirements Acceptance
Specification Test
System Integration
Design Test
Unit
Construct
Test
Debugging
4
How should we perform testing?
Apply every possible input, or
Apply selected inputs which might yield errors
5
Test cases define exactly what the module must do.
Testing prevents feature creep, since the
development of a module is complete when its test
is passed.
Test cases motivate developers by providing
immediate feedback.
Test cases force designers to think about extreme
cases.
6
Black box
◦ No knowledge of internal organization
◦ Only access input and outputs
◦ Change inputs and observe outputs
White box
◦ Knowledge of internal organization
◦ Might have expectation of fault model
◦ Create test instance which reveal physical or logical
errors
7
Controllability
◦ When any node of the system can be set to a
desired value
◦ Black box has no controllability
Observability
◦ When any node of the system can be measured.
◦ Black box has low observability
8
Accurate - The test should check what it is supposed to
Economical - The test should be performed in a minimal
number of steps.
Limited in complexity - Tests should consist of a moderate
number (10-15) of steps.
Repeatable - The test should be able to be performed and
repeated by another person.
Appropriate - The complexity of the test should be such that
it is able to be performed by other individuals who are
assigned the testing task.
Traceable - The test should verify a specific requirement.
Self cleaning - The system should return to the pre-test state
after the test is complete.
9
Debugging
Bohrbugs
◦ Bohrbugs are reliable bugs
◦ The error is always in the same place
Heisenbugs
◦ Innocuous changes of input yield buggy behavior
◦ May not be reproducible
◦ They seemingly move around within a system
10
Observe the problem under different
operating conditions
Form a hypothesis as to what the potential
problem is
Conduct experiments to confirm or eliminate
11
Check easiest problems first
◦ You can perform more in a given time
Start at lowest levels of abstraction
◦ Upper levels rely on lower level
Example
◦ Is the system powered up?
◦ Is the testing equipment adjusted properly?
◦ Have you initialized the system?
◦ Are you printing out the right variable/type?
12
A unit test is a test of the functionality of a
system module in isolation
Should be traceable to the detailed design.
Consists of a set of test cases
Test cases should be written with the intent
of uncovering undiscovered defects.
13
Write unit test during implementation;
why?
◦ White box tests
◦ Thinking about test situations and conditions
may lead the designer to uncover errors before
they are ever designed into the system.
◦ Unit tests need to be written with an
understanding of the internal organization of
the component, and a system is best
understood during its development.
14
if (16 < Celsius Temperature < 32)
Fahrenheit Temperature = ROM[input-16];
else
Fahrenheit Temperature = (9* Celsius Temperature)/5 + 32;
◦ Test coverage
◦ Path complete coverage
15
Determine inputs to check all paths
◦ ACTION1
◦ ACTION2
◦ ACTION3
16
Matrix Test
Automated Scripts Tests
Step-by-step Test
17
Test Writer: Sue L. Engineer
Test Case Name: ADC function test Test ID #: ADC-FT-01
Description: Verify conversion range and clock Type: white box
frequency. Output goes to 0 in presence of black box
null clock.
Tester Information
Name of Tester: Date:
Hardware Ver: 1.0 Time:
Setup: Isolate the ADC from the system by removing configuration jumpers.
Test
Pass
Fail
N/A
VT Clock Expected output Comments
Decimal Hexadecimal
1 0.0V 10kHz 0 0x000
18
Test Writer: Sue L. Engineer
Test Case Name: Finite State Machine Path Test #1 Test ID #: FSM-Path-01
Description: Simulate insertion of money with a mix of nickels and Type: white box
dimes. Verifies FSM, outputs candy in response to black box
a total deposit of $0.30.
Tester Information
Name of Tester: Date:
Hardware Ver: 1.0 Time:
Setup: Make sure that the system was reset sometime prior and is in state $0.00.
Step
Pass
Fail
N/A
Action Expected Result Comments
19
Write integration test during level 1 design
◦ Help insure requirements are being met.
◦ Help to firm-up design
◦ Requires the designer think about the
expected behavior of the subsystems.
◦ Requires designer to think about extreme
behaviors of subsystems.
20
What are the different paths of execution
through the system?
Are all modules exercised at least once
during integration testing?
Have all the interface signals been tested?
Have all the interface modes been
exercised?
Does the system process information at the
required rate and met timing requirements?
21
Might be formal legal document
Written along with requirements
Traceable to engineering requirements
Identifies
◦ Scope – how much of the system is tested?
◦ Level – how deep will testing be
performed?
22
Autonomous navigating robot
Engineering requirements
◦ The robot’s center must stay within 12 to 18
centimeters of the wall over 90% of the course,
while traveling parallel to a wall over a 3 meter
course.
◦ The robot’s heading should never deviate no
more than 10 degrees from the wall’s axis, while
traveling parallel to a straight wall over a 3 meter
course.
23
24
Switches
Digital
H-bridge DC motor
Compass
MCU
Range
H-bridge DC motor
Finder
LCD
25
MCU + motors + bridge + switches
26
27
MCU (hardware)
LCD
Switches
Compass
Range finder
H-bridge
Motors
Chassis
MCU (software)
28
Reasons to develop and conduct tests
Testing reduces the number of bugs in existing and new
features.
Tests are good documentation.
Tests improve design.
Tests allow you to refactor.
Tests constrain features.
Tests defend against other designers.
Testing is fun.
Testing forces you to slow down and think.
Testing makes development faster.
Tests reduce fear.
29
Testing helps to ensure proper operation of
system.
Types of Testing
◦ Block box
◦ White box
◦ Unit Testing
◦ Integration Testing
◦ Acceptance Testing
◦ Matrix tests
◦ Step-by-step test
◦ Automated tests
30