Functional
testing is also referred to as Quality Assurance (QA) of the application or
software. It is a process of testing the system to ensure that it performs as
per the functionality specified in the System Requirement Specification.
-
It
verifies that the system functions as per the client requirements which were
specified in the System Requirement Specification document.
-
It
tests the usability of the system and ensures that all the navigational
functions are working correctly.
-
It
checks for exception handling and proper error message display.
Process of Testing
This
testing generally involves the following steps:
·
Identifying
the software requirements
·
Preparing
a combination of test data for testing
·
Calculating
the output to be generated with each input set
·
Running
the test case and compare the results generated with the expected results
Types
The
different types of functional Testing
are as follows:
- Unit Test: It is the process of testing each unit of code to ensure that each implementation is functionally correct. When software requirements change or get modified, these tests also get modified.
- Smoke Test: It is a series of tests that are conducted before the start of detailed testing. Smoke testing verifies the high level functional inconsistencies of the application.
- Integration Test: This ensures that the software application is compatible with other applications. Here, testing goals require running those tests which will need communication to be established. In case the system under consideration is a stand-alone system, then Integration test may be overlooked.
- White Box Test: This testing is based on the inter structure of the system. It can also be referred to as Code Based Testing as it
- Verifies the
security holes in the code
- Verifies the
incomplete paths in the code
- Verifies the flow
of data as in requirement specification document.
White box testing verifies 100%
of the code in the software application.
- Black Box Test: Here the functionality of the system is tested with a combination of appropriate and inappropriate data and the output is compared with the required results. This test only focuses on the input given and the output generated without knowing the internal code implementation. If any error or discrepancy as compared to the desired result is generated, then it is fixed and the system is tested again.
- Regression Test: This testing ensures that code or functionality modification in one part of the system has not affected other functionality of the system. Regression testing is repetitive and ensures that the software quality is maintained.
- Acceptance Test: This kind of testing evaluates the usability of the system from the end user’s perspective. These test cases are developed from user requirements and require to be defined in the System Development Life Cycle. This helps the developers to understand what kind of system they are developing.
- Localization Testing: In localized testing, the application is tested for its performance and efficiency in the local market or a comparatively smaller geographical area than that considered for globalized application.
- Globalization Testing: Globalized testing, also known as internationalized testing ensures that an application is functional in diverse locations or in a larger geographical area. . This test validates whether the application can be used all over the world and checks if all kinds of language characters are supported.
Test Tools
There
are several tools available to perform functional testing. JUnit is available for Java applications.
SoapUI & Watir is used to test web services.
