What’s the difference between testing in Embedded Software development and Application Development?
Application Development is all about the user interface, whereas in Embedded software, what the user interface looks like to the user is way down the list of priorities. Since embedded software is for hardware, interfaces tend to be rather basic. The more advanced embedded systems require user management for Intercomponent interfaces and APIs for communication with higher-level software such as operating systems, - however this is about as advanced as it gets for user interfaces (not advanced at all).
How does complexity come into the Embedded Software Development?
Testing Embedded software for Embedded System Projects is a far cry from what most people think of testing with Application development. To put simply, it is far more complex than application development testing and consequently it is far more reliant on a variety of tools that address the complexity associated challenges.
How is Embedded Software Testing more complex than with Application Development testing?
Complexity rises as the number of electronic components rises, - communication between components and with higher level software such as operating systems is also where the complexity lies.
The following features of Embedded Software development provide added complexity for testing.
- Hardware Limitations (resources)
- Hardware Dependent. Typically, there are a limited number of prototypes (perhaps 1 or 2). This leads to other associated problems that arise when testing teams have no access to hardware.
- Embedded Software is often created without the prototype and then integrated during a rather stressful period where bugs are identified through an intense testing period and hopefully resolved.
- Hardware bugs often remain undetected until the hardware / software integration phase, adding further complexity to testing.
- Higher level communication compatibility issues. Older operating systems frequently do not work with new hardware, requiring patches and new drivers.
- There are too many variables to test for manually, therefore automated tested is necessary. Generally only a small proportion of the testing is done manually. Applying test automation effects the execution of test cases and the entire testing process.
- Reproducing defects with embedded software is harder to do than in application development due to external environmental factors.
- To test embedded software further, software must be developed to test and capture data.
- There is no operating system to work on. Work must be done on the premise that everything must be tested. Hardware updates are likely to require patches.
- Updating embedded software for hardware is typically more complicated than just installing an application upgrade with a windows installer. For embedded developers this means that bug fixes are accumulated and periodically updated when sufficient numbers have been collected to warrant the inconvience of updating.
- With a limited operating system, often a debugger can’t be used on the same system and with no remote debugging tools, it makes debugging embedded software decidely more difficult than in application development.
- Embedded Software requirements demand that two artifacts are created for tracing requirements, the set of the test case and test support infrastructure ( including automation framework and test agents).
Embedded Software Testing with codeBeamer ALM
codeBeamer ALM simplifies your embedded software testing. QA & Test Management codeBeamer ALM provides you with full traceability on requirements, bugs and other project artifacts. It also enables you to structure your test sets and test cases or become more productive by using test case libraries. The Coverage Browser helps you to find gaps easily, while our Traceability Browser with advanced filtering options makes it easy to work with large amounts of data.