Functional Test Automation

What is a Functional Test?

Functional testing is a part of the standard Quality Assurance (QA) process. It is a kind of black-box testing method. Functional Test Automation is a type of automated testing that deals with how applications functions or how the interface between the application and the rest of the system and users.  Traditionally, functional testing is implemented by a team of testers, independent of the developers.In most cases, the functional test cases are based on the requirement documents. The tests are performed by feeding the input to the application under test and then examining the output. Functional test automation is concerned about what the system does rather than how the system do it.

Types of Functional Tests

As with any generic term, a functional test is susceptible to many interpretations. There are many types of functional tests  that can be performed by a development team.
  • Smoke Tests or Sanity Tests Smoke tests are a type of functional tests. These include minimum of test scenarios that are executed to ensure that a base functionality is available in the software. Development teams use smoke tests to decide on the go/no-go decisions for a full fledged testing on the software product.
  • Integration Testing Integration testing includes testing a software system with all its components installed in a test environment.
  • Acceptance Testing Used mostly in the outsourced project world, an acceptance test consists of test cases that should be passed for a sign off on the project or a stage completion.
  • Regression Testing Regression testing is a type of testing where test cases are scripted to check that a new version of software doesn’t break existing functionality and does not add some unexpected/new issues into the software system.

Need for Functional Testing

Functional tests are crucial for ensuring that a product/feature satisfy the end user requirements. Teams should start doing functional tests early in the software development. Functional testing should continue throughout the life cycle and continue into production and maintenance of the software product. Functional testing should cover the application from the end user viewpoint. Naturally, they tend to be executed from a user interface of the application. They are also written in end user terminology and works best when domain terminology of the product is used.

Can Functional Testing be Automated?

As the time goes by, your functional test suite also grows in size. Whenever a new feature is added or a bug is fixed, you will be adding a new test script to your suite of functional tests. A well structured functional test automation suite is also used a regression test suite to ensure that no existing functionality is broken by the modifications to the source code. Since functional test automation suite grows into hundreds and thousands of test scripts, it becomes imperative that some sort of functional test automation is used to ensure that the suite can executed often and fast.

Functional Test Automation – Pitfalls

Since functional test automation scripts are written from the user perspective, most of the tests are executed from the UI of the application. Some functional test automation tend to be flaky for GUI tests because of the complexities involved. A regular maintenance of the test suite is required to ensure that the functional test suite remains relevant and useful for new versions of software. Functional test automation can be considered as a software development process. Infact it is, because you are developing scripts in some programming language for testing your application. Using a version control system to maintain your test scripts, regular refactoring of the scripts to enhance re-usability of the scripts are some of the steps you should perform while managing a test automation project. Testing automation doesn’t cover all bases for functional tests. Testing automation requires more time to develop test suites and should be maintained regularly for being effective. A judicious mixture of automation and manual testing should be used for ensuring that user requirements are met.

Running Functional Tests

You can use both manual tests and automation tools for running the tests. Even if you have a comprehensive automation suite, relying on it solely is not the best option. Along with your automation suite, you should perform manual tests – some exploratory and some scripted – to ensure that a new version of software functions adequately for production.

Functional Test Automation with MarathonITE

MarathonITE is a functional test automation tool that includes features that help you in creating functional test suites from the user interface and then to enhance and maintain them.
  • You can use Marathon Test Recorder to quickly create new test scripts.
  • Use Extract Method to split your tests into reusable modules. This also helps in maintenance of test scripts by localizing the change to a few places.
  • Integrate Marathonite tests into your Continuous Integration(CI) server to execute tests regularly and whenever a change occurs to your source code.
  • Use Data Driven Tests to execute multiple scenarios within a single test script