Arunkumar Khannur's Software Testing Knowledge Center

4.5. Functional Testing

The purpose of functional testing (or component or module testing) is to test small groups of modules that are functionally related. Functional Testing commences after successful completion of Unit Testing and is optional, but recommended for complex processing areas. Some contracts do not permit State visibility into functional testing (such as when some of the software is COTS).

Functional Testing takes place in development environment or test environment with the help of real data else, simulated data has to be created to model real data so as to verify proper functioning of business rules..

4.5.1. Functional Test Expectations
Major expectations of functional testing are as mentioned below:
  • The primary emphasis is the correct passing and setting of parameters (as they pass between the modules), and verification that the design is correctly implemented.
  • Functional outputs or module exit values should be verified. This may entail the use of testing tools and debuggers to capture values. The entire range of possible values should be tested to ensure the data is passed and handled correctly between units and modules.
  • All error cases should be verified and required to end gracefully with the appropriate error data reported (i.e., handle the error; don't allow the program to terminate on an error). This may include executing re-start logic, recovery from the error, or a graceful shutdown.
  • Screen displays and report formats should be verified for format and data accuracy, including appropriate number of decimal places and rounding on monetary values.
  • New or modified help screens and supporting user materials should be verified.
  • Some performance tests may be conducted and used to model or extrapolate behavior.
  • All affected documentation should be updated to reflect fixes and changes, including in-line code comments and unit/module/function headers, design documents, user manuals, help desk procedures or bulletins, and help files. This may be delayed until System Test, depending on change stability and resources.Units should "clean up" after themselves, releasing any system resources, as appropriate. Use test tools to check for "memory leaks" and inefficient processing paths.

4.5.2. Functional Test Considerations
Functional testing focuses on:
  • Verifying business rules behind processing
  • The behavior of the interfaces between related modules which covers inter-module and intra-function, and
  • Verifying whether utility functions or modules work correctly when called by other modules

4.5.3. Tasks in Functional Testing
Following are the major tasks to be carried out to complete Functional Testing:
  • Interface software units to build modules
  • Perform Interface Testing
  • Create Test Data
  • Perform Business Rules Testing
  • Prepare Integration Test Report
Each of these tasks is explained in detail below:

Interface software units to build modules
Here logically related units are identified and interfacing is being done by ensuring proper adjustment to parameters. By doing so modules are being created that are ready to undergo functional testing.

Perform Interface Testing
Modules are being tested to verify the proper interfacing by looking into how well parameter passing is implemented, how well procedure and system calls are working, and instantiation of other functional and procedural calls. This would verify the behavior of the interfaces between related modules which covers inter-module and intra-function, and that utility functions or modules work correctly when called by other modules.

Create Test Data
There is a need to create test data to validate business rules that drive modules which are expected to show proper feature implementation. This data shall e procured from client from already existing legacy system, else proper steps shall be taken to create test data. It is recommended to know apriori on this by having discussion with client in order to understand whether he would be providing real data for testing. If it is not possible for client because of some reasons like business confidentiality, creation of test data itself would be time and effort consuming activity resulting in mini-project like tasks. In many cases, there is a need to have non-disclosure and confidentiality agreement with test data providers. Once such test data is procured or established, there is a need to connect user interfaces with such a test data.

Perform Business Rules Testing
Functionality testing is focusing on verification of proper feature level business rules implementation. The scope is restricted to modules and as such does not focus on end-to-end functional testing but on part of it. Test scenarios are to be prepared to ensure this.

Prepare Functional Test Report
Test Report captures the result of the test activity. After testing, a detailed test report shall be generated to analyze the test results and take corrective actions. The Test report contains results of the testing, indicating the compliance or non-compliance of the specific requirement.
Khannur's Book
Arunkumar Khannur, Software Testing - Techniques and Applications, Published by Pearson Publications, 2011 (ISBN:978-81-317-5836-6; Pages:341 + xxii)
Follow Khannur
Khannur's Company
ISQT Process & Consulting Services Pvt. Ltd., Bangalore, INDIA
Khannur's Software Testing Forum
 Contact Khannur
ISQT Process & Consulting Services Pvt. Ltd.
#732, 1st Floor, 12th Main,
3rd Block, Rajajinagar,
Bangalore - 560010, INDIA
Phone: +91 80 23012511
Skype: arun.isqt