Success Factors
Planning Process

SEI Load Test Planning Process

Mark McWhinney
Portata, Inc.

Introduction

As with any project, the planning stage is the most critical to a project's success. For load testing projects, the planning stage is even more critical due to technical and project challenges.

Load testing involves more parts of an organization than any other activity in application development. The people involved often include business owners, developers, architects, QA, database administrators, system adminis­trators, network administrators, data center support staff, various managers, third party organiza­tions and sometimes customers.

Load testing projects usually occur as the last step in application development just before applications are deployed. In practice with schedule slips there is usually very little time to plan and execute a load test.

We create models of user behavior making many assumptions about what the users will do, how they do it and how often they do it. We create large result sets with no definitive method for determining the correctness or meaning of the results.

To handle these problems with load test planning, Portata developed the SEI Load Test Planning Process. It is an empirical model that evolved over several years from observations in our load test consulting practice.

The planning methodology is a step by step procedure that examines six key areas of information that are critical to the success of a load test project. This paper describes these six steps and provides tips for implementing the planning activities.

The Planning Process

Often development and functional testing phases are late, so load testing gets squeezed in to the schedule just before application deployment. As a result, there is usually little time to plan and execute a load test.

To handle the time compression, we designed the SEI Load Test Planning Process such that it can be executed within one day for most projects. The morning of the first day is spent collecting information. The afternoon is spent documenting the plan and analyzing it for omissions and errors.

The planning day begins with a meeting in the morning to determine the project’s goals and gather information. The meeting attendees include representatives from the application’s development team, deployment team, and production support as well as people who are most familiar with how the end users are likely to use the application. People from different parts of the project may have very different ideas as to what the goals are or what load/stress/performance is all about. It is important that they all contribute to the planning process and have a common understanding of what the project will achieve.

During the meeting, the facilitator (usually the load tester) writes the goals, user types, etc. on a whiteboard to keep the meeting focused. This will also help the documentation effort later. It is best to use a whiteboard instead of flip chart paper, so that we can modify or remove information as needed during the meeting.

Once we collect all of the information from the planning meeting and any subsequent meetings, we write the information into the Load Test Plan document.

The Load Test Plan is a simple document that contains only the core information needed to build and execute the load test – namely the information gathered in the planning meeting. The six main sections of the document correspond to the six areas discussed in the meeting, so that the documentation effort is basically just copying the information from the whiteboard into the specification document.

The plan includes only the technical and business issues not the schedule and other project-specific information that should be in the application’s development plan or overall test plan. Likewise, the plan does not contain a lengthy dissertation on the types of testing as is often found in a functional test plan.

When we complete the plan, we distribute it to all stakeholders for review then correct it as needed.

The plan review and update activities can take a day or two beyond the initial planning day, but while that is happening, we can begin the technical investigation and test environment set up.

The Six Steps

The intent of the SEI Load Test Planning Process is to

  • make information gathering quick and painless
  • make plan document generation easy
  • make the plan objective and verifiable
  • be simple enough for technical and non-technical people to understand and participate

To this end, we identified six areas for which we need to gather, analyze and document information. The six areas are the project goals, users, use cases, production environment, test environment and load test scenarios. We refer to the areas as “steps” in that the planning process goes through the areas in a specific order. Each of these six steps is described below.

Goals

The load test project goals are the business needs of the project, not the technical objectives.

We start the planning by defining the load test project goals with the over all business needs not the technical objectives. While questions such as “will we max out the CPU under load” are important, they are only the contributing issues in the bigger questions such as “we will be able to support our business activities” such as selling products on the Web or processing financial transactions.”

So that we can objectively verify that a project has met its goals, we express the goals in the form of questions that can be answered objectively with either a yes/no or a number. For example, “How many users can the system handle” can be answered objectively with a number. “How will the application do under load conditions” is not good in that there is no objective definition of what it means to “do”.

Goals should also have constraints to bound the questions. It is not enough to ask how many users can run on an application; we must also specify what the acceptable response time performance is. For example, “how many users can run on the application while maintaining an 8-second response time or better for 90% of their transactions” is a good, objective question.

Users

Users are any person or process that may generate load or use system resources.

We create the list of users by brainstorming all the types of people and processes that could possibly affect the application or system. We start by defining the types of primary end users of the application or system such as purchasers, claims processors, and sales reps. We then add other types of users such as system administrators, managers, and report readers who use the application or system but are not the primary users.

