Performance Testing

An Introduction

Performance
Performance is one of the most important

aspects concerned with the quality of software.

It indicates how well a software system or

component meets its requirements for timeliness.

 There are two important dimensions to

software performance timeliness, responsiveness and scalability.

Performance Profiles
One of the key activities in performance testing

is to decide what type of load or loads to place on the system/application

There are many variations of performance

testing that we can select from so we first have to determine what is needed

Types of Performance Testing
The three most common types of software

performance testing include:

Testing which is driven by what we want to

measure Testing which is based on the source or type of the load Testing to stress the system or find its limits

Types of Performance Testing
Testing which is driven by what we want to

measure

Response time testing Throughput testing Availability testing Measurement of resource utilization Capacity testing Error rate measurement

Types of Performance Testing
Testing which is based on the source or type of

the load

Usage-based testing Standard benchmark testing Load variation/bounce testing Ramp-up testing Component-specific testing Calibration testing

Understanding Load
Once we have an idea of what we want to

accomplish
The general type of testing we want What tests we want to run

Now we have to decide on the volume of

activity and the composition of that volume, load (i.e. workload)

Load Behavior

Load Behavior

Load Profile
To better simulate the real world, not only

should the load size be estimated, but also a profile of the users/activities that make up the load needs to be created

Test Sample Sizes
Most factors which we want to measure, such as

response time, vary based on many factors; both known and unknown
 This means we cannot measure something once but

must sample it several times in order to compute a meaningful average  How big does the sample need to be? This is a rough rule of thumb for the relationship between sample size and accuracy


     

Sample Size 30 100 200 1,000

Accuracy (roughly) 50% 25% 10% 3%

Number and Types of Users
The mix of users(events) may vary by time

period Special events can alter the mix
 

Browsers Buyers

Think Times
The time it takes a client (or virtual client) to

respond to an application may have a significant impact on the number of clients an application can support
This is a key aspect of concurrency

Background Load (Noise)
What additional activities need to be

considered to accurately reflect the performance degradation caused by network and other application loads, “background noise”

Performance Problem Areas
End User Desktop Problems Internet Bottlenecks ISP Performance and Peering Network Vs Server Issues Load Balancer Problems Faulty Web Server within a Cluster Firewall Performance Application Server Issues Server HW, Device, OS, DB Issues Content Issues

Reason of Bottlenecks
People

Reactive than proactive, Not Thinking About

“Load” or “Scalability” or Limited Expertise in System Design / Development

Reason of Bottlenecks
Process

Poor Architecture and System Design Changing requirements Changing project plans

Reason of Bottlenecks
Technology  Inadequate Hardware Inadequate Network Capacity Poor Implementation / Tuning of Databases and

components

Performance Problem Contributors
Application Server Issues Threading Issues Memory Leaks High Verbose Log File Connection Pool Management Database Server Issues Slow Query Response Query & Stored Procedure Cache Deadlocks Temp DB Issues Network Issues Packet Loss Excessive Network Uses Hardware Related Issues High Latency Web Server Issues Ineffective Caching Connection Poll Management Keep-Alive Connections Flushed Compression Content Configuration

Performance Problem Contributors

Find & Fix Problems
Performance engineering is the process by

which software is reviewed, tested and tuned with the intent of realizing the required performance. This process aims to optimize the most important application performance trait, user experience

Using Framework

Find & Fix Problems
Using Right Methodology Using Right Instrumentation for
Performance  Performance  Performance  Performance

Testing Monitoring Profiling Tuning

Using Appropriate Testing Type

Appropriate Testing Type
Network Testing Baseline Testing Spike Testing Endurance Testing Volume Testing Stress Testing Load Testing

Performance Tuning
It is a process of identifying and eliminating

bottlenecks Performance tuning of Web-based systems is a multivariable and iterative process It is a collaborative effort between cross functional teams Performance tester is an enabler since he provides the necessary information in an efficient manner

Performance Tuning
Design & Arch. Applica-tion Performance DBMS

OS

HW

Tuning

Performance Tuning Process
Define Benchmark Establish Baseline Collect Data Analyze Results Identify Bottleneck Configure and Tune Application / components Test and Measure Keep Monitoring

Performance Testing Tools
HP Load Runner & Performance Center IBM Rational Performance Tester Borland Silk Performer Radview Webload Apache JMeter Open STA

Performance Testing Tools
Generally tools have following components:

 Controller – Responsible for script creation and execution.  Load Generators – Generates different types of load on target server.  Result Analyzer – Used to analyze results.

General Scenario

Summary
A successful software performance test plan

starts with knowing what it is you want to accomplish
 What types of tests do you want? What loads and mixes are needed for these

tests Performance not be taken as a final step in SDLC Know your system well
  

Collect history data Read logs Stress test/ soak test application at Peak load

Summary
End-user experience is not all Checking further into the system for critical

performance bottlenecks may avoid serious problems.

Sign up to vote on this title
UsefulNot useful