The evolution of technology — and software with it— has marched forward with incredible speed over the past few decades. In just the past ten years, we’ve witnessed a complete paradigm shift from desktop to the web, and now from the web to mobile and cloud. These changes have brought greater agility, speed, and functionality, all supported by large volumes of data being transferred daily in the software industry. In short, the IT world is continuously evolving.
Software Testing is no exception. Innovation is here and it’s challenging QA Engineers like us to test applications with increasingly complex architectures — demanding that we create new and better ways to assure software quality. This is where AI testing enters the picture.
When you first hear about artificial intelligence, it’s hard not to picture a robot in human shape, programmed with Isaac Asimov’s 3 laws, with complex algorithms developed to accomplish difficult tasks. The truth is that AI is more than that, and can be applied to many fields — including testing.
AI and AI Testing
So, what is AI? It is the simulation of human intelligence processes by machines, especially computer systems. These processes include 3 aspects:
- Learning: being able to acquire new information and rules.
- Reasoning: being capable of using the rules to arrive at conclusions and make decisions.
- Self-correction: self-improving, acquiring the ability to make decisions more and more accurately.
So basically, we have an algorithm that is prepared to learn by applying programmed rules to a set of data. The more the algorithm learns, the more precise its conclusions will be. There are many techniques for leveraging AI and it will take more than one post to explain every one of them. So, I would like to focus on what is most often used for testing: machine learning. This concept refers to systems that learn automatically. By learning, we mean they can identify complex patterns in millions of data (this is why machine learning and big data just go together so nicely!). The machine that really learns is an algorithm that analyzes the data and draws conclusions to predict future behaviors. “Automatically”, in this context, implies that these systems improve autonomously over time, without human intervention.
Amidst all this, what is AI testing? Well, AI testing is an emerging field, aimed at the development of AI systems to test software. In other words, it is software developed using artificial intelligence with the purpose of testing other software applications, learning and improving in the process. Imagine all the possibilities…
What can AI testing do for you?
AI can be applied to testing in many ways. I would like to highlight the three listed below:
- Identification of potential problem areas using machine learning, the algorithm will exploit the data created for testing purposes and generated during testing execution: issues, test cases, logs, etc. The analysis will serve to identify patterns and predict the occurrence of a potential incident.
- The generation of test cases automatically, based on existing information about the system and expected behavior. The system will be programmed to learn about itself, to grow itself and to perform self-healing.
- Development of an automated testing suite, capable of adapting to changes. When we work on testing automation, creating software to test software, we create locators to identify the elements on the page that we want to test. It may be a textbox, a button, a drop-down list, or another type of element. And then we apply an action to that element, checking the result to see if the applications behave as expected. If the ID (or the method used for the locator) changes, we need to update the test because otherwise, it will break. But not if we are using AI testing because it introduces the concept of dynamic locators, where the test will be able to learn and adapt to that change, thus making maintenance no longer be necessary.
And what makes it even better is that it can be useful for any kind of application, regardless of technology and the line of work.
The benefits
The benefits of AI testing are many. First of all, you will significantly reduce the time dedicated to maintaining healthy automated tests. Your testing suite will be able to adapt to changes in the UI without your having to make any effort related to the code of your tests.
By reducing time, you will also be reducing money, since that time can be used to perform other tasks. QA engineers will be able to concentrate on creating new tests instead of updating the existing ones, improving productivity, and making regression testing suites more stable and solid.
About the challenges…
Implementing AI in testing is not a simple thing, and we must overcome many challenges at almost every step of the way. Those challenges include:
- Huge volumes of collected data present storage and analytics challenges.
- Human bias can arise in training and testing data sets.
- Lack of knowledge.
The future and more to come
Some people view the concept of software testing as a repetitive activity, where the QA engineer designs a test and executes it over and over. And maybe it was that way at the beginning. But now the QA Engineer does much more than that. The QA engineer is the person responsible for choosing the most appropriate strategy, tools and techniques to assure quality, taking into account the specific characteristics of each project and project team. And there are plenty of choices out there — some of them well known and some others that are still emerging, such as AI testing.
AI testing can have a huge impact on software testing, since AI makes testing faster and far more efficient. So, be prepared for the future and take a look at what AI testing can do for you. There are so many opportunities there. Just think about what it would be like to test an AI app using AI testing! We better leave that for the next post.