A Professional API Testing & Load Testing Desktop Application
Built with Flutter for developers who demand performance, precision, and productivity
Features β’ Installation β’ Usage β’ Architecture β’ Contributing
Testify Pro is a production-grade desktop application designed for API testing, load testing, and comprehensive API workflow automation. Whether you're testing a single endpoint or simulating thousands of concurrent users, Testify Pro delivers the performance and insights you need.
- π Blazing Fast: Built with Flutter and Dart isolates for true concurrent load generation
- πͺ Enterprise-Ready: Handles 100,000+ virtual users with real-time metrics
- π― Developer-Focused: Intuitive UI with powerful features like JSONPath extraction and variable injection
- π§ Fully Featured: API testing, load testing, multi-step flows, and comprehensive history tracking
- π¨ Modern UI: Material Design 3 with dark mode support
- πΎ Offline-First: All data stored locally with Hive for lightning-fast access
- API Developers testing their endpoints during development
- QA Engineers running comprehensive test suites
- DevOps Teams performing load tests before deployment
- Performance Engineers analyzing API behavior under stress
- Postman-like Interface: Test individual API endpoints with ease
- All HTTP Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Request Configuration: Headers, query parameters, request body
- Authentication Support: Bearer tokens, Basic Auth, API keys
- Response Visualization: JSON syntax highlighting, headers inspection
- Request History: Access previous requests instantly
- Virtual User Simulation: Simulate 1 to 100,000+ concurrent users
- Intelligent Worker Pool: Fixed isolate pool architecture prevents system overload
- Configurable Ramp-Up: Gradual user increase for realistic scenarios
- Real-Time Metrics:
- Requests per second (RPS)
- Success/failure rates
- Response time percentiles (p50, p95, p99)
- Min/max/average response times
- Live Monitoring: Real-time charts and logs during test execution
- Auto-Stop Conditions: Automatic test termination on target completion
- Multi-Step Scenarios: Chain multiple API calls into complex workflows
- Variable Extraction: Extract data from responses using JSONPath
- Dynamic Injection: Use extracted variables in subsequent steps with
{{variable}} - Conditional Logic: Build sophisticated test scenarios
- Flow Execution: Run flows individually or under load
- Detailed Logging: Step-by-step execution logs with request/response details
- Real-Time Visualization: Live charts powered by FL Chart
- Historical Analysis: View past test runs with detailed metrics
- Export Capabilities: Save results as CSV, JSON, or HTML reports
- Filtering & Search: Find specific test runs quickly
- Multiple Environments: Dev, staging, production configurations
- Variable Management: Define environment-specific variables
- Quick Switching: Change active environment with one click
- Variable Injection: Use environment variables across all features
- Theme Control: Light/dark mode with system sync
- Data Export/Import: Full backup and restore capabilities
- Developer Information: Credits and project links
- Window Management: Configurable window size and layout
- Flutter SDK: Version 3.8.1 or higher
- Windows: Windows 10/11 (64-bit)
- Git: For cloning the repository
git clone https://github.com/flutterbuddy1/testify_pro.git
cd testify_proflutter pub getTestify Pro uses code generation for Freezed models and Riverpod providers:
flutter pub run build_runner build --delete-conflicting-outputsflutter run -d windowsflutter build windows --releaseThe executable will be located at:
build\windows\x64\runner\Release\testify_pro.exe
- Launch Testify Pro
- Navigate using the left sidebar:
- API Testing: Test individual endpoints
- Flow Designer: Create multi-step scenarios
- Load Testing: Run performance tests
- Metrics: View performance analytics
- History: Browse past test runs
- Environments: Manage configurations
- Navigate to API Testing
- Enter Request Details:
- URL:
https://api.example.com/users - Method:
GET,POST, etc.
- URL:
- Add Headers (optional):
Authorization: Bearer token123Content-Type: application/json
- Add Body (for POST/PUT):
{ "name": "John Doe", "email": "john@example.com" } - Click Send
- View Response:
- Status code and message
- Response time
- Headers
- Formatted JSON body
-
Navigate to Flow Designer
-
Click "Add Flow"
-
Add Steps:
-
Step 1: Login
- URL:
https://api.example.com/auth/login - Method:
POST - Body:
{"username": "admin", "password": "pass"} - Extractor:
tokenfrom$.data.token
- URL:
-
Step 2: Get User Profile
- URL:
https://api.example.com/profile - Method:
GET - Header:
Authorization: Bearer {{token}}
- URL:
-
-
Run Flow: Execute step-by-step with variable injection
-
Use in Load Test: Test the entire flow under load
- Navigate to Load Testing
- Choose Target:
- Single Request: Test one endpoint
- Flow: Test a multi-step scenario
- Configure Parameters:
- Virtual Users:
1000 - Duration:
60seconds - Ramp-Up:
10seconds
- Virtual Users:
- Start Test
- Monitor Real-Time Metrics:
- Watch RPS, success rate, response times
- View live request logs
- Stop When Complete: Review final metrics
- Navigate to History
- Select a Test Run
- Click Export
- Choose Format: CSV, JSON, or HTML
- Save to Disk
Testify Pro follows Clean Architecture principles with clear separation of concerns:
lib/
βββ core/ # Shared utilities
β βββ constants/ # App constants
β βββ providers/ # Global providers
β βββ theme/ # Material theme
β βββ utils/ # Helper functions
β
βββ domain/ # Business Logic (Pure Dart)
β βββ entities/ # Core business entities
β βββ api_request.dart
β βββ api_response.dart
β βββ flow.dart
β βββ test_run.dart
β βββ test_metrics.dart
β βββ environment.dart
β
βββ data/ # Data Layer
β βββ services/ # External services
β β βββ http_service.dart
β βββ repositories/ # Data persistence
β βββ flow_repository.dart
β βββ test_run_repository.dart
β βββ environment_repository.dart
β βββ api_history_repository.dart
β
βββ infrastructure/ # Framework & External Tools
β βββ load_engine/ # Load Testing Engine
β β βββ load_coordinator.dart # Orchestrates workers
β β βββ worker_isolate.dart # Concurrent workers
β β βββ metrics_aggregator.dart # Real-time metrics
β βββ flow_engine/ # Flow Execution Engine
β βββ flow_executor.dart # Step execution
β βββ json_extractor.dart # JSONPath extraction
β βββ variable_injector.dart # Variable substitution
β
βββ presentation/ # UI layer
βββ screens/ # Application screens
βββ home_screen.dart
βββ api_test_screen.dart
βββ flow_designer_screen.dart
βββ load_test_screen.dart
βββ history_screen.dart
βββ metrics_dashboard_screen.dart
βββ settings_screen.dart
Problem: Spawning one isolate per virtual user (e.g., 100,000 isolates) would crash the system.
Solution: Fixed worker pool architecture
- Spawn 4-8 worker isolates (based on CPU cores)
- Each worker simulates thousands of users using async/await
- Example: 8 workers Γ 12,500 users each = 100,000 total users
Benefits:
- β System stays responsive
- β Scales to extreme loads
- β Efficient CPU utilization
- β Predictable memory usage
- Workers send results to coordinator via
SendPort - Metrics aggregator batches updates (1-second intervals)
- Calculates percentiles efficiently
- Emits to UI via
Stream<TestMetrics> - Keeps history bounded to prevent memory leaks
All data access goes through repositories:
- Abstraction: UI doesn't know about Hive
- Testability: Easy to mock for unit tests
- Flexibility: Can swap storage without changing UI
| Category | Technology | Purpose |
|---|---|---|
| Framework | Flutter 3.8+ | Cross-platform UI |
| Language | Dart 3.0+ | Application logic |
| State Management | Riverpod 2.5+ | Reactive state |
| HTTP Client | Dio 5.4+ | Network requests |
| Local Storage | Hive 2.2+ | Fast NoSQL database |
| Concurrency | Dart Isolates | Parallel load generation |
| Code Generation | Freezed, JSON Serializable | Immutable models |
| Data Extraction | JSONPath | Response parsing |
| Charting | FL Chart | Real-time visualization |
| File Operations | File Picker, Path Provider | Export/import |
| Window Management | Window Manager | Desktop window control |
| URL Launching | URL Launcher | External links |
We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.
-
Fork the Repository
# Click "Fork" on GitHub, then clone your fork git clone https://github.com/flutterbuddy1/testify_pro.git cd testify_pro
-
Create a Feature Branch
git checkout -b feature/amazing-feature
-
Make Your Changes
- Write clean, readable code
- Follow the existing code style
- Add comments for complex logic
- Update documentation if needed
-
Test Thoroughly
# Run the app and test your changes flutter run -d windows # Ensure code generates without errors flutter pub run build_runner build --delete-conflicting-outputs
-
Commit Your Changes
git add . git commit -m "feat: Add amazing feature"
Commit Message Format:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style/formattingrefactor:Code refactoringtest:Adding testschore:Maintenance tasks
-
Push to Your Fork
git push origin feature/amazing-feature
-
Open a Pull Request
- Go to the original repository
- Click "New Pull Request"
- Describe your changes clearly
- Reference any related issues
- Use Dart conventions: Follow the Effective Dart guide
- Format code: Run
dart format .before committing - Lint: Ensure no warnings with
flutter analyze - Naming:
- Classes:
PascalCase - Variables/Functions:
camelCase - Constants:
lowerCamelCaseorSCREAMING_SNAKE_CASEfor compile-time constants - Private members: Prefix with
_
- Classes:
- Domain Layer: Pure business logic, no Flutter imports
- Data Layer: Only data access, no business logic
- Infrastructure: External service wrappers
- Presentation: UI only, delegate logic to providers
- Use Riverpod for all state
- Keep providers in appropriate directories
- Use
ConsumerWidgetorConsumerStatefulWidgetin UI - Avoid direct repository access from UI (use providers)
// Good: Clear imports organized by category
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../domain/entities/api_request.dart';
import '../../core/providers/global_providers.dart';
// Avoid: Messy imports
import '../../domain/entities/api_request.dart';
import 'package:flutter/material.dart';- WebSocket Support: Real-time API testing
- gRPC Protocol: Add gRPC request support
- Request Chaining: Advanced flow dependencies
- Assertions: Add validation rules to flows
- Mock Server: Built-in API mocking
- GraphQL Support: Query and mutation testing
- Custom Plugins: Plugin architecture for extensibility
- Check Issues for reported bugs
- Look for
good first issuelabels for beginner-friendly tasks
- Improve code comments
- Add tutorials and guides
- Create video walkthroughs
- Translate to other languages
- Improve responsiveness for smaller windows
- Add keyboard shortcuts
- Enhance accessibility
- Create custom themes
- Optimize large response rendering
- Improve chart performance with massive datasets
- Reduce memory footprint during extreme load tests
- Questions? Open a Discussion
- Bug Report? Create an Issue
- Feature Request? Start a Discussion
On a modern desktop (Intel i7, 16GB RAM):
| Metric | Value |
|---|---|
| Max Virtual Users | 100,000+ |
| Peak RPS | 10,000+ |
| UI Response Time | < 100ms (even under load) |
| Metrics Update Rate | 1 second |
| Memory Usage | ~200MB idle, ~500MB under max load |
| CPU Usage | Scales with worker count (4-8 cores) |
This project is licensed under the MIT License - see the LICENSE file for details.
You are free to:
- β Use commercially
- β Modify
- β Distribute
- β Use privately
Developed by Mayank Diwakar
- GitHub: @flutterbuddy1
- LinkedIn: Mayank Diwakar
- Flutter Team for the amazing framework
- Riverpod for elegant state management
- Dio for robust HTTP client
- Hive for blazing-fast local storage
- All Contributors who help improve Testify Pro
If you find Testify Pro useful, please consider:
- β Star this repository to show support
- π Report bugs to help us improve
- π‘ Suggest features for future versions
- π€ Contribute to make it better
Built with β€οΈ for developers who demand excellence in API testing