This is just one example of the sorts of things you might want to investigate to work out where to pitch your load tests. This is primarily aimed at services or low level tests where you have access to log files. This is not always the case and sometimes you have to come from the other end and talk to the business users to find out how they use the application and what levels of load you can expect in live.
This approach also shows you exact details of calls, often enough to fully design a load test - see here. But be careful This is not always the case. You need to be sure you are seeing the bigger picture. And watch out for various caching levels and where you are pointing your load tests...
So, in this case, I want to design a simple load test that hits the application server directly with current peak production load, This is for regression performance testing.
This page simply shows how I find the correct load to run (transaction per second) in this simple case. We can also see how the load balancing is performing and the ratios of various calls.
And often you can go the levels and look at log files on load balancers and cache servers and see how they are doing. Sometimes you may want to test at these higher levels.
- A typical day's log files are used here: Wednesday 4th March 2015
- An absolute peak rate of 100 transaction per second per server can be observed in these files at roughly the same time = 300tps
- If we look across the three app servers, we definitely need to support 50 (app01) + 40 (app02) + 100 (app03) tps = 190tps
- It is suggested that since this is a typical day's log, that the higher load of 300tps is used and perhaps some contingency catered for.
- Requests are grouped into about 15 transaction types (e.g. asset_ios, asset_xbox, currentTime)
- POST requests for /licence and /prlicence are dealt with with separate POST data files, provided by the devs
- NOTE: Tests must ONLY be run with the licence server mocking in place.
And below are screnshots showing how I get these numbers. The basic idea is to load up log files in Excel (or similar) and roughly plot the transactions per second. Often I do this by averaging over hundreds of lines in Excel - because Excel graphs are very rough and easily hide details - so for example intermittent low level numbers can be lost to the eye between higher level values - just because the lines drawn are very thick. In this case I made it quite simple as I don't need high accuracy, just ballpark figures.
So, to get the numbers, I split the log file by spaces and colons when opening in Excel. This splits out the time stamp into hours, minutes and seconds. I then work on the seconds column
I count the number of sequential seconds that are the same, so the count column (H) is set to:
and then the rate column (I) is set to:
The graph is then based on the rate column. So you can see if we get 3 requests in the same second in the log file (second 7 in this example), we get a value of 3 on the graph: