Artificial Intelligence is intelligence demonstrated by machines, something similar to the intelligence displayed by humans. It could be looked at as any device that perceives its environment and takes actions that maximizes its chances of success. AI is applied when a machine could acquire knowledge and understanding through learning or experience, similar to what humans associate with other humans.
Although it has been around for decades, we have seen a sudden increase in the widespread adoption of Artificial Intelligence in almost all the segments today. Machines are now learning faster than ever given the latest technological advancements. The computer can now easily analyze really huge amounts of data, form patterns with it and make effective connections by on its own with the help of some stipulated algorithms. Dr. Andrew Ng, a Stanford University professor, has even called AI as the “new electricity”. Like how electricity had revolutionized every industry when it was brought into widespread use about 100 years ago, AI is here now to disrupt every industry; be it education, transportation, BPO, and also the more critical sectors like healthcare and financial industry. Where we needed a lot of human resources to do certain work, could now be replaced with bots or programs, which could do the same way, if not better, in very short while.
So what are the ways in which one could adopt AI into software testing?
- Predicting Where The Issues could be
- Classifying the Issues Logged
- Debugging Issues
- Automatically testing the application without having to write any automation code
Go through old defect reports, code changes/repositories, log files, meta data, etc..to predict where an issue could occur or even preempt them before their occurrence. This is done using techniques like tokenization, entity recognition, stemming, etc.. which help achieve self-learning or self-healing.
By going over the past bug reports, we get to know where the most number of bugs have been, the source code logs tells us what piece of code has been last changed or more frequently changed, and with additional inputs like what part of the code is most complex, machine learning algorithms could help figure out where is it more likely to find the next set of bugs, given the new set of changes made.
This could be one of the more easier ones. By looking at the classifications of the existing issues logged, the system could assign the category of the issues. This could be extended to assign the priority, severity of the issue. One other area where this is used, is in classifying the production issues, before the Ops team gets to see them. This saves a lot of time of the Ops team in categorising and assigning the issue to the team.
Debugging The Issue:
Debugging could be difficult and very time consuming at times, although the fix as such might just take a couple of minutes. We could use AI algorithms to look at the issue and diagnose the line of code that is causing the issue. All that is left is to just look at the code that is causing the issue and make the required fix. Some of the algorithms have gone a step ahead and are capable of making the change in the code needed to fix the issue.
As testing increasingly moves towards greater automation, we may be turning over most of it to Artificial Intelligence (AI). This categorically implies that instead of manual testing done by humans, we are slowly moving towards a scenario where machines will take over writing and execution of test codes. With little human input, however, will be required to help machines ‘learn’ and improve themselves.
What does that mean to us, particularly Software Testers? Does that mean a lot of us would loose our jobs? Unfortunately, that might be the case in most of the cases, including Software Testing, unless we look at adopting newer ways of working. The other question that comes to mind is that if that would happen, then how far is it? I would say it would be an over exaggeration if I say engineers are going to start losing jobs overnight, but by looking at the pace at which AI is progressing today, I would say it is not very far; maybe we should start seeing a more widespread impact in the next two years or so.
Could it practically replace everything that a tester does, or would there be certain things that would need human intelligence? I would discuss these in another post of mine where I shall also talk about some of the ways in which companies around the world have started to use AI into software testing.