The client’s system
The client provides a conversation system built on the Omni-Chatbot Platform, based on Artificial Intelligence. It can be implemented in the form of chatbots or voicebots for commercial use in any industry, improving communication with customers. Stanusch’s virtual assistants allow clients to automate customer service, provide support in the scope of internal communication in companies or in marketing activities, and analyze big sets of data. The advantage of the tool is having a single knowledge base, which provides the possibility of communicating in different channels without the need to create separate sources of information.
The client needed support for their Scrum Team in the scope of software development and Quality Assurance. The aim of the project was to implement a new version of the application for the conversational system. When JCommerce specialists started to work on the project, they identified the following problems and challenges:
- The automated test design (GUI and API), created for the older version of the system, required refactoring.
- Automated testing took too long.
- The client needed data to compare the performance of the older version of the system with the new system currently being implemented.
- The tools used by the client required an upgrade to newer versions.
The work carried out by JCommerce specialists can be divided into the following areas:
While working for the client, JCommerce specialists were responsible for the maintenance of the current system. They implemented it in new environments and updated the implementation instructions. As part of the work, procedures were established to make the work more efficient. The tasks which the JCommerce JAVA Developer was responsible for included repairing controls for entering data in the administrative system, repairing data search functionality and logging into the system. He added the option to run the Groovy language code, required for the functioning of so-called “facts” (knowledge base articles) and to return results to the person who set up the chatbot for the client, to the existing administrative system.
The software development process has been further improved by:
- Defining Definition of Ready and Definition of Done (including the need to prepare automated tests) so that the Scrum Team knew when the task would be considered completed.
- Regular meetings (Refinements), allowing the team to update the tasks in the Backlog systematically.
- Improving the code review process, during which attention was paid to code quality, system architecture and tests. The improvement of the code review process translated to better code quality, and thus the improved functioning of the application.
Tests (Quality Assurance)
The design of automated tests for the existing system was refactorified, which consisted of modifying the code in accordance with good practices in programming. At a later stage, it allowed for the updating of the libraries and tools used in this project. On this occasion, the logic of some tests was improved – some test cases were combined, while others were separated.
- As a result of these changes, it was possible to halve the time taken to perform tests.
- We have managed to improve the Continuous Integration / Continuous Delivery process and modify the scripts activating the tests.
- JCommerce specialists proposed utilizing the Selenium Grid tool, which is used to run tests on various browsers, and also recommended changing the browser to a supported version. Thanks to this, the client is able to use the latest versions of the most popular browsers.
- The tester on the client side was responsible for this project, and a QA from JCommerce provided her with advice and substantive support.
JCommerce project support in terms of testing the new conversational system was carried out in four basic areas:
1) Code review
Paying attention during code review to unit and integration tests. Efforts were made to cover as many business cases as possible.
2) Manual tests
Manual tests were performed at the earliest possible stage of the development process. Here the focus was mainly on the most important business paths, and the specific cases were covered by lower-level tests.
In addition, documentation containing all differences between the old and new systems was created.
3) Automated tests
As part of this task, a separate project was created to include tests for the developed API. As part of this area of the work, new technologies and tools were used, such as Java 11, Groovy, Spock, Rest Assured, Maven, Docker and Jenkins. In addition, it was integrated with the CI / CD process (tests were activated each time a new version of the application was built). In the next phase, these tests were added to the development process – each developer could run them on a virtual machine to verify the correctness of the changes which they had implemented.
4) Performance testing
The customer reported the need for data that would allow him to compare the performance of the old and new systems respectively. As part of this task, an existing test project (created for the needs of the old system) was launched. It was also modified to check the performance of the new system. It used the JMeter tool, but as part of this task a proof of concept of performance tests was prepared using the Gatling tool.
Team composition: QA and JAVA Developer.
Project duration: 06.2019 – ongoing
- Better code quality and better functioning of the application,
- Upgrade of libraries and tools used in the project,
- Improved software development process and quality assurance, in particular task creation (Backlog),
- Better know-how of the development team in the area of Quality Assurance, especially in the subject of test automation
- Support in the scope of Scrum methodology, especially the improvement of the task creation process. This resulted in an increased understanding of the tasks and the target functioning of a given functionality by the Development Team, especially by employees who have less experience in the project.