When you study IT industry trends more carefully, Agile and DevOps emerge as two major factors currently shaping the software development landscape. According to the 13th Annual State Of Agile Report (2019), 97% of respondents reported that their organizations practice agile development methods. At the same time, DevOps is arousing more and more interest, as the data from Google Trends clearly show. More important still, both DevOps and Agile practitioners are keenly interested in improving the quality of software produced. This makes quality assurance and software testing a common area of interest for both groups.
To stay ahead of the QA curve as 2020 approaches, our team attended TestCon, the largest software development cycle and quality conference in Europe, held on 15th-17th of October, in Vilnius, Lithuania. They sought out the most interesting insights and disruptive ideas that will have the biggest impact on software testing. Read on to learn more about six top trends in quality assurance for 2020.
The trend of moving to DevOps and continuous integration and continuous delivery (CI/CD) practices also has a major impact on software quality assurance. Many ways of testing and measuring are no longer applicable in microservices and cloud environments. Yet applying DevOps principles in the world of testing brings a slew of challenges to bear. First of all, we have to change our mindset and start perceiving testing as a continuous process that goes hand in hand with new releases. TestOps is the term now applied to this process. Continuous delivery, on the other hand, leads to automation. While it seems that we are not ready for the revolution of automating everything yet, many companies are laying the groundwork for it by applying DevOps culture, release automation, release consistency, monitoring, test automation, improving their processes and the Software Development Lifecycle (SDLC).
In the context of the changing QA paradigm, we should focus on QA engineers’ soft skills. The quality assurance process is often costly, time-consuming and can considerably delay a product’s time-to-market. This makes it hard to prove its worthiness to decision-makers, who often enough may not see the overall technical context. Yet in terms of business, it is of great value. Software that is riddled with bugs will only turn clients away and harm the company’s reputation, sometimes irreparably. The task of QA practitioners is then to convince decision-makers that their ideas will bring consistent benefits to end-users, and consequently allow everyone involved to achieve their business goals.
Traditionally, a developer’s role has been distinguished from that of a tester’s. Once development teams have finished working on software, it is sent to testing teams to detect the bugs and thus ensure that it can be safely released. In Agile methodology, on the other hand, teams are reorganized with no explicit division between testers and developers. Instead, there is only one role: software engineer. This shifts the responsibility for quality assurance from individuals (i.e. testers) to every team member and the team as a whole. While the tester role has been done away with, testing is still performed and quality remains assured.
Unfortunately, this assumption has frequently been interpreted incorrectly. If everybody has to work on quality assurance during the development process itself, then we no longer need testers, right? Developers can take over their function and there is no need to appoint a quality specialist. Unfortunately, such an approach sometimes leads to the grim reality of buggy software.
During the TestCon conference, many participants noted that this is not what the authors of the Agile manifesto originally intended. A company cannot be agile when its testing practices are flawed. Now we want to return to their true intentions. In a development team, there should be a person to assume the function of tester, working together with the team to ensure bug-free releases. So, even if there is no explicit tester position, there will always be someone managing software quality assurance.
There is still one more QA-related challenge on such a team. While a semi-dev/semi-qa can capably manage unit or integration tests, who is tasked with performing end-to-end tests of a given functionality? Sometimes it may be necessary to prepare test cases to address a given business issue. Someone has to design and create such test cases. In the testing process performed in the Agile team, there is no-one to do this. This potential problem should not be overlooked.
Artificial intelligence has proved very useful in just about any domain or industry it has touched. No wonder, then, that it has also been brought in to tackle QA. AI could help considerably to perform testing from the end-user perspective, as it can identify some problems on a par with humans. This topic was discussed in a presentation on testing Candy Crush Saga. In this case, testers do not have any tools that could help them identify elements like text or buttons. They see only graphics. AI can detect such elements and thus make the entire testing process more effective. AI can also compare a displayed image and a reference image to detect the differences between them, e.g. the background color is muted but shouldn’t be; or a given button should be grayed out but isn’t. Moreover, an AI algorithm can easily determine if texture is properly rendered, unlike the human eye, which struggles when confronting a ton of colorful graphics.
Usability is definitely a hot topic both from a business and a testing perspective. In the World Quality Report 2018-2019, end-user satisfaction was named, for the first time ever, the top priority in software quality assurance. In this context, one presentation focused on usability testing by means of a technique called hallway testing. It particularly stood out. UX tests should be performed by a random group of people who are given simple tasks to perform, but have no knowledge about the product. It is a valuable approach, as such random users go about performing their task differently than the developer team would do. Users’ cognitive development can differ significantly and people perceive the same things in a different light. Thanks to this approach, it is possible to discover errors in areas not intended for testing at all. This technique can be applied to check any kind of user interface as well as API design. In such a scenario, developers that are using API are seen as users. Hallway testing is immensely useful when it comes to the current top QA priority--end-user satisfaction.
The last trend is more of a question than a prediction. Today, Selenium is considered an industry standard in automating web applications for testing purposes. Thanks to Selenoid, Selenium Hub successor, multiple Selenium servers can be run with many different browser versions encapsulated in Docker containers. Selenium supports a number of browsers and platforms and allows for distributed testing. It offers flexibility and scalability. The use of Selenoid is a good example of how the trend towards virtualizing everything and the use of light-weight containers has impacted QA in IT.
As you can see, the Testcon conference was a good opportunity to gain deep insight into what’s going on in the world of QA. 2020 looks likely to become an interesting year that will bring important changes to quality assurance practices. You can be sure that we will be following them closely and keeping you abreast of the most interesting and promising ideas.