There is a tendency for techies to always be looking to the next new shiny object. I’m no different. But this time when looking into the future of modern software delivery, I’m not thinking of radical changes in how we develop, like we saw with the introduction of DevOps. Instead, I’m seeing a refinement of what we already know we are able to do – automate, and doing more automation, better.
How Test Automation Keeps Changing Software
In order to predict the future we need to pick up hints from what’s going on around us: new technologies in development, trends identified by industry surveys such as the Slash Data Developer Economics 2018 survey, and conversations among quality professionals at events such as SauceCon.
For the second half of 2019 and into 2020, I personally am not seeing any groundbreaking trends. It’s more exciting than that. I see a level of maturity and acceptance. Maturity in that we know what we want to accomplish, and we are finding sustainable paths to accomplish it; and acceptance by all organizations that quality is a culture, and it’s everyone’s responsibility.
Most of the time when we talk about what is next, we talk about radical changes in tooling. But now we can focus on how to adopt tooling that already exists – at scale – expanding it from small environments to large ones. This is where I see the greatest gains coming. Even though a large population of quality professionals knows what’s possible, few organizations have implemented it at significant scale.
Here are the areas where maturity and acceptance will show up:
- Better integration with DevOps: Unfortunately, quality has yet to become a first class citizen in most development environments. But with the culture and principles of DevOps becoming more and more influential, DevOps engineers are making application quality a higher priority.
- More MANUAL testing: Yes, I said it. Manual testing may not only not disappear, it might become more common. Why? Because as test automation takes over repetitive and common types of tests, quality engineers will be able to invest in more exploratory testing and spend more time finding ways to get ahead via manual tests that represent more complex human behavior. Fewer tests will be run manually, but there will be more variety and strategy in the manual tests that will be run.
- More accessibility testing: After several recent conversations with experts in accessibility testing, I realized how far behind the software development world is. Applications not only are not well tested for those with disabilities, they are not well tested across a range of ethnic backgrounds and cultures. Organizations are discovering that they are not adequately serving large audiences with their applications – target user bases that face physical and socioeconomic challenges. The applications are not developed by nor tested for these audiences. A re-focus has to occur. The adoption of test automation allows development teams to be more comprehensive in accessibility testing.
- Testing in production: Parity between development, integration, and production environments is lacking for most organizations. Testing that occurs prior to release is based on intuition and how we think users use our applications. The reality is always different.Fortunately, with the same powerful tooling available to the development world, it’s now possible to bring test automation to production environments. Testing in production usually relies on a limited set of tests that are unique from testing in development, and are based completely on actual use cases. Testing in production provides powerful results and feedback that further evolves testing strategies. Part of the test-in-production strategy often involves “canary releases” to small portions of the user base via beta programs. Instead of putting out new versions to the entire user base, they are released to a subset for continuous testing by that control group.
- More Buy-in: Organizations may have Fear Of Missing Out (FOMO) when it comes to competitors’ software, but not when it comes to serious and embarrassing application disasters. The goal of test automation is to release functionality users demand, and to avoid embarrassing software issues that get outed on social media or need to be addressed by the PR team. Public scrutiny motivates the entire organization – from the development team to the C-Suite – to focus on quality and protect brand reputation.
- Intelligence Stuff otherwise known as “Artificial Intelligence”:“Artificial intelligence” is one of my least favorite terms in tech lingo because the connotation is that machines are getting smarter and taking over. However, it is rarely used in the context of real-world problems and solutions. It’s completely valid, though, in the sense that test automation is getting smarter, more autonomous, and adaptable. In the testing world there are several places where this is happening.
- Automatic Test Generation: Bots are able interrogate applications, and explore a multitude of variables and user conditions. This technology produces intelligence that can be used to automatically create very basic tests, and allow QE teams to focus on creating tests for more complex cases.
- Automatic Test Maintenance and Refinement: Machine learning (ML) is based on historical test data that can be used to identify tests that are no longer necessary, relevant, valuable, or comprehensive enough. This can assist quality teams in culling their test suite and improving it.
- Service Virtualization / Mocks: As I said above, parity between test environments and production is lacking. This is largely due to the challenge of accurately mimicking user flows and user data. Service Virtualization technology, as well as the creation of increasingly better application mocks, is a way to run more robust tests on an environment that better assimilates production.
If the future of test automation is just more of it, I’m happy, because even the unicorns in the world of software development still have a long way to go with application quality. They have the tool kit, but they need to expand it. For those who are just building the toolkit, now the opportunity to see real gains from a quality-driven development process is huge.