Test Automation
By: Chanaka Madushan Herath
Tags: Software Testing, Test Automation, Software Engineering

Automation is usage of tools in repetitive energy consuming tasks in order to reduce human intervention and to increase efficiency. In software testing, test automation is the use of special software to control the execution of tests and the comparison of actual outcomes with predicted outcomes.

Test automation has many benefits such as speeding up the test execution, avoiding human errors, availability of an attended execution, testing what is manually impossible, improvement of efficiency of testing and cost, improving team morale, having more time for exploratory testing.

However, test automation has disadvantages too. But with the applicable solutions, they can be balanced.

An automated check only checks what has been programmed to check. The reason for this is because the automated check was not coded to “look” for those failures. The solution is to ensure the designing of good test scenarios before automating them. An automated check is only as good as the design of the test. Also complement automated checks with manual / exploratory testing.

Automated checks can fail due to many factors. If automated checks keep failing due to issues other than genuine bugs, they can raise false alarms. Solution is to use stubs Where possible / applicable. Stubs overcome issues with connectivity or changes in the 3rd party systems. Therefore, the automated checks would be independent of any downstream failures.

Many people mistake “Test Automation’’ with Testing. Testing is not just executing a set of predefined test steps and comparing the actual results with expected results. This is the job of automated checks. To properly test an application, human intelligence is always required. It is important to understand that for a successful delivery of a project you require both automated and manual testing.

Like that applicable solutions have to be applied for test automation for a successful usage.

Automated testing can be divided into many types. They are code-driven (Unit Test/TDD), GUI (UI object property based, image recognition based), API (Restful APIs, SOAP), mobile test automation (android, IOS/Hybrid)

Software testing pyramid

The agile test automation pyramid is a graphical strategy guide for implementing automated software testing. In automated testing, software tools execute pre-scripted tests on a software application or program component to ensure it is functional. Automating testing makes it possible to run tests quickly and repeatedly and the software involved can also provide reports and compare results. Automation helps deal with problems resulting from manual testing, including missed deadlines, quality issues and human error. The order of testing can also impact its success and that of the agile development project as a whole.

Frameworks

A framework is a supporting structure around which something can be built. Increasing reusability, increasing maintainability, reducing complexity, improved reporting, improved error handling, improved productivity are some of the benefits of using frameworks.

Data driven framework

Data-driven is a test automation framework which stores test data in a table or spread spreadsheet format. In Data-driven test automation framework, input data can be stored in single or multiple data sources like xls, XML, csv, and databases.

Keyword driven framework

Keyword Driven Testing is a scripting technique that uses data files to contain the keywords related to the application being tested. These keywords describe the set of actions that is required to perform a specific step.

Page object design

Page Object Model (POM) is a design pattern, popularly used in test automation that creates Object Repository for web UI elements. The advantage of the model is that it reduces code duplication and improves test maintenance.

ATDD

Acceptance test–driven development (ATDD) is a development methodology based on communication between the business customers, the developers, and the testers. ATDD encompasses many of the same practices as specification by example, behavior-driven development (BDD), example-driven development (EDD), and support-driven development also called story test–driven development (SDD). All these processes aid developers and testers in understanding the customer’s needs prior to implementation and allow customers to be able to converse in their own domain language.

In order to gain the maximum ROI, scope of automation, selection of the right automation tool, choosing appropriate framework, scripting standards, measure metrics are some of things to be considered.

Test Automation Tools

Tool selection is one of biggest challenges to be tackled before going for automation. First, Identify the requirements, explore various tools and its capabilities, set the expectation from the tool and go for a Proof of Concept. There are tons of Functional and Regression Testing Tools available in the market. Here are some commonly used tools:

LambdaTest TestComplete QMetry Automation Studio TestProject Katalon Studio Selenium Subject7 Appium Micro Focus UFT Test Studio

Choosing appropriate framework.

To help determine which framework is right for your organization, consider about following questions.

Consider the application and the technology involved. How was the application built? What is the user experience like?

Think about testing requirements. Does the application have a very complex workflow?

Determine license cost of the tool. What costs are associated with each framework?

Evaluate the skill sets available within your organization. What skills does your team already have? Is there a team that could plug into one of the frameworks?

Scripting Standards

It’s important to look at the entire scope of your automation project when you create standards for test automation. If you overlook something while drafting the standards, it can be expensive to change standards after your team has created several thousand lines of code. Here is a list of some of the things you should consider when creating standards for test automation:

1. Test Tools.

2. Libraries

3. Logging

4. Error Handling.

5. Environment.

6. Test Harnesses so on.

Selenium

Selenium is a free (open-source) automated testing framework used to validate web applications across different browsers and platforms. It is basically used to automate the testing across various web browsers. It supports various browsers like Chrome, Mozilla, Firefox, Safari, and IE. It provides a single interface that lets you write test scripts in programming languages like Ruby, Java, NodeJS, PHP, Perl, Python, and C#, among others. Selenium Software is not just a single tool but a suite of software, each piece catering to different Selenium QA testing needs of an organization.

The entire Selenium Software Testing Suite is comprised of four components: Selenium Integrated Development Environment (IDE), Selenium Remote Control (RC), WebDriver, Selenium Grid. Selenium IDE, a Firefox add-on that you can only use in creating relatively simple test cases and test suites. Selenium Remote Control, also known as Selenium 1, which is the first Selenium tool that allowed users to use programming languages in creating complex tests. WebDriver, the newer breakthrough that allows your test scripts to communicate directly to the browser, thereby controlling it from the OS level. Selenium Grid is also a tool that is used with Selenium RC to execute parallel tests across different browsers and operating systems. Selenium RC and WebDriver was merged to form Selenium 2. Selenium is more advantageous than QTP in terms of costs and flexibility. It also allows you to run tests in parallel, unlike in QTP where you are only allowed to run tests sequentially.