Functional Testing

Functional testing as the name suggests, deals with testing of the different functionalities of the application under test. In this post, we will learn the formal definition of functional testing, the functional testing process and the different types of functional testing.

Functional testing definition

Functional testing is a type of testing which involves testing of the functional requirements of the system under test. Each of the application's business requirements specifications are validated in functional testing by passing test data and comparing the actual result with the expected result.

Functional testing process

The functional testing process usually involves the following steps-

  1. Identification of business requirements or functionalities.
  2. Test data preparation based on the functionalities to be tested.
  3. Finding of the expected outcome or the expected results.
  4. Test case execution.
  5. Comparing of the actual and expected results.

Types of Functional testing

  1. Unit testing - Unit testing is a type of testing performed by developers on the individual module or piece of code. This ensures that the individual modules work correctly and can be integrated with other modules.
  2. Integration testing - Integration testing is performed after unit testing. In integration testing, the interfacing between the inter-connected modules is tested.
  3. System testing - System testing is the third level of testing performed after integration testing. In system testing, the application as a whole is tested against its requirement specifications.
  4. Acceptance testing - Acceptance testing is performed after system testing and it involves validation of all the business requirements to make sure that the application can be accepted for delivery.
  5. Smoke testing - Smoke testing is a type of testing that involves execution of limited number of test cases to ensure that a new build can be considered for thorough testing. If the smoke test cases fail, then the build is rejected for further testing.
  6. Regression testing - Regression testing is the type of testing that is performed to ensure that a code fix or a new functionality implementation hasn't affected previously working functionality.
  7. Sanity testing - Sanity testing is a type of testing that involves running of subset of regression tests to ensure that a new fix hasn't affected a already working functionality but in lesser time as compared to regression testing.