Download - Artificial Intelligence in Software Testingqaistc.com/2017/wp-content/uploads/2017/09/stc-2017-ai...Artificial intelligence (AI), defined as intelligence exhibited by machines and

Transcript

Pradeepa Lingarajashetty - Senior Software Engineer - TestingArpan Bandyopadhyay - Software Engineer – Testing

Pratap Mysore Narasimharaju – Test Automation Architect

1

Artificial Intelligence in Software Testing

CenturyLink India Private Ltd.

2

Abstract

Artificial intelligence (AI), defined as intelligence exhibited by machines and is creeping into our everyday lives through technology. It might seem like the realm of science fiction, but we are already using it like in online customer support, virtual personal assistants, video games, smart cars etc.., Today AI has several applications and let us see if AI can be adapted in software test automation.

Software test automation, is the act of conducting specific tests via automation as opposed to conducting them manually. Test scripts are developed in a tool-specific language, which non-technical users and business stakeholders do not understand.

This paper mainly focuses on embedding Artificial intelligence concepts like problem solving capabilities by implementing find the flow in IntelliJ, proactive code quality check by having SonarLint and speech recognition by building a capability to trigger the scripts through speech in software test automation for an effective non technical stakeholders engagement.

3

Artificial Intelligence

Artificial Intelligence is a way of making a computer, a computer-controlled robot, or a software think intelligently, in the similar manner the intelligent humans think. The goal of the Artificial intelligence is to create expert systems which exhibit intelligent behavior, learn, demonstrate and show problem solving capabilities.

Artificial Intelligence is dominant in various fields and they are referred as applications of AI which are listed below,

• Speech recognition

• Learning

• Planning

• Problem solving

• Expert System – a Knowledge Engineer

4

Software Test Automation and Different levels of

Testing

Software test automation is the act of conductingspecific tests via automation as opposed to conducting them manually. There are four main stages of testing that need to be completed before a program can be cleared for use. While automated test cases can be made use in all the level of test phases, acceptance testing pose a technical challenge, as the stakeholders involved in this phase are non-technical.

5

Applications of Artificial Intelligence and

Software test automation

Problem

Solving

Expert

System

Speech

Recognition

AI

Speech

triggers

script

IntelliJ

SonarLint

6

Expert System and SonarLint

An expert system (ES) is a knowledge-based system that

employs knowledge about its application domain and uses an inferencing (reason) procedure to solve problems that would otherwise require human competence or expertise.

SonarLint is an IDE plugin that acts as a expert system which does proactive code quality checks and it provides on-the-fly feedback to developers/testers on new bugs and quality issues injected into Java, JavaScript, Python and PHP code.

It supports several IDEs and languages like below,

IDE Languages

Visual Studio 2015 and Up C#, VB.NET, JavaScript

Visual Studio Code JavaScript, PHP, Python

Eclipse Java, JavaScript, PHP

IntelliJ IDEA Java, JavaScript, PHP

7

Functionality of SonarLintOnce SonarLint is installed in the IDE, it can triggered by clicking on

analyse option on a Java code. Here we have taken Java example and the IDE

used is Eclipse.

SonarLint scans code for bugs, vulnerabilities and quality issues and

reports to the user as shown below, so user can take appropriate action. Below is

the sample report of Sonar Lint,

8

SonarLint Report Interpretation and Benefits

• It indicates a minor warning• It indicates a major warning• It indicates a critical warning• It indicates a blocker

Benefits

• Provides Immediate feedback and solutions• Improves code maintainability

� Code Duplication� Naming conventions� Complexity

• Improves security

9

Problem Solving Capabilities and IntelliJ

In the part of artificial intelligence that deals with problem solving,

encompasses a number of techniques known as algorithms, heuristics, root cause analysis, etc. once of the best of way doing the root cause analysis is by modeling the problem itself. May be by having a flow of events in a process to narrow down to the issue.

Similarly in software testing, it is important to know the flow of events when running automated scripts, especially for novice user. having an automated flow building tool helps the user to understand the different attributes involved in the flow and the failure part for debugging purpose.

This can be achieved by having flow plug in intelliJ. It has below advantages,

• Run application with flow• Record executions• Visualize the flow

10

Find the Flow with intelliJ

We can have a simple java project with flow plug-in installed in intelliJ to understand how it works. Below is the structure of Java project,

Clicking on ‘Run with flow’ ( )option to trigger the run which gives an URL to visualize the flow after successful test run.

11

Visualize the test flow

The test flow can be visualized by using the URL in the test results. The flow gives information at different levels like package, class and methods. User can explore each of it to get more details.

12

Speech Recognition and Triggering Automation

Script through speechSpeech recognition means understanding voice by the computer

and performing any required task. It is the inter-disciplinary sub-field of computational linguistics that develops methodologies and technologies that enables the recognition and translation of spoken language into text by computers.

The same concept can be applied in software test automation, where user who wants to execute scripts can trigger through voice commands. It has below benefits,

• Business user would become a new stakeholder and acceptance testing can be effectively conducted.

• For any other user, it demands zero set ups in the system to execute scripts.

• It can be effectively used in unit/functional/intersystem/end to end testing

13

Implementation

The idea is to have a dedicated mail box to monitor automation requests. Microsoft provides exchange web services APIs, which can be used to interact with the mailbox. User or whoever wants to execute scripts, has to send an email in predefined format to a mail box which triggers the script.

We can use readEmails() and sendEmails() methods for interaction with the user.

14

Implementation Continued…

After collecting the call in number from the user, we provideoptions to the user to choose what needs to be executed. This can bedone using JTAPIs. Further interaction collects required details to executescripts of the application. We use the same mail box to respond testresults to the user. Below the flow for better understanding.

15

Conclusion

In this Paper we proposed an idea of embedding ArtificialIntelligence in software test automation, there by helping a noviceautomation tester to incorporate effective coding standards, securitymethods by using an expert system called SonarLint. Our focus was alsomore towards engaging non-stakeholders and business users withsoftware test automation, to help out their day to day activities. Byadapting flow plug in and speech recognition approached, job of thesestake holders made very much easy. In addition to acceptance testing,Triggering scripts through speech has several benefits in end to endtesting of a scenario which spans over multiple applications there byincreasing the stakeholder base.

16

References & Appendix

https://www.techopedia.com/definition/190/artificial-intelligence-ai

https://www.tutorialspoint.com/artificial_intelligence/artificial_intelligence_research_areas.htm

http://www.sonarlint.org/eclipse/

http://findtheflow.io/docs/doc_intellij.html#_how_to_run_an_application_with_flow_from_intellij

http://www.oracle.com/technetwork/java/jtapi-136088.html#

17

Author1 BiographyPradeep is a senior software engineer with CenturyLink India Private Ltd.

He has an affinity towards the Analytical and problem solving skill and believes in

continuous practice, improvement in process, learning emerging testing concepts.

challenges of non technical stakeholders and business users in engaging

themselves in software test automation lead him to come up with this paper.

Author2 BiographyArpan is an enthusiastic Software Engineer-Testing who believes in

providing comprehensive software testing solutions that could help in overall

quality assurance. Working in an agile environment and having experience of 3

yrs. Interested in learning emerging concepts in testing.

Co-Author BiographyPratap Mysore Narasimha Raju working in CenturyLink in the capacity of

Test Automation Architect and handling a team of 15 members. A forward thinking,

innovative, capable and committed test Project lead with a proven ability to build

self sustaining high skill eco system, co-ordinate and work to define testing

methodologies within a structured environment. Has been following and

participating in STC since 2010.

18

Thank You!