Functional Testing and Non Functional Testing

Concept on Functional Testing and Non Functional Testing


SKP Tutorial

6/14/20233 min read

a close up of a blue light in the dark
a close up of a blue light in the dark

Functional Testing: Functional testing focuses on verifying whether the software application functions correctly according to the specified functional requirements. It involves testing the system's behavior by providing input and checking the output against the expected results. The goal is to ensure that the software performs its intended functions accurately. Some common techniques used in functional testing include.

  • Test Case Design: Functional test cases are created based on the functional requirements. Testers identify various scenarios and inputs to test the system's functionality thoroughly.

  • Test Execution: The designed test cases are executed against the system or application under test. Testers perform different actions, enter inputs, and validate the system's responses.

  • Input Validation: Testers verify whether the system handles valid inputs correctly. This involves checking if the system processes the expected data and responds appropriately.

  • Error Handling: Functional testing also focuses on testing the system's behavior when it encounters invalid or unexpected inputs. Testers check if the system correctly identifies and handles errors, providing appropriate error messages or taking necessary actions.

  • Boundary Value Analysis: This technique involves testing the system's behavior at the boundaries of valid input ranges. Testers validate if the system handles values at the lower and upper limits correctly.

  • Integration Testing: Functional testing may also involve testing the interaction between different components or modules of the system. It ensures that the integrated components work together as intended.

  • Regression Testing: When changes are made to the system, regression testing is performed to ensure that the existing functionality has not been affected. It involves retesting previously tested features to identify any unintended side effects.

  • User Acceptance Testing (UAT): UAT is a type of functional testing performed by end users or stakeholders to validate whether the system meets their requirements and expectations.

    Non-Functional Testing: Non-functional testing focuses on testing the attributes of a software application that are not directly related to its specific functionality. It evaluates how the software performs under different conditions and assesses its quality in areas such as performance, security, usability, reliability, and maintainability. Non-functional testing techniques include:

  • Performance Testing: This type of testing evaluates the system's performance under normal and peak load conditions. It includes tests like load testing, stress testing, and scalability testing to assess factors such as response time, throughput, resource utilization, and stability.

  • Usability Testing: Usability testing measures how user-friendly the software is, focusing on aspects like ease of use, intuitiveness, navigation, and overall user experience. It involves gathering feedback from end-users through surveys, interviews, and observation.

  • Reliability Testing: Reliability testing determines the software's ability to perform consistently and reliably over a certain period. It involves tests like stability testing, recovery testing, and resilience testing to assess how well the software handles failures, errors, and interruptions.

  • Security Testing: Security testing aims to identify vulnerabilities and weaknesses in the software's security mechanisms. It involves tests like penetration testing, vulnerability scanning, and authentication testing to assess the system's resistance to unauthorized access, data breaches, and other security threats.

  • Compatibility Testing: Compatibility testing ensures that the software is compatible with various hardware, operating systems, browsers, and other software components. It verifies if the application functions correctly across different platforms and configurations.

  • Scalability Testing: Scalability testing determines how well the software can handle increased workloads and user demands. It assesses the system's ability to scale up or down efficiently while maintaining performance and responsiveness.

  • Maintainability Testing: Maintainability testing focuses on evaluating how easily the software can be modified, updated, and maintained. It assesses factors such as code readability, documentation quality, and the ease of adding new features or fixing defects.

  • Recovery Testing: Recovery testing examines how well the system recovers from unexpected failures, crashes, or data loss. It verifies the effectiveness of backup and recovery procedures and evaluates the system's ability to restore data and resume normal operations.

Both functional and non-functional testing are essential to ensure a high-quality software application. Functional testing ensures that the software meets the functional requirements, while non-functional testing ensures that the application performs well in terms of its non-functional aspects.