Bojan Šućur, Senior Software Quality Assurance Engineer
The increasing use of Agile methodology also requires a constant transformation of the QA process. There are changes in responsibilities, work principles, tools, standards, and other key aspects. Concepts such as left and right shift testing, automation, and artificial intelligence are expected to gain significance in the future to meet the demands of the fast-paced development and delivery of software in an agile environment.
QA itself depends on many factors, such as the size and needs of the company, the products being developed, and the way of working and organizing. Due to this, we have different implementations of QA roles; some are part of the development team, while others constitute a separate team, often with specific responsibilities and a focus on product quality assurance.
Shift-Left Testing
The approach to testing after completing the programming phase of functionalities is not ideal because it leads to various issues. During software development planning, it is possible to determine the scope and necessary time relatively precisely if the details are sufficiently specified and broken down into adequately measurable units. This predictable process is easily disrupted by the introduction of the testing process.
Testing often does not proportionally match programming in terms of scope, necessary staff, required time, and other factors. Sometimes after programming a simple functionality, we need to involve technical staff from reference projects that directly or indirectly rely on the implemented functionality. There is a possibility of potential violation of client internal regulations, especially in B2B collaborations. Another example is overlapping with legal acts in the case that this is not fully or at all identified in the previous stages of development. This is a common case if the product is launched globally.
With this approach, processes proceed in series, and the next stage begins only after the previous one is completed, often leading to product delivery delays. In this case, the time needed for all additional processes identified after the planning phase could not be adequately estimated. Sometimes delays are not taken into account, which is compensated for by speeding up or even skipping certain activities. As a consequence, we have a final product in which even the deliverer does not have complete confidence.
One solution is to involve the QA team from the earliest stages of product development, the so-called shift-left testing. This is not a new or revolutionary discovery, but it is still not used enough in practice. I believe that in the future, more attention will be paid to this way of working, both in terms of scope, the number of technical and non-technical staff required for verification and validation of the desired outcome, as well as the duration.
Automation And Artificial Intelligence
The automation of testing processes is a continuously relevant topic in the world of software development. Through the use of specialized automatic programs and tools, it is possible to efficiently verify the correctness of a large percentage of system functionalities. As technology progresses, the need for constant improvement and optimization of these tools increases. With the evolution of systems, there are also changes in the technological landscape, including the introduction of completely new technologies and programming languages. Accordingly, the testing process also adapts to new requirements, using new programming languages, tools, and development environments. This dynamic requires engineers to keep up with the latest trends and technologies to remain competitive and ensure the quality of their products. In the future, changes in the software development process and automation are expected to be coordinated and mutually supportive. New development paradigms, as well as innovations in technology, will lead to the creation of advanced testing tools that will enable even more effective error detection and system stability assurance. In this regard, continuous monitoring and implementation of the latest technological trends become key factors for success in the field of test automation.
A product is composed of a series of functionalities. The correctness verification of individual functionalities can be automated using various tools. Artificial intelligence has also emerged in support of all existing tools. One example is ChatGPT. With properly entered parameters, it is possible to get a useful response as a result. There is a possibility that the response may not be fully understandable to the person conducting the search at that moment. Of course, it is possible to continue researching unfamiliar terms, which can result in obtaining an even larger number of unknown terms. By deepening the "conversation," one may lose meaning, time, and the desired outcome. In this case, the maximum utilization of the bot will come to emphasis only when used by a QA engineer. ChatGPT can be considered a useful tool for providing suggestions and speeding up the process, but it cannot replace the role of QA engineer, which will be needed in the future as well.
Shift-Right And Monitoring
Unlike shift-left testing, whose purpose primarily lies in prevention, shift-right testing is dedicated to detecting issues that may arise during product application. This approach emphasizes monitoring the performance and behavior of the system in real environments after the product is put into use, especially when users integrate new versions of the software. One concrete example of shift-right testing can be providing a new version of the software to only a selected sample of users. By monitoring the system's behavior in the production environment, engineers can identify any problems that could not be detected during the development phase. User reactions, system performance, and any unexpected behaviors become key indicators of the quality of the implemented version.
Shift-right testing allows teams to respond more quickly to real challenges that users may encounter, contributing to the improvement of future versions of the product. Through active participation during the production phase, QA engineers have the opportunity to notice differences in product behavior in real environments compared to development. Applying this approach in the future will result in higher-quality products.