Automating Functional Tests

Automated functional testing, when planned and performed well, can improve the quality and stability of the application. Simultaneously it strengthens the feedback loop between testing and development providing significant time savings.


As the world moves towards digital economy, the path way is littered with failures that could have been avoided if the software is tested earlier. Be it hackers targeting the debit cards or an error in a thermostat app keeps residences hot — the underlining reason is a glitch in software. It is very important to thoroughly test the software before it goes into the hands of our customers. Failure to abide by this contract can not only result in financial losses, but also negatively impacts our company’s reputation, brand and business. With social media more often than not focusing on the negativity — our companies may also face user migration.
Thermostat Software Failure - xkcd

It is very important for us to strictly adhere to testing early and testing often.

What is Functional Testing?

Functional testing is part of the quality assurance process. It is a form of black box testing — the test cases being based on the specifications of the application under test. Functional testing is based on What an application does, rather than how the task is performed.
Functional tests often include (but not limited to) various user actions and scenarios, user interface screens, business requirements and external system interfaces. The tests are created using the available artefacts like specifications, user stories, acceptance criteria.

Functional Test Process

Functional tests are created and executed using the specifications and typically follow the below steps:

  • Identifying the functions that the application is expected to perform and convert them into scenarios.
  • The creation of input data and corresponding expected output.
  • Execution of the test case.
  • Comparison of expected and actual results.
  • Collation of results.

Importance of Automation in Functional Testing

Automating Functional Tests

Automated functional testing, when planned and performed well, can improve the quality and stability of the application. Simultaneously it strengthens the feedback loop between testing and development providing significant time savings.

Automating functional tests that differ only on the input and expected outputs greatly reduces effort in running tests. These type of tests also offer us an oppurtunity to validate many more data points than what is possible with manual testing.

Most of us deliver software on multiple platforms. An automated test suite allows great benefits to run the tests on multiple platforms with little or no modifications to the test scripts.

A more detailed discussion can be found in 7 Reasons why we should Automate Tests.

Strategising Functional Test Automation

Creating a strategy is the first step in creating a succesful functional test automation. Keep the following in mind when you create a test strategy.

Right Team 

A combination of test automation experts, product experts and people with authority who can align the team with the business goals is what you should look for in the team. A right team will go a long way for the success of the project.

Automation Tool 

Selecting a right tool goes a long way in ensuring the success. The tool should support not only the platform, but also should be flexible enough for us to extend and enhance the functionality if so required.

Test Environment and Test Data 

Aligning the environment with the production system and using realistic data that we access from a production system (maybe after masking) helps in creating robust tests.

Test Execution 

Define the way tests are executed, what the status of tests will be like pass, fail, differed etc., upfront. Whether the test execution is based on a schedule (every day a 6PM) or integrates with a Continuous Integration (CI) server or manually executed — all these options effect the way our teams work and are utmost importance for project success.


As the time goes by the product functionalities gets modified, new functionalities gets added. Plan for maintenance of the test suite during these periods. An unmaintained test suite will not be useful and soon will be abandoned.

Another look at strategising can be found in Plan Your Test Strategy.

Ensuring Success

We need to focus on the right things for ensuring the success of the functional test automation.
  • Application Knowledge
    The team should have the knowledge about the application and domain. To create a robust test suite the team should be equipped with people with deep understanding of the application functionality.
  • Selecting Tests to Automate
    It is not possible to achieve 100% test automation for any moderately complex application. Alternatively, focus on the critical paths of the applications and select the scenarios and functionalities that lie in this path. In most applications the functionalities in the critical path are more stable and hence also helps in creating a stable test suite.

We discuss this more in the article How do You Select Tests to Automate.

  • Testing Early and Testing Often
    To ensure the success of test automation and to maximize the benefits, start the automation during the development and continue it during the maintenance phase. All said and done, a test automation project is also a type of development project – Plan it as one.
A Shout for MarathonITE

Automating Functional Tests with MarathonITE 

Marathon Integrated Testing Environment – MarathonITE, is an affordable, easy-to-use, cross-platform test automation tool for Java/Swing™, Java/FX™ and Web applications. Using MarathonITE you can quickly automate your daily tests.

Close Menu