Implementation, development, and support of Continuous Integration for a large, dynamic, multi-component web application for telecommunications industry.
Creation of automated tests for complex web interface and REST services coverage. Creation of infrastructure for automated application building and testing, use of Jenkins and a large number of plugins for it, administration of a Unix-like OS environment and automation of various processes. Building test management processes. CI stabilization.
- The interface was written using the GWT library and was inconvenient from the point of view of its testing. For example, the web elements IDs were generated automatically.
- The application contained complex components which could not be tested with Selenium. In such cases the Sikuli library was used.
- Using the DDT methodology – all information to fill in the test model was taken from a yaml file.
- Creation of a full set of scripts for building and installing application components.
- Creation of Pipelines on Jenkins for passing the full cycle: source code updating, building, installation, and testing. Parallel processing of builds.
- Installation and configuration of Jenkins and the necessary environment for building and running the application.
- The tested web application was deployed on several servers, some of the application services were represented by separate servers with their own specific settings. One of the customer’s requirements was the possibility of quick installation of the application on the client servers.
- A distributed development team, whose members were located in different time zones (the maximum time difference was 11 hours).
- The project work was divided into two phases. There was a break of about 4 years between the active phases. In the second phase, it was decided to replace some of the approaches and tools in order to unify them for all customer’s projects.
- Continuous Integration was successfully implemented in all project phases.
- The team established a good understanding with the customer, all claims, problems, and inconsistencies were discussed openly, and solutions were always taken into account by all team members.
- Work of the old tests was restored.
- An environment for automation of application building and testing was installed and configured.
- The tests for web and REST parts of the application, as well as the tests for complex visual components with the use of the Sikuli library were written. The new tests were written with a more detailed checking.
- Customized Groovy mail templates for Jenkins, which were filled with information about the build results, were created.
- The customer was very happy with the result of cooperation with our company.
Company’s achievements during the project
- A new domain area was mastered in a short time through the creation of memory cards.
- Almost all iterations were deemed successful by the customer.
- The project included a large number of technologies and libraries, which had not been used before.
- The structure of the tests was changed. The tests were divided into independent groups, which reduced the dependence between the test results and eliminated the code duplication. We were able to perform a deep refactoring of the existing tests and applied OOP. Test reports became more informative and structured. The logging system was expanded, and exception handling was improved. This made it possible to make changes to the existing tests faster and keep them updated.