Table of Contents
Functional Testing:
- Functional Testing is a type of software testing where individual software components or functions are tested to ensure that they operate as expected, according to the software requirements.
- It focuses on testing what the system does, rather than how it works.
Types of Functional Testing
1.Unit Testing
- Definition: Testing individual components (like classes or methods) in isolation.
- Purpose: Ensure each unit of the software performs as designed.
2.Integration Testing
- Definition: Testing how the units are interconnected and work together.
- Purpose: Verify that the integrated components function as expected as a whole system.
3.System Testing
- Definition: Testing the entire system against the system requirements.
- Purpose: Ensure that all components work together as expected, meeting system requirements.
4.User Acceptance Testing (UAT)
- Definition: Testing the system from an end-user’s perspective.
- Purpose: Ensure the system meets the business requirements and is ready for release.
5.Regression Testing
- Definition: Re-testing the software after a change to ensure that existing functionalities aren’t negatively affected.
- Purpose: Confirm that new changes haven’t broken the existing functionalities.
Non-functional Testing
Definition:
Non-functional Testing is a type of software testing that focuses on the non-functional aspects of the system, such as performance, reliability, security, usability, etc.
It assesses the system’s “quality attributes” rather than its specific behavior.
Types of Non-functional Testing
1.Performance Testing:
Definition: Testing to ensure that the system performs under specific conditions.
Purpose: Check if the system can handle the expected load, response times, etc.
2.Load Testing:
Definition: Evaluating system behavior under high load.
Purpose: Determine the system’s capacity and behavior when multiple users are accessing it simultaneously.
3.Stress Testing:
Definition: Testing the system beyond normal operational capacity.
Purpose: Assess the system’s stability and ability to handle high stress.
4.Security Testing:
Definition: Testing to identify vulnerabilities and threats.
Purpose: Ensure the system is secure from unauthorized access or malicious attacks.
5.Usability Testing:
Definition: Assessing the ease of use and user-friendliness.
Purpose: Ensure the system is user-friendly and meets user expectations.
6.Compatibility Testing:
Definition: Testing the system’s compatibility with different hardware, software, browsers, etc.
Purpose: Ensure the system works across different environments.
6.Reliability Testing:
Definition: Testing the system’s reliability and stability.
Purpose: Ensure the system functions without failure under specific conditions.
7.Availability Testing:
Definition: Testing the system’s uptime and availability.
Purpose: Ensure the system is available and accessible to users when required.
8.Recovery Testing:
Definition: Testing the system’s ability to recover from failures or crashes.
Purpose: Ensure the system can recover gracefully and quickly after a failure.
9.Scalability Testing:
Definition: Testing the system’s ability to scale with increased load.
Purpose: Ensure the system can handle increased user activity or data volume.
10.Maintainability Testing:
Definition: Testing the system’s maintainability and ease of maintenance.
Purpose: Ensure the system can be easily modified, repaired, or extended.
11.Documentation Testing:
Definition: Testing the system’s documentation for accuracy and completeness.
Purpose: Ensure that the system’s documentation is comprehensive and up-to-date.
12.Installability Testing:
Definition: Testing the system’s ease of installation.
Purpose: Ensure that the system can be installed without any difficulty.
13.Portability Testing:
Definition: Testing the system’s ability to be transferred from one environment to another.
Purpose: Ensure that the system can be easily transferred and works across different environments.