"Maybe the only significant difference between a really smart simulation and a human being was the noise they made when you punched them.” - Terry Prachett ,The Long Earth
I recently had the opportunity to visit some of the world’s premier automobile manufacturers. It was insightful to understand how they use the data that a car generates along with machine learning and artificial intelligence to make intelligent decisions that lies behind connected cars.
To me software testing is very similar. Testing is a critical but a very expensive activity, more so in the connected world .Exhaustive testing is impractical due to time and resource constraints.
What if there was one a mechanism to intelligently derive areas that one should test and secondly identify repetitive patterns based on data that could be automated. Enter artificial intelligence and machine learning. Whether you are doing manual or automated testing, it is simply about inputs and expected outputs in the form of validation steps. In combining machine learning (inputs and outputs) with analytics (behaviors) to facilitate decision making, you have the power to unlock the patterns in this data, drive automation and improve testing efficiencies
Here are my top six areas where QA teams would benefit from leveraging artificial intelligence in software testing:
- Behavioral patterns in application testing: Mechanism to use monitors, for example IOT sensors, to generate behavioral patterns by geography, devices and demographics as inputs to build test suites.
- Social media analytics: Mechanism to analyze data from social media to build trends by demographics; forming the basis of test suites.
- Defect analysis: Mechanism to mine defects and define test suites which find defects and application areas most prone to defects; assisting the tester in making intelligent decisions about test coverage and test suite optimization at a rapid pace.
- Estimation and efficiency analysis: Mine test management tool data for tester productivity such as test case creation and test execution to automate the decision making process on when to release and when to start testing.
- Nonfunctional analytics: Analyzing operational logs to determine performance SLA's and security vulnerabilities which would form the basis of performance and security testing.
- Machine learning test programs to generate test data: Consider a scenario where a machine learning algorithm is devised with a “teaching set” of data to create rules then asked to use those rules to identify valid test data from production data. For example, you can create a software test data generator and input a teaching set of flat files of data, some of which say, “this is a valid input” based on contents of flat file sequences and some of which say, “this is not a valid input.” Then you could import feeds from production, and the test data generator could parse the inputs based on the rules that it has learnt to create valid test data.
Artificial Intelligence and machine learning will naturally aid automation. It will allow the tester to automate the repetitive part and focus on the logical, creative and reasoning part which will be critical in the inter-connected world.