Test the load of Skype?

This post was originaly posted by me on blog.sogeti.com

The last few days Skype has had trouble getting their users connected to their online phones service. The reason being too many concurrent users. That enormous amount of users gave Skype problems; the Supernodes were offline because of a software bug. Now I can say that they should have tested for this defect, but how do you test for a defect that occurs with about 25 million concurrent (online) users, the typical load for Skype on a regular day?

A load test could have found that defect, but how do you organize such a load? Normal load testing software doesn’t have the  option to go as high as 25 million (!); most will only get to 100,000 virtual users. And even if these tools reach these high volumes, virtual users will be very expensive. So how can these internet services, that have so many users, be load tested?

The cloud can provide an answer. Load testing tools that use the cloud can generate an enormous amount of virtual users to create that load, and cloud-enabled test tools are best to use with these great loads. The cloud will generate the load. With the use of the cloud infrastructure, a more ‘realistic’ load can be generated than the virtual load from complex tools. Some of these cloud-enabled performance test tools only work on the production environment (which may or may not be in a cloud environment), but other tools can perform these load tests on the Development, Test or Acceptance environments.

Use these cloud-enabled performance test tools to generate these enormous loads and find defects that only show up when your systems are most under stress. Thus at the worst moment!

Performance testing on the clouds

A performance test is usually done at the end of the test phase. This because of the need of a well enough performing environment. The environment that is most production-like is the acceptance environment. This creates a risk in applications that are highly dependent on a high performance, because the defects are found late in the process and are therefore expensive to fix. But how can we help this?

With a test cloud this can be done in every environment. Whenever the infrastructure needs to be upgraded to a production-like infrastructure this can be achieved in the cloud. After the needed performance tests the environment can again be decreased.

With the use of the needed infrastructure from a cloud a more ‘real’ load can be generated than the virtual load from arduous tools. A cloud enabled performance test tool (like the one from SOASTA, see image) works with the cloud to generate the needed load and stress to test an application (which is or isn’t in a cloud environment).

Improve your performance testing with the cloud

One of the most costly and difficult tasks my test teams need to perform are performance tests. Most of the time performance testing requires specific tools that are expensive, to say the least. Special engineers are needed to deploy these tests. And for online applications that have a great deal of visitors performance testing becomes more  important these days.. Unfortunately performance tests are not only expensive, but also difficult to execute. Because performance needs a well normal performing environment, most performance tests can only be done on the acceptance environment (where applicable). But this is mostly too late. But how can this be improved?

Performance test tools

The performance of an application is becoming more and more important. So to know what the performance is and test against it is a task worth doing. Performance, load and stress test tools like HP LoadRunner or Borland SilkPerformer® are pretty costly. Most of the time they are worth the expense, but in these economic days they’re still a large investment.

Cloud computing can offer a solution for this. A few tools are available these days that can use the cloud to generate the load needed for a sufficient performance test. And these tools are not the expensive tools I talked about earlier. Most of these tools are much cheaper because the technology isn’t as complex as in ‘normal’ performance testing tools. They use the availability and cheap pricing of the cloud to execute the tests at a fraction of the cost. In this post from Dion Hincliffe you can see what cloud computing actually costs and compare this to the licencing of HP LoadRunner and Borland SilkPerformer®.

Performance of the environment

But the availability of a cheap and good performance test tool doesn’t solve the issue of the test environment. As said is the environment best suited to execute performance tests the acceptance environment. This one should be ‘production-like’ in capability, suitability and performance. But most of the project I did either the acceptance environment wasn’t production-like or didn’t exist. When it was available it’s always too late to execute the performance tests. To solve an issue you have to dig deep in the code or database to upgrade the performance. Which results in a lot of retesting for all the areas of the application that have been adjusted.

For all this cloud computing can also offer a solution. When you have a testing environment in the cloud you can upgrade your environment to act performance-like at will. And decrease it when wanted. Just add or remove extra servers, nodes, disk capacity, memory, or… when you want this done. Thus creating a production-like environment when needed. Then you can execute your performance tests as early as you want and, subsequently, adjust it! This can be repeated when wanted.

Cloud computing can help the testing of the performance of your application. By giving the option of a less costly type of test execution tool. And giving a production-like environment when needed.