Software Quality and Performance
Performance is a critical quality attribute of software. According to ISO 25010, Performance Efficiency ranks among the most important characteristics. Users expect fast response times, and research shows that slow load times lead directly to user abandonment.
In a Nutshell
- Performance is a quality attribute defined in ISO 25010.
- Performance Efficiency covers response time, resource utilization, and capacity.
- Performance must be planned early and measured continuously.
- Performance Testing and Monitoring are essential.
Performance Efficiency according to ISO 25010
Performance Efficiency in ISO 25010 comprises three sub-characteristics, each addressing a different aspect of performance.
Response Time
Response time describes how quickly software reacts to user input and how many requests it can process within a given period. Key metrics include response time, throughput, and processing time. A webpage that loads in under three seconds is perceived more favorably by users than a slow one.
Resource Utilization
Resource utilization examines the consumption of CPU, memory, network bandwidth, energy, and storage. Efficient software completes its tasks while consuming as few resources as possible. This matters especially for mobile devices, cloud costs, and environmental impact.
Capacity
Capacity describes the maximum load a system can handle before performance degrades. This includes concurrent users, data volume, transactions per second, or memory limits. Scalability is closely tied to capacity.
Best Practices for Good Performance
Efficient Algorithms and Data Structures
Choosing the right algorithm and appropriate data structure often has the greatest impact on performance. A poor algorithm cannot be adequately compensated for by faster hardware alone.
Database Optimization
Indexes, optimized queries, avoiding N+1 queries, and sensible schema design significantly speed up database access. Slow databases are among the most common performance bottlenecks.
Caching Strategies
Caching stores frequently used data or computed results to accelerate repeated access. Browser caches, server caches, CDNs, and database caches are common variants.
Asynchronous Processing
Tasks that don’t need to complete immediately can be handled asynchronously in the background. This improves user response time and reduces load on the main application.
Pagination for Large Datasets
Instead of loading all records at once, divide them into smaller pages. Pagination reduces load times, memory consumption, and network bandwidth.
Monitoring and Alerting
Continuous production monitoring reveals performance bottlenecks early. Well-designed alerts help catch issues before users notice them.
Real-World Example
An e-commerce product page is an ideal case for performance optimization because it contains many typical bottlenecks simultaneously: database queries, images, external APIs, and static content. This example works well because it demonstrates how different best practices interact to improve both response time and resource utilization.
E-commerce product page:
- Optimize database queries with indexes
- Lazy load product images
- Paginate results
- Cache API responses
- CDN for static assets
Why these measures?
- Optimize database queries with indexes: Reduces query time and database CPU load.
- Lazy loading for product images: Loads images only when they become visible. This shortens initial page load time.
- Pagination: Limits the number of products loaded simultaneously, conserving memory and bandwidth.
- Cache API responses: Avoids repeated calculations and reduces backend service load.
- CDN for static assets: Distributes images, CSS, and JavaScript across servers located near users, improving load times globally.
This combination shows that performance optimization cannot rely on a single measure but must consider multiple layers of the application.
Advantages and Disadvantages
| Advantages | Disadvantages |
|---|---|
| Better user experience | Optimization increases complexity |
| Higher conversion rates | Early performance requirements needed |
| Lower infrastructure costs | Measurement and monitoring require effort |
| Better scalability | Risk of over-optimization |
| Shorter load times | Specialized knowledge required |
| Competitive advantage | Tests require realistic environments |
Key Study Points
- Performance Efficiency: ISO 25010 characteristic with response time, resource utilization, and capacity.
- Response Time: Response time, throughput, and processing time are central metrics.
- Resource Utilization: CPU, memory, network, energy, and storage should be used efficiently.
- Capacity: Maximum user load, data volume, or transactions per second.
- Scalability: The ability to handle more load with additional resources.
- Caching: Intermediate storage of data to reduce access time.
- Pagination: Division of large datasets into smaller pages.
- Lazy Loading: Loading resources only when needed.
- Database Optimization: Indexes, optimized queries, and avoiding N+1 queries.
- Asynchronous Processing: Offloading non-critical tasks to the background.
- CDN: Content Delivery Network for distributing static content.
- Performance Testing: Load, stress, and performance tests for measurement.
- Monitoring: Continuous measurement of performance in production.
- Performance Engineering: Holistic view of performance beyond testing alone.
Key Sources
- https://iso25000.com
- https://web.dev/performance-scoring/
- https://en.wikipedia.org/wiki/Software_performance_testing
Frequently Asked Questions
Is performance a quality attribute according to ISO 25010?
Yes, according to ISO 25010, Performance Efficiency is one of eight main characteristics of software quality.
What is Performance Efficiency?
Performance Efficiency is the ISO 25010 characteristic that describes how well software uses time, resources, and capacity. It consists of response time, resource utilization, and capacity.
What is response time?
Response time describes how quickly the software reacts to users and how many requests it can process. It covers response time, throughput, and processing time.
What is resource utilization?
Resource utilization describes the consumption of CPU, memory, network bandwidth, energy, and storage. Efficient software uses these resources sparingly.
What is capacity?
Capacity describes the maximum load a system can handle, such as concurrent users, data volume, or transactions per second.
Name an important performance metric.
Important metrics include response time, throughput, CPU utilization, memory consumption, and error rate.
What is caching?
Caching stores frequently used data or results to accelerate repeated access and reduce server load.
What is pagination?
Pagination divides large datasets into smaller pages to reduce load times, memory consumption, and network bandwidth.
What is lazy loading?
Lazy loading loads resources like images or modules only when they are actually needed. This shortens initial page load time.
What is a performance bottleneck?
A performance bottleneck is a component that limits the overall speed of the application, such as a slow database or an unoptimized algorithm.
What is performance monitoring?
Performance monitoring is the continuous measurement of performance in production to identify bottlenecks early.
What is scalability?
Scalability is the ability of a system to handle more load with additional resources without losing quality.
What is a CDN?
A CDN is a Content Delivery Network that delivers static content faster through geographically distributed servers.
Why is performance important?
Slow load times discourage users, reduce conversion rates, and increase infrastructure costs.
What is performance engineering?
Performance engineering is a holistic view of performance beyond testing alone, including design and architecture.
What is asynchronous processing?
Asynchronous processing executes tasks in the background to improve response time for users.
What is a database index?
An index speeds up queries on database tables, similar to how a table of contents helps you navigate a book.
What is load testing?
Load testing examines how an application behaves under expected or higher user load.
What is the difference between horizontal and vertical scaling?
Vertical scaling increases the resources of a single server, while horizontal scaling adds more servers.
What is an N+1 query?
An N+1 query executes an additional database query for each data element and is a common performance bottleneck.
Next in the Software Quality Learning Path
The next article in the Software Quality Learning Path covers Software Quality and Test Coverage — how test coverage ensures quality.



