What is Functional Testing?
As per ISTQB definition, testing performed to evaluate if a component or system satisfies functional requirements.
Every functionality of the application will be tested based on the specified business requirements. This can be achieved by doing verification and validation with the defined requirements. In simple words, it will be like you have to test it by giving various inputs and with the combination of scenarios. Functional testing will cover the aspects of compatibility, localization, integration with other systems etc.
The testing can be done either by manually or by automation.
An example of functional testing is to validate the place order functionality is working or not in an ecommerce website.
Types of Functional Testing
The types of Functional Testing are :
- Smoke Testing
- Sanity Testing
- Regression Testing
- Integration Testing
- User Acceptance Testing
- Localization Testing
The below picture shows the functional testing types.
We are going to see the functional testing types in brief:
Smoke Testing
Smoke testing will be conducted when a new build is received and to confirm the core workflow is working fine without any functionality broken.
Sanity Testing
Sanity testing will be conducted when a new build is received to quickly checking the new functionality is working roughly within a short period of time.
Regression Testing
Regression testing will be conducted after the bug fixing of the first round of testing. This helps to confirm the bug fixes working as expected as well as the other parts of the application does not break because of this bug fixes.
Integration Testing
Integration testing will be conducted when an application is interacting with multiple components. In the process it should work like a single unit at the end after integration seamlessly..
User Acceptance Testing
User acceptance testing will be conducted usually by the business analyst /customer(End user). It will be conducted before the product launch
Localization Testing
Localization testing will be conducted when the application/system supports multiple languages. Since each language has it’s font, the functional/compatibility issues may arise.
What is Non-Functional Testing?
Non-functional testing performed to evaluate the system satisfies the other non-functional aspects performance, scalability, usability, reliability.
An example of non-functional testing is how many people can place order simultaneously in an ecommerce website.
Types of Non-Functional Testing
The types of Non-Functional Testing are :
- Performance Testing
- Compliance Testing
- Compatibility Testing
- Usability Testing
- Security Testing
The below picture shows the non-functional testing types:
Performance Testing
Performance testing is conducted to confirm how many users can access the system concurrently. For example, how many people can play orders concurrently in the ecommerce site.
Compliance Testing
Compliance Testing is conducted to verify and validate the application is adhere to the organization standards as well as the other compliance standards like PCI, GDPR, ADA. It ensures to verify these standards are followed in the application.
Compatibility Testing
Compatibility Testing is conducted to confirm the application is working as expected in various platforms, browsers and mobile devices. In this digital age this plays a vital role to attract more users to your application.
Usability Testing
Usability Testing is conducted to identify how intuitively the system works for the end user.
Security Testing
Security Testing is conducted to identify the threats, malicious attacks to the application over the internet.
Functional testing is conducted before Non-Functional Testing. We have briefly seen about the types of Functional Testing as well as Non-Functional Testing. Next we are going to see the differences about Functional Testing Vs Non-Functional Testing.
Functional Testing Vs Non-Functional Testing
I hope this blog helps to understand about functional testing and non-functional testing as well as the differences between them.