Test process automation for transfer switch firmware ; Diploma thesis
Koivunen, Emil Matinpoika (2021-11-29)
Koivunen, Emil Matinpoika
29.11.2021
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi-fe2021112957443
https://urn.fi/URN:NBN:fi-fe2021112957443
Tiivistelmä
As prices of processors decrease, the computing power of embedded systems increase as more features or better performance can be delivered for the same cost. With the increased computing power, the complexity of the software also increases and the need for testing increases. These tests can detect defects in the early stages of development and thus makes them easier to fix. In this thesis we will create an automated test process for automatic transfer switch soft-ware. Automatic transfer switches are used to monitor power sources and automatically switch to back up systems if there are issues in the main source.
In this thesis a new build system using CMake and vcpkg-package manager is set up. On top of that build system an automated unit testing system using the CMocka unit testing framework and Azure DevOps pipelines is built. The functionality of the system was then extended to provide code coverage reports and automated firmware builds and semi-automated test version release process.
At the end of the thesis a framework for continuous integration and continuous deployment system was set up for an embedded software development environment. This system allowed developers to push new versions of software in shorter intervals than before and thus helped shorten the development acceptance-testing feedback loop. The automated test process also provided a good filter to catch the simpler bugs during early stages of development, but for the more complex interactions between different modules and function blocks, further integration and systems testing will be required.
In this thesis it became apparent that for further levels of testing investments into testing equipment, further modularization of the code and a process for specifying how individual components are meant to interact or alternatively specify the end-to-end process for planned features. For testing equipment some things could be off the shelf, but certain features cannot be tested without external systems being emulated and those now are not available on the market.
In this thesis a new build system using CMake and vcpkg-package manager is set up. On top of that build system an automated unit testing system using the CMocka unit testing framework and Azure DevOps pipelines is built. The functionality of the system was then extended to provide code coverage reports and automated firmware builds and semi-automated test version release process.
At the end of the thesis a framework for continuous integration and continuous deployment system was set up for an embedded software development environment. This system allowed developers to push new versions of software in shorter intervals than before and thus helped shorten the development acceptance-testing feedback loop. The automated test process also provided a good filter to catch the simpler bugs during early stages of development, but for the more complex interactions between different modules and function blocks, further integration and systems testing will be required.
In this thesis it became apparent that for further levels of testing investments into testing equipment, further modularization of the code and a process for specifying how individual components are meant to interact or alternatively specify the end-to-end process for planned features. For testing equipment some things could be off the shelf, but certain features cannot be tested without external systems being emulated and those now are not available on the market.