Tuesday, July 19, 2011

What requirements to collect

After a long time I felt like restarting my blog with useful information. As promised in my earlier posts, I like to continue with the requirements collections.

First you must need to know the purpose of the performance testing for a project and then collect the possible requirements. I would like to give you a small list of requirements that will help you better understand to go for your performance tests.

1 What is the purpose/goal of this current proposed performance testing?
2 Has the application been Performance tested before? If yes do you have a baseline ?
3 What is the total number of users who use the system each day?
4 What is the total number of concurrent users?
5 What is the current growth rate seen in the past year in users?
6 What are the business hours per day in which application is used?
7 What are the peak times? What is the duration of the peak time?
8 What are the various user profiles and their frequency of activities on the site?
9 Also provide the peak load that can be expected from each user profile and the duration for which the peak load is to be maintained.
10 What are the major transactional functional flows for the application? (List the frequently used functionalities and Business critical functionalities in the application/system/product)
11 What are the business critical flow/ Scenarios in the application
12 What are the no of transactions in a day or over a period of time?
13 What are the number of transactions/hour for each business transaction identified above? 14 What is the target load in terms of Hits per second?
15 What is no of transactions to be performed in defined test duration?
16 How long does it usually take to complete each scenario/process flow?
17 What is the acceptable response time for each transaction of page loading?
18 What is the acceptable time out for each page and session?
19 Is there any acceptable throughput for the server?
20 What is the protocol used for communication? Does it use SSL or multiple protocols?
21 What is the major browser used on the application
22 What is the architecture of the Application?
23 Is the test environment identical to production?
24 Was the test environment scaled one? If so, what scale compared to production as the requirements might need to be scaled accordingly?
25 Is the application environment clustered?
26 If the environment is clustered, How many machines/legs are going to be used in each layer?
27 What are the different S/W used in environment like O/S, Web serer, App server, DB?
28 How many CPU are available for each server?
29 What is the acceptable resource utilization? (%CPU Usage <75%, % Memory usage < 80% , % Wait time<10%)
30 What monitoring tools are available? What needs to be monitored? Who is going to monitor what servers?
31 Are there any load balancers or proxy servers in Environment?
32 Is there any proxy between Test Environment and LR environment?
33 What is the network bandwidth that we need to consider for the test? Is it scaled as per Production environment?
34 Do we have any other applications running in the same environment?
35 Is there any impact or relationship between these two applications
36 What are the known application issues?
37 Are there any data dependencies in the application that will impact scripting?
38 Is the code frozen?
39 Is the test environment stable?
40 Are there any specific risks associated with the application or the project?
41 What is the average session duration for a user?

There may be other questions/requirements need to collect depending on your project and the objective of performance testing. Its very common to measure that the no of users sustained by system, response time of various transaction times, throughput of the servers, resources utilization under different workloads.

Once you collect the requirements you need that could allow to meet the objective of your performance test then you continue with work load modeling and designing of the load tests.

We will be continuing with different types of tests we can conduct to measure performance of systems and the importance of work load models.

No comments: