The use and testing practices in Agile methodology teams and other development methodologies play a crucial role in software quality assurance. The role of a QA engineer in different development approaches has its own set of peculiarities and opportunities.
Denis Laptov, QA Lead of an international software developer, will help us to understand the peculiarities of this role.
Disclaimer:
"This is a personal blog. The views and opinions expressed in this article are those of the author and do not represent those of people, institutions, or organizations that the author may or may not be associated with in a professional or personal capacity. All information is provided on an as-is basis."
Denis, please tell us how you came into the profession.
I started my journey as a junior specialist in automated testing at BARS GROUP. After a couple of years, I became a senior specialist, and then a year later, I became a leader of testing teams. We managed large projects in Government ministries (Ministry of Finance, Ministry of Health, Ministry of Construction, and others). Later, I organized an independent and centralized testing service within the company. I implemented advanced software development and testing technologies into the company's business processes. I have also developed internal software quality standards based on ISO international standards. After six years in the company, I joined an international corporation as a QA Lead. Here, I was involved in the development of testing practices in the field of computer science, but I also conducted training for students from St. Petersburg's universities with subsequent employment of the best of them in our company. I've also been involved in international projects in the domains of insurance, healthcare, market and banks, and finance.
What outstanding projects have you managed to work on?
There have been many projects, but I can single out a few of the most interesting and large-scale ones.
For example, the «BARS.Healthcare-MIS» project. This centralized solution is designed for the digitalisation of public, private, and departmental medical organizations. Thereby, it becomes possible to exchange data between medical organizations through digital processes in polyclinics and hospitals, as well as to perform centralized data collection from the entire network of medical organizations in the region or for an individual medical organization for monitoring and management decision-making.
It resulted in 1,100,000 unique patients in 2021, 3,700,000 appointments, 77 connected medical organizations, 50,000 discharged certificates of incapacity for work, and 120,000 discharged patients.
Another project is that of the Housing and Utilities Reform Assistance Fund group of companies.
AIS (automated information system) "Housing and Utilities Reform" 2.0 provides any resident of the country with up-to-date and timely information on the state of their own housing and the progress of reforms in the industry.
The information system is designed to monitor regional programmes for the resettlement of citizens from emergency housing and capital repair programmes for apartment buildings, as well as for public disclosure of information on the activities of management organizations.
This system is annually updated in order to improve the quality and reliability of information provided to citizens, improve the efficiency and effectiveness of management, reduce labor intensity in filling in and processing data, and also generate analytical reports.
The solution is also used to provide feedback to the population. At present, the service for receiving citizens' appeals collects applications on issues related to the implementation of regional targeted programmes for resettlement from emergency housing stock and regional capital repair programmes.
The project results include more than ten years of stable operation and modernisation of the existing solution, 70,000 management companies connected to the system, 95,000 emergency houses monitored, 775,000 houses for which capital repair works have been, are being or will be planned, 40,000 construction contracts signed and 4,000 citizens' appeals processed.
Denis, you have mentioned large-scale and significant projects so far, but what has been the most significant and fundamental project in your professional life?
The first project that comes to mind is the one I worked on when I joined BARS GROUP. It was a project for the housing and utilities sector. My task was to develop automated tests to improve the quality of software produced for general use. There was a lot of work, and sometimes I had to stay late. And to get out of the business center, I had to ask security guards to unlock the doors for me. On one of the working days, I suggested that I perform load testing to find out the bottleneck in the system. My manager bounced the idea and partnered me with a senior developer, who later became a good friend of mine. I would load the system, analyze, and build theories on the data. After that, we would test the system's performance with improvements that my colleague had been making.
Can you tell us what work methodologies QA engineers use?
When we refer to methodology, we mean the full development cycle, which includes testing in it.
QA engineers use different methodologies when working, from which I can single out:
- Cascade Model (Waterfall Model) — implies sequential execution of tasks. Such a model is particularly relevant for the public sector, allowing the QA engineer to spend more time on testing each phase of development. However, in this model there may be significant delays in identifying and correcting defects.
- In flexible methodologies, such as Agile, the QA engineer is actively involved in the development process from the initial phase, enabling problems to be identified and fixed more quickly. Agile's rapid iterations provide almost instant feedback on the result of the work, which in turn helps the QA engineer quickly adapt to changes and improve testing processes.
There are two subspecies of Agile, namely Scrum and Kanban. Scrum is mainly used in software development, where tasks are successfully distributed among small teams. This method of managing has proven itself due to its simplicity and efficiency. The main difference is that Kanban has no time-limited sprints, work is done continuously, new tasks are added in the process and can be performed according to priorities.
All of the Scrum team members have clearly defined roles, while in Kanban, they are more flexible. In Scrum, the product owner is fully responsible for defining goals, assigning, and scheduling processes. The hierarchy within a project usually remains the same throughout its lifecycle. All tasks in this methodology are performed one by one. In Kanban, the manager acts as a project coordinator, where developers cooperate and support each other, regardless of what part of the project they are working on.
If we talk about the peculiarities of the testing process within these methodologies, then Agile testing is performed in parallel with the development, whereas in waterfall testing it is done only after the development is completed. The order of acceptance testing in the two methods is carried out in the same way. According to research, development methodologies play an important role in improving software quality, as the right methodology increases the efficiency of all stages of the life cycle, including testing.
Which methodology do you favor?
In my work, I follow the "Left shift" approach. It is a concept according to which testing is integrated into various stages of the product development lifecycle at early stages, "shifting to the left" relative to the traditional sequence of actions in software development. With this approach, product quality is improved, the development process is accelerated, and defect correction costs are reduced.
What are your plans for the future? What do you want to accomplish in a professional way?
I am thinking about implementing an open-source library for writing end-2-end tests using Selenium in C#. This framework would help testers reduce the time for autotest development, reduce writing errors, and give a new round of development in their career. Many other programming languages already have solutions that have significantly impacted the field. And as a professional, I would like to see a similar solution for C# as well, as it is one of my favorite programming languages.