DevOps in Automotive
IT companies use various methodologies to assure quality of the products, prevent defects and avoid problems when delivering products or services. Software testing must be performed before being released to find potential defects, where defect is a deviation in software behavior from requirements. The following points highlight why software testing is so important:
● 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
Test automation is one of the most important aspects of quality assurance that helps to get software-testing results in a short time.
One of our customers contacted Reply with a request to setup Continuous Integration (CI) and Continuous Delivery (CD), nightly builds and smoke tests. Smoke tests were supposed to check software on test racks provided by customer. The goal was to transfer the code and setup CI/CD for the project and subprojects from Jenkins CI/CD to Gitlab CI/CD server and switch delivery from Nexus to Artifactory Repository Manager.
Another request was to set up and automate End to End testing. Our team proposed to optimize existing work processes, reduce teams negotiations and sync ups which led to full automation in software release.
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. Systems 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. These operations include not only proper alinement but continuous improvement of the existing system: adapting it to a constantly changing environment and requirements in accordance with quality management system processes and procedures.
Automated testing on such levels as Unit tests, functional testing and E2E testing accelerate the process of searching defects due to improper structure or improper usage of software. At high level E2E testing covers critical functionalities such as servers, databases, services, applications and communication mechanisms used in the project.
Achievements:
● Introduced smoke testing which checks the work of most important functions and regression testing on Nightly builds
● Containerized all jobs in Docker and automated orchestration
● Automated System (package) and Integration (components) testing to prepare for Acceptance testing
● Automated component’s publishing: Introduced email notifications containing links on published components and E2E test reports
● Automated assembly job
● Implemented E2E using API for communication
● Introduced Protocol Buffers to send actions to target via MQTT for vehicle control
● Implemented API used for package building
● Introduced framework for E2E testing with accordance to Robotic Process Automation
As a result of software release automation, we made delivery of increments, according to SCRUM, in record time. Our client receives information about released software state and test reports in automatic mode that boosts review and reports sharing.