Simulators and Automated Tests
With software products becoming increasingly complex and development processes increasingly flexible, new requirements on the design and execution of tests are imposed. Products that are configurable in numerous ways or agile processes that involve ongoing changes to the software design need to be addressed in order to ensure the repeatability and durability of tests. These needs are addressed by our testing infrastructure in two ways:
- Abstraction and Simulation
- Automatic Regression Tests
Abstraction and Simulation
Abstraction refers to determining the sub-system to be tested and defining its interactions with the outer world at its interfaces. In this way, the rest of the system is “abstracted” from the point of view of the system to be tested as “possible sequences of messages”. This partitioning also determines which units in the system will be simulated or mocked. In ARKE Telekom we use various simulators developed for different software units and these tools are an integral part of our development workflow.
Automatic Regression Tests
Agile is a software development method based on adding new capabilities to the software in small steps. Unlike traditional software development processes, system-level validation and regression tests are needed after each development cycle to verify that existing capabilities are not lost. Performing these tests repetitively and automatically ensures the health and speed of the development process. The automated testing infrastructure we have developed executes predetermined scenarios by booting the tested (embedded) software and simulation software in various configurations. In case of an unexpected output, the test framework marks the test as failed and saves the logs for later review. The ability of each developer in the team to run tests with one click in their own development environment ensures that errors and regressions that may occur during development are noticed early and resolved before spreading to the product.