Many seem to have problems in differentiating functional testing from non-functional.
To eliminate misunderstandings and just to proof-check your knowledge, we provide a detailed explanation on this matter.
Functional software testing
To start with, functional testing is always done against the app’s business requirements that means it is a black box testing type.
It takes the whole integration system to measure the compliance of the system with its requirements. This testing type is carried out based on the product’s functional specification document.
When it comes to actual testing, the testers’ goal here is to verify specific functions or actions of the code. To do this type of testing both manual testing and automation tools are used though it is easier with manual testing techniques only.
Speaking of the order, functional testing is done before non-functional.
While running functional tests you should keep in mind certain procedural steps:
- Based on each function’s specifications, prepare the test data
- The inputs for functional testing are business requirements
- The outputs must be found from the functional specifications
- Execute the test cases
- Finally, observe both actual and expected test outputs
There are numerous tools available for performing functional testing and automating functional tests.
As for the types of testing which should be considered functional, they are:
In the types of functional testing following testing types should be cover:
- Usability Testing
- Sanity testing
- Smoke testing
- Integration Testing
- System Testing
- Interface Testing
- Regression Testing
- User acceptance Testing
Non-functional software testing
As for the counterpart, the non-functional type of testing is performed based on the product’s non-functional requirements.
While most criteria are not paid attention to in functional testing, its counterpart is used to verify the system is ready. Non-functional requirements are usually those that reflect the product’s quality and especially in terms of its users’ suitability perspective. It is normally started one the functional testing part is completed. The efficiency of these tests is achieved by various specialized testing tools.
Non-functional testing can as well be described as testing software attributes not related to specific actions and user actions such as scalability, security, performance or app’s behavior under certain constraints.
It is probably non-functional testing that has the major influence on user satisfaction with a product. It is also important to remember that non-functional testing objectives should be stated in a well testable way and the vague wording like “the system must be fast and easy to operate” should be avoided.
Non-functional tests are basically applied to major software’s non-functional attributes. For example, they test how long it takes the system to complete a certain task, how fast its response is, etc.
Basically in the non functional test is used to major non-functional attributes of software systems. Let’s take non functional requirements examples; in how much time does the software will take to complete a task? or how fast the response is.
We can attribute the following types of testing to non-functional:
- Availability Testing
- Compatibility testing
- Configuration Testing
- Compliance testing
- Installation Testing
- Documentation testing
- Load testing
- Endurance testing
- Localization and Internationalization testing
- Performance testing
- Maintainability Testing
- Recovery testing
- Security testing
- Reliability Testing
- Volume testing
- Scalability testing
- Usability testing
- Stress testing