Article By Sean M. Beatty
Testing alone cannot find all potential failure points for realtime embedded software, particularly in multithreading environments.
Here are several techniques you can use to find errors that may otherwise be missed. Most software development projects rely on some combination of structural testing, code inspection and functional testing to identify software defects. While these conventional techniques are invaluable and uncover most software problems, they cannot detect many common types of errors in today’s complex systems.
This article will show you how to avoid the problems that create these elusive but common errors.
Conventional methods
Structural testing or white box testing—Effectively finds errors in the logic, control flow, calculations and data in the code. This test requires an unobstructed view of the inner workings of the software (hence the name “white box” or “glass box”) to look at details of the software’s construction. It examines
every conditional expression, mathematical manipulation, input and output.
Because of the large amount of detail to be tested, structural tests examine the software one unit at a time, typically a single function or class.
Code inspection—Uses the same detailed knowledge of the implementation to find defects and potential problems. Like white box testing, inspection is generally performed on individual units of the software due
to the focus and intense scrutiny required by an effective inspection process.
Functional testing or black box testing—Unlike inspection and white box testing, it assumes no knowledge of the software’s implementation. It tests outputs driven by controlled inputs. Functional testing consists
of test procedures, written by the test or development staff, which specify the expected program outputs for a particular set of program inputs. After the tests are run, the testers compare the actual outputs to the expected outputs to detect problems.
Black box testing effectively finds unimplemented requirements, interface problems, performance issues and errors in the most-used features of the program.

{ 1 comment… read it below or add one }
embedded softwares are mostly used on application specific integrated circuits-:;