DevOps for Automotive

Concept Reply’s Software Release Automation

Fleet management over the air

A customer from the automotive sector contacted Concept Reply with a request to setup Continuous Integration (CI) and Continuous Delivery (CD) with nightly builds and smoke tests to perform software checks on their test racks. The project goal was to support a fleet management system for controlling and gathering statistics of cars and be able to update software system components over the air.

Therefore, the main requirement was to transfer the existing code from Jenkins to Gitlab, setup CI/CD for the main project and its related subprojects and switch delivery from Nexus to Artifactory Repository Manager. In addition, there was a request to set up and automate End-to-End testing.

The achievements

The Concept Reply team proposed to optimize existing work processes, reduce team negotiations and sync ups which led to full automation in software release.

  • Introduction of smoke testing which checks the work of the most important functions and regression testing on nightly builds
  • Containerization of all jobs in Docker and automated orchestration
  • Automated System (package) and Integration (components) testing to prepare for Acceptance testing
  • Automated publishing of components
  • Introduction of email notifications containing links on published components and E2E test reports
  • Automated assembly job
  • Implementation of E2E using API for communication
  • Introduction of Protocol Buffers to send actions to target via MQTT for vehicle control
  • Implementation of API used for package building
  • Introduction of a framework for E2E testing with accordance to Robotic Process Automation

The results

As a result of software release automation, Concept Reply managed to speed up delivery of increments on 70%. The customer thus receives information about released software state and test reports in automatic mode that boosts review and reports sharing.

Why is Software Testing so important?

IT companies use various Software testing methodologies to assure quality, prevent defects and avoid problems when delivering products or services. It is an important measure that has to be taken before a release:

  • It is mandatory to ensure the quality of the software.
  • It is necessary to identify whether the application meets its requirements.
  • Exclude failures before the software becomes available for clients.

Robust infrastructure requires installation of high volume, high performance and high availability systems. Such systems could be assembled from several modules that represent DevOps tools such as Amazon S3, Amazon SES, Gitlab CI and Artifactory. System reliability depends not only on tools itself but also on proper alinement formed on the requirements of the project. High volume and high performance systems ensure proper pipelines alinement that run in parallel on scalable cluster of containers. Besides that, these operations include also continuous improvement of the existing system: adapting it to a constantly changing environment.

Accelerating the process

Test automation is one of the most important aspects of quality assurance that helps to get software-testing results in a short time. Automated testing on such levels as Unit tests, functional testing and End-to-End testing accelerate the process of searching defects due to improper structure or improper usage of software.

At high levels End-to-End testing covers critical functionalities such as servers, databases, services, applications and communication mechanisms used in the project.