How can Artificial Intelligence be applied to software testing?
I have been in the software testing industry for over 11 years now and I can say for sure that there are different ways people are using AI for software testing. This is especially true in the area of automated testing tools. Different vendors have been trying to tackle some of the common problems in test automation using AI. Some of them are-
Appvance uses AI to generate test cases based on user behavior but is not a fully AI based tool like Testim.io
Test.ai uses artificial intelligence to perform regression testing. It is helpful to get performance metrics on your app. It is more of an app monitoring tool than functional testing tool from my point of view
Functionize used machine learning for functional testing. It is very similar to other tools in the market in terms of its capabilities
The above are some of the popular tools out there in the market.
The trend seems to be going in the positive direction in terms of vendors trying to make testing more stable, simpler, smarter and getting everyone in the team involved in testing including non-technical people.
It will be just a matter of time that more solutions come up for software testing using AI
In large software with many actions and possible flows like web applications, enterprise software, etc, it is really hard and time taking to test out all possible scenarios via traditional approach. So, building a machine learning model is an interesting approach to solving this. A reinforcement learning system with an end goal to crash or make the software unresponsive can be tried.
There is research being done on this idea. You can take read this research paper which explores Reinforcement Learning as an approach to automated GUI robustness testing. Also, some companies like Appdiff trying to incorporate AI in software testing with mobile apps in context, but similar thinking can be reasonably extended to web apps.
An interesting thought is to use the software usage pattern to auto learn the tests to be conducted for future iterations of the software.