The Challenge: Automating C++
We started a collaboration with TietoEVRY regarding test automation for AUTOSAR. They had implemented a PoC of Execution Management which is a functional cluster in Adaptive AUTOSAR Platform. Execution Management handles startup, monitoring and shutdown of Adaptive Applications, but the system built on C++ was missing a comprehensive and scalable testing solution.In Adaptive AUTOSAR services and APIs are implemented using C++. Qentinel Pace, a cloud based hyper-scalable test automation platform, is known for its ability to automate UI-level testing of web-based systems. Could Qentinel Pace be used to automate testing for Execution Manager functionality?
The Approach: Finding common ground
First step was to define a common development environment. TietoEVRY was using Linux for Adaptive AUTOSAR development while in Qentinel Pace, test robots run on Linux images. We had to decide which Linux version to use and list the required dependencies. Vagrant files were created to help setting up the development environment and a custom image, with all the required dependencies, was added to Qentinel Pace for this project.
We also needed to decide which kind of setup should be used in Qentinel Pace – SaaS solution or secure on-premise solution. SaaS in this context means the software under test (SUT) and tests can be executed in cloud. On-premise solution means that SUT is on a physical or virtual machine and test execution is controlled from cloud. In this case, we couldn’t identify any real blockers so we chose to go with the SaaS setup. Meaning everything is run in cloud.
Now to the tricky part: how can we test the Execution Manager, which is written in C++, from Robot Framework scripts with Qentinel’s automation libraries? With the libraries at the time, it was not possible. There had to be wrappers implemented between C++ and Python APIs. Test scripts also needed new Robot Framework keywords. Quickly this grew into a test architecture design task with emphasis on testability and reusability. Work was done in collaboration with TietoEVRY, who implemented the wrappers and keywords with Qentinel’s guidance on testability and good keyword design.
Since we were dealing with C++ code in this project, we implemented a mechanism to fetch, compile and install all required components before a test run. TietoEVRY used a web-based car dashboard to visualize the functionality during test runs and Qentinel’s libraries were used to automate the activities on the browser UI. As a final result we were able to run automated tests for Adaptive AUTOSAR’s Execution Manager in Qentinel Pace.