Why Test?
Customers expect that with each new product release companies will provide more
features, better quality and lower prices. To keep up with this fast changing market,
companies involved in software, hardware, or equipment manufacture are constantly
looking for ways to reduce time to market, improve productivity and lower costs.
Regardless of its size, if a company is to be successful in the design, development
and production of products or systems it is almost certain that they must have some
form of testing strategy in place. Whether they have implemented test procedures
as part of a formal Quality Assurance (QA) plan, or they simply rely on the individuals
within the company to implement their own testing, time and effort should be allocated
to testing.
The fundamental aim of the testing process is to ensure that systems meet their
specified requirements. Whether the requirement is functional or performance based,
some form of testing must be carried out to verify compliance with a specification.
In many cases companies consider testing an essential part of their development
process. The benefits of testing during development can be measured as improved
quality, reduced delivery times and lower support costs. In other cases the customer
may require that a formal Acceptance Test be carried out before the product is delivered.
An Acceptance Test is a documented set of test procedures and required results
which must be carried out before the product can be officially released to the customer.
Even when product development is complete, testing has a further role to play within
product maintenance. In particular testing can be crucial in ensuring that any changes
made to the product do not cause a reduction in the overall quality, i.e. the unchanged
parts of the product continue to operate as normal.
The requirement for testing also applies to web based applications; users expect the
application to run smoothly without slow response times, site lock-ups, failed logins,
corrupted data and other performance related problems. To ensure this, the application
needs to be performance tested.
What is Web Application Performance Testing?
The goal of performance testing is to identify the presence of bottlenecks in a
web application that could potentially cause performance problems. This is done
by applying a realistic load to a web application and monitoring a range of performance
related parameters during the test. The performance data captured from the test
can then provide a measure of the application’s capability to deliver an acceptable
level of performance both at the time of testing and in the future.
A typical performance test consists of four main stages:
- The capture of user interactions
- The creation of virtual users
- The application of the load
- The analysis of the test results
These stages are covered in more detail below.
The Capture of User Interactions and Creation of Virtual Users
In the first stage of the test creation the range of typical user types is determined.
The interactions of each individual user type are then captured using a combination of a
standard browser and test specific software (such as TelQA Test). The interactions
are stored within an editable script. This script can then be modified, or modelled, to create a virtual user (VU).
The user accesses the target application using a standard browser
Browser communication to the target application is intercepted by the test software.
A script is created containing all requests made by the user
The target application responses are intercepted by the test software. The response
data is inserted into the script at the relevant points
The script content is modelled to create virtual users (VUs) by changing all user specific information (passwords,
delays, etc) to values which can be defined within the test
Application of the Load and Results Analysis
A realistic load consisting of different combinations and volumes of VUs is created by the test software. This load may be a fixed load applied for a specified length of time, or it could be a load that increases and decreases over time.
The test software controls the replay of user interactions through VUs. Performance
results data relating to individual VUs is collected by the test software
VU requests as captured during the creation of the VU
Server response to individual VU requests
The test software requests performance data
Web server performance data is collected by the test software
Types of Performance Testing
Typically, performance testing is split into two main categories:
- Load Testing
- Stress Testing
Load Testing
Load testing involves applying a realistic load to a web application such that the
behaviour of the application can be monitored under both normal and expected peak
load conditions.
Stress Testing
Stress testing involves applying an abnormally high load to a web application to
test its robustness and stability. The application is usually loaded to breaking
point. This type of testing can be used to determine the behaviour of the application during extreme load situations.
Applications of Performance Testing
Performance testing is used throughout the full product development lifecycle. A
typical web application development lifecycle will include:
- Unit Testing
- Integration Testing
- Customer Acceptance Testing
- Service Level Agreement Validation
- Regression Testing during maintenance
Each of these testing stages utilise both functional and performance testing.