We add types of non-human users such as batch processes, system backups, bulk data loads and anything else that may add load or consume system resources. We include significant applications that will be collocated on the same hardware that will compete for system resources such as CPU and network bandwidth. What qualifies as a significant application is somewhat subjective. An application server or database is usually significant. A print spooler generally is not.

Once we identify all the types of people and processes that can put load on the application or system, we go through a winnowing process to eliminate the user types that are unlikely to put appreciable load on the system. This could be due to too few users of a particular type and/or too little system activity. For example, system backups performed at night when there is little or no user activity may be winnowed out. System administrators, managers and background processes are often eliminated.

Since the number or mixture of users may vary from one scenario to another, we do not attempt to define the number of users until the Scenario step (the last step).

Use Cases

Use cases are tasks or business processes that users perform such as entering an order, generating a report, or approving a request.

For each type of user we identified in the previous step, we identify the tasks that the user performs. Again, we use a brainstorming approach to come up with a good list.

As before, we go through a winnowing process to eliminate the use cases that are unlikely to put appreciable load on the system. This could be due to tasks that are performed too infrequently or tasks that do not consume much system resources.

During the morning planning meeting, we just list the use cases for each user type. If time permits, we define the steps in each use case. If time is too short as is often the case, we work with the user representatives after the meeting to define the steps for each use case.

Since the number or mixture of use cases may vary from one scenario to another, we do not attempt to define the number of users executing a particular use case until the Scenario step (the last step).

Production Environment

The production environment is the configuration of hardware and software components in the data center that support the application when it is in operation.

In that performance and capacity of an application is significantly affected by the hardware and software components on which it executes, it is important to understand what they are and what their individual capabilities are.

During the morning planning meeting we draw a diagram of the production environment on the whiteboard. The diagram includes the servers, clients, and network elements. Each item on the diagram includes speed, capacity, IP address and name, version numbers and other significant information. For example, a server would include the model number, OS version, number of CPUs and their speed, and memory. Databases would include version number and type of connections e.g. ODBC, SQL*Net, etc.

Often the not all the information is available during the morning meeting, so we gather and diagram as much of the information as time permits then work with the production support staff after the meeting to get the details as needed.

The information gathered in the meeting is documented in tabular format in the Load Test Plan document. If time permits, we draw a diagram of the environment using a tool such as Visio and annotate each component with the information. (The diagrams that the production support staff typically has are usually too crowded to annotate with the information that we need.)

Test Environment

The test environment is the configuration of hardware and software components in the test lab that support the application when it is being tested. It also includes the hardware and software components needed by the load generation and measurement tools.

As with the production environment we draw a diagram of the test environment on which the test will run. It includes the same elements as the production environment along with the equipment needed for the load test software. There may be multiple variations of the test environment depending on the business goals and the scenarios.

It is important for the test environment to be as similar to the production environment as is possible to be able to get meaningful performance results. Often for financial reasons it is not possible to duplicate the exact production environment. If so, during the planning meeting we look at various alternatives for setting up the test environment. They may include the use of the production environment after normal usage hours, using some production tiers, leasing or renting equipment, short-term licenses from software vendors, etc.

The lead time to plan and set up the test databases can be significant, so we start the planning in the initial meeting. It is important that the databases be set up with the same amount of data in the same proportions as the production environment as that can substantially affect the performance.

Scenarios

A scenario is a description of the test environment and the use cases, number of users per use case and their frequency.

For each scenario, we

  1. Select the use cases to include
  2. Determine how many instances of each use case will run concurrently
  3. Determine how often the use cases will execute per hour
  4. Select the test environment

We list the users, their use case, and frequency in a table for each scenario.

Typically there is one scenario for each business goal.


Portata

Portata is the premier provider of affordable load test services. Our experienced staff can measure your user capacity and identify your application bottlenecks at a substantially lower cost.

Portata has refined its knowledge of the critical success factors for planning and managing application performance management projects. Our experienced test project managers and engineers maintain deadlines within budget, while managing the risks inherent in supporting today’s complex business processes.

For more information about load testing or other services, contact Portata by e-mail at info@portata.com or visit our web site at www.portata.com.

Also available from Portata is the Critical Success Factors for Load Test Projects white paper.

Author

Mark McWhinney is President of Portata in Mountain View, CA. Mark is the author of several papers on load testing and on software quality assurance processes.