Add test data schedule configuration methods to ConfigManager
This commit is contained in:
376
README.md
Normal file
376
README.md
Normal file
@@ -0,0 +1,376 @@
|
||||
# Dracarys - Financial API Automation Framework
|
||||
|
||||
A comprehensive test automation framework for testing financial APIs, including wallet and credit scoring services.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Features](#features)
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Installation](#installation)
|
||||
- [Configuration](#configuration)
|
||||
- [Project Structure](#project-structure)
|
||||
- [Running Tests](#running-tests)
|
||||
- [Test Categories](#test-categories)
|
||||
- [Reporting](#reporting)
|
||||
- [Extending the Framework](#extending-the-framework)
|
||||
- [Best Practices](#best-practices)
|
||||
|
||||
## Features
|
||||
|
||||
- **API Testing**: Comprehensive testing of REST APIs
|
||||
- **Performance Testing**: Load and stress testing capabilities
|
||||
- **Security Testing**: Security vulnerability testing
|
||||
- **Data-Driven Testing**: Support for data-driven tests
|
||||
- **Parallel Execution**: Parallel test execution for faster results
|
||||
- **Detailed Reporting**: Comprehensive test reports with metrics
|
||||
- **Database Validation**: Ability to validate data in databases
|
||||
- **Environment Configuration**: Support for multiple environments
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Java 8 or higher
|
||||
- Maven 3.6 or higher
|
||||
- TestNG 7.4 or higher
|
||||
- RestAssured 4.3 or higher
|
||||
- MySQL or PostgreSQL (for database validation)
|
||||
|
||||
## Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone https://github.com/iwasforcedtobehere/Dracarys.git
|
||||
cd Dracarys
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
mvn clean install
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Configuration
|
||||
|
||||
The framework supports multiple environments (dev, test, staging, prod). Configuration files are located in `src/main/resources/`.
|
||||
|
||||
1. **config.properties**:
|
||||
```properties
|
||||
# Base URI for API
|
||||
baseURI=https://api.example.com
|
||||
|
||||
# API version
|
||||
apiVersion=v1
|
||||
|
||||
# Environment
|
||||
environment=test
|
||||
|
||||
# Database configuration
|
||||
db.driver=com.mysql.jdbc.Driver
|
||||
db.url=jdbc:mysql://localhost:3306/test_db
|
||||
db.username=test_user
|
||||
db.password=test_password
|
||||
|
||||
# Authentication
|
||||
auth.type=bearer
|
||||
auth.token=your_auth_token
|
||||
```
|
||||
|
||||
2. **log4j2.xml**:
|
||||
Configure logging levels and appenders as needed.
|
||||
|
||||
### Test Configuration
|
||||
|
||||
Test configurations are defined in `src/test/resources/testng.xml`. You can create different test suites for different purposes.
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
Dracarys/
|
||||
├── src/
|
||||
│ ├── main/
|
||||
│ │ ├── java/
|
||||
│ │ │ └── com/financial/api/
|
||||
│ │ │ ├── config/ # Configuration classes
|
||||
│ │ │ ├── models/ # Data models
|
||||
│ │ │ │ ├── wallet/ # Wallet-related models
|
||||
│ │ │ │ └── credit/ # Credit-related models
|
||||
│ │ │ ├── services/ # API service classes
|
||||
│ │ │ └── utils/ # Utility classes
|
||||
│ │ └── resources/
|
||||
│ │ ├── config.properties # Configuration file
|
||||
│ │ └── log4j2.xml # Logging configuration
|
||||
│ └── test/
|
||||
│ ├── java/
|
||||
│ │ └── com/financial/api/
|
||||
│ │ └── tests/ # Test classes
|
||||
│ │ ├── WalletApiTest.java
|
||||
│ │ ├── CreditApiTest.java
|
||||
│ │ ├── WalletPerformanceTest.java
|
||||
│ │ ├── CreditPerformanceTest.java
|
||||
│ │ ├── WalletSecurityTest.java
|
||||
│ │ └── CreditSecurityTest.java
|
||||
│ └── resources/
|
||||
│ └── testng.xml # Test configuration
|
||||
├── pom.xml # Maven dependencies
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
## Running Tests
|
||||
|
||||
### Running All Tests
|
||||
|
||||
```bash
|
||||
mvn clean test
|
||||
```
|
||||
|
||||
### Running Specific Test Suite
|
||||
|
||||
```bash
|
||||
mvn clean test -Dsuite=src/test/resources/testng.xml
|
||||
```
|
||||
|
||||
### Running Tests with Specific Groups
|
||||
|
||||
```bash
|
||||
mvn clean test -Dgroups=smoke
|
||||
mvn clean test -Dgroups=regression
|
||||
mvn clean test -Dgroups=performance
|
||||
mvn clean test -Dgroups=security
|
||||
```
|
||||
|
||||
### Running Tests in Parallel
|
||||
|
||||
```bash
|
||||
mvn clean test -Dparallel=methods -DthreadCount=5
|
||||
```
|
||||
|
||||
## Test Categories
|
||||
|
||||
The framework includes several categories of tests:
|
||||
|
||||
### 1. Functional Tests
|
||||
|
||||
- **WalletApiTest**: Tests for wallet operations
|
||||
- Create wallet
|
||||
- Get wallet
|
||||
- Update wallet
|
||||
- Get wallet balance
|
||||
- Create transaction
|
||||
- Get transaction
|
||||
- Update transaction status
|
||||
- Deposit funds
|
||||
- Withdraw funds
|
||||
|
||||
- **CreditApiTest**: Tests for credit operations
|
||||
- Submit credit application
|
||||
- Get credit application
|
||||
- Update credit application
|
||||
- Get applications by status
|
||||
- Calculate credit score
|
||||
- Get credit score
|
||||
- Get credit score history
|
||||
- Approve application
|
||||
- Reject application
|
||||
- Get credit products
|
||||
|
||||
### 2. Performance Tests
|
||||
|
||||
- **WalletPerformanceTest**: Performance tests for wallet operations
|
||||
- Create multiple wallets
|
||||
- Get multiple wallets
|
||||
- Create multiple transactions
|
||||
- Deposit funds performance
|
||||
- Get wallet balance performance
|
||||
- Get transactions performance
|
||||
- Transfer funds performance
|
||||
|
||||
- **CreditPerformanceTest**: Performance tests for credit operations
|
||||
- Submit multiple applications
|
||||
- Get multiple applications
|
||||
- Calculate multiple credit scores
|
||||
- Get multiple credit scores
|
||||
- Get credit score histories
|
||||
- Get applications by status performance
|
||||
- Get credit products performance
|
||||
|
||||
### 3. Security Tests
|
||||
|
||||
- **WalletSecurityTest**: Security tests for wallet operations
|
||||
- SQL injection in wallet creation
|
||||
- XSS in wallet creation
|
||||
- Authentication bypass in wallet retrieval
|
||||
- Authorization bypass in wallet retrieval
|
||||
- IDOR in wallet retrieval
|
||||
- SQL injection in transaction creation
|
||||
- XSS in transaction creation
|
||||
- Negative amount in transaction creation
|
||||
- Extremely large amount in transaction creation
|
||||
- Authentication bypass in transaction retrieval
|
||||
- Authorization bypass in transaction retrieval
|
||||
- CSRF protection in wallet update
|
||||
- Rate limiting in wallet creation
|
||||
- Input validation in wallet creation
|
||||
- Sensitive data exposure in wallet response
|
||||
|
||||
- **CreditSecurityTest**: Security tests for credit operations
|
||||
- SQL injection in credit application submission
|
||||
- XSS in credit application submission
|
||||
- Authentication bypass in credit application retrieval
|
||||
- Authorization bypass in credit application retrieval
|
||||
- IDOR in credit application retrieval
|
||||
- SQL injection in credit score calculation
|
||||
- XSS in credit score calculation
|
||||
- Negative loan amount in credit application submission
|
||||
- Extremely large loan amount in credit application submission
|
||||
- Negative loan term in credit application submission
|
||||
- Extremely large loan term in credit application submission
|
||||
- Authentication bypass in credit score retrieval
|
||||
- Authorization bypass in credit score retrieval
|
||||
- CSRF protection in credit application update
|
||||
- Rate limiting in credit application submission
|
||||
- Input validation in credit application submission
|
||||
- Sensitive data exposure in credit application response
|
||||
- Sensitive data exposure in credit score response
|
||||
|
||||
## Reporting
|
||||
|
||||
The framework generates detailed reports for test execution:
|
||||
|
||||
### Console Reports
|
||||
|
||||
- Real-time test execution status
|
||||
- Test pass/fail statistics
|
||||
- Test execution time metrics
|
||||
- Error logs and stack traces
|
||||
|
||||
### HTML Reports
|
||||
|
||||
- Comprehensive test reports with charts
|
||||
- Test execution summary
|
||||
- Detailed test results
|
||||
- Performance metrics
|
||||
- Security vulnerability findings
|
||||
|
||||
### Log Files
|
||||
|
||||
- Detailed execution logs
|
||||
- Error logs
|
||||
- Debug information
|
||||
|
||||
## Extending the Framework
|
||||
|
||||
### Adding New API Tests
|
||||
|
||||
1. Create a new test class in `src/test/java/com/financial/api/tests/`
|
||||
2. Extend the appropriate base class if available
|
||||
3. Add test methods with appropriate annotations
|
||||
4. Use the existing service classes or create new ones
|
||||
|
||||
### Adding New API Services
|
||||
|
||||
1. Create a new service class in `src/main/java/com/financial/api/services/`
|
||||
2. Extend the `BaseService` class
|
||||
3. Implement methods for API operations
|
||||
4. Use RestAssured for HTTP requests
|
||||
|
||||
### Adding New Data Models
|
||||
|
||||
1. Create a new model class in `src/main/java/com/financial/api/models/`
|
||||
2. Define fields with appropriate data types
|
||||
3. Add getters and setters
|
||||
4. Add validation annotations if needed
|
||||
|
||||
### Adding New Utilities
|
||||
|
||||
1. Create a new utility class in `src/main/java/com/financial/api/utils/`
|
||||
2. Implement utility methods
|
||||
3. Make methods static if appropriate
|
||||
4. Add Javadoc comments
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Test Design
|
||||
|
||||
- Follow the Arrange-Act-Assert pattern
|
||||
- Keep tests independent and isolated
|
||||
- Use descriptive test names
|
||||
- Add proper test documentation
|
||||
- Use assertions effectively
|
||||
|
||||
### Code Quality
|
||||
|
||||
- Follow Java coding standards
|
||||
- Use meaningful variable and method names
|
||||
- Add proper comments and documentation
|
||||
- Keep methods small and focused
|
||||
- Handle exceptions properly
|
||||
|
||||
### Performance Testing
|
||||
|
||||
- Define realistic performance thresholds
|
||||
- Use appropriate load levels
|
||||
- Monitor system resources during tests
|
||||
- Analyze performance metrics
|
||||
- Identify and address bottlenecks
|
||||
|
||||
### Security Testing
|
||||
|
||||
- Test for common security vulnerabilities
|
||||
- Use both positive and negative test cases
|
||||
- Validate input sanitization
|
||||
- Test authentication and authorization
|
||||
- Check for sensitive data exposure
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Regularly update dependencies
|
||||
- Refactor code as needed
|
||||
- Add new tests for new features
|
||||
- Fix failing tests promptly
|
||||
- Keep documentation up to date
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Test Failures Due to Environment Changes**
|
||||
- Update configuration files
|
||||
- Check API endpoints
|
||||
- Verify authentication tokens
|
||||
|
||||
2. **Database Connection Issues**
|
||||
- Check database credentials
|
||||
- Verify database URL
|
||||
- Ensure database is running
|
||||
|
||||
3. **Performance Test Failures**
|
||||
- Check system resources
|
||||
- Verify test data
|
||||
- Adjust performance thresholds
|
||||
|
||||
4. **Security Test Failures**
|
||||
- Check API security implementations
|
||||
- Verify input validation
|
||||
- Review authentication and authorization
|
||||
|
||||
### Getting Help
|
||||
|
||||
- Check the project documentation
|
||||
- Review test code examples
|
||||
- Contact the framework maintainers
|
||||
- Submit issues on GitHub
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome contributions to the framework! Please follow these guidelines:
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Add tests for new functionality
|
||||
5. Ensure all tests pass
|
||||
6. Submit a pull request
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the LICENSE file for details.
|
Reference in New Issue
Block a user