Continuous integration is a practice of software development that based on constant code changes, testing and code integration. This system of coding is perfect for Agile projects, allowing you to make changes to the current project and shift priorities. Also, continuous integration is ideal for remote teams, or for very large teams where communication is difficult or unlikely. Since all the latest changes are introduced to the repository immediately, all developers, regardless of their location, can be sure that change works as expected.
The advantages also include timely detection and elimination of errors, while shared access to the code provides the ability to roll back changes which led to breakdowns by any project participant. You can read more about how Grinn implements the integration process in our next articles, and, in this one, we will discuss the tools we use every day.
The best CI tools for embedded software development according to Grinn:
GitLab CI/CD
Analyzes code representation and manages errors in a single repository. The advantage is the direct integration with GitLab Workflow and the fact that GitLab Ci/CD displays all progress information in one panel. The program supports command scripts in any language, and there is a free version for community use.
Pytest
Free framework for conducting unit tests on Python-based projects. It can be used to test a wide range of applications on the API and databases. The main advantage for us is a multitude of available libraries that enable the use of Pytest to test embedded devices. The extensibility and reusability offered by Pytest enable the continuous development, modification, and maintenance of all test suites throughout the project.
Robot Framework
An open-source framework, the advantage of which is the ability to write tests based on keywords, behavior, and data. It is also a great framework for writing complex tests, as the Robot Framework supports scalar, list, and dictionary variables. One of the most important advantages of Robot Framework is the ability to create test cases in a language that is understandable to both programmers and non-technical project team members.
Google Test/Google Mock
What is good about this framework? First, Google Test contains ready-made macros for comparing an acquired result with an expected one. Secondly, running all tests takes incomparably shorter than performing them manually. And third, it also allows you to generate reports with information on the coverage of the production code with tests, which provides important information when analyzing the quality and stability of the entire project.
Unity/CMock/Ceedling
Three frameworks for C unit testing which are light, fast, and convenient. They can be adjusted to the needs of the project and are ideally suited for embedded software development. As for Google Test, these 3 frameworks run tests in a short time and generates informative reports.
Metrix++
A framework for testing in C, C++, C#, and Java. Metrix ++ provides basic information on the quality of code provided by developers, enabling much faster and automatic detection of areas in the code that need to be refactored as quickly as possible. Thanks to the static code analysis performed by Metix++, the amount of technical debt that arises during project development is minimized from an absolute minimum.
The transition to continuous integration simplifies the software development process, reduces conflicts in teams, and helps to create a stable, high-quality product. Regardless of the framework you choose, continuous integration will take your development process to the next level. Any questions about embedded software development? Contact us.