/performance-testing-framework

This framework could be used both for backend load testing with Apache Jmeter and frontend load test with sitespeed.io + webpagetest private instance. Grafana monitoring allows to view and analyze results in real time

Primary LanguageShell

Docker based performance testing framework

This framework could be used both for backend load testing with Apache Jmeter and frontend load test with sitespeed.io + webpagetest private instance. Grafana monitoring allows to view and analyze results in real time

Getting Started

Framework consists of next services:

  • Grafana: data visualization & monitoring
  • Influxdb: time series DB platform for metrics & events(Time Series Data)
  • Telegraf: server agent for collecting & reporting metrics
  • Sitespeed.io: set of tools for frontend load testing
  • Graphite: time series DB platform for metrics
  • Jenkins: continuous integration server for tests execution
  • Portainer: service for managing docker environment
  • Webpagetest: private instance of webpagetest server for frontend tests execution
  • Apache Jmeter: tool for backend load testing

Framework architecture:

Prerequisites

To run framework install docker: https://docs.docker.com/engine/installation/.

You should be able to run docker run hello-world with no errors.

For Windows:

Installing

  1. git clone this repository
  2. open performance-testing-framework dir
  3. docker-compose up -d if you don't need to test frontend performance execute: docker-compose -f docker-compose-backend-testing.yml up -d

All containers should be up and running

Services endpoints

  • jenkins localhost:8181
  • grafana localhost:8857
  • portainer localhost:9000
  • webpagetest server localhost:80
  • influxdb localhost:8653

Running the tests(demo)

Login to Jenkins with admin/admin(could be changed in docker-compose file) By default jenkins consists of 2 jobs:

  • BackendJob: run Jmeter scenarios
  • FrontendJob: run tests with sitespeed.io and webpagetest private instance

BackendJob

To run jmeter demo script: Open BackendJob -> Build with Parameters -> Set build parameters -> Select scenario -> Build

This job will start jmeter docker container and execute demo_scenario.jmx jmeter scenario

To open demo_scenario in local instance of Jmeter please install Plugin Manager https://jmeter-plugins.org/wiki/PluginsManager/. It will automatically install all required plugins.

Jmeter test deliverables:

  • jmeter log file
  • raw test results in report.log csv file
  • jmeter HTML report(available after test is finished)
  • grafana load test monitoring dashboard(real-time monitoring)

FrontendJob

To run frontend test: Open FrontendJob -> Build with Parameters -> Set build parameters -> Build

This job will start sitespeed.io docker container and run test with parameters using WebPageTest private instance

Frontend test deliverables:

  • sitespeed.io HTML report
  • webpagetest HTML report