HyperionDocs
ArchitectureSolution Designs002 - Work Reporting Module

Test Design - Work Reporting Module

Testing strategy for faculty work reporting and rating system

Test Design: Work Reporting Module

Overview

This test design covers the Work Reporting Module including activity management, co-authorship, rating calculations, statistics, and read-only mode.

Test Strategy

Scope

What will be tested:

  • Activity CRUD operations
  • Co-author assignment and removal
  • Activity type dictionary management
  • Rating calculation accuracy
  • Statistics aggregation
  • Year/semester filtering
  • Read-only mode enforcement
  • Public activity access
  • Authorization rules

Out of Scope

What will not be tested:

  • Excel export formatting (manual testing)
  • UI-specific interactions
  • Browser compatibility

Test Levels

Unit Tests

Coverage Target: 80%

Focus Areas:

  • Rating calculation service
  • Activity validation logic
  • Filter/search criteria building
  • DTO transformations
  • Read-only mode checks

Tools: JUnit 5, Mockito, AssertJ

Integration Tests

Focus Areas:

  • Activity REST endpoints
  • Database queries and pagination
  • Statistics calculations
  • Read-only mode interceptor

Test Scenarios:

  1. Full activity lifecycle (create → update → soft delete)
  2. Co-authorship workflow (add → verify → remove)
  3. Rating calculation with multiple activity types
  4. Read-only mode toggle and enforcement

Tools: Spring Boot Test, TestContainers, MockMvc

End-to-End Tests

User Flows:

  1. Activity Submission: Login → Select type → Fill form → Add co-authors → Submit
  2. View Statistics: Login → View personal stats → Compare with department
  3. Admin Read-Only Toggle: Login as admin → Enable read-only → Verify teacher blocked

Tools: Cypress, Playwright

Performance Tests

Metrics:

  • Activity list (100 items): < 300ms
  • Rating calculation: < 500ms
  • Statistics aggregation: < 1s

Load Scenarios:

  • 50 concurrent activity submissions
  • 100 concurrent statistics views

Test Cases

Activity CRUD Tests

IDTest CaseExpected ResultPriority
ACT-001Create activity as teacher201 Created, linked to userCritical
ACT-002Create activity as guest401 UnauthorizedCritical
ACT-003Update own activity200 OK, data persistedHigh
ACT-004Update another's activity403 ForbiddenCritical
ACT-005Delete own activity204 No Content, active=falseHigh
ACT-006Delete another's activity403 ForbiddenCritical
ACT-007Create with invalid year (2015)400 Bad RequestMedium
ACT-008Create with invalid semester (5)400 Bad RequestMedium
ACT-009Create with non-existent activity type400 Bad RequestHigh

Co-Authorship Tests

IDTest CaseExpected ResultPriority
COAUTH-001Add co-author on createActivity linked to both usersHigh
COAUTH-002Add self as co-authorIgnored, creator is auto-ownerMedium
COAUTH-003Add non-existent user as co-author400 Bad RequestMedium
COAUTH-004Co-author can view activity200 OKHigh
COAUTH-005Co-author can edit activity200 OKHigh
COAUTH-006Co-author cannot delete activity403 Forbidden (only owner)High
COAUTH-007Activity shows all authorsResponse includes all usersMedium

Filtering Tests

IDTest CaseExpected ResultPriority
FILT-001Filter by yearOnly activities from that yearHigh
FILT-002Filter by semesterOnly activities from that semesterHigh
FILT-003Filter by works typeOnly matching typeHigh
FILT-004Filter by user IDOnly that user's activitiesHigh
FILT-005Combine multiple filtersAND logic appliedMedium
FILT-006Year range filter (yearFrom/yearTo)Activities within rangeMedium
FILT-007Pagination (page=1, size=10)Correct page returnedMedium

Rating Calculation Tests

IDTest CaseExpected ResultPriority
RATE-001Single activity ratingcoefficient × normTimeCritical
RATE-002Multiple activities same typeSum of individual ratingsCritical
RATE-003Mixed activity typesCorrect breakdown by typeCritical
RATE-004No activitiesAll ratings = 0Medium
RATE-005Inactive activities excludedNot counted in ratingHigh
RATE-006Co-authored activityCounted for all authorsHigh
RATE-007Specific year/semester filterOnly matching activitiesHigh

Statistics Tests

IDTest CaseExpected ResultPriority
STAT-001Get own statisticsReturns personal ratingsHigh
STAT-002Get department statisticsAverage and total for deptHigh
STAT-003Department top teachersRanked by total ratingMedium
STAT-004Statistics for empty departmentReturns zerosMedium
STAT-005Statistics as directorCan view full departmentHigh
STAT-006Statistics for other department (teacher)Only public statsMedium

Read-Only Mode Tests

IDTest CaseExpected ResultPriority
ROM-001Create activity when read-only403 Forbidden with messageCritical
ROM-002Update activity when read-only403 ForbiddenCritical
ROM-003Delete activity when read-only403 ForbiddenCritical
ROM-004Read activity when read-only200 OKCritical
ROM-005Admin operations when read-only200 OK (allowed)High
ROM-006Check read-only status (public)Returns current stateMedium
ROM-007Toggle read-only as adminState changesHigh
ROM-008Toggle read-only as teacher403 ForbiddenHigh

Public Activity Tests

IDTest CaseExpected ResultPriority
PUB-001List public activitiesLimited fields returnedHigh
PUB-002Public response excludes coefficientsNo coefficient/normTimeCritical
PUB-003Get user's public activitiesFiltered by UUIDHigh
PUB-004Inactive activities excluded from publicNot visibleHigh

Activity Dictionary Tests (Admin)

IDTest CaseExpected ResultPriority
DICT-001Create activity type201 CreatedHigh
DICT-002Update coefficient200 OKHigh
DICT-003Deactivate type with existing activitiesType deactivated, activities unchangedMedium
DICT-004Create type as teacher403 ForbiddenHigh

Edge Cases

IDTest CaseExpected ResultPriority
EDGE-001Activity with 10+ co-authorsHandles correctlyLow
EDGE-002Unicode in descriptionStored correctlyMedium
EDGE-003Max length description (1000 chars)AcceptedLow
EDGE-004Semester 0 (full year)Valid, included in both semestersMedium
EDGE-005Delete user with activitiesActivities remain, user shows as inactiveHigh

Security Testing

  • Auth bypass: Cannot create/modify activities without token
  • Authorization: Cannot modify others' activities (except co-authors)
  • Data leakage: Coefficients not exposed in public endpoints
  • Input validation: All fields validated server-side
  • Read-only bypass: Server-side enforcement, not just UI

Acceptance Criteria

  • All critical path tests pass
  • Rating calculations match manual verification
  • 80% unit test coverage
  • < 500ms response time for statistics
  • Read-only mode fully enforced
  • Public endpoints hide sensitive data

References