/ performance-testing

What is software performance testing

By DeviQA on Thu Mar 28 2019 00:00:00 GMT+0000 (Coordinated Universal Time)

Performance testing in software testing is examining the working of software under an expected workload. Software testing is done to determine the performance of software after its development. A software’s responsiveness, reliability, scalability, and stability are examined in performance testing. Sometimes software testing is needed to find an issue in the software which is called bottleneck in software testing.

Instead of finding bugs, software performance testing is concerned to check the response time, scalability and reliability of software. Remember, performance testing has nothing to do with the features of the software. Performance testing is done after the features are declared stable.

For a better understanding have a look at speed, reliability, and scalability of software.

Speed is determined by the response time of application in reply to a user’s request;

Quality of software being consistently well and trustworthy of accurate results;

Checking the range of software to which it can handle the growing workload.

Here a question emerges: how to do performance testing? Stipulating a suitable testing environment, specific metrics, a plan or a design are mandatory to initiate performance testing.

Testing Environment - Gather all tools that would be used in the test, prepare the instruments required to monitor the resources. There are some high-quality open source tools to implement performance testing.

Test Plan - Identify the standards on which the software will pass the testing. Set a criterion: let suppose you want that your software should handle 500 user requests at a time, this “500 user requests” is the criterion.

Testing Metrics - Metrics are a kind of standards that are a must to identify for testing an application. Major metrics are speed, wait time, average load time, peak load time, load size, response rate, accuracy, throughput, CPU and memory utilization.


Load Time:
The total time of sending a user request and getting the response;


Wait Time:
The time a software takes to initiate first bit in response to a request;


Average Load Time:
Average response time to every request form a user’s prospect. If the average load time is bigger it's an indicator of bad performance;


Peak Load Time:
The longest amount of time it takes to fulfill a request if the peak load time is way longer than average it's a sign on irregularity;


Accuracy is a metric that identifies how accurately software gives results in the response of multiple inputs;


Error Rate:
Rate of failed requests compared to all the requests made;


Load Size:
The number of users an application can bear at a time;


Throughput is the volume of bandwidth utilized by software;


CPU Utilization:
How much resources of CPU, the software takes to run;


Memory Utilization:
What is the amount of computer's memory employed by software for execution.

Don't completely rely on performance testing tools rather involve as much user activity as possible.

Types of software performance testing come under non-functional testing. There are two major types: load and stress testing.

What are the types of performance testing?

types of software performance testing

Load Testing
Load Testing is a form of performance testing, led to estimate the conduct of software at a gradually increasing workload. The tester increases the concurrent users of the software and analyses the performance, it helps to find the bottleneck. This test gives the idea to the dev company that how much user load their application can handle. Load testing is mainly done to measure response times, resource utilization levels, and throughput rates.

Stress Testing
Stress Testing is a kind of performance testing that is conducted to evaluate the performance of software at or beyond the limits of its expected workload. Stress tests can occur before or after a system goes live. Stress tests put the strain on hardware parts, for example, CPUs, memory and hard disk and other drives, to decide the potential limit of an application on these limited assets.

Endurance Testing
Soak Testing (Endurance Testing) is a sort of performance testing led to assess the conduct of software when a remarkable workload is assigned consistently. It's also a subtype of stress testing; its purpose is to inspect the software’s long-term capability.

Spike Testing
Spike Testing led to assess the conduct of software when the heap is abruptly and significantly expanded. It is a subtype of stress testing.

Scalability testing
The goal of adaptability testing is to decide the product application's viability in "scaling up" to help expansion in user load. It encourages plan limit expansion to your software application.

Volume testing
Volume testing is checking the reliability of the software’s database by populating an extensive amount of data into it. The purpose is to check the strength and performance of the database against large varying data.

Performance Testing Requirements

Predefined metrics, a written form of expected results after the test, a complete understanding of hardware and software, and a well-explained criterion to pass the test are basic requirements for performance testing.

Identifying the test environment:

First, get a complete understanding of hardware, software, and database. The software is always built for a specific kind of hardware, so, check the compatibility of hardware with software.

Identify the acceptance criteria:

The second step is setting up the goals and objectives of the test. Write down the results you expect from the software, consider speed, accuracy, and reliability as testing criteria.

A list of requirements for performance test

Types of tools needed to test the software

A set of objectives to test the software

Finalizing the type of test (or tests)

Identifying the test environment for the software

Writing down the expected response time

Performance Testing Process

The process of performance testing is conducted by examining the software according to the predefined criteria. The methodology for the process is set according to the objectives of the test. Performance testing is 7 steps process, read below the brief explanation of these steps.

Identifying the test environment:

First, get a complete understanding of hardware, software, and database. The software is always built for a specific kind of hardware, so, check the compatibility of hardware with software.

Identify the acceptance criteria:

The second step is setting up the goals and objectives of the test. Write down the results you expect from the software, consider speed, accuracy, and reliability as testing criteria.

Designing the tests:

End users are the most important element for the success of the software. So, in the third phase, consider the end users and design the tests to meet the users’ perspective.

Get ready for the test:

Configure all the tools and entities before executing the test and proceed towards testing.

Implement the design:

Start the test, deploy your created tests.

Run the test:

Execute examining the performance, imply all the predefined criterion and monitor the execution.

Dissect, tune and retest:

Consolidate, investigate and share test results. At that point calibrate and test again to check whether there is an improvement or abatement in execution. Since enhancements, for the most part, become littler with each retest, stop while bottlenecking is caused by the CPU. At that point, you may have the consider choice of expanding CPU control.

What is throughput in Performance Testing?

Throughput – demonstrates the number of exchanges every second an application can deal with, the number of exchanges created after some time amid a test. Before beginning a performance test usually, you should have a throughput objective that the application should certainly handle a particular number of solicitations per hour.

For each application, there are extensive numbers of users performing loads of various solicitations. What you have to guarantee is that your application meets the required limit before it hits deployment. To guarantee that, load and execution testing is the solution.

Pick diverse sort of requests (frequent, critical, and concentrated) and perceive what number of them pass effectively in an interim.

To tackle the issue, you should endeavour to reproduce load through load testing instruments like Load Focus to pick a blend of scenario for load testing, characterize simultaneous users, number of cycles and so on. The load test ought to be re-enacted with genuine live information (clients, demands and so on)

Throughput relies upon various components like:

Details of the host PC;

Handling overhead in the product;

A level of parallelism both equipment and programming support;

Kinds of transactions being processed.

What is latency in performance testing?

Latency in performance testing is a problem that almost every tester encounter. it is a subset of response time.

Let's read an example to understand it; A person sent the request to server form his browser, it will take a certain time to reach the server and the process from the server will start after it reaches this is referred to as latency.

A software's response time is tested to determine its latency. An easy formula for understanding latency: Latency + processing time = Response time of a request

In other words, time starting from sending the request (to a server) until the first byte of reaction is triggered is called latency. "Time to the first byte" is a synonym term of latency.

Latency consists of three steps:

Opening socket connection;

Sending packet to the target server;

Waiting for the first bit of reaction from server;

Hence, latency is an important performance measuring factor for the software which covers the time between sending the request to CPU and receiving the response. higher latency means bugs in the software application.

Latency usually occurs in web hosting services, if your software or website is suffering latency deal with it early. More the latency more the chances of failure of your software.