HikeRunner: Load Test Framework

By HARSH VERMA

Elevator Pitch

For a messaging app with million users, the existing load test tools do not provide a generic interface to mimic all real-time scenarios. HikeRunner is our solution to satiate our needs. Unlike other tools, it stresses the backend/DBs/Caches both vertically & horizontally supporting any protocol.

Description

In this presentation, we will focus on in-house built Load Testing tool named “HIKE-RUNNER” and how it solved our problem of simulating real-time production load. The motivation for this tool is to incorporate various real-time user scenarios and stress all the backend systems horizontally and vertically. It’s designed and developed with the aim to simulate and distribute the high load over each server component based on given runtime probability for each task. Moreover, to analyse threshold point, latencies of various services.

Key Feature of framework :

  • Robust modular design pattern, which generates the real-time user test plans based on the given runtime dynamic probabilities.
  • Simulates various user scenarios to solve load testing for MQTT and HTTP protocol and can be extended to cover other protocols for load test.
  • StatsD graphical report generated dynamically for latencies, response time and throughput after every load test execution, which can be analysed to detect - threshold points.
  • Static plans for vertical load testing can be hooked into this framework by just providing input JSON.
  • Independent generator, executer modules help in dynamic and faster execution of generated plans making modules independent of languages to be used.

HikeRunner Architecture:

The tool is divided into 4 independent modules:

  • Generator: This module continuously generates the test plans(Real Time User flow) based on the given probabilities for each task eg. for one to one messaging, Group messaging, block/unblock, Add friend/Remove Friend and so on sample config is attached. A test plan also contains other information like data required to execute the particular task.The output of generator will be in the form of JSON format.

  • Executer: This module executes the tasks given by generator and provides desired load for given test plan by executing the tasks.

  • User cache pool: Maintain separate in-memory user pools for different tasks.

  • Reporter: Stat-D dynamic report allows finding response rate, breakpoints and latency.

Flow Diagram :

  • Generator -> User Cache Pool -> Executor -> Reporter

HikeRunner Architectural flow Image Link

What we will cover in talk:

  • How we started with Load Test Tool at hike messenger.
  • How HikeRunner solved our problem of load test supporting various protocols(MQTT, HTTP).
  • Comparison with open source tools.
  • Architecture design pattern, How various modules work coherently.
  • Static hooking of tasks for vertical load testing.
  • How to hook load test environment with Jenkins and execute with respective git actions i.e git merge.
  • Summary and Future scope of tool.

Notes

Besides having exposure to various testing methods our experience in developing HikeRunner gave us enough knowledge and in-depth understanding of various other tools in the market. It also helped us understand the current market/technical challenges with respect to load testing. Our intent is to share this tool with the community and collaborate with them to enhance the existing features of the tool.

Technical Requirements for presenting this tool includes a projector where we can demonstrate ppt and show some demo and snippets.

Target Group :

The target group of audience will be an intermediate tester, load testers, beginner’s, product managers, SDET and Automation Engineers.