Role of Machine Learning and Artificial Intelligence in Software Quality Assurance
Software Quality Assurance has been an integral part of the Software Development Lifecycle to ensure that the software meets the customer's expectations. Early on, Manual Testing was deemed sufficient considering the small scope of the software being made. But as time progressed and the scope of the applications became more complex, the need for automating the testing process became more necessary. The automation approach being employed also depends of the development strategy being employed.
With the Agile methodology being adapted more rapidly in the early 2000's and the need for quick releasing, various QA automation frameworks were introduced which helped to carry the regression testing of large-scale applications without much involvement of the QA resource thus freeing his/ her time for other tasks.
Fig 1 - Evolution of Quality Management Methods
Currently, with the scale of applications expanding even further with each passing day, there is a need to automate even the basic tasks of the QA testing resource i.e. design of test cases for a new application. This is one of the areas where Artificial Intelligence and Machine Learning can play a pivotal role.
To start off, Machine Learning algorithms can be employed to learn the basic flow of an application. For e.g., for a shopping cart application, with multiple data sets it can be learnt that the flow of e-commerce application is Login module > Search product module > Checkout module > Payment module. Having learnt this basic flow, algorithms can be used to define test cases independently containing both positive and negative flows for the application.
As an example, for a login page the machine learning algorithms can design and execute cases for the following given it has the correct dataset of login and password:
i) Correct username & password [Positive flow]
ii) Incorrect username & correct password [Negative flow]
iii) Correct username & incorrect password [Negative flow]
iv) Incorrect username & incorrect password [Negative flow]
By automating redundant test cases and manual tests, testers can, in turn, focus more on making data-driven connections and decisions. Ultimately, risk-based automation assists users in determining which tests they need to run to get the greatest coverage when limited time to test is a critical factor. With the amalgamation of AI in test creation, execution, and data analysis, testers can permanently do away with the need to update test cases manually continually and identify controls, spot links between defects and components in a far more effective manner.
Fig 2 - Incorporation of AI is what updates the QA process to its autonomous software testing stage.