What is Software Performance?
Performance directly refers to responsiveness: Either the time required responding to specific requests or transactions or the number of requests or transactions processed in a given interval of time.
Performance and Scalability
Performance & Scalability are two different dimensions of software performance.
Performance can be termed as completing a given task measured against predefined goals set to achieve good accuracy, completeness, cost, and speed. Performance can be measured by response time (RT).
For example: Banks generally work in a specific business hours like 10.30am to 5pm on a business day and in that business hours are from 10.30am till 1.00pm and 2pm to 4pm. Banks have to process all the customer requests within the timelines and all the relevant systems need to be updated as well based on the requests. That means everything should be completed on the same day by 5pm to achieve goals set by the bank and to keep the customer happy as well.
Due to poor system performance, if banks are unable to process the customer requests within expected timelines it may mean customer dissatisfaction, lost business and lost revenue.
Scalability is the ability of a system, process or network to handle growing amount of work in an efficient manner or its capability to accommodate enlarged growth. Here scalable system will take up limited space & resources for less amount of work and will increase its processing with growing amount of work without impacting performance.
For example: A scalable online request processing system or database management system can be upgraded to process larger number of requests by adding new processors, devices & storage easily & transparently without significant impact on the response times to process increased load. Performance improvement does not directly improve scalability, since the issues or problems identified for improving the performance may be different from the issues impacting the scalability of the system.
Performance improvement reduces demand for a given resource, such as CPU utilization whereas scalability improvement results in increased capability of the system to process higher load with the same performance as before.
How do we measure performance?
We can measure the performance for a software application with the following 3 parameters Response time Throughput Resource utilisation.
- Response Time
- Resource Utilization
These details by itself can help you estimate the maximum throughput or performance you may be able to support for a given hardware configuration.
Performance testing to measure its performance needs to be performed for any application or software before we host it into production, so that we can access the exact behaviour of the product and identify the problem areas.
Measuring software performance enables to identify how performance of an application stands in relation to defined performance goals and helps us to identify the bottlenecks that affect the application performance. It helps to identify whether the application is moving towards or away from the defined performance goals. Defining the performance metrics and defining objectives for each metric is a critical part of performance testing plan.
The amount of time taken by the system to respond to a request is known as response time.
Simple example for this is if we switch on a computer system and the time taken by the system to display the login page to enter into the system is nothing but the response time.
The number of requests that can be successfully served by the system per unit of time is known as Throughput. The throughput of the system may vary depending on number of requests or number of transactions per second (TPS) sent to the system. It is usually measured in terms of requests per second or transactions per second.
A system uses certain amount of resources in order to accomplish user‘s request efficiently and responds back to the user once it is completed. Here the amount of resources utilized to complete the request is known as resource utilization.
SPEForums need your contributions to build up a strong repository of performance engineering resources.
Introduction to Software Performance Testing
Understand basics of performance testing and engineering