Is Our Innovation in Software Testing Keeping Up with Technology?
About fifteen years ago I asserted that we were producing more software than we could test. I believe that’s truer today than ever. Software is everywhere and in everything, and its care and feeding is a social responsibility.
The software testing role is a critical element in assuring the health of our ubiquitous "the Internet is code" platform. Without effective testing, we risk something going wrong with software that has a significant impact to society. Therefore, it’s important to question whether our innovation in software testing is keeping pace with our software innovation.
We have made advances in context-driven testing; test-driven, acceptance test-driven, and behavior-driven development; exploratory testing; crowdsourced testing; virtualization; and implementing open source testing tools and working with tool vendors to advance computer-aided software testing capabilities. There are also advancements in the software engineering ecosystem, with agile, DevOps, new programming languages, and better development and deployment tools.
These new software development and testing approaches and tools are yielding positive results. But are they enough to reduce the societal risks of our now daily, even hourly, worldwide software deployments?
We’re evolving, but I think there is a lack of revolutionary advances—truly breakthrough ideas that radically change the game of testing and launch us into a totally different mindset of how testing is done. I'm talking about the creation and discovery of transformative ideas in software testing that will move us forward not just one step, but multiple steps.
So, how can we go about innovating in software testing?
First, we must intentionally make time: reflection time, time in the lab trying things and observing, and time to allow our creative side to surface. We need to conduct more experiments, such as A/B testing of testing techniques, approaches, and tools.
One goldmine for innovation is combining and borrowing techniques. Applying existing approaches and technology—even from outside of our industry—in new ways can create opportunities for test design.
And perhaps most importantly, we must accelerate our failure rate—and, therefore, our learning rate.
I'm as guilty as the next person in not making time for test innovation, but here are a few things I dream about:
- Better leveraging artificial intelligence and learning software to test mobile, cloud, web, and the Internet of Things
- A repository of open source test cases shared across the global testing community
- A means of sharing best practices, techniques, failures, and research on a global scale, like what is being done for cancer research
- Self-diagnosing and alerting software, like we have in many hardware components
- Smart testing robots and automated processes deployed across "the Internet is code" platform
- Using big data to ratchet up the analysis of our user experience information to more effectively focus our testing
Innovation is not just about generating lots of ideas; it's also about engaging more innovators. Get started now by intentionally making time for becoming an innovator.