These days, we distinguish between two ways of testing: manual testing and automated testing. Automated testing is becoming ever more important. And why would anyone mind? With automated tests, test scenarios can be run more quickly, and the cost of manual testers can be reduced.
The topic of Artificial Intelligence (AI) is being considered more and more frequently in the field of quality assurance today. Is this the end of manual testing?
After all, we are currently developing software that is able to autonomously analyze programs and write corresponding test cases. Furthermore, AI-based test software can cover a much wider range using brute force than a manual tester ever could.
But before we continue to compare manual testing and testing with AI, we should take a look at the operating principles and limitations of AI.
In human beings, logical thinking is stimulated by the neural connections in our brains. The same concept is used in the attempts to develop AI. A neural network is constructed that can evolve on several levels and has several nodes.
As illustrated in the figure above, there are input and output nodes. The input nodes can, for example, be compared to the human eye. They react to a stimulus and process it in a hidden layer using various algorithms. The output nodes reflect the reaction to which the human responds. AI-based software processes information the same way.
The number of input and output nodes has to increase in proportion to the task of the AI-based software. The number of nodes and hidden layers reflects the complexity of the resulting algorithm. Obviously, as the number of nodes increases, the required processing power of the hardware increases as well. All nodes are not necessarily interconnected. You can group certain nodes for certain tasks by creating only a certain number of connections between the nodes. For example, the algorithms for seeing and hearing can be implemented separately at first and connected at a later point. Then, an incoming stimulus will cause a reaction.
We have built a neural network. And how does this network work? To put it simply, the input nodes signal “1” when they receive a stimulus and “0” when they do not. Each node multiplies this “1” or “0” by a certain factor. At the end, each output node gets a result, and the output node with the highest value triggers the desired reaction.
But where do the factors for the nodes in the hidden layer come from? This is the point where human involvement remains indispensable. AI can calculate numerous approaches and possibilities, but it does not know what is right or wrong. When a person sees a ball flying towards them, they would immediately react to what their eyes see by raising their arms and catching the ball. AI could of course do this too, but it could also do nothing, dodge, knock the ball away, or react in any number of different ways to the stimulus. AI first needs a person to tell it what reaction is correct in the respective situation. For this purpose, we predefine several situations for the AI-based software and tell it how to react to them. The AI-based software adjusts the factors of its nodes accordingly to develop an algorithm. In the next step, we present situations to the AI-based software that it has to react to on its own, while the human evaluates AI’s response to fine-tune the algorithm. Only then can the AI-based software work autonomously. This approach is called deep learning because it shapes the hidden layers of the neural network.
And this is the key point as to why automated testing cannot replace manual testers completely. The AI-based software must first be adapted to the respective software. The AI-based software itself does not know what the software is for or which reactions are correct.
First, the operable fields to be used by the AI-based software have to be defined. There is, of course, software that can search for all operable objects on the GUI and use them for testing. But this way, all possible combinations would be run using a brute-force search. Consequently, a tester would have to compile a blacklist and a whitelist. Or you can let the AI-based software run freely for several hours during which every variant of the setting check marks or countless text combinations in the name field are tried out. But focusing on the primary test objectives by means of restrictions would be more efficient. The AI-based software delivers all the results obtained in hours of testing, delivering them in the form of newly written test scenarios with a failed or passed state. Then, a tester is again needed to analyze which tests really constitute a software or user error. Furthermore, the test scenarios created by the AI-based software can then be stored during its autonomous testing and later reused for automated tests.
There are several companies today who offer this kind of AI software, e.g. Eggplant.io, Test.ai or Retest. In addition, almost half of all German software companies continually develop their QA department in the field of AI.
The World Quality Report summarizes the results of a global survey regarding application quality and testing methods. The current issue reports that AI is being used in the field of intelligent automation as the most important tool to improve quality assurance in the next two to three years.
I hope this blog post gives you some insight into testing with AI and shows that automation has been taking a great step forward thanks to AI. Still, that does not mean that manual testers are doomed to become extinct—no one can tell exactly what the future will bring.