Practicum Project #
PALTUS team. Report 4
Testing and QA #
Testing Approach #
- Unit Testing Layer:
Converters (Tested StringListConverter):
- Null/empty inputs
- Single/multi-item handling
- Whitespace trimming
- Bidirectional conversion
Mappers (CourseMapper transformations):
- Course <-> DTO conversions
- Lesson/Subtopic mappings
- Data integrity checks
- Integration Testing Layer:
- Spring Context Test (application context loading):
- Spring bean initialization
- Profile-based configuration
- Dependency wiring
- API Controller Testing:
- CourseController (Mock-tested REST endpoints):
- GET /courses (dashboard)
- GET /courses/{id} (course details)
- DELETE /courses/{id}
- POST /courses/saveCourse
Evidence #
Screenshot folder in Google Drive
CI/CD #
Trigger: On push/pull request to main or dev
Environment:
- Ubuntu latest runner
- Java 17 (Temurin distribution)
- Spring test profile activation
Test Execution:
- Isolated H2 database for tests
- Surefire plugin for test reporting
- Parallel-safe test configuration
Quality Gates:
- Block merge on test failures
- Artifact upload for test reports
Self-hosted CD
Links to CI/CD configuration files #
Deployment #
Staging Environment #
The staging environment is built by using Docker Compose, providing a setup for final testing before release.
Infrastructure Provisioning:
- PostgreSQL 15 database container
- Spring Boot backend service container
- Frontend application container
- All services connected via Docker network
Service | Port Mapping | Configuration | Dependencies |
---|---|---|---|
PostgreSQL 15 | 5432:5432 | .env variables | Persistent volume |
Frontend | 5175:5173 | Hot-reload enabled | Backend service |
Backend | 8081:8080 | Spring profiles, DB config | PostgreSQL |
Access #
- http://10.90.137.167:5175/
This staging environment provides:
- Final integration testing
- User acceptance testing (UAT)
- Performance benchmarking
- Security validation
Vibe Check #
The discussion was done during the least meeting of the 4th week, we are a bit behind the plan and our ambitions and also the tasks are not clearly splitted in a proper way, so we decided to fix that during next meetings.
Weekly commitments #
Individual contribution of each participant #
- Sergey Knyazkin
- Ramazan Gizamov
- Aidar Sarvartdinov
- Igor Dubrovsky
- Amir Fayzullin
Plan for Next Week #
Frontend #
- Request fot authorization and registration.
- Add possibilities to change the course.
- Add design features (navigation, scroll bars, etc).
- Add tests.
Backend #
- Quizzes generation.
- Acceptance of a created course.
- Generation of additional content for subtopics.
- Daily streak.
DevOps #
- Update Dockerfile for the frontend application.
Confirmation of the code’s operability #
We confirm that the code in the main branch: Run via docker-compose.