English | Π ΡΡΡΠΊΠΈΠΉ
This project implements performance tests for
the Performance QA Engineer Course stand β a
full-featured educational banking system designed for testing and performance validation in training environments. The
platform includes services such as Kafka, Redis, PostgreSQL, MinIO, Grafana, Prometheus and exposes its API
via both HTTP and gRPC protocols.
Technologies used:
Performance tests are written in Python using Locust and follow modern software engineering principles like SOLID, DRY, and KISS. They are designed to simulate realistic business flows and provide visibility into system performance under load.
- Project Overview
- Best Practices
- Getting Started
- Running Performance Tests
- Monitoring & Observability
- CI/CD
- Project Structure
- Contacts
This performance testing framework supports both HTTP and gRPC APIs using a unified test structure.
Key components:
- Scenarios: Represent realistic user flows, implemented via Locust user classes.
- API Clients: Custom reusable HTTP/gRPC clients located in clients/http/ and clients/grpc/, independent of Locust internals.
- Seeding: Automated test data generation via a flexible seeding builder, triggered through Locust event hooks based on the active scenario plan.
- Tools: Includes generators for fake data, base configurations, and shared Locust user logic.
- Reporting: Built-in HTML reports for Locust runs; Prometheus and Grafana metrics available via the course test stand.
Supported business scenarios include:
- Existing user: make purchase, get documents, issue virtual card, view operations
- New user: create account, top up card, issue physical card, retrieve account list and documents
This project follows industry-standard best practices:
- SOLID design principles for maintainable client architecture
- DRY approach to avoid duplication across protocols
- KISS philosophy to keep scenarios readable and focused
- Flexible structure to support both HTTP and gRPC testing
- Reusable API clients, designed to be composable and injectable
- The framework is easy to extend with new scenarios or client implementations as the system evolves
β οΈ Important: this project tests the educational platform performance-qa-engineer-course which must be running locally
git clone https://github.com/lobanov-qa/performance-tests.git
cd performance-testspython3 -m venv venv
source venv/bin/activatepython -m venv venv
venv\Scripts\activatepip install -r requirements.txtEach scenario can be launched via its own configuration file. The report will be automatically saved in the same directory.
Example:
locust --config=./scenarios/http/gateway/existing_user_get_documents/v1.0.confAfter test execution, open the generated HTML report: ./scenarios/http/gateway/existing_user_get_documents/report.html
In addition to built-in Locust reports, system-level metrics can be explored via:
- Grafana: http://localhost:3002
- Prometheus: http://localhost:9090
These dashboards are preconfigured in the course infrastructure repository.
GitHub Actions integration is enabled for this project. You can execute scenarios in headless mode and publish reports to GitHub Pages automatically.
Configuration can be found in .github/workflows/performance-tests.yml.
performance-tests/
βββ clients/ # API clients for HTTP and gRPC
β βββ http/ # HTTP clients (gateway, accounts, cards, ...)
β βββ grpc/ # gRPC clients with interceptors for Locust
βββ scenarios/ # Load scenarios (HTTP and gRPC)
β βββ http/ # HTTP scenarios (existing_user, new_user)
β βββ grpc/ # gRPC scenarios
βββ seeds/ # Test data generation (seeding)
β βββ builder.py # Builder for data preparation
β βββ scenario.py # Scenario logic for seeding
β βββ schema/ # Data schemas (plan, result)
βββ tools/ # Helper utilities
β βββ config/ # Configurations for HTTP/gRPC/Locust
β βββ locust/ # Base Locust user classes
β βββ fakers.py # Fake data generation
β βββ logger.py # Logging
β βββ routes.py # API routes
βββ dumps/ # Data dumps for seeding
βββ .github/workflows/ # CI/CD pipelines
βββ docker-compose.load-testing-hub.yaml # Load Testing Hub configuration
βββ requirements.txt
βββ README.md
Ready for code review, discussion of solutions and feedback.
Looking for an opportunity to start a career as an AQA engineer to grow in a team and contribute to software quality.
- GitHub: lobanov-qa
- Telegram: lobanov_e_i
- LinkedIn: evgenii-lobanov-qa
- E-mail: evgenii-lobanov-qa@yandex.ru