Archive

Archive for the ‘Performance Engineering’ Category

“The Values of Load/Performance Testing”

September 28, 2009 Leave a comment
Objective
The objective of this white paper is to give the clear picture of the values of
Load/Performance testing, different aspects how to fulfill the gap of performance into any
web application by certain efforts from reliable resources.

Objective

The objective of this article is to give the clear picture of the values of Load/Performance testing, different aspects how to fulfill the gap of performance into any web application by certain efforts from reliable resources.

What is ‘Load Testing’? – Introduction, concept & definition

Introduction

As a human being, we always tend to check the actual performance/output of each and every object by some or more number of manual inputs whether it would be in a form of any object like a pen, electronic gadget, etc. to get desired output from every object. In order to achieve required output we generally put ‘x’ amount of load on particular object to check the maximum capability and desired response time.

There are three main terms for testing by simultaneously acting multiple users (real or simulated): Load, Performance and Stress testing.

Definition

‘Load Testing’ – we can define by different ways, but as a part of initial understanding we derived some of as given below:

1. Testing an application under heavy loads, such as testing of a web site under a range of load to determine at what point the system’s response time degrades or fails.

2. Load testing is the process of subjecting a computer, peripheral, server, network or application to a work level approaching the limits of its specification. Load testing can be done under controlled lab conditions to compare the capabilities of different systems or to accurately measure the capabilities of a single system.

Load testing is a part of a more general process known as performance testing. Examples of load testing include:

 Downloading a series of large files from the Internet.

 Running multiple applications on a computer or server simultaneously.

 Assigning many jobs to a printer in a queue.

 Subjecting a server to large amount of e-mail traffic.

 Writing and reading data from to and from a hard disk continuously.

Performance and Stress Testing

 Performance Testing
Performance testing is a generic term that can refer to many different types of performance-related testing, each of which addresses a specific problem area and provides its own benefits, risks and challenges. Let’s see the concept of performance and stress testing by their definition.
1. Performance testing is the process of determining the speed or effectiveness of a computer, network, software program or device. This process can involve quantitative tests done in a lab, such as measuring the actual response time at which a system functions. Qualitative attributes such as reliability, scalability, and interoperability may also be evaluated. Performance testing is often done in conjunction with stress testing.

2. Performance testing is a method of investigating quality related characteristics of an application that may impact actual users by subjecting it to a reality based simulations.

3. Performance tests are used to test each part of the web server or the web application to discover how best to optimize them for increased web traffic. Most often this is done by testing various implementations of single web page/scripts to check what version of the code is the fastest.

 Stress Testing

Stress testing refers to put the maximum load on system till system gets crashed. With the help of stress testing, we can figure out the actual capabilities of the system under heavy traffic of user, network, peripheral etc. let’s see the technical definition with example:

1. Stress tests are simulated “ brute-force” attacks that apply excessive load to your web server. ‘Real world’ situations like this can be crated by a massive spike of users – caused by a larger referrer (imagine your website being mentioned on national TV..). Another example would be an email marketing campaign sent to prospective customers that asks them to come to the website to register for a service or request additional information.

The purpose of stress testing is to estimate the maximum load that your web server can support. Such tests as system functional testing while under unusually heavy loads, heavy repetition of certain actions or inputs, input of large numerical value, large complex queries to database system, etc.

2. Stress testing – verifies the acceptability of the target-of-test’s performance behavior when abnormal conditions are encountered, such as diminished resources or extremely high number of users.

The values of Performance Testing
Performance testing helps any system to determine it’s actual output/result of the system by placing more or less load in form of multiple concurrent users. We need to follow some standards to perform ‘Performance testing’. Performance testing can be done on many different automated tools like WAPT, OpenSTA, WSOP, LoadRunner, ANTS Load, etc.
– Let’s see the core activities of Performance Testing with the help of following chart.

Core Performance Testing Activities

1. Identify Test Environment

2. Identify Performance Test Criteria

3. Plan & Design Tests

4. Configure Test Environment

5. Implement Test Design

6. Execute Tests

7. Analyze, Report and Retest

In order to achieve best test results of ‘Performance Testing’, person has to follow above standard of ‘Core Performance Testing Activities’. Let’s see the benefits of performance testing.

