Performance Automation Framework
A robust Java-based performance testing framework built on top of JMeter DSL, providing advanced testing capabilities for HTTP, SOAP, and GraphQL APIs.
Key Features
- Multi-protocol support: Test HTTP, SOAP, and GraphQL APIs with a unified framework
- Advanced Assertion Framework: Validate responses using status codes, JSON Path, XPath, and more
- Dynamic variable resolution: Define variables at global, scenario, and request levels
- Comprehensive reporting: Generate HTML reports with charts and detailed statistics
- Java 21 compatibility: Fully compatible with the latest Java versions
- Template-based testing: Use templates for request bodies with variable substitution
- Robust error handling: Detailed error tracking and logging for easier debugging
- DevContainer support: Consistent development environment using VS Code DevContainers
Latest Updates
The framework has been updated to include:
- Full Java 21 Compatibility: Fixed script engine issues with dynamic engine selection
- Enhanced Script Engines: Added Nashorn 15.4 and Groovy 4.0.15 with JSR-223 support
- Improved Error Logging: Variables are now properly resolved in logs for easier debugging
- Comprehensive Documentation: Complete guides for development and configuration
- DevContainer Support: Added Docker-based development environment for consistency
Quick Start Guide
Prerequisites
- Java 21 or higher
- Maven 3.9 or higher
- Required dependencies:
- Nashorn Script Engine (added automatically via Maven)
- Groovy Script Engine (added automatically via Maven)
Installation
git clone https://github.com/TestAutomationMultiverse/PerformanceAutomationFramework.git
cd PerformanceAutomationFramework
mvn clean install
Sample Test Configuration
execution:
threads: 2
iterations: 5
successThreshold: 95.0
variables:
baseUrl: https://jsonplaceholder.typicode.com
scenarios:
- name: "HTTP API Test"
requests:
- name: "Get Users"
endpoint: "${baseUrl}/users"
method: GET
statusCode: 200
Running Tests
TestExecutor executor = new TestExecutor();
boolean success = executor.execute("src/test/resources/configs/http_test_config.yaml");
Documentation Guides
- Getting Started: Complete installation and setup guide
- DevContainer Setup: Development environment setup using DevContainers
- Framework Components: Overview of key framework components
- Protocol Support: Details on supported API protocols
Technical Documentation
- Architecture: Framework architecture and design principles
- Configuration Guide: Comprehensive guide to YAML configuration
- Component Details: In-depth information about framework components
- Protocol Details: Detailed protocol-specific documentation
- Test Design Guide: Guidelines for designing effective tests
API Reference
- Configuration API: API for working with configuration objects
- Core API: Core framework APIs for test execution
- Utility API: Utility APIs for common operations
Usage Examples
- Basic Example: Simple examples to get started
- Multiple Scenarios: Working with multiple test scenarios
- Variable Usage: Examples of variable substitution
Reporting
- HTML Reports: Generating and interpreting HTML test reports
API Examples
- REST API: Testing RESTful APIs with JSONPlaceholder
- SOAP API: Testing SOAP web services
- GraphQL API: Testing GraphQL endpoints
License
This project is licensed under the MIT License - see the LICENSE file for details.