Picture this situation, you are a professional in any given line of work. You just have your website, web aplication or system backend ready for deployment. After many months of hard work, the system is ready to be installed on remote servers and start receiving visits from potential customers or just users browsing through your community and offerings.
You did your share of testing to make sure the whole application works, you are confident that it will fare well against any number of strangers visting your website.
Unfortunately, when reality comes knocking down your door, the actual situation might be a little bit different from what you initially expected. Worry not anymore, because there are ways to prevent or anticipate being in a pickle like this.
The importance of testing
In software development, testing is the stage where developers make sure the system works as intended. Now, in web development, where your website or application is actually publicly available, the tools and processes involved are quite different.
Not only you have to focus on having a killer website or application, but you also need to make sure it’s always available. 24 hours a day, seven days a week. Fortunately, you can trust your hosting providers, such as City Network and City Cloud, to handle the hardware and infrastructure part for you. There is a big weight off your chest right there.
But even so, nothing can prevent your website from hitting the proverbial ”wall”. It doesn’t matter how many ”unlimited” advertisements you have read, there is no such thing as endless amount of resources and if your website is doing well, you can bet it will have performance problems.
The bottlenecks can appear everywhere, you can have the best infrastructure in the world but if your software is not properly configured or simply not fit for the right job, chances are your application will perform poorly, affecting all of your users under peak hours. Or worse, grinding your website to a screeching halt.
Load and Stress Testing
Fortunately, this is a situation that has matured over recent years, where Internet network usage has spiked to unforeseen levels. There are so many users out there, that one needs to be prepared.
Now, it´s a necessity to make sure the website in question can handle the load or better yet, to understand exactly where the limit is and what would you do to react when things go awry.
Load Testing is, as the name implies, exactly that. Controlled bursts of traffic directed towards your test website. This is basically a simulation of real users accessing your sites. You control how many of these ”fake” users are browsing at the same time, which pages, for how long, you name it.
Stress Testing is a step beyond. Heavy duty simulated actions are fired against your website, in order to bring it down and see how it fares under heavy load. This could range from a brute force approach with a high amount of concurrency or scalated levels of intensity. Anything goes here, what you are after is to find out this in your development environment before it happens to you in a live situation.
Metrics are everything
Load and Stress Testing on their own make no sense if you don’t have a way to measure things. It’s as important as testing itself and usually underestimated.
There are several ways of capturing data and it depends entirely on the type of application you are testing, it could be a web server, a set of scripts or a database. Each tool has its own challenges.
Once you have captured raw data, it’s usually a good idea to process and filter that data into a human readable presentation. It could be a quick overview, relevant numbers or visualized through charts and graphics. These actual results are the ones that will influence your decisions on the matter at hand.
Already available tools are of all shapes and sizes. From proprietary ones to open sources ones. From simple scripts to full fledged systems that spawn multiple applications.
Of course, it doesn’t matter if you are a one man company, a hobbyst designer or a multi-national company, your needs vary and determine which should be the tools employed.
Nowadays, with the advent of Cloud Computing and services like City Cloud, Load and Stress testing have found a new way to generate simulated traffic in controlled and, most importantly, cost-effective manner. Cloud Computing allows you to fire up resources at will, do heavy duty testing, generate raw data, and shut everything down after you are done.
It definitely beats having to provision resources and servers, wait for them, use them all only to realize you probably don’t have the need for them afterwards.
Recently, City Network has affiliated with a new partner called ”Apica System”. They specialize in offering a range of tools that are geared towards load testing, stress testing and website monitoring.
We got ourselves a test account and we are currently testing the whole system, so in the next article we’ll show you how you can leverage cloud computing and load testing, to help you identify where your website or application bottlenecks are.
Stay tuned next week for the next article!