Over the past few years, software testing has emerged from the wings. Now it is centre stage in software development, particularly as part of DevOps. The increasing volume, complexity, and speed of data delivery are driving new directions in software testing.
For instance, shift-left testing, whereby more tests occur earlier in the software development lifecycle, has been around for a couple of years and is one of the most significant movements in functional testing today.
However, organisations are beginning to expand shift-left beyond functional testing and into non-functional testing, particularly API, performance, security, and accessibility testing. This is a big change because shifting those types of tests has not been on most people’s radars until now. The likely reasons behind this are both the advancements around digital apps and the rise in the cost of failure. Also, applications have evolved with the rise of progressive web apps, Flutter, and React Native, which adds a whole new layer of complexity to such apps. Imperative to success is that these complex apps function, perform, and meet accessibility requirements across all application and platform types.
Another trend that has been around for a while and set to gain more attention this year is AI/ML-based testing. This is in response to the dilemma of requiring greater volume and velocity of testing yet having a scarcity of test professionals. AI/ML-based testing overcomes this issue, by making it possible for more team members to be involved. For instance, in a software development sprint, intelligent testing addresses limited time and the number of test scenarios that should be executed, without writing additional code. Also, teams can use smart reporting to scan through massive amounts of test data to provide actionable insights.
Test Automation and Stability
Likewise, even if these organisations do not feel ready to adopt AI/ML testing, automated testing progressively taking over from manual testing. Again, automation means more tests in less time, making it possible to expand test coverage and reduce human error. Of course, there will always be a need for manual testing. Particularly for test cases that are not executed often, or for those that are too expensive to automate and are brittle by nature. Using manual and exploratory testing to complement automated testing is a good practice. That said, automated testing must be maintained and balanced as both the application and tests change.
As well as increasing test coverage, organisations must seek new ways to expand test stability in the coming months and there are a few reasons for this. For example, adopting advanced technologies have more complex test requirements. In addition, teams testing mobile and web apps must constantly modify their test automation suites to keep up with the cadence of browser and OS updates.
A test can fail if a new device or browser version uncovers a bug in the application software. Avoiding test failures matters because, it is generally considered most tedious part of the software testing lifecycle. The other main reasons that tests fail are environmental issues, test issues, issues with test data, and actual defects. Indeed, only a very small percentage of tests are typically genuine defects, despite being the most important to analyse. Therefore, having methods, tools, and sophisticated reporting to sift through all the test data and find out where the problems will have the most impact is so important.
Advancements in Open-Source Test Automation Frameworks
The need for betterest coverage and stability – together with the rise of more sophisticated web and mobile apps – has pushed the open-source community to make significant adaptations to the leading open-source frameworks for web and mobile. For instance, Selenium, Playwright, and Cypress frameworks for web application testing include network control, API testing, low code recording abilities, multi-tab automation and other more advanced features.
On the mobile front, the Appium framework was architecture to de-couple its drivers, to support most advanced applications such as Flutter. Plus, the concept of dedicated plugins on top of the framework has been introduced, to complement text coverage and to enable use cases not supported within the core framework. Further changes to these frameworks can be expected, as technologies evolve and as digital takes even more centre stage within the business application landscape.
Behaviour-driven development (BDD) testing, which is more business rather than technology-focused, is also on the rise. This is because development features based on user stories provide solutions to real-world problems. It is a very collaborative approach between product managers, developers, and testers. Like test-driven development (TDD), good BDD practice is to write the test firsts. This supports a higher level of test coverage and builds up acceptance tests. Many BDD adopters also use continuous test automation, usually as part of a CI/CD pipeline.
Testing is not only being taken far more seriously than ever before, but also that testing is a bedrock of the software development lifecycle. If enough levels of automation and speed are achieved through parallel testing and cloud executions, testing will stop being viewed as a bottleneck. Instead, testing will become a tool to ensure high-quality code is delivered in line with business priorities. With this approach, teams will bridge the gap between product owners, IT operations, and development teams.
By Eran Kinsbruner, Chief DevOps Evangelist at Perforce Software across Perfecto and BlazeMeter within Perforce Products portfolio.
He is the author of several books on software development and testing.