UC-DOC-OEF-008 - Oefening testen als docent
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-OEF-008 |
| Naam | Oefening testen als docent |
| Domein | Docent |
| Subdomein | Oefeningen configureren en testen |
| Primaire actor | Docent |
| Secundaire actor(en) | Systeem |
| Rolcontext | Docentcontext met bewerkrechten binnen het geselecteerde niveau |
| Betrokken schermen | Docent - Oefeningdetail, teststart, oefenscherm in testmodus, tijdelijk resultaat |
| Gerelateerde usecases | UC-DOC-OEF-001, UC-DOC-OEF-004, UC-DOC-OEF-005, UC-DOC-OEF-006, UC-DOC-OEF-009, UC-LLN-OEF-003, UC-LLN-OEF-004, UC-LLN-OEF-008 |
| Primaire entiteiten | Exercises, ExerciseModules, ExerciseRuns, ExerciseRunProgress |
| Secundaire entiteiten / events | IsTestRun, ModuleConfigurationJsonBase64, module-specifieke vraagpayload, tijdelijke testvoortgang, TickerQ-opruiming |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een docent een concrete oefening test vanuit de docentcontext. De test gebruikt zoveel mogelijk dezelfde generieke run- en modulemechanismen als een leerlingrun, maar wordt expliciet als test gemarkeerd en levert geen permanente leerlinggeschiedenis of docentstatistiek op.
Het doel van de testflow is dat de docent kan controleren of naam, icoon, moduleconfiguratie, vraaggeneratie, antwoordcontrole en feedback werken voordat de oefening voor leerlingen wordt geactiveerd of nadat een bestaande oefening is aangepast.
Testruns mogen tijdelijk in de normale technische runstructuur bestaan zolang de test actief is. Zij zijn functioneel geen leerlingresultaten en worden na afronding, verlaten of scheduler-opruiming verwijderd via UC-DOC-OEF-009.
3. Scope
3.1 Binnen scope
- Starten van een test vanuit een concrete oefening die de docent mag beheren.
- Gebruiken van de generieke oefengeneratie met IsTestRun = true.
- Toepassen van de actuele oefeningconfiguratie en technische module.
- Doorlopen van vragen in testmodus.
- Opslaan van tijdelijke testvoortgang zolang de test actief is.
- Tonen van tijdelijk testresultaat zonder permanente geschiedenisregistratie.
- Voorkomen dat testresultaten meetellen in leerlingstatistiek, geschiedenis, populaire categorieën of totaalgebruik.
- Aanroepen of markeren van opruiming voor testdata.
3.2 Buiten scope
- Leerlingruns starten of afronden.
- Een oefening configureren of bewerken.
- Een oefening activeren of in onderhoud zetten.
- Testresultaten bewaren als permanente geschiedenis.
- PDF-export van testruns aanbieden als normale resultaatgeschiedenis.
- Live meekijken op een eigen test als leerlingrun modelleren.
- TestDocent-rolbeheer 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
| ID | Voorwaarde |
|---|---|
| PRE-001 | De docent is ingelogd. |
| PRE-002 | De gebruiker heeft een actieve docentrol. |
| PRE-003 | Er is een geldige docentcontext bepaald. |
| PRE-004 | De docent heeft toegang tot de concrete oefening als eigenaar of actieve collaborator. |
| PRE-005 | De oefening heeft een geldige technische moduleverwijzing. |
| PRE-006 | De technische module kan vragen genereren voor de actuele configuratie. |
| PRE-007 | De testactie is beschikbaar volgens de status- en modulebeschikbaarheidsregels. |
| PRE-008 | Het gevraagde aantal testvragen ligt binnen de toegestane invoergrenzen. |
| PRE-009 | Er is geen vereiste dat de oefening al actief is voor leerlingen. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Er is een tijdelijke test-run aangemaakt met IsTestRun = true wanneer de test start. |
| POST-002 | De docent heeft de oefening in testmodus kunnen doorlopen wanneer generatie en validatie slagen. |
| POST-003 | Tijdelijke testvoortgang is alleen gebruikt voor de actieve testcontext. |
| POST-004 | Testresultaten zijn niet opgenomen in leerlinggeschiedenis, frontpagestatistieken of normale oefenstatistieken. |
| POST-005 | Na afronding of verlaten is testdata direct opgeruimd of beschikbaar voor UC-DOC-OEF-009. |
| POST-006 | Bij fout of annulering ontstaat geen permanente run of resultaatregel. |
| POST-007 | De oefeningconfiguratie zelf is door testen niet gewijzigd. |
6. Trigger
De docent opent een oefeningdetail of configuratiecontext en kiest de actie om de oefening te testen.
De docent voert eventueel een aantal testvragen in en start de testmodus.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Docent | Oefeningdetail | Kiest Test oefening | Frontend start testflow | ExerciseId |
| 2 | Systeem | Backend | Controleert docentcontext en bewerkrechten | Alleen eigenaar of collaborator mag testen | UserRoles, LevelCollaborators |
| 3 | Systeem | Backend | Controleert oefening en module | Oefeningconfiguratie moet testbaar zijn | Exercises, ExerciseModules |
| 4 | Docent | Teststart | Voert aantal testvragen in | Aantal wordt server-side gevalideerd | RequestedAmount |
| 5 | Systeem | Backend | Start generatiecontext | GenerateModuleExercisesContext krijgt IsTestRun = true | IsTestRun |
| 6 | Systeem | Module-interface | Genereert testvragen | Module gebruikt actuele configuratie | ModuleConfigurationJsonBase64 |
| 7 | Systeem | Database | Maakt tijdelijke run aan | ExerciseRuns-record ontstaat als testrun | ExerciseRuns.IsTestRun = true |
| 8 | Docent | Oefenscherm testmodus | Beantwoordt vragen | Systeem verwerkt voortgang tijdelijk | ExerciseRunProgress |
| 9 | Systeem | Backend | Slaat testvoortgang op | Voortgang is alleen voor testcontext beschikbaar | Tijdelijke voortgang |
| 10 | Docent | Laatste vraag | Rondt test af | Systeem berekent tijdelijk resultaat | Testresultaat |
| 11 | Systeem | Resultaat testmodus | Toont tijdelijke uitkomst | Geen normale geschiedenisregel ontstaat | Geen geschiedenis |
| 12 | Systeem | Opruimtrigger | Markeert of verwijdert testdata | UC-DOC-OEF-009 kan resterende data opruimen | IsTestRun = true |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Docent heeft geen beheerrechten op de oefening | Blokkeer testactie | Toegangafhandeling | Geen |
| ALT-002 | 3 | Oefeningconfiguratie is ongeldig of incompleet | Blokkeer teststart en toon configuratiefout | Inline validatie | Geen |
| ALT-003 | 3 | Technische module is niet beschikbaar | Blokkeer teststart en log technisch | Generieke foutafhandeling | Geen |
| ALT-004 | 4 | Aantal testvragen ongeldig | Toon veldvalidatie en start niet | Inline validatie | Geen |
| ALT-005 | 6 | Modulegeneratie faalt | Breek teststart af; geen bruikbare test-run | Generieke foutafhandeling | Rollback of cleanup |
| ALT-006 | 8 | Docent verlaat test vroegtijdig | Run blijft tijdelijk en wordt direct of gepland opgeruimd | Geen popup | Testrun blijft niet permanent |
| ALT-007 | 9 | Voortgang opslaan faalt | Test wordt veilig afgebroken; geen permanente resultaten | Generieke foutafhandeling | Tijdelijke data opruimen |
| ALT-008 | 11 | Tijdelijk resultaat kan niet worden getoond | Log fout en keer terug naar oefeningdetail | Generieke foutafhandeling | Geen permanente mutatie |
| ALT-009 | 12 | Directe opruiming faalt | Scheduler pakt testrun op via UC-DOC-OEF-009 | Technische logging | Geen normale geschiedenis |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Een docenttest gebruikt IsTestRun = true. |
| BR-002 | Een testrun is geen leerlingrun en mag niet in leerlinggeschiedenis verschijnen. |
| BR-003 | Een testrun telt niet mee voor frontpageblokken, populaire categorieën, recent geoefend of normale statistieken. |
| BR-004 | Een testrun mag tijdelijk dezelfde technische runstructuur gebruiken als een leerlingrun. |
| BR-005 | De technische module gebruikt de actuele oefeningconfiguratie bij het genereren van testvragen. |
| BR-006 | Testen wijzigt de oefeningconfiguratie niet. |
| BR-007 | Testen activeert de oefening niet voor leerlingen. |
| BR-008 | Testdata wordt na afronding, verlaten of geplande opruiming verwijderd uit de functionele runopslag. |
| BR-009 | Een docent mag alleen testen binnen een oefeningcontext die hij of zij mag beheren. |
| BR-010 | TestDocent-zichtbaarheid van technische modules blijft een beheer- en modulebeschikbaarheidsregel en wordt hier niet beheerd. |
| BR-011 | Fouten tijdens testgeneratie of testvoortgang leveren geen permanente domeinresultaten op. |
| BR-012 | Tijdelijke testresultaten mogen worden getoond aan de docent, maar zijn geen historische resultaten. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| ExerciseId | Moet verwijzen naar een oefening die de docent mag beheren. |
| ExerciseModuleId | Moet verwijzen naar een module die voor deze testcontext beschikbaar is. |
| RequestedAmount | Moet binnen toegestane minimum- en maximumgrenzen liggen. |
| IsTestRun | Moet bij docenttest altijd true zijn en server-side worden gezet. |
| ActorUserId | Komt uit de server-side docentcontext. |
| ModuleConfigurationJsonBase64 | Moet voor de module leesbaar en valideerbaar zijn. |
| ExerciseRunProgress | Mag alleen gekoppeld zijn aan de tijdelijke test-run. |
| Resultaatweergave | Moet duidelijk in testcontext blijven en geen normale geschiedenisroute openen. |
| Clientstate | Mag niet bepalen dat een run een test-run is; de backend bepaalt dit. |
| CleanupStatus | Testruns moeten herkenbaar blijven voor directe of geplande opruiming zolang zij bestaan. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 2 | Read | UserRoles / LevelCollaborators | Docentrechten worden gecontroleerd. |
| 3 | Read | Exercises / ExerciseModules | Oefening en modulecontext worden gecontroleerd. |
| 5 | Set | GenerateModuleExercisesContext.IsTestRun | Testvlag wordt server-side gezet. |
| 6 | Execute | Module-interface | Testvragen worden gegenereerd. |
| 7 | Create | ExerciseRuns | Tijdelijke testrun ontstaat met IsTestRun = true. |
| 8 | Create/Update | ExerciseRunProgress | Tijdelijke testvoortgang wordt bijgehouden. |
| 10 | Calculate | Testresultaat | Tijdelijke totalen worden voor de testweergave berekend. |
| 12 | Delete/Mark | ExerciseRuns / ExerciseRunProgress | Testdata wordt direct opgeruimd of herkenbaar gehouden voor geplande opruiming. |
| 12 | Event | TeacherTestExerciseCompleted | Technisch event voor testafronding en cleanupkoppeling. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| Exercises | Testen wijzigt naam, icoon, configuratie of status van de oefening niet. |
| ExerciseHistory | Er wordt geen oefeningbeheerhistorie geschreven door alleen testen. |
| Leerlinggeschiedenis | Testresultaten worden niet als leerlinggeschiedenis vastgelegd. |
| Frontpage-readmodels | Populaire categorieën, recent geoefend en leerlingstatistieken tellen testruns niet mee. |
| LiveViewAudit | Een docenttest is geen live-meekijksessie. |
| StudentAuthorizations | Deze usecase kent geen leerlingtoegang toe en trekt geen leerlingtoegang in. |
| SystemMessages | Deze usecase maakt geen systeembericht aan. |
| PrivateMessages | Deze usecase maakt geen privébericht aan. |
| RelationshipInvitations | Relatievorming blijft buiten scope. |
| Roles / UserRoles | Rollen en roltoekenningen worden niet gewijzigd. |
13. State diagram
Deze usecase raakt de tijdelijke lifecycle van een testrun. Omdat testruns niet permanent als functionele resultaten gelden, blijft de lifecycle beperkt tot aangemaakt, actief, afgerond of verlaten, en opgeruimd.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
Test starten en afronden
Test verlaten
17. Popupverwijzingen
| PopupKey | Moment | Toelichting |
|---|---|---|
| Niet van toepassing | Deze usecase gebruikt geen domeinspecifieke popup. | Routeguard-, inline validatie- of componentafhandeling volstaat. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft dat docenten oefeningen mogen testen zonder permanente leerlingresultaten of geschiedenis. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Beschrijf IsTestRun, tijdelijke voortgang, uitsluiting uit readmodels en koppeling met opruimflow. |
| Software Requirements Specification | Leg eisen vast voor teststart, testvlag, niet-meetellen, tijdelijke opslag en opruimen. |
| Database-informatie | Controleer ExerciseRuns.IsTestRun en opruimregels voor testruns en voortgang. |
| Ontwerpbronnen | Beschrijven business rules, command-register, event-register en usecase-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-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-DOC-OEF-008-001 | SRS-AUTH-001 SRS-LRN-009 SRS-TCH-005 AC-AUTH-001 AC-LRN-009 AC-TCH-005 | Een bevoegde docent een oefening kunnen laten testen binnen de docentcontext |
REQ-UC-DOC-OEF-008-002 | SRS-LRN-009 SRS-TCH-005 AC-LRN-009 AC-TCH-005 | Een docenttest markeren met IsTestRun = true |
REQ-UC-DOC-OEF-008-003 | SRS-CAT-003 SRS-LRN-009 SRS-TCH-005 AC-CAT-003 AC-LRN-009 AC-TCH-005 | De actuele oefeningconfiguratie gebruiken bij testgeneratie |
REQ-UC-DOC-OEF-008-004 | SRS-TCH-005 AC-TCH-005 | Testvoortgang alleen tijdelijk opslaan zolang dit nodig is voor de actieve test |
REQ-UC-DOC-OEF-008-005 | SRS-LRN-010 SRS-TCH-004 SRS-NFR-AUD-001 AC-LRN-010 AC-TCH-004 AC-NFR-AUD-001 | Testruns niet opnemen in leerlinggeschiedenis of leerlingstatistieken |
REQ-UC-DOC-OEF-008-006 | SRS-RDM-001 SRS-RDM-002 SRS-RDM-003 SRS-RDM-005 SRS-RDM-006 SRS-CAT-001 AC-RDM-001 AC-RDM-002 AC-RDM-003 AC-RDM-005 AC-RDM-006 AC-CAT-001 | Testruns niet laten meetellen voor populaire categorieën, recent geoefend of frontpagesamenvattingen |
REQ-UC-DOC-OEF-008-007 | SRS-TCH-005 AC-TCH-005 | Testdata na afronding, verlaten of geplande cleanup opruimen |
REQ-UC-DOC-OEF-008-008 | SRS-AUTH-001 SRS-LRN-009 SRS-TCH-005 AC-AUTH-001 AC-LRN-009 AC-TCH-005 | Testen blokkeren wanneer de docent de oefening niet mag beheren |
REQ-UC-DOC-OEF-008-009 | SRS-AUTH-001 SRS-TCH-005 SRS-MOD-003 AC-AUTH-001 AC-TCH-005 AC-MOD-003 | Testen blokkeren wanneer de technische module of configuratie niet testbaar is |
REQ-UC-DOC-OEF-008-010 | SRS-CAT-003 SRS-LRN-009 SRS-TCH-005 AC-CAT-003 AC-LRN-009 AC-TCH-005 | De oefeningconfiguratie of oefeningstatus niet wijzigen door alleen testen |