Professional RF Test Automation Framework
A comprehensive RF/Radio Test Automation platform built with Spring Boot, Java 17, and Apache Spark. Automates testing for 5G, LTE, W-CDMA, and GSM technologies with instrument integration (Signal Generator, Spectrum Analyzer), real-time analytics, ML-based predictions, and WebSocket monitoring.
- RF Measurement Instrument Integration: Full support for Signal Generators and Spectrum Analyzers
- Multi-Technology Support: 5G, LTE, W-CDMA, and GSM test automation
- Test Case Management: Create, update, and manage test cases with configurable parameters
- Asynchronous Test Execution: Execute tests asynchronously with real-time status updates via WebSocket
- Analytics & Reporting: Generate comprehensive test reports with statistics and anomaly detection
- Machine Learning: Predictive analytics for test outcomes and anomaly detection using Z-score analysis
- Real-time Updates: WebSocket support for live test execution monitoring
- Event Streaming: Kafka integration for test execution events
- Data Processing: Apache Spark integration for large-scale data analysis
- RESTful API: Complete REST API for all operations
- Backend: Spring Boot 3.2.0, Java 17
- Database: H2 (development), PostgreSQL (production)
- Messaging: Apache Kafka for event streaming
- Data Processing: Apache Spark 3.5.0 for analytics
- WebSocket: Spring WebSocket for real-time updates
- ML/Analytics: Commons Math3 for statistical analysis
- Frontend: Modern HTML5/CSS3/JavaScript with Chart.js visualizations
- Testing: TestNG, JUnit
- Java 17 or higher
- Maven 3.6+
- Kafka (optional, for event streaming - application works without it)
The main dashboard provides an overview of test execution statistics, recent test runs, and system status. Shows 4 realistic test cases (5G, LTE, W-CDMA, GSM) with pass/fail metrics and execution history.
Create and manage test cases for different radio technologies (5G, LTE, W-CDMA, GSM) with comprehensive parameter configuration. All 4 realistic test cases are displayed with their technology, category, and status.
View detailed execution results with measurements (power, EVM, ACPR) and status tracking across all test runs. Shows all 4 test executions with PASSED/FAILED status for each technology.
Monitor Signal Generator and Spectrum Analyzer status with real-time visualizations. Both instruments show Connected status with capabilities for Power, EVM, ACPR, and Frequency measurements.
export JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.17/libexec/openjdk.jdk/Contents/Home
# Or use: export JAVA_HOME=$(/usr/libexec/java_home -v 17)cd RadioTest-Automation
mvn clean installExpected output:
[INFO] BUILD SUCCESS
[INFO] Total time: X.XXX s
mvn spring-boot:runYou should see:
2025-11-13 XX:XX:XX - Starting RadioTestApplication
2025-11-13 XX:XX:XX - Started RadioTestApplication in X.XXX seconds
2025-11-13 XX:XX:XX - Tomcat started on port 8080 (http) with context path ''
- Web Dashboard: http://localhost:8080
- REST API: http://localhost:8080/api
- π Swagger/OpenAPI Documentation: http://localhost:8080/swagger-ui.html
- API Docs (JSON): http://localhost:8080/api-docs
- H2 Console: http://localhost:8080/h2-console
- Actuator Health: http://localhost:8080/actuator/health
src/main/java/com/radiotest/
βββ model/ # Entity models (TestCase, TestExecution, TestReport)
βββ repository/ # JPA repositories
βββ service/ # Business logic services
β βββ TestCaseService.java
β βββ TestExecutionService.java
β βββ TestReportService.java
β βββ AnalyticsService.java
βββ controller/ # REST controllers
β βββ TestCaseController.java
β βββ TestExecutionController.java
β βββ TestReportController.java
β βββ TestRunnerController.java
β βββ PredictionController.java
βββ config/ # Configuration classes
β βββ KafkaConfig.java
β βββ WebSocketConfig.java
β βββ DatabaseConfig.java
β βββ AsyncConfig.java
βββ framework/ # Test execution framework
β βββ TestRunner.java
β βββ TestExecutor.java
βββ instruments/ # RF instrument integration
β βββ InstrumentInterface.java
β βββ SignalGenerator.java
β βββ SpectrumAnalyzer.java
β βββ InstrumentFactory.java
βββ analytics/ # Analytics services
βββ ml/ # Machine learning
βββ AnomalyDetector.java
βββ PredictionService.java
Interactive Swagger/OpenAPI Documentation:
- Swagger UI: http://localhost:8080/swagger-ui.html
- OpenAPI JSON: http://localhost:8080/api-docs
π Full API Reference: See docs/API.md for complete endpoint documentation.
POST /api/test-reports/generate- Generate report for date rangeGET /api/test-reports/test-case/{testCaseId}- Generate report for test caseGET /api/test-reports/technology/{technology}- Generate report for technology
GET /api/predictions/test-outcome/{testCaseId}- Predict test outcomeGET /api/predictions/power-level/{testCaseId}- Predict power levelGET /api/predictions/evm/{testCaseId}- Predict EVMGET /api/predictions/duration/{testCaseId}- Predict duration
- Purpose: Generate RF test signals at specified frequencies and power levels
- Capabilities:
- Frequency setting (Hz)
- Power level control (dBm)
- Parameter configuration
- Signal generation for 5G, LTE, W-CDMA, GSM
- Purpose: Measure and analyze RF signals
- Capabilities:
- Power level measurement (dBm)
- EVM (Error Vector Magnitude) measurement (%)
- ACPR (Adjacent Channel Power Ratio) measurement (dB)
- Frequency offset measurement (Hz)
- Frequency domain analysis
- Test Execution Starts: TestExecutor receives test case
- Instrument Initialization: Both Signal Generator and Spectrum Analyzer are initialized
- Signal Generator Configuration:
- Frequency set based on test case
- Power level configured
- Modulation parameters applied
- Signal Generation: Signal Generator outputs RF signal
- Spectrum Analyzer Measurement:
- Center frequency set to match signal
- Power measurements taken (multiple samples for statistics)
- EVM and ACPR measurements performed
- Results Validation: Measurements compared against expected values
- Test Completion: Results stored, published to Kafka, WebSocket update sent
The application includes real-time charts for both instruments:
- Signal Generator Chart: Shows power level over time during test execution
- Spectrum Analyzer Chart: Displays frequency domain spectrum with power vs frequency
Charts are automatically updated when tests are executed and can be refreshed manually.
The framework publishes test execution events to Kafka topics:
- Topic:
test-executions- Individual test execution events - Topic:
test-suites- Test suite execution events
Events include full test execution details including measurements, status, and timestamps.
Note: Kafka is optional - the application works without it. If Kafka is not available, events are logged but not published.
The framework includes Apache Spark for large-scale data processing:
- SparkAnalyticsService: Processes test execution data using Spark SQL
- Large-scale Analytics: Handles thousands of test executions efficiently
- Aggregations: Uses Spark for statistical calculations on large datasets
- Technology Distribution: Spark-based grouping and counting
Spark is initialized automatically and used for enhanced analytics when processing large volumes of test data.
- Z-score based anomaly detection for:
- Power levels
- EVM values
- ACPR values
- Test duration
- Severity levels: LOW, MEDIUM, HIGH
- Test outcome prediction based on historical data
- Power level prediction
- EVM prediction
- Duration prediction
- Confidence levels: LOW, MEDIUM, HIGH
- Mean, standard deviation, min/max for all metrics
- Status distribution
- Technology distribution
- Comprehensive report generation
curl -X POST http://localhost:8080/api/test-cases \
-H "Content-Type: application/json" \
-d '{
"testCaseId": "TC-5G-POWER-001",
"name": "5G Power Level Test",
"description": "Test power level for 5G signal",
"technology": "5G",
"category": "Power",
"expectedPowerMin": -10.0,
"expectedPowerMax": -5.0,
"expectedFrequencyHz": 3500000000,
"expectedEvmMax": 2.0,
"enabled": true
}'curl -X POST http://localhost:8080/api/test-runner/run/TC-5G-POWER-001curl http://localhost:8080/api/test-executionscurl "http://localhost:8080/api/test-reports/generate?testSuite=Weekly&startTime=2025-11-06T00:00:00&endTime=2025-11-13T23:59:59"- Professional Design: Light beige/coffee theme with Roboto font
- Responsive Layout: Works on desktop and mobile devices
- Real-time Updates: Dashboard auto-refreshes every 5 seconds
- Interactive Charts: Visual representations of instrument data
- Status Indicators: Color-coded status badges for quick identification
- Modal Dialogs: Clean forms for creating test cases
Key configuration in src/main/resources/application.properties:
# Server
server.port=8080
# Database (H2 for development)
spring.datasource.url=jdbc:h2:mem:radiotestdb
# Kafka (optional)
spring.kafka.bootstrap-servers=localhost:9092
# Logging
logging.level.com.radiotest=INFOFor production deployment:
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/radiotest
export SPRING_DATASOURCE_USERNAME=your_username
export SPRING_DATASOURCE_PASSWORD=your_password
export SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka-server:9092- Asynchronously executes test cases
- Configures both Signal Generator and Spectrum Analyzer
- Performs measurements using Spectrum Analyzer
- Validates results against expected values
- Publishes events to Kafka
- Sends WebSocket updates
- Factory pattern for instrument selection
- Supports Signal Generator and Spectrum Analyzer
- Extensible for additional instruments (network analyzers, power meters, etc.)
- Returns appropriate instrument based on test requirements
- Calculates statistics (mean, std dev, min/max) for all metrics
- Detects anomalies using Z-score method (2Ο and 3Ο thresholds)
- Generates comprehensive statistics maps
- Handles power, EVM, ACPR, and duration metrics
- Apache Spark integration for large-scale data processing
- Uses Spark SQL for efficient aggregations
- Processes thousands of test executions
- Calculates statistics using distributed computing
- Technology distribution analysis
- Predicts test outcomes based on historical data
- Calculates failure probability using pass rate analysis
- Provides confidence levels (LOW, MEDIUM, HIGH)
- Generates recommendations based on predictions
- Predicts power levels, EVM, and duration
- Asynchronous Execution: Tests run in parallel using thread pool
- Database Optimization: JPA with connection pooling
- Event-Driven Architecture: Kafka for scalable event processing
- Spark Integration: Ready for large-scale data processing
- WebSocket: Efficient real-time updates
Run tests with:
mvn test- Implement
InstrumentInterface - Register in
InstrumentFactory - Configure in test case parameters
- Add fields to
TestExecutionmodel - Update
TestExecutorto measure new metric - Update
AnalyticsServiceto calculate statistics - Update
AnomalyDetectorif needed
Replace simulated instruments (SignalGenerator, SpectrumAnalyzer) with actual instrument drivers:
- SCPI (Standard Commands for Programmable Instruments) support
- VISA (Virtual Instrument Software Architecture) integration
- Vendor-specific APIs (Keysight, Rohde & Schwarz, etc.)
This project showcases:
β
Java Development: Spring Boot, JPA, REST APIs, async programming
β
RF Measurement Instruments: Signal Generator and Spectrum Analyzer integration
β
Data Processing: Apache Spark and Kafka integration
β
AI/ML: Anomaly detection and predictive analytics
β
Telecom/Radio Testing: 5G, LTE, W-CDMA, GSM support
β
Test Automation: Automated test execution framework
β
Web Development: Modern frontend with real-time updates
β
Software Architecture: Clean architecture, design patterns, separation of concerns
All backend components have been verified and tested:
- β REST API endpoints responding correctly
- β Database (H2) working with JPA
- β Signal Generator and Spectrum Analyzer integrated
- β Test execution flow working end-to-end
- β Kafka event publishing (optional)
- β Apache Spark analytics integration
- β WebSocket real-time updates
- β Frontend displaying data correctly
See docs/VERIFICATION.md for detailed verification report.
- Running Guide - Detailed instructions for running the application
- Verification Report - Backend component verification
MIT License
Note: This framework is designed for radio performance testing automation, demonstrating expertise in RF measurement instruments, Java development, and modern software engineering practices for telecom applications. The project showcases skills in RF measurement equipment (signal generators and spectrum analyzers), Java/Spring Boot development, Apache Spark/Kafka for data processing, and AI/ML techniques for test automation - all skills required for radio performance testing roles.



