written 7.0 years ago by | • modified 7.0 years ago |
Mumbai University > Information Technology > Sem 8 > Software Testing and Quality Assurance
Marks: 5M
written 7.0 years ago by | • modified 7.0 years ago |
Mumbai University > Information Technology > Sem 8 > Software Testing and Quality Assurance
Marks: 5M
written 7.0 years ago by |
Scalability testing:
In scalability testing, tests are designed to verify that the system can scale up to its engineering limits.
The idea is to test the limit of the system, that is, the magnitude of demand that can be placed on the system while continuing to meet latency and throughput requirements.
Scaling tests are conducted to ensure that the system response time remains the same or increases by a small amount as the number of users are increased.
Scalability testing attributes:
Following are the only few attributes out of many that considered during the scalability testing
Systems may scale until they reach one or more engineering limits. There are three major causes of these limitations :
It is easy to increase the performance of the software if the application demands it. For example, a database application that gives good response time for 10 users should be scalable for 100 users if required.
The purpose of scalability testing is to determine whether your application scales for the workload growth. Suppose your company expects a six-fold load increase on your server in the next two months. You may need to increase the server performance and to shorten the request processing time to better serve visitors. If your application is scalable, you can shorten this time by upgrading the server hardware, for example, you can increase the CPU frequency and add more RAM.
Load testing:
Load tests are designed to ensure that the system remains stable for a long period of time under load.
Load testing typically involves exercising the system with virtual users and measuring the performance to verify whether the system can support the anticipated load.
Load testing helps to find out the maximum amount of load an application can withstand, the success criterion of load testing is based on the completion of all the test cases without any errors and within the allotted time frame.
Load testing can be conducted in two ways: Longevity testing, also called endurance testing, and evaluates a system’s ability to handle a constant, moderate work load for a long time. Volume testing, on the other hand, subjects a system to heavy workload for a limited time.
Load testing can identify a variety of problems such as Software design issues (poor optimization, incorrect concurrency), Server configuration issues (web server, application server, database server) and hardware limitation issues (memory limitations, excessive disk I/O, CPU maximization).
The primary goal of load testing is to define the maximum amount of work a system can handle without significant performance degradation.
Load testing can be used in the following scenarios:
Stress Testing:
The goal of stress testing is to evaluate and determine the behaviour of a software component while the offered load is in excess of its designed capacity.
The system is deliberately stressed by pushing it to and beyond its specified limits.
It ensures that the system can perform acceptably under worst-case conditions under an expected peak load.
Stress tests are basically targeted to bring out the problems associated with memory leak or buffer allocation and memory carving.
It helps to find out the level of robustness and consistent or satisfactory performance even when the limits for normal operation for the system are crossed.
Buffer overflows are classic examples of stress test results. Excessive input is used to crash some component of the application.
One way to design a stress test is to impose the maximum limits on all system performance characteristics at the same time, such as response time, availability and throughput thresholds.
For example, a web server may be stress tested using scripts and various other denial of service tools to observe the performance of a web site during peak loads.
Performance testing:
Performance tests are designed to determine the performance of the actual system compared to the expected one.
Resource usage, scalability of the product and reliability are validated under this testing.
Performance testing does not aim to find defects in the application, it address a little more critical task of testing the benchmark standard set for the application.
For example, you can test the application network performance based on connection speed vs. the latency i.e. the time difference between the data to reach from source to destination.
An example of expected performance is:the response time should be less than 1 millisecond 90% of the time in an application.
Performance tests are designed to verify response time, execution time, throughput, resource utilization and traffic rate.
Basically, performance testing is done to assess the efficiency of components of a definite system in a particular situation.
Difference between Load and Stress Testing:
Load testing | Stress testing |
---|---|
Helps to determine the reliability of the application | Helps to observe the stability of the application. |
Helps to determine the reliability of the application | Helps to observe the stability of the application. |
Determines the behaviour of the application under load | Determines the breaking point of the server. |
The main parameter to focus is response time | The main parameter to focus is throughput. |
Load testing is subset of stress testing. | Stress testing is super set of Load testing. |
Load testing is said to be positive testing | Stress testing is said to be as negative testing. |
For example, if there is an application which can handle 25 simultaneous user logins at a time, in Load testing we will test the application for 25 users and check how the application is working in this stage whereas in stress testing we will test with more than 25 users and check whether the application is cracking the hardware resources.