Performance and Load Testing
Performance and Load Testing
Throughput
Response Time
Tuning
Benchmarking
A very well-improved
performance of a product
makes no business sense if
that performance does not
match up to the competitive
products.
Load Testing
Process of exercising the system
under test by feeding it the
largest tasks it can operate with.
Constantly increasing the load on
the system via automated tools to
simulate real time scenario with
virtual users.
Examples:
Testing a word processor by
editing a very large document.
For Web Application load is
defined in terms of concurrent
users or HTTP connections.
Stress Testing
Trying to break the system under
test by overwhelming its resources
or by taking resources away from it.
Purpose is to make sure that the
system fails and recovers gracefully.
Example:
Double the baseline number for
concurrent users/HTTP
connections.
Randomly shut down and restart
ports on the network
switches/routers that connects
servers.
eBay
Buy.com
Amazon
eTrade
Design Phase:
Development Phase:
Deployment Phase:
Record
Record the defined testing activities that will be used as a
foundation for your load test scripts.
One activity per task or multiple activities depending on
user task definition
Modify
Modify load test scripts defined by recorder to reflect more
realistic Load test simulations.
Defining the project, users
Randomize parameters (Data, times, environment)
Randomize user activities that occur during the load test
Test Script:
One typical user from login through completion.
Why Planning
Analysing the Application
Defining Testing Objectives
Gathering Requirements
Load Test Checklist
Practice Questions
Gathering Requirements
• All the requirements and resources should be evaluated and
collected beforehand to avoid any last minute hurdles.
Common Objectives:
Measuring end-user response time
Checking reliability
General Objective:
Focused Objective:
Databases.
Staff Skills
Experience in load testing
Application knowledge
Systems knowledge
Support Staff
Key staff identified and allocated
Databases populated
Coordinator
Jmeter
Rubis
Developed in C++
HTTP Load Test Application
Advantages:
Open Source Software
Drawbacks:
Only designed for Windows
Advantages:
Open Source
The quality of the chart
Simple and fast to use
The logging functionality
Drawbacks:
The manual edition of the tests is badly designed
The ambiguity of certain results
Distributed tests are impossible
Specific technology environment (Delphi, NT)
Advantages:
The possibility to build any kind of test agent
Open source
Drawbacks:
Familiarity with the Jython scripting language, Java language and
to write it from scratch
The monitoring tools are very basic, since it is limited to the
response analysis
Must pay for distributed testing
Advantages:
Open Source
Drawbacks:
Deployment for distributed test
Advantages:
Open Source
Generation of script
Drawbacks:
No graphical interface
Poor results
No monitoring
Advantages:
Open Source
The distributed testing
Various target systems
Extensibility: Pluggable samplers allow unlimited testing capabilities
Drawbacks:
Chart representation quite confuse
Terminology not very clear
Necessary to start remote machine one by one
Remote machines must be declared in a property file before starting
application
Provided with some load-test tool (designed for Rubis, but some
parts of code could be re-used) and a monitoring system.
Developed in Java.
Advantages:
Open Source
Monitoring capabilities
Drawbacks:
Specific to Unix environment and Rubis application
Advantages:
Can simulate hundreds and thousands of concurrent users
Reasonable Price
Drawbacks:
Complex User Interface