10-04-2017, 09:03 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