Benefits of Performance Testing

 Determines the speed, scalability and stability characteristics of an application, thereby providing an input to making sound business decisions.

 Focuses on determining if the user of the system will be satisfied with the performance characteristics of the application.

 Identify mismatches between performance-related expectations and reality.

 Supports tuning, capacity planning, and optimization efforts.

Ideal Solution – How we can optimize performance of web based application?

As new web-based applications and delivery models revealed to the world, it has become clear that there is an inherent gap between business applications and processes and the underlying network and application infrastructure.

Customers, partners and their distributed workforce rely on availability, performance and security of mission-critical application services to effectively conduct business. To provide users with highest level of support, today’s enterprise data need to safeguard themselves from

 Application-level attacks

 Application scaling pains

 Database bottlenecks

 Server and network downtime and overloads

 Slow response time
We may face some challenges and areas always during performance testing for web based applications which may not have addressed during testing activities.
 May not detect some functional defects that only appear under load.
 If not carefully validated and designed, may only be indicative of performance characteristics in a small number of production scenarios.

 Unless tests are conducted on the production hardware, from the same machines the user will be using, there will always be a degree of uncertainty in the results.

To overcome from such situations, we should always approach to every single problem in such a way that our kind of infrastructure and application meets the actual requirement with optimal performance to our system. In this context we can derive some genuine solution to optimize performance as per given below.

Solution

1) Optimize source code: Check whether written source code is up to the mark with standards of programming language, as most of the time performance issues lies into optimization of source code.

2) Minimize HTTP Requests: 80% of the end-user’s response time is spent on the front-end.

Most of the time tied up in downloading all the components in the page: images, CSS, scripts, flash, etc. Reducing the number of the components in turn reduces the number of HTTP requests required to render the page. This is the key to faster page.

3) Database Script optimization: Many a times developer/programmer might not have followed the right standards in writing database scripts, stored procedures, SQL queries etc. At the same time software tester should approach white-box testing and give some efforts in cross check of database queries by doing DB review to optimize database scripts.

4) Optimize images and flash objects: After a designer is done with creating the images for the web page, there are still some things you can try before you FTP those images to your web server.

 Check the GIFs and see if they are using more space compared to color of the image using any standard image compression tool/software.

 Try converting GIFs to PNG and JPEG and see if there is a saving of space. In most cases PNG and JPEG will occupy lesser space compared to GIF.

 If possible avoid using larger flash components on the web page, in place of flash use some images as this will improve performance of the web page.

 Minimize use of highly loaded CSS, scripts, redirects, external third party components into your system.

Conclusion

From above description, we can conclude this topic as:

Performance Testing is the overall process.

Load Testing checks if the system will support the expected conditions.

Stress Testing tries to break the system.

-Thank you-

Advertisements

Performance Engineering

February 18, 2009 Leave a comment

“Load/Performance Testing – The Best Practice”

Performance – of the application becomes a great challenge for the software industry all over the world. Applications are being developed and deployed by In-house developers or by Out-sourced vendors but performance of applications are not up to the mark and users are not satisfied with it. For example, a user blames that a web page takes 3 seconds to be appeared on normal load but when the no. of user increases, the same page takes 7-8 seconds so, performance of the application degraded when the load is increased. This issue becomes more critical in banking applications when heavy financial transactions are being processed but the server is not responding due to heavy load or huge volume of data. This may be cause of degradation in response time, throughput etc and other performance related factors. Whether you design, build, test, maintain, or manage applications, you need to consider performance. If your software does not meet its performance objectives, your application is unlikely to be a success. If you do not know your performance objectives, it is unlikely that you will meet them.

Performance affects different roles in different ways:

  • As an architect, you need to balance performance and scalability with other quality-of-service (QoS) attributes such as manageability, interoperability, security, and maintainability.
  • As a developer, you need to know where to start, how to proceed, and when you have optimized your software enough.
  • As a tester, you need to validate whether the application supports expected workloads.
  • As an administrator, you need to know when an application no longer meets its service level agreements, and you need to be able to create effective growth plans.
  • As an organization, you need to know how to manage performance throughout the software life cycle, as well as lower total cost of ownership of the software that your organization creates.
  • In QA department, we have defined flow of performance testing according to the best practices and the discipline. From an organization’s perspective it is necessary their QA department takes care of every application regarding Performance Engineering activities!