Functional Testing

Functional Testing

Functional testing is a type of testing which verifies that each function of the software application operates in conformance with the requirement specification. This testing mainly involves black box testing and it is not concerned about the source code of the application.

Each and every functionality of the system is tested by providing appropriate input, verifying the output and comparing the actual results with the expected results. This testing involves checking of User Interface, APIs, Database, security, client/ server applications and functionality of the Application Under Test. The testing can be done either manually or using automated functional testing tools.

What do you test in Functional Testing?

The prime objective of Functional testing is   checking the functionalities of the software system. It mainly concentrates on –

  • Mainline functions:  Testing the main functions of an application
  • Basic Usability: It involves basic usability testing of the system. It checks whether an user can freely navigate through the screens without any difficulties.
  • Accessibility:  Checks the accessibility of the system for the user
  • Error Conditions: Usage of testing techniques to check for error conditions.  It checks whether suitable error messages are displayed.

 

Smoke Testing is a testing technique that is inspired from hardware testing, which checks for the smoke from the hardware components once the hardware’s power is switched on. Similarly in Software testing context, smoke testing refers to testing the basic functionality of the build.

Smoke Testing – Features:

  • Identifying the business critical functionalities that a product must satisfy.
  • Designing and executing the basic functionalities of the application.
  • Ensuring that the smoke test passes each and every build in order to proceed with the testing.
  • Smoke Tests enables uncovering obvious errors which saves time and effort of test team.
  • Smoke Tests can be manual or automated.

Sanity testing, a software testing technique performed by the test team for some basic tests. The aim of basic test is to be conducted whenever a new build is received for testing. The terminologies such as Smoke Test or Build Verification Test or Basic Acceptance Test or Sanity Test are interchangeably used, however, each one of them is used under a slightly different scenario.

Sanity test is usually unscripted, helps to identify the dependent missing functionalities. It is used to determine if the section of the application is still working after a minor change.

Sanity testing can be narrow and deep. Sanity test is a narrow regression test that focuses on one or a few areas of functionality.

Upon completion of unit testing, the units or modules are to be integrated which gives raise to integration testing. The purpose of integration testing is to verify the functional, performance, and reliability between the modules that are integrated.

Integration Strategies:

  • Big-Bang Integration
  • Top Down Integration
  • Bottom Up Integration
  • Hybrid Integration

Interface Testing is performed to evaluate whether systems or components pass data and control correctly to one another. It is to verify if all the interactions between these modules are working properly and errors are handled properly.

Interface Testing – Checklist

  • Verify that communication between the systems are done correctly
  • Verify if all supported hardware/software has been tested
  • Verify if all linked documents be supported/opened on all platforms
  • Verify the security requirements or encryption while communication happens between systems
  • Check if a Solution can handle network failures between Web site and application server

System Testing (ST) is a black box testing technique performed to evaluate the complete system the system’s compliance against specified requirements. In System testing, the functionalities of the system are tested from an end-to-end perspective.

System Testing is usually carried out by a team that is independent of the development team in order to measure the quality of the system unbiased. It includes both functional and Non-Functional testing.

Regression testing a black box testing technique that consists of re-executing those tests that are impacted by the code changes. These tests should be executed as often as possible throughout the software development life cycle.

Types of Regression Tests:

  • Final Regression Tests: A “final regression testing” is performed to validate the build that hasn’t changed for a period of time. This build is deployed or shipped to customers.
  • Regression Tests: A normal regression testing is performed to verify if the build has NOT broken any other parts of the application by the recent code changes for defect fixing or for enhancement.

User acceptance testing, a testing methodology where the clients/end users involved in testing the product to validate the product against their requirements. It is performed at client location at developer’s site.

For industry such as medicine or aviation industry, contract and regulatory compliance testing and operational acceptance testing is also carried out as part of user acceptance testing.

UAT is context dependent and the UAT plans are prepared based on the requirements and NOT mandatory to execute all kinds of user acceptance tests and even coordinated and contributed by testing team.