Gotta Test 'Em All: Pokemon Go and Load Testing

DZone 's Guide to

Gotta Test 'Em All: Pokemon Go and Load Testing

Noga Cohen of BlazeMeter talks about Pokemon Go and shares three problems company's face with load testing, as well as three solutions.

· Performance Zone ·
Free Resource

Load testing is an essential part of every new release and the continuous delivery process. In this blog post, we explore three ways you can prepare for traffic spikes and deal with crashes. Just like Pokemon GO players, you gotta test ‘em all!

Pokemon GO—the real life version of Pokemon that has people searching for animated creatures on the streets, in parks, and in restaurants—was released last week in the US, Australia and New Zealand.

Pokemon GO

But the exciting game (sorry—real life battle) that has been taking over the world has not been able to meet users’ demands and heavy loads. Niantic, Pokemon GO’s creators, has paused international rollout due to server issues that have been going on for a few days. Issues include users unable to log into the game or unable to battle Pokemons.

Pokemon GO servers down

Crashes to sites, apps, and native apps like Pokemon Go can result in customer frustration and loss of sales. But with proper preparation before launching and by creating solutions for crashes if they happen, organizations can avoid having to Tweet that service is delayed.

Here are three common problems and solutions that can ensure your performance testing won’t let you down.

Problem 1: Underestimating the Anticipated Load

None of us are in the fortune-telling business, and therefore we can never predict the number of visitors our app or site will have. Maybe our app will answer such a need in people’s lives that it will catch on stronger than expected. Maybe users will stay on our app or website longer than expected. Maybe our business promotion was marketed especially well. Maybe your competitor’s site crashed. Either way, unanticipated traffic spikes can happen.

Solution: Stress and Soak Test to the Limit

We recommend you know your capacity limit, whether it’s a network bandwidth issue, memory, a CPU, or connection pools. Identifying your bottleneck allows you to find what is causing the problems and how to fix them. So don’t settle for successful testing or theoretical formulas. Keep increasing the load and run stress tests and soak tests until you hit a problem, so you know what to fix. Constantly running load tests is a crucial part of the continuous integration (CI) process, but reaching the limit is especially important before big releases, so your application meets users’ expectations.

Problem 2: Failing to Recover Quickly from Technical Problems

Crashes can happen, even to the strongest Pokemon. But power outages and technical failures don’t have to ruin your entire sales day or your service.

Solution: Set Up Backup Servers and Locations

Backup servers and locations can help you recover quickly. If you set up a database replication, database failover cluster, or application failover cluster, you can switch to them immediately when there is a problem. This enables you to keep providing service while resolving issues and fixing problems. We recommend you have a plan in advance and make sure DevOps know what to do when a problem occurs.

Problem 3: Overlooking End User Performance

The complementary action for testing server performance, is testing end user performance. Sometimes end user issues might not appear during load tests. For example, slow loading might not show as a response time bottleneck.

Solution: Track the End User Actions and Performance

We recommend you integrate user performance in your backend testing. Your web page can be manually analyzed for bottlenecks through tools like Firebug or HTTP waterfall charts, which show how long it takes to load each content piece.

performance ,pokemon go ,server loads ,testing

Published at DZone with permission of Noga Cohen , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}