By Eran Kinsbruner, DevOps Chief Evangelist, Perforce Software
Software development has come a long way in recent years, with DevOps, continuous delivery/continuous integration pipelines, increased automation and more ‘X-as-code’ helping to keep up with the demand to create ever larger volumes of increasingly complex code. However, the need to test it thoroughly is just as critical as creating that code. Otherwise, the velocity gains are negated by the risk of flaws, which can cause performance issues or even be a backdoor for cyberattacks and data breaches. Clearly, in the financial services world, secure software has to be a priority for regulatory requirements and customer satisfaction.
This is why many banks and other financial firms are among the earliest adopters of one of the latest trends in software testing: artificial intelligence (AI) and machine learning (ML). Already found in other parts of the software development lifecycle and DevOps stack, AI and ML can help address a shortage of skilled testers, support better decision making, and help organisations keep up with the ever-escalating volume, complexity and frequency of app releases.
While there will always be a requirement for human involvement in code creation and testing, many routine tasks can be handled automatically and reduce manual errors. Also, AI and ML are used in software development processes in the broadest sense of testing, including reviewing and analysing code while it is being developed. This also supports the trend towards shift-left, whereby testing happens earlier in the software development lifecycle (and throughout the entire lifecycle). Here are six ways AI and ML make a difference in software development.
1 Automated code reviews and code analysis
These already include AI and ML features by analysing thought data sets (the inputs to an ML algorithm, based on which the machine acts and responds), reducing human intervention. In addition, code management and collaboration tools can be used to support code reviews, reduce the amount of ‘noise’ and identify the highest priority defects.
Similarly, automated code analysis tools can learn from repositories filled with millions of lines of code. These tools can understand the intent of the code, make a note of changes being made by developers, and offer suggestions: literally on every line of code analysed.
Other tools take a different approach, more focused on performance. After analysing millions of code reviews from open source projects, code performance enabled by AI/ML tools focus on performance to find the most expensive lines of code that could damage application response time. These tools, which can be integrated with CI/CD pipelines at code review and application monitoring stages, can unearth issues such as resource leaks, potential concurrency race conditions and wasted CPU cycles.
2 Self-healing tests
Code creation using AI, ML and self-healing test code and maintenance has become a reality recently. They make an essential difference because they overcome the classic dilemma: accept that tests can create bottlenecks leading to delayed projects or risk flaky test automation that ultimately causes a project to go off track. By identifying constant changes being made to apps under tests (and the elements used within the test), smart technologies using AI and ML adjust tests and make them more stable and reliable.
3 Low-code/no-code tools
One of the biggest challenges in the entire world of software creation right now is the massive lack of skills. Unfortunately, it is not just developers who are in high demand: so are professional testers. This is why low-code/no-code testing is becoming increasingly popular, because tests can be automatically generated, with little or no code needing to be written. They achieve this by learning the app flows, screens and other elements, with self-healing between each test run. In turn, developers have more time to focus on other tasks, and more people can become involved in test processes, even people without software training.
4 Robotic process automation
RPA is one of the hottest topics in the software world right now, using AI and ML to automate many manual, time-consuming, error-prone, and hard-to-automate processes within large organisations. Many companies are implementing RPA to automate high-frequency transactional and rules-based processes that are better handled by bots, because of the consistency in data entry by the unattended automation.
Some of the earliest RPA use cases have involved automating back office processes. For example, think of a customer who completes an insurance claim online, which would traditionally require an employee to manually input information into a separate internal claims processing system. Instead, a bot can take the information from one system, extract relevant metadata, and then connect to the UI of the claims system, and enter the captured data automatically. Most importantly, this work does not require deep technical integration between the systems.
RPA bots uses a variety of technologies, including Optical Character Recognition (OCR) to identify text on a screen, interactable objects, images, etc. RPA vendors provide record-and-replay interfaces to allow employees to capture critical flows within a user interface.
Another use case for RPA is ATMs, where there is a great deal of data being transferred between the machines and back-end systems. In a case study, a bot was able to extract and compare data records for multiple systems (web and desktop) to improve the processing speed of data records and reduce the time needed to handle data.
5 Test impact analysis tools
When test execution is completed, AL and ML test impact analysis (TIA) tools can guide decision-makers on the next stage, for instance, which tests should be used on the following software build, or which areas are not covered and therefore need to be addressed. Furthermore, under the same category of testing, AI and ML algorithms can identify root cause analysis of failures based on thought test data and hence speed up mean time to resolution (MTTR).
6 AIOps and Observability
Last but not least, AI and ML have spearheaded the emergence of AIOps, enabling very sophisticated monitoring, analysis and predictions. Solutions designed for AIOps cover intelligent application performance monitoring (APM), IT infrastructure monitoring (ITIM), and IT service monitoring (ITSM). Together, these tools can build a comprehensive production and operational insights layer. In turn, teams can focus on determining the service health of an application while gaining control and visibility over production data. Once again, MTTR time can be expedited with accelerated ticket resolution acceleration, large log file analysis, and rapid root cause identification. The risk of downtime is also reduced (through predictive alerting).
There will always be a need for human engineering. As recent times have shown, developers and testers are in greater demand than ever before, and there is no sign of that trend changing any time soon. Automated AI/ML-based testing, monitoring and analysis tools and processes can help make their jobs easier while also contributing to creating more robust and secure financial services software.