Functional Testing

January 3, 2022

Functional testing is a form of software testing where you check that your application does what it’s supposed to. In effect, it’s a form of black box testing because you are only concerned with what it does, not how it does it. This is different from unit and integration testing, where you also care about how the software works. Functional testing should test your application from a user’s perspective, however, it’s not the same as user acceptance testing. It can happen at any stage in the development cycle once you have working code to test.

Functional testing…

  • is about the functionality of your application, not how it achieves it.
  • is testing against the business/design requirements of your application.
  • is about what the user sees and experiences, but is not the same as user acceptance testing.
  • is not interested in the performance and reliability of your application.
  • s generally black box.
  • can happen at any stage in the development cycle, but generally is done during system and acceptance testing.
  • should test all the moving parts of your code. This requires careful thought and test planning.
  • should use carefully designed test data with known expected outcomes. This should come from the requirements/design.
  • is an essential part of any test plan.
  • can be automated relatively easily.

Functional testing is vital

Without functional testing, you can’t know that your application meets its requirements. It may pass all unit tests and non-functional tests with flying colors. But if any functionality is broken, the whole application is broken. This means that you have to plan your testing really carefully. Every user journey should be tested, including ones that might be unusual or non-obvious. Doing this requires cooperation between the product team (who understand what the application should do) and the test team.

What’s required for functional testing?

Functional testing can be done manually. However, it’s best if you can automate it. Functional testing automation tools will help make your life easier, especially if you are testing a complex application. Nowadays, many applications are browser-based rather than native. Such web applications are often easier to test. However, there are many issues relating to test automation. Especially when you are using functional testing tools based on Selenium.