Skip to main content

UC-DOC-OEF-009 - Testoefening opruimen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-OEF-009
NaamTestoefening opruimen
DomeinDocent
SubdomeinOefeningen configureren en testen
Primaire actorSysteem
Secundaire actor(en)Scheduler, backend, database, docent als indirect betrokken actor
RolcontextSysteemcontext voor het opruimen van tijdelijke docenttestruns
Betrokken schermenNiet schermgebonden; indirect zichtbaar doordat testruns niet in geschiedenis verschijnen
Gerelateerde usecasesUC-DOC-OEF-008, UC-LLN-OEF-007, UC-LLN-OEF-008, UC-DOC-LIVE-007
Primaire entiteitenExerciseRuns, ExerciseRunProgress, Exercises, Users
Secundaire entiteiten / eventsIsTestRun, StartedAtUtc, CompletedAtUtc, tijdelijke modulepayload, technische logging, TickerQ-scheduler
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe OefenHub tijdelijke testdata van docenten opruimt. Testruns mogen tijdelijk bestaan om een oefening in docentcontext te kunnen testen, maar zij zijn geen functionele leerlingresultaten en horen niet blijvend in geschiedenis, statistieken of frontpage-readmodels voor te komen.

Opruimen kan direct plaatsvinden na afronding of verlaten van een test, en daarnaast periodiek via een scheduler voor achtergebleven testruns. De scheduler vangt situaties op zoals browserafsluiting, verbindingsverlies of technische onderbreking waardoor directe opruiming niet volledig kon plaatsvinden.

De usecase verwijdert of ruimt alleen records op die ondubbelzinnig als docenttestdata herkenbaar zijn. Normale leerlingruns, afgeronde leerlinggeschiedenis, gedeelde oefeningen en live-meekijkaudit vallen buiten deze opruimactie.

3. Scope

3.1 Binnen scope

  • Detecteren van testruns met IsTestRun = true.
  • Direct opruimen na afronding of verlaten van een docenttest.
  • Periodiek opruimen van achtergebleven testruns via scheduler.
  • Verwijderen van bijbehorende tijdelijke voortgangsrecords.
  • Uitsluiten van normale leerlingruns en blijvende geschiedenis.
  • Technisch loggen van opruimresultaten en fouten.
  • Veilig afhandelen van gedeeltelijk aanwezige of inconsistente testdata.
  • Voorkomen dat testruns zichtbaar worden in geschiedenis, statistieken of frontpageblokken.

3.2 Buiten scope

  • Docenttest starten of uitvoeren.
  • Normale leerlingruns opschonen.
  • Bewaartermijnen voor gewone geschiedenis bepalen.
  • Privéberichten of systeemberichten opschonen.
  • Live-meekijkaudit verwijderen.
  • Oefeningconfiguraties verwijderen.
  • Accountverwijdering of anonimisering uitvoeren.
  • Centrale modulebeheerflows uitvoeren.
  • Modulemigratie of technische moduleversies beheren.
  • Leerlingautorisaties toekennen of intrekken.
  • Relatie-uitnodigingen, docent-leerlingrelaties of docent-docentrelaties aanmaken.
  • Leerlingresultaten aanpassen of verwijderen.
  • Systeemnotificaties beheren of tonen.
  • Beheerderondersteuning of centrale contentbeheerflows uitvoeren.

4. Pre-condities

IDVoorwaarde
PRE-001Er bestaat een directe opruimtrigger of geplande schedulertrigger.
PRE-002De backend kan testruns identificeren via IsTestRun = true.
PRE-003De cleanupquery kan normale leerlingruns uitsluiten.
PRE-004De databasecontext is beschikbaar voor transactionele opruiming.
PRE-005Er is een technische loggingcontext beschikbaar.
PRE-006De cleanupcriteria voor actieve, afgeronde, verlaten of achtergebleven testruns zijn in configuratie of code vastgelegd.

5. Post-condities

IDResultaat
POST-001Geselecteerde testruns zijn uit de functionele runopslag verwijderd of administratief opgeruimd volgens het databaseontwerp.
POST-002Bijbehorende tijdelijke voortgangsrecords zijn verwijderd of onbereikbaar gemaakt voor normale uitlezing.
POST-003Normale leerlingruns en leerlinggeschiedenis zijn niet geraakt.
POST-004De opruimactie is technisch herleidbaar via logging.
POST-005Achtergebleven testruns verschijnen niet in geschiedenis, statistieken of frontpage-readmodels.
POST-006Bij gedeeltelijke fouten blijven resterende testruns herkenbaar voor een volgende cleanup-run.

6. Trigger

De opruimflow wordt gestart direct na afronding of verlaten van een docenttest, of periodiek door de scheduler voor achtergebleven testruns.

De scheduler zoekt testruns die volgens de cleanupcriteria niet langer als actieve testcontext nodig zijn.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1SysteemCleanup-triggerStart directe of geplande opruimingBackend opent cleanupcontextTriggerType
2SysteemBackendBepaalt cleanupscopeAlleen IsTestRun = true wordt geselecteerdExerciseRuns.IsTestRun
3SysteemBackendFiltert actieve testcontextenNog lopende geldige tests worden overgeslagenStartedAtUtc, activity window
4SysteemDatabaseLaadt bijbehorende voortgangTijdelijke progressrecords worden opgehaaldExerciseRunProgress
5SysteemBackendControleert referentiesNormale runs en niet-testdata blijven buiten scopeSafety check
6SysteemDatabaseVerwijdert tijdelijke voortgangProgressrecords worden opgeruimdExerciseRunProgress
7SysteemDatabaseVerwijdert of ruimt testrun opTestrun verdwijnt uit functionele uitlezingExerciseRuns
8SysteemBackendControleert resultaatAantal opgeruimde records wordt bepaaldCleanup summary
9SysteemLoggingLogt opruimactieTechnische logging bevat scope, aantallen en foutenApplication logging
10SysteemSchedulerRondt taak afVolgende run kan resterende data oppakkenTickerQ

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Geen testruns gevondenCleanup eindigt zonder datamutatieNiet van toepassingGeen
ALT-0023Testrun is nog actief binnen geldige testwindowTestrun wordt overgeslagenNiet van toepassingGeen
ALT-0035Record lijkt geen echte testrun ondanks selectieRecord wordt niet verwijderd en fout wordt gelogdTechnische loggingGeen
ALT-0046Voortgangsrecords ontbreken alCleanup gaat verder met testrun wanneer veiligTechnische loggingTestrun kan worden opgeruimd
ALT-0057Verwijderen van testrun faaltRollback voor betreffende batch of recordTechnische loggingGeen gedeeltelijke onveilige mutatie
ALT-0069Technische logging faaltCleanupresultaat blijft databaseleidend; loggingfout wordt apart afgehandeldTechnische foutafhandelingGeen domeinmutatie
ALT-00710Scheduler wordt onderbrokenVolgende scheduler-run kan overgebleven IsTestRun-records opnieuw selecterenTechnische loggingGeen normale geschiedenis

9. Business rules

IDRegel
BR-001Alleen ExerciseRuns met IsTestRun = true mogen door deze usecase worden opgeruimd.
BR-002Normale leerlingruns mogen nooit door deze testrun-cleanup worden verwijderd.
BR-003Bijbehorende tijdelijke voortgangsrecords worden samen met de testrun opgeruimd.
BR-004Testruns zijn functioneel niet zichtbaar in geschiedenis of statistieken, ook als cleanup nog niet heeft plaatsgevonden.
BR-005De cleanup moet veilig herhaalbaar zijn.
BR-006Achtergebleven testruns moeten door een periodieke scheduler worden opgeschoond.
BR-007Een nog actieve test mag niet voortijdig door de scheduler worden verwijderd binnen de geldige activiteitstermijn.
BR-008Cleanup schrijft geen systeemberichten of privéberichten.
BR-009Cleanup wijzigt geen oefeningconfiguratie en geen oefeningstatus.
BR-010Technische logging is voldoende; er ontstaat geen gebruikersgerichte historyregel.
BR-011Cleanup mag geen LiveViewAudit-records verwijderen.
BR-012Cleanup mag geen account- of profielgegevens wijzigen.

10. Datavalidatie

Veld / objectValidatie
ExerciseRuns.IsTestRunMoet true zijn voordat een run door deze cleanup geraakt mag worden.
ExerciseRunIdMoet verwijzen naar een bestaande testrun of veilig als reeds verwijderd behandeld worden.
Activity windowMoet bepalen of een test nog actief genoeg is om over te slaan.
CompletedAtUtc / verlaten-indicatieKan worden gebruikt om directe cleanup te starten.
BatchselectieMoet normale runs expliciet uitsluiten.
Foreign key volgordeVoortgang en afhankelijke tijdelijke records worden vóór of samen met de run opgeruimd.
Cleanup loggingMoet aantallen en foutcontext technisch herleidbaar maken.
HerhaalbaarheidEen tweede cleanup-run mag geen fout veroorzaken op al verwijderde tijdelijke data.
ReadmodelsGeschiedenis- en frontpagequeries moeten IsTestRun altijd uitsluiten, ook vóór fysieke cleanup.
SchedulercontextMoet zonder gebruikerssessie kunnen draaien.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
1StartCleanupJobDirecte of geplande cleanup start.
2ReadExerciseRunsTestruns met IsTestRun = true worden geselecteerd.
3FilterExerciseRunsNog actieve geldige testcontexten worden overgeslagen.
4ReadExerciseRunProgressBijbehorende tijdelijke voortgang wordt geladen.
6DeleteExerciseRunProgressTijdelijke voortgangsrecords worden verwijderd.
7DeleteExerciseRunsTestrun wordt verwijderd of administratief opgeruimd.
9LogApplication/account technical loggingCleanupresultaat wordt technisch gelogd.
10EventTeacherTestExerciseCleanedUpTechnisch event voor cleanupregistratie.

12. Geen datamutaties

EntiteitReden
ExercisesOefeningconfiguratie, naam, icoon en status blijven ongewijzigd.
ExerciseHistoryCleanup van testdata is geen oefeningbeheerwijziging.
Normale ExerciseRunsRuns met IsTestRun = false worden niet geraakt.
LeerlinggeschiedenisBestaande afgeronde leerlingresultaten blijven behouden.
LiveViewAuditMeekijkaudit wordt niet verwijderd door deze cleanup.
SharedExercisesGedeelde oefeningen worden niet aangepast.
StudentAuthorizationsDeze usecase kent geen leerlingtoegang toe en trekt geen leerlingtoegang in.
SystemMessagesDeze usecase maakt geen systeembericht aan.
PrivateMessagesDeze usecase maakt geen privébericht aan.
RelationshipInvitationsRelatievorming blijft buiten scope.
Roles / UserRolesRollen en roltoekenningen worden niet gewijzigd.

13. State diagram

Deze usecase beschrijft de tijdelijke lifecycle van testdata vanuit opruimperspectief. De belangrijkste toestand is of een test-run nog actief nodig is of veilig kan worden opgeruimd.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

Geplande cleanup

Directe cleanup na verlaten

17. Popupverwijzingen

PopupKeyMomentToelichting
Niet van toepassingDeze usecase gebruikt geen domeinspecifieke popup.Routeguard-, inline validatie- of componentafhandeling volstaat.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DoeldocumentAfleiding
Functioneel OntwerpBeschrijft dat testruns niet permanent blijven bestaan en niet zichtbaar worden in geschiedenis of statistieken.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Beschrijf cleanup via directe trigger en scheduler, IsTestRun-filter en veilige herhaalbaarheid.
Software Requirements SpecificationLeg eisen vast voor testdata-opruiming, uitsluiting van normale runs en logging.
Database-informatieControleer ExerciseRuns.IsTestRun, afhankelijke voortgangsrecords en cleanupvolgorde.
OntwerpbronnenBeschrijven business rules, command-register, event-register en matrices bij.

19. SRS-trace

Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.

Usecase-afleidingDektUsecasecontext
REQ-UC-DOC-OEF-009-001SRS-LRN-009
SRS-TCH-005
AC-LRN-009
AC-TCH-005
Tijdelijke docenttestruns kunnen identificeren via IsTestRun = true
REQ-UC-DOC-OEF-009-002SRS-LRN-006
SRS-TCH-005
AC-LRN-006
AC-TCH-005
Testruns na afronding of verlaten kunnen opruimen
REQ-UC-DOC-OEF-009-003SRS-LRN-009
SRS-TCH-005
SRS-ARCH-004
AC-LRN-009
AC-TCH-005
AC-ARCH-004
Achtergebleven testruns periodiek via een scheduler kunnen opruimen
REQ-UC-DOC-OEF-009-004SRS-LRN-003
SRS-TCH-005
AC-LRN-003
AC-TCH-005
Bij testrun-cleanup de bijbehorende tijdelijke voortgangsrecords opruimen
REQ-UC-DOC-OEF-009-005SRS-LRN-009
SRS-TCH-005
AC-LRN-009
AC-TCH-005
Normale leerlingruns nooit verwijderen via de testrun-cleanup
REQ-UC-DOC-OEF-009-006SRS-TCH-001
SRS-NFR-SEC-001
AC-TCH-001
AC-NFR-SEC-001
Cleanup veilig herhaalbaar uitvoeren
REQ-UC-DOC-OEF-009-007SRS-LRN-009
SRS-TCH-005
AC-LRN-009
AC-TCH-005
Nog actieve testruns binnen een geldige activiteitstermijn kunnen overslaan
REQ-UC-DOC-OEF-009-008SRS-TCH-001
AC-TCH-001
Cleanupresultaten en fouten technisch loggen
REQ-UC-DOC-OEF-009-009SRS-RDM-001
SRS-RDM-003
SRS-RDM-006
SRS-LRN-010
SRS-TCH-004
SRS-NFR-AUD-001
AC-RDM-001
AC-RDM-003
AC-RDM-006
AC-LRN-010
AC-TCH-004
AC-NFR-AUD-001
Testruns uitsluiten uit geschiedenis, statistieken en frontpage-readmodels, ook vóór fysieke cleanup
REQ-UC-DOC-OEF-009-010SRS-REL-001
SRS-MSG-001
SRS-CAT-003
SRS-LRN-009
SRS-TCH-002
AC-REL-001
AC-MSG-001
AC-CAT-003
AC-LRN-009
AC-TCH-002
Bij cleanup geen oefeningconfiguratie, rollen, relaties of berichten wijzigen