21-01-2012, 04:34 PM
Embedded Software Testing
[attachment=16429]
Definition Of Testing
Testing is performing all of the following:
• Providing software with inputs (a “workload”)
• Executing a piece of software
• Monitoring software state and/or outputs for expected properties, such as:
– Conformance to requirements
– Preservation of invariants (e.g., never applies brakes and throttle together)
– Match to expected output values
– Lack of “surprises” such as system crashes or unspecified behaviors
General idea is attempting to find “bugs” by executing a program
The following are potentially useful techniques, but are not testing:
• Model checking
• Static analysis (lint; compiler error checking)
• Design reviews of code
• Traceability analysis
Smoke Testing
Quick test to see if software is operational
• Idea comes from hardware realm – turn power on and see if smoke pours out
• Generally simple and easy to administer
• Makes no attempt or claim of completeness
• Smoke test for car: turn on ignition and check:
– Engine idles without stalling
– Can put into forward gear and move 5 feet, then brake to a stop
– Wheels turn left and right while stopped
Good for catching catastrophic errors
• Especially after a new build or major change
• Exercises any built-in internal diagnosis mechanisms
But, not usually a thorough test
• More a check that many software components are “alive”