Functional testing validates the software against specific pre-determined requirements.
Non-functional testing, on the other hand, examines different aspects of how well the application works – things like response time, stability, security, behavior in extreme circumstances, etc.
The specific types are briefly discussed below:
Functional testing:
- Unit testing is a process in which the smallest testable parts of the software (units) are tested. The purpose is to validate that each software unit performs as it should.
- Integration testing is the phase in which individual software modules are combined and tested. It’s done after unit testing and before system testing.
- System testing is defined as testing a complete and fully integrated software product.
- Interface testing verifies whether the communication between two different software systems works correctly.
- Regression testing is re-running functional and non-functional tests to ensure that previously developed and tested software still works well after a change. If it doesn’t, there’s been a regression. That means that the new version broke the functionality that already worked.
- User acceptance testing is performed by the end-user or the client to verify (accept) the software system before the software “goes live.”
Non-functional testing:
- Performance testing determines how an application’s stability, speed, scalability, and responsiveness hold up under a given workload. Performance testing includes:
Capacity Testing: Tests how many users the system can handle before performance drops below acceptable levels.
Load Testing is done to verify the system can handle the required number of users and still functions well.
Volume Testing: Checks if the application is able to handle a large amount of data at once without breaking, slowing down, or losing any information.
Stress Testing intentionally tries to break the software by simulating a number of users that greatly exceeds expectations.
Soak Testing checks the software’s ability to tolerate high traffic for extended periods of time.
- Reliability testing is performed to ensure that the software is functioning consistently in each environmental condition and a specified time period.
- Security Testing looks into possible system vulnerabilities and determines that the data and resources of the system are protected from potential malicious attacks.
- Recovery Testing determines how well an application can recover from crashes, hardware failures, and similar problems.
You may also like: Tips to follow when writing a bug report.
Related Articles
Am I suitable to become a QA?
Are you considering becoming a QA specialist? Apart from technical knowledge, which you can learn over time, a professional testing engineer should have some other skills - or maybe personal characteristics. Let's have a look: Being meticulous: Software testing is a...
Tips To Follow When Writing a Bug Report
We have already discussed the elements of a good bug report. Here are a few more things to keep when doing it: Tip 1: Be sure your bug is reproducible Sometimes the bug you find isn't really a bug. It is just a temporary glitch that was caused by a rare and temporary...
5 Technical Skills Every QA Testing Engineer Needs
You have realized QA is not just "monkey clicking." Now let's overview the few most in-demand technical skills in the QA field. Coding Once you start the QA career, you quickly realize it's helpful to know the basics of programming languages. This way, it becomes...