Many people working in software are unsure of the differences between software performance testing vs. load testing. In this post you will find clear distinctions between the two and also detailed descriptions of baseline testing, stress testing, manual testing and functional testing. Let’s start with performance testing:
Performance testing, a non-functional testing technique performed to determine the system parameters in terms of responsiveness and stability under various workloads. Performance testing measures the quality attributes of the system, such as scalability, reliability and resource usage.
Performance testing goals:
- Validating that the application performs properly.
- Validating that the application conforms to the performance needs of the business.
- Finding, analyzing, and helping fix performance problems.
- Validating the hardware for the application is adequate.
- Doing capacity planning for future demand of the application.
- Performance regression tracking.
Performed as load testing but in one thread. Need for understanding base performance without user load on the system.
Performance baseline testing goals:
- Performance regression tracking.
- QA implemented code and system for performance requirements.
Stress testing is normally used to understand the upper limits of capacity within the system. This kind of test is done to determine the system’s robustness in terms of extreme load and helps application administrators to determine if the system will perform sufficiently if the current load goes well above the expected maximum. Sometimes, in order to do this you actually have to
Performance stress testing goals:
- Search for bottlenecks.
- Regression testing after fix bottleneck.
- Search the upper limit active count of users.
- Check that the system will restore well after a failure due to extreme load.
Manual software testing
Manual testing is the process of manually testing software for defects. It requires a tester to play the role of an end user and use most of all features of the application to ensure correct behavior. To ensure completeness of testing, the tester follows a written test plan that leads them through a set of important test cases.
Large scale engineering projects that rely on manual software testing follow a more rigorous methodology in order to maximize the number of defects that can be found. A systematic approach focuses on predetermined test cases and generally involves the following steps:
- Choose a high level test plan where a general methodology is chosen, and resources such as people, test-environments, and software version are used.
- Write detailed test cases, identifying clear and concise steps to be taken by the tester, with expected outcomes.
- Assign the test cases to testers, who manually follow the steps and record the results.
- Create a test report, detailing the findings of the testers. The report is used by managers to determine whether the software can be released, and if not, it is used by software engineers to identify and correct the problems.
Testing can be through black-, white- or grey-box testing. In white-box testing the tester is concerned with the execution of the statements through the source code. In black-box testing the software is run to check for the defects and is less concerned with how the processing of the input is done. Black-box testers do not have access to the source code. Grey-box testing is concerned with running the software while having an understanding of the source code and algorithms.
Functionality testing is performed to verify that a software application performs and functions correctly according to design specifications. During functionality testing we check the core application functions, text input, menu functions and installation and setup on localized machines, etc.
Functional testing typically involves six steps:
If your company needs any help in understanding how to test your application or how to optimize an application that is running poorly after a migration, don’t hesitate to reach out! We are happy to help!