testing-automation

The new frontier of Automated Tests is Machine Learning

The long wave of Artificial Intelligence hits Testing Automation too

In the DevOps era, the discussion about the integration between the world of Dev (eloper) and Op (eration) s is often animated. The emphasis is almost always on automating builds, unit tests, releases. But in a context where development cycles become shorter and shorter, where releases are directly released in production, manual testing risks becoming a bottleneck. 

The hard life of testing to keep up with the pace of increasing complexity and change.

On the other hand, the automation of the tests, which prescribes both the development and release of scripts, should be rightfully included in the cycle. But since it’s not about new functionalities, it is taken for granted, often ending up outside the plans. The result is that it becomes increasingly difficult to keep automation scripts aligned with application releases, and an unaligned test is an unusable test. Furthermore, we should not forget that all the phases of the SDLC (Software Development Life Cycle) should be tested, therefore it follows that whenever we talk about Continuous Development and Continuous Integration, we should introduce the concept of Continuous Testing.

This image has an empty alt attribute; its file name is continuous_testing_loop-1024x462.png
Continuous Testing in the DevOps

The message here is that at the foundation of the concept of testing automation lies a problem: in order to create them we need engineers. The tools for testing automation are so many now that there are also Anaconda-style distributions claiming to integrate them. The situation now in QA is that of a sort of smoky border of DevOps, where complicated test cases are developed with heterogeneous sets of tools such as Cucumber , Jenkins , and even ad-hoc scripting languages like Gherkin . The problem now is that we need developers to test (not just develop) new code.

But if the DevOps has the mission to integrate the whole development cycle, how is it possible that testing has become another phase of development? The reason lies in the fact that the frameworks and tools used (first of all Selenium ), do not have any kind of intelligence within them. It follows that, although they are very effective at automating, they are only good for a developer.

The “Third Wave”: that is, Artificial Intelligence and Continuous Testing

Today most of the GUI (Graphical User Interfaces) are developed with Javascript and Node.js, and automated tests are mainly implemented with frameworks like Selenium and Appium. The problem with those approaches is that they require a large amount of scripting, they are often difficult to maintain, and it is hard to keep them updated with the continuous releases and the changes that come with them.

The introduction of Machine Learning in automated testing introduces some crucial points:

  • Automatic test generation: the basic principle is not different from “recording” with Selenium, with the difference that in this case, the tool generates executable functional test steps. Some tools such as Functionize also make it possible to generate tests that can be run from test books written in natural language, using NLP technology.
  • Self-Healing: one of the most innovative concepts of these technologies is the ability to autonomously adapt the tests to the interface changes. In the most difficult cases (eg: changing both the position and the label of a  button) allow the user to change the behavior interactively, sometimes even with a simple click
  • No scripting: the test is generated in a transparent way, without the need to develop any code.
  • Cross-browser and cross-device: the latest generation tools allow us to create tests running on different platforms, which is now a must-have requirement.
  • Zero or minimal maintenance: thanks to automatic generation and self-healing, it becomes possible to create tests that keep up with the developments and releases without bloodshed.

The main players

Functionize

Functionize presents itself as the “first completely autonomous testing platform”. The most interesting feature is the autonomous creation of tests starting from a test list written in natural language, through NLP. The tests are created with a lot of clickable screenshots, the platform “adapts” to the application through Machine Learning algorithms and becomes more robust to layout changes as the number of executions grows. You can see a presentation of the most interesting features here below.

Applitools

The main feature they claim is “Visual Validation Testing”, which is the ability to validate entire layouts by emulating human visual processes, without any need for calibration or configuration. The system uses adaptive AI algorithms that would be able to identify potential GUI bugs within certain confidence levels, without explicitly calling the code elements.

Image result for applitools
Applitools visual validation

Another interesting claim is to be able to integrate the platform with any existing tests, thanks to a particularly broad compatibility of supported platforms and frameworks .

Tricentis Tosca

“Test automation @ DevOps speed” is Tricentis’ motto, in which Tosca stands out for its testing automation and Flood for performance testing.

Tricentis Tosca

Others

Resources

How to use the AI ​​Test Automation (qainfotech)

Reinvent Testing to Galvanize Digital Transformation (devops.com)

8 Innovative AI Test Automation Tools for the Future: The Third Wave (joecolantonio.com)

Marlabs and Functionize Partners to Transform Software Testing (marlabs)

How Machine Learning and AI Bring in New Dimension to Software Testing (towardsdatascience.com)

Artificial Intelligence – New Buzz in Automation Testing (xoriant)

Leveraging AI in Quality Assurance (infosys)

McKinsey: AI, jobs, and workforce automation (zdnet)

Top 10 Automation Testing Tools in 2018 (guru99)


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.