7 Essential steps To Design An Effective Test Automation Framework
Technical Feed
Ahamed Yaseen July 31, 2019

What is a Framework?

A framework is composed of a sequence of tools and applications that are intended to improve the test efficiency for QA professionals. The testing frameworks are a vital part of every successful automated testing process. They decrease maintenance expenses and testing trials and will implement a higher ROI for analysis teams looking to optimize their development processes.

Below are the key benefits of creating an automation framework:

  • Coding standards will be well maintained across the framework, library and test cases.
  • The code can be reused across the team members
  • It can increase the quality, speed, workflow and accuracy of test cases.

Important Things To Remember Before Writing An Automation Framework

Automation Framework

Before writing the framework, people should understand the test automation’s basic requirements and flows. This requirement is significant because it can prevent designers from designing a defective architecture for the framework. 

The test automation framework should be,

  •  Reliable
  •  Code reusable
  •  Extendable

How To Design a Test Automation Framework:

Here is a list of things to be considered while designing a framework.

  1. Create wrapper methods for libraries (if required)
  2. Implement custom logger
  3. Choose the right design pattern
  4. Separate Tests from automation framework
  5. Create a proper folder structure for the code
  6. Separate UI, Web Services, business Logic, databases (if any)
  7. Build & CI

Designing Test Framework

1. Create Wrapper Method :

Writing a wrapper method is one of the genuine solutions for extending the library features. An example of extending the wrapper method is to allow better logging capabilities and handling the errors well in Selenium.

For example, the click() method in selenium can be extended as:

  1. def elementClick(self, locator, locatorType=id):  
  2. try:  
  3. element = self.getElement(locator, locatorType)  
  4. element.click()  
  5. self.log.info(“Clicked on element with locator: “ + locator +  
  6. ” locatorType: “ + locatorType)  
  7. return True  
  8. except:  
  9. self.log.info(“Cannot click on the element with locator: “ + locator +  
  10. ” locatorType: “ + locatorType)  

11.             return False 

2. Implement Custom Logger :

While running the test cases; activity information has to be logged into the file. This added information can be used as a reference for future audits and test runs. Therefore, the logging framework needs to be implemented and customized for this requirement. The popular logging framework for java is log4j and python is Custom logger.

3. Choosing The Right Design Pattern :

Choosing the right design pattern is important and it provides the best practices for creating the test framework. It speeds up the test case development and helps to prevent minor issues that can cause major problems and therefore improves code readability. The most popular design pattern for creating a selenium automation framework is the Page Object Model (POM), it separates UI operations from the functionality and makes the code clean. 

There are many advantages of using the Page Object Model that includes,

  • If any locator makes changes in the project, it is easy to change it in one place.
  • Reusability of locators
  • Duplicate locators can be avoided

4. Separate Tests From Automation Framework :

Always separating the Test script logic from the automation framework is recommended. It increases code readability and makes the code readable.

5. Create a Proper Folder Structure For The Code :

Always defining the folder structure makes the code readable and makes it easy to understand. The folder can be structured as below,

  • Testcases
  • Utilities
  • Libraries
  • Logs
  • Test Data
  • Constants
  • PageObjects
  • Locators

6. Separates UI, Web Services, Databases (if any) :

The most important principle in framework design is the separation of concerns. Therefore creating an additional layer for web services, API, databases and UI in the framework will avoid the clutter. Sometimes the testing design pattern may not cover the extra layer in framework architecture; thus, it is good to create one more layer. The best example is separation Soap UI with selenium web driver integration.

7. Build & Continuous Integration :

Continuous Integration is a development practice that integrates with a build automation tool like Maven to ensure whether the software is running without any breaks after making a commit decision. 


Nowadays, the test automation framework has become an integral component of a software testing life cycle for all businesses. At ThinkPalm, we deliver high standards of software testing, our Test Automation services offer a high range of functional testing solutions that ensure prompt and constant performance. 

Get In Touch With Us

For a free consultation on Testing as a Service (TaaS), Software Testing Services or Test Automation Services.


Author Bio

Ahamed Yaseen is a Senior Software Engineer at ThinkPalm. He is passionate about designing automation frameworks and developing mobile applications.