The Poisson Distribution in Software Testing

One of the problems in the field of software testing is that there is no clearly established core body of knowledge. Take the Poisson distribution for example. Should all software testers have a basic understanding of this distribution? I’m not sure, but I know that a rudimentary knowledge of the Poisson Distribution certainly can’t hurt a software tester. Very few software testers I know have even the most basic knowledge of the Poisson Distribution and the closely related Exponential Distribution. The Poisson Distribution may appear in a system when there are items arriving over time. For example, consider user connections arriving at a Web site, or process requests arriving at a CPU. Here’s a quick example. Suppose you know from historical data that a new user connection to a Web site arrives on average once every 15 minutes. And suppose you arbitrarily establish your standard unit of time as one hour. Here, the average number of arrivals is 4.0 per hour. This average number of arrivals per standard unit of time is usually given the Greek letter lambda. The probability of a specified number of arrivals, k, in the standard unit of time, is given by the equation lambda raised to the kth power times the constant e raised to the minus lambda power, all divided by k factorial. This equation sounds real ugly but is not really as bad as it sounds. I punched this example into Excel, computed the probabilities of 0 through 10 arrivals in an hour, and got the image shown below. So what’s the point? The Poisson Distribution is an example of a topic that is hard to categorize in terms of whether it should be considered required knowledge for a certain skill level of software tester. Knowing about the Poisson Distribution would certainly help a tester better understand load and stress testing. Additionally, the quantitative techniques associated with understanding the Poisson Distribution can be useful in many other software testing scenarios. A few months ago I wrote an article for MSDN Magazine where I described three probability related techniques and algorithms I feel are essential knowledge for all software testers: generatin pseudo-random numbers, analyzing a pattern for randomness, shuffling a list of items, and generating numbers from a Normal/Gaussian distribution. See http://msdn.microsoft.com/msdnmag/issues/06/09/TestRun/. But this particular "knowledge of the Poisson Distribution for testers" scenario is analogous to education in general: some topics are directly necessary for a particular goal/major/degree, some are peripherally useful, and some may not be useful at all.