preview

Backend Testing iOS & Android Testing Web Testing API Testing QA Processes Testing & Product Documentation

Jira Confluence Qase Fiddler Postman xCode Android Studio Docker k8s SQL NewRelic Sentry Papertrail

About GroupDoLists


Groupdolists is an incident and crisis management response platform designed to help organizations respond to crises more effectively. The platform provides a centralized, real-time environment for teams to manage and coordinate their response to any incident, ensuring that all necessary actions are taken promptly and efficiently. Groupdolists simplifies the complex process of incident management by providing a clear, step-by-step response plan, which can be customized to suit the specific needs of any organization. This innovative solution enhances communication, accountability, and efficiency, ultimately minimizing the impact of crises and ensuring business continuity.

My Role

Joining GroupDoLists

May 2019 — Sept. 2019

I joined the GroupDoLists project to strengthen the quality assurance team. The project was struggling due to a lack of testing and product documentation, frequent changes in the product concept at late stages, and an unclear development roadmap.

Initially, I focused on enhancing the existing testing documentation, expanding coverage, and improving test plans. I revised ~200 existing test cases, transforming them into 700+ well-decomposed ones that covered all existing functionality. I also prepared properly composed test plans for each supported platform.

These well-decomposed test cases and properly organized test plans helped us reduce the median regression time by approximately 20%, while significantly extending the test coverage with a variety of newly developed test scenarios. This all helped us to identify existing errors, eliminate ones, and prepare for the future changes.

Focusing on Product Documentation

Sept. 2019 — Mar. 2020

After addressing the existing problems with testing documentation, we decided to also improve the product documentation. By changing our approach, involving quality assurance engineers in the process of writing and discussing specifications, and establishing a more tight and reliable collaboration between the team and product owners, we managed to enhance the quality of the features in development.

This led to a reduced workload for the engineering team, as almost all potential use cases were identified before development began. Consequently, there were only a small number of defects to identify and fix after development was completed. As a result, we performed better and consistently met deadlines.

Performance Refactoring

Mar. 2020 — Nov. 2020

From March 2020, as the pandemic spread, we experienced rapid user growth, as the project was designed to assist in such crises. However, it wasn’t initially designed to operate under such high load for many months. Luckily, we had resolved the crucial issues a bit earlier.

As the quality assurance processes were well-established, I, along with several backend and DevOps engineers, shifted focus to performance testing. Within several months, we conducted performance tests for the backend, web, and mobile clients. We identified our bottlenecks and optimized the clients, changing their data consumption from 'greedy' to 'needy'.

These changes, along with backend fine-tuning, helped us drastically reduce the server load. The loading time after logging in was reduced to approximately 8 seconds from 25 seconds previously.

Improving Synchronization

Nov. 2020 — Dec. 2021

At the end of 2020, we encountered an issue with our real-time synchronization method using WebSockets. Although this technology generally performed well, it wasn’t sufficient for our needs. The main problem was that a lost connection meant users would not receive updates. While this might be acceptable in some cases, our commitment was for 100% reliability, ensuring every single update was delivered to the user.

We implemented and tested several solutions related to the WebSocket protocol and set up server-client-server heartbeat messages to quickly restore the connection if it was interrupted. We achieved some success with this approach, but we decided to go further.

In addition to WebSockets, we implemented a 'silent push' solution for scenarios where the WebSocket connection was completely lost. Each WebSocket message was accompanied by an invisible push notification. If the client received this push without having processed a corresponding WebSocket message, it would fetch the data via API.

After implementing all these measures, we succeeded in maintaining a 100% reliable connection, eliminating all synchronization issues, and providing the best possible user experience. And we also completely redesigned our web and mobile applications to give our users a modern experience.

Project Review

In late December 2021, it was announced that GroupDoLists would become a part of Infinite Blue's intelligent enterprise resilience solutions. In less than three years, we managed to significantly improve the project's processes, refactor backend and all clients, establish reliable synchronization, and raise the quality level as high as possible. We completed our work on this project and started planning for the next one, L-Charge.

What I’ve learned at GroupDoLists:
- Focusing on current issues helps to move forward, it's hard to go ahead with a huge backlog.
- Mentoring QA engineers in learning proper processes and tools is a valuable contribution.
- Choosing inexperienced QA engineers to set up processes can be harmful in terms of quality.
- Reworking a project with a changed concept can be tougher than starting a new one.
- A working solution is good, but there is always room for improvement.

Back to Projects