A Crash Course in Load Testing
By Dave Karow | February 16, 2015
In September 2014, the number of active websites worldwide reached one billion. App downloads are expected to top 270 billion by 2017. There are websites and apps that literally fulfill the needs and interests of nearly every one of the 7.3 billion people on this planet! That is, of course, people who have access to and are able to open a browser, whether web-based or mobile. There is an app for everything—from photo creation/sharing to monitoring your blood glucose levels and risk for diabetes. Whether you are developing a website or the next greatest app, load testing can help ensure that it will be a positive experience for your users. It is essential to understand the basics before implementing a testing strategy.
Load testing measures and reports the performance of your website or app under an anticipated live load. It accurately models the interaction, arrival patterns, and geographic diversity of real users. It verifies the acceptability of specific performance behavior under varying operational conditions (such as number of users, number of transactions, etc.) while the configuration remains constant. The three major areas load testing addresses are performance, scalability, and stability. By performing load testing before final launch, you can explore and fix issues related to performance and thereby minimize the risk of unwanted glitches. When properly executed, load testing uncovers bottlenecks that do not surface in cursory testing, such as memory management bugs, memory leaks, and buffer overflows. And because it uses real traffic delivered from the Internet, it validates the entire application delivery chain better than typical integration testing.
Websites and apps go down under load either because load testing was not implemented at all, or adequate “homework” was not done prior to testing. These are the questions and areas that should be addressed before implementing load testing.
- What do you really need to know about your app? Each type of test is run differently and analyzes your app from a unique perspective. The test you run depends on what you hope to learn. For example, if you need to determine the breaking point where your app either stops responding or responds so slowly that it is unusable, a stress test should be run.
- How many users should you simulate? In order to answer this, you need to estimate how many concurrent users may use your app or visit your site, and that can be determined in some cases using your own analytic reports. Also find out how many concurrent users the app is designed to accommodate and test for that number and a determined percentage above it.
- How do your users behave? Study your analytics so that you can create tests that represent your actual users, as opposed to tests that you think are representative of your users. The only way to truly understand your users is to study traffic pattern history and segment different behavior “profiles.”
- Do you have the right team? If you are doing your own load testing rather than hiring an outside company, you need to gather your team. Several people may need to be involved—developers, QA, network engineers, business owners, end users, webmaster, etc. All of these individuals have a vested interest in making the app successful, and each will bring his or her distinctive perspective to the process. As project manager, you need to invest time into actively assessing each of the team’s area of expertise, and ensuring you get the best from everyone’s unique perspective during the web load test itself?
- Use load testing software that mirrors your real users’ experience as accurately as possible and exercises your app, in production, from the Internet. You should be able to script user activity in browsers of your choice, but they must reflect the browsers and mobile devices you anticipate your users will most likely be using. You also need to consider the geographic profile of your users, so ensure that the load is delivered from as many representative locations as possible. Once the test is configured, load testing should incorporate the following:
- Parallel thread processing
- Think time
- Multiple concurrent scenarios
- Complex scenarios
- Take the time to analyze the results so that any bottlenecks/errors/weaknesses are thoroughly understood and resolved before launch. Make sure to reach out to every member of the team and schedule adequate time.
- Consider hiring an outside company to perform load testing. Many companies simply do not have the personnel resources to do this in house. Keynote offers a wide range of customized load testing solutions to ensure that your app or website is running optimally and generates the most bang for your buck.