AI and the future of software testing

25 October 2016
Jedrzej Osinski
Frink_Cognifide_2016_HeaderImages_0117

woman-506322_960_720

Whenever people discuss the future of civilisation, sooner or later commonplace topics such as politics, the world economy and fashion are left behind in favour of two words that speak volumes to our imaginations, hopes and fears. Artificial Intelligence!

Whatever our opinion is, we need to accept the fact that AI techniques will fully dominate IT within the next two decades. The recent “Partnership on AI”,  a joint initiative of world software giants (Amazon, Google, Facebook, IBM and Microsoft) is just one of the many signs that serve to confirm this.

Let’s define the concept of artificial intelligence itself. We usually split it into two different categories. Firstly, weak AI, emulates single human competencies, such as letter recognition or voice generation. Weak AI covers all of the current applications that we refer to as AI applications. On the other hand, strong AI refers to systems performing creative activities - spontaneously, without any request - characterised by consciousness, feelings or self-awareness. They don’t exist yet but it is highly probable that they will appear within our lifetime...

Weak AI is used in various scenarios and different techniques are successfully implemented across all aspects of our life. Software testing one area in which some (or even most) of a human tester’s activities may be sooner or later automated.

Artificial neural networks are among the most popular techniques in testing; the key element of these mechanisms is an artificial neuron whose structure is biologically inspired (by the research on human brain structure). By teaching such applications, using examples as patterns, there has been quite a lot of success in OCR, voice recognition, medical diagnostics, etc. Similarly it could be applied to GUI visual testing (e.g. elements relative position verification) and bugs/memory usage/traffic density or cross-module distribution check.


Genetic algorithms are inspired by Darwin’s theory according to which populations constantly evolve so that every generation is better equipped to live in a specific environment. In a similar way, systems can iteratively modify data, making them better suited to actual user needs. Currently used in maths modelling or equipment design these techniques are easy to apply for automated tests and constant modification that could prevent pesticide paradox (running the same testing scripts all the time makes us unable to find new bugs in a system).

okladka-testowanie-w-praktyce

There are many more techniques and potential applications in software testing. If you find this topic interesting or inspiring then definitely check my chapter in “Testowanie w praktyce. Studium przypadku” (“Testing in practice. Case studies”) - a book in Polish publish by PWN (Polish Science Publishing House) which will appear in bookstores this November. The book is also a unique collection of project stories provided by real testers from some of the world’s largest companies. They are a highly valuable set of lessons learned around the QA community.

 

If you don’t happen to speak Polish - don’t feel left out. Feel free to follow my English Twitter feed @dr_hawaii where I share my thoughts around artificial intelligence, IT and a bit of positive thinking.

 

One more thing. All of this may make you feel uncomfortable about your future career. Will AI replace us and make us all unemployed? Potentially yes, but there is one way to postpone this. When generating test cases do not act automatically, according to scripts and checklist. Instead, test against the rules, break stereotypes, cross standards, use your creativity and intuition. Paradoxically, the less rational you are the higher chance you have of surviving.