Performance Testing at Zoomcar

What is Performance Testing?

At a very high level, the objective of Performance testing is to assess how a system behaves under a given situation i.e. how various components of system performs under the specified load.

Why performance Matters?

  • 49% of respondents expected web pages to load in under 2 sec, while 30% expect a 1 sec response and 18% expected a site to load immediately. (source: Akamai)
  • 50% of frustrated users will visit another site, and finally, 22% will leave and won’t return to a site where problems have occurred.
  • Similarly, a Dynatrace survey in 2015 found that 75% of all mobile users said they would abandon a mobile site or app if it was buggy, slow or prone to crashes.

    Expected Page Load

Choosing the right tool?

We have huge number of performance testing tools available in the market.<p> High level comparison of various tools is given below:

Tools Comparision

Considering that Jmeter is very widely used and has a short learning curve, along with some research data as given below, we decided to go with Jmeter as our performance testing tool.

Jmeter Tool

Jmeter Tool

Jmeter Tool

Creating performance tests

You can create JMX file for performance testing using Jmeter UI or via Jmeter libraries.

Running performance tests via Jenkins in CI/CD pipeline

  • Pre-requisites:
    • Install Performance plugin in Jenkins available here.
    • Once installed, restart Jenkins.
    • Login to Jenkins, you will see “Performance Trend” in left hand side options as shown below:

      Jmeter Tool

  • You can create a Jenkins jobs which will run .jmx file (This file contains the performance tests you want to execute).
  • This job can be scheduled to run performance tests in timely manner or You can configure this job as Post deployment action in your master job (depending upon the use case).

Evaluating Test Results

Once you have configured your CI/CD integration on Jenkins, you will start seeing data under “Performance Trend” section on build by build basis.

Some sample test results are provided below:

  • Throughput:
    • The Throughput graph compares the average request per second it received vs the performance build done.
    • This is useful to gauge how a new build performs compared to the previous versions, giving us a very useful insight about how our application behaves with increasing number of requests per second.

      Jmeter Tool

  • Response Time:
    • The Response time graph compares the response time taken by each Http request.
    • The less time any request takes, better is the performance.

      Jmeter Tool

  • Errors:
    • The Error graph compares the overall error percentage for the given build over time.
    • The errors are generated based on assertions defined in the jmx file.
    • This is useful to gauge how a new build performs compared to the previous versions, whether the error has gone down or not.

      Jmeter Tool

      Luckily, we did not had any error during our performance tests execution. :)

      #### —- Stay Tuned —-


Why we chose Vue in Zoomcar

Background

Initially, our wesbite was written with ruby on rails. The frontend code was intertwined with rails code and there was a backend logic in HAML files. Deployment was harder and tied to other dev deployments because of this coupling.

How am I driving?

Assessing car health from OBD dataset

The central promise of Zoom’s car rental offering is to provide our customers a great ride. Having a car in good working condition is critical for us to fulfil that promise. This poses a very interesting problem from a maintenance scheduling perspective. Unlike a privately owned car, our cars are driven by several different people each day. From a young college student going for a joyride, to a well planned 5 day road-trip. Each journey exhibits different driving patterns and puts unique stresses on the car.