Week4

Practicum Project #

PALTUS team. Report 4

Testing and QA #

Testing Approach #

  1. 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
  1. Integration Testing Layer:
  • Spring Context Test (application context loading):
    • Spring bean initialization
    • Profile-based configuration
    • Dependency wiring
  1. 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 #

  1. Trigger: On push/pull request to main or dev

  2. Environment:

    • Ubuntu latest runner
    • Java 17 (Temurin distribution)
    • Spring test profile activation
  3. Test Execution:

    • Isolated H2 database for tests
    • Surefire plugin for test reporting
    • Parallel-safe test configuration
  4. Quality Gates:

    • Block merge on test failures
    • Artifact upload for test reports
  5. Self-hosted CD

Tests folder

CI/CD

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
ServicePort MappingConfigurationDependencies
PostgreSQL 155432:5432.env variablesPersistent volume
Frontend5175:5173Hot-reload enabledBackend service
Backend8081:8080Spring profiles, DB configPostgreSQL

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 #

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.