Skip to content

Testdrehbuch

Prahbdip Singh edited this page May 23, 2026 · 45 revisions

Hinweis: Diese Vorlage versteht sich als Basis und dient der Strukturierung des Testdrehbuchs und des zugehörigen Testprotokolls. Diese Seite definiert die Testdurchführung für die Integrationstests (und ist ein Vorschlag für die Abnahmetests). Zielgruppe sind die Verantwortlichen für die Durchführung der Integrationstests. Dieses Dokument kann durch Ergänzung der Abschnitte 2 und 4 auch als Testprotokoll verwendet werden.

Noch ein Hinweis:Eine Wiki-Seite eignet sich nicht gut für ein Testprotokoll. Sie können den Inhalt der Seite in einen Issue kopieren. Dann funktionieren auch die Check-Boxes zu den beobachteten Abweichungen.

[[TOC]]

1. Testvorbereitung

Beschreiben Sie die erforderlichen Vorbereitungsschritte zur Ausführung der hier angeführten Tests. Eine beispielhafte Aufstellung ist nachfolgende angeführt.

1.1 Testdaten

Zu Testbeginn sind folgende Nutzer eingerichtet:

Benutzer/Passwort Rollen Abteilung Anmerkung
admin / passwd SYSTEM_ADMIN, EMPLOYEE Research (2) Haupt-Adminkonto
user1 / passwd MANAGEMENT, EMPLOYEE Research (2) Management-Sicht
user2 / passwd EMPLOYEE Research (2) Einfacher Mitarbeiter
elvis / passwd SYSTEM_ADMIN, EMPLOYEE Management Zweiter Admin
anna / passwd EMPLOYEE, DEPARTMENT_LEAD Engineering Lead Engineering
ben / passwd EMPLOYEE Engineering Büro: Eng Office A
clara / passwd EMPLOYEE Engineering Büro: Eng Office B
david / passwd EMPLOYEE Engineering Büro: Eng Office B
eva / passwd EMPLOYEE, BUILDING_ADMIN HR Gebäude-Admin
felix / passwd EMPLOYEE HR Büro: HR Office A
greta / passwd EMPLOYEE, DEPARTMENT_LEAD HR Lead HR
hans / passwd EMPLOYEE Management Büro: Mgmt Office A
iris / passwd EMPLOYEE, MANAGEMENT Management Management-Sicht
jonas / passwd EMPLOYEE Management Büro: Mgmt Office B

Initialer Testdatenbestand: (Beispiele)

  • Adressen: Primary Address (Italy), Campus West Austria, Main Campus Austria, HQ South Germany
  • Gebäude: Still OLD IT, Tech Tower, Main Office, South HQ
  • Abteilungen: Research (2), Sales, Engineering, HR, Management
  • Räume: Room 1 (OFFICE), Common Area 1/2 (COMMON_AREAS), Eng Office A/B/C, Eng Common Area, HR Office A/B, HR Common Area, Mgmt Office A/B, Mgmt Common Area, Sales Office A, Sales Common Area
  • Sensorstationen: Station A (Room 1), Station B (Common Area 1), Eng-A-S1, Eng-B-S1, HR-A-S1, HR-B-S1, Mgmt-A-S1, Sales-A-S1 etc.
  • Messwerte: Temperatur, Luftfeuchtigkeit, IAQ und Druck für alle büroähnlichen Räume vom 23.01.2026 bis 23.04.2026
  • Schwellenwerte: TEMPERATURE (UPPER/LOWER), HUMIDITY, IAQ je Raum; teils deaktiviert
  • Aktive Verletzungen: Room 1 HUMIDITY, Eng Office A IAQ, Eng Office B HUMIDITY, HR Office A HUMIDITY, Sales Office A TEMPERATURE etc.
  • Klimahinweise: 2 bestehende + 7 erweiterte Hinweise für verschiedene Metriken
  • Hinweis: Alle Testdaten werden sollten automatisch nach docker compose up --build von der data-prod.sql in die Datenbank gespeichert werden.

Hinweis: Sie sollten diese Daten zusätzlich in Form eines einfach zu importierenden Datenbank-Dumps bereitstellen.

1.2 Testeingangskriterien

Die Integrationstests können gestartet werden, wenn

  1. Alle Unit-Tests erfolgreich und vollständig ausgeführt wurden.
  2. Die Datenbank mit dem beschriebenen initialen Testdatenbestand befüllt ist. Dies sollte automatisch erfolgen.
  3. Die Anwendung lokal oder auf dem Testserver erreichbar ist (http://localhost:8080).

2. Testprotokoll

Dieser Abschnitt soll bei Testdurchführung ausgefüllt werden

  • Testdatum: (wann wurde getestet? ggf. Zeitraum)
  • Tester: (wer hat getestet)
  • Getestete Version: (z.B. GIT Tag)
  • Testeingangskriterien erfüllt: ja/nein laut (Verweis auf E-Mail der Entwickler, Maventestprotokoll, ...)
  • Testumgebung: (z.B. Anwendung lokal auf eigenem Rechner, Datenbank auf Server)

3. Testfälle

Hinweis: Die nachfolgenden Testfälle sind nur Beispiele. Erweitern Sie die Testfälle entsprechend Ihrer Konzeptbeschreibung und insbesondere der darin angeführten Use Cases. Vergessen Sie nicht darauf auch allgemeine (Filterung, Sortierung, etc.) funktionale und nicht-funktionale (Antwortzeiten, Stabilität, etc.) Anforderungen mit Ihren Testfällen abzudecken.

Die hier beschriebenen Testfälle decken die in der Konzeptbeschreibung angeführten Use Cases vollumfänglich ab. Weitere Testfälle wurden zur Überprüfung allgemeiner funktionaler Anforderungen ergänzt. Abweichungen von den erwarteten Ergebniszuständen wurden im Rahmen des durchgeführten Tests (vgl. ABschnitt 2, Testprotokoll) dokumentiert und entsprechend der nachfolgenden Einstufungen klassifiziert.

3.0 Einstufungslegende

  • OK: Keine Abweichungen gefunden.
  • Kosmetische Abweichungen: Kleinere Layout Probleme: z.B. Zeilenumbrüche im TExt ungeschickt, Texte für Buttons zu lange, etc.
  • Mittlere Abweichungen: Die Funktionalität ist grundsätzlich vorhanden, kann aber nur eingeschränkt benutzt werden, z.B. einige erwartete Einträge in einer Dropdownliste fehlen, Datenänderungen sind erst nach Schließen und wieder Öffnen eines Dialoges sichtbar, usw.
  • Große Abweichungen: Die Funktionalität ist nicht benutzbar, z.B. Aktionsbuttons zeigen keine Reaktion, Daten werden nicht korrekt in die Datenbank geschrieben, etc.
  • System unbenutzbar: Die Durchführung dieses Tests hinterlässt das System in einem unbenutzbaren Zustand, z.B. System stürtzt ab. Datenbank wird inkonsistent, Daten werden (ungeplant) gelöscht, etc.

3.1 Authentication

TC Auth1.1: Login - gültige Zugangsdaten

Feld Inhalt
Use Case UC Auth1 - Benutzeranmeldung
Ausgangszustand Benutzer 'admin' (Passwort: passwd) ist ausgeloggt. Testdaten sind geladen.
Aktion 1. POST /authentication/login mit Body { "username": "admin", "password": "passwd" }
2. Antwort entgegennehmen.
Erwarteter Ergebniszustand HTTP 200 OK.
Antwort-Body enthält ein gültiges JWT-Token im Feld 'token'.
Das Token kann für nachfolgende Requests verwendet werden.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Auth1.2: Login - falsches Passwort

Feld Inhalt
Use Case UC Auth1 - Benutzeranmeldung
Ausgangszustand Benutzer 'admin' ist ausgeloggt.
Aktion 1. POST /authentication/login mit Body { "username": "admin", "password": "wrongpassword" }
Erwarteter Ergebniszustand HTTP 401 Unauthorized.
Kein JWT-Token wird zurückgegeben.
Fehlermeldung weist auf ungültige Zugangsdaten hin.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Auth1.3: Login - unbekannter Benutzer

Feld Inhalt
Use Case UC Auth1 - Benutzeranmeldung
Ausgangszustand Kein Benutzer mit Username 'ghost' existiert.
Aktion 1. POST /authentication/login mit Body { "username": "ghost", "password": "password" }
Erwarteter Ergebniszustand HTTP 401 Unauthorized.
Kein JWT-Token wird zurückgegeben.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Auth1.4: Login - deaktivierter Benutzer

Feld Inhalt
Use Case UC Auth1 - Benutzeranmeldung
Ausgangszustand Benutzer 'user2' (Rolle: EMPLOYEE) ist im System vorhanden. Ein SYSTEM_ADMIN deaktiviert den Benutzer via PATCH /api/admin/{id} mit { "enabled": false }.
Aktion 1. POST /authentication/login mit den Zugangsdaten des deaktivierten Benutzers.
Erwarteter Ergebniszustand HTTP 401 Unauthorized.
Kein JWT-Token wird zurückgegeben.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Auth1.5: Zugriff ohne Token

Feld Inhalt
Use Case UC Auth2 - Zugriffskontrolle
Ausgangszustand Kein JWT-Token vorhanden.
Aktion 1. GET /api/userx/me ohne Authorization-Header senden.
Erwarteter Ergebniszustand HTTP 401 Unauthorized.
Kein Benutzerprofil wird zurückgegeben.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Auth1.6: Aktuellen Benutzer abrufen

Feld Inhalt
Use Case UC Auth2 - Benutzerprofil
Ausgangszustand Benutzer 'admin' ist eingeloggt und besitzt ein gültiges JWT-Token.
Aktion 1. GET /api/userx/me mit gültigem Bearer-Token. Für die Testdurchführung steht zusätzlich eine SWE.postman_collection.json zur Verfügung, welche direkt in Postman importiert werden kann. Alternativ können die aktuellen Benutzerdaten nach erfolgreichem Login im Frontend über das Benutzerprofil oben rechts geladen werden.
Erwarteter Ergebniszustand HTTP 200 OK. Die Antwort enthält den Benutzer admin mit den Rollen SYSTEM_ADMIN und EMPLOYEE. Sensible Daten wie Passwort-Hashes sind NICHT Bestandteil der Antwort.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

3.2 Benutzerverwaltung

TC User2.1: Alle Benutzer abrufen (SYSTEM_ADMIN)

Feld Inhalt
Use Case UC User2 - Benutzerverwaltung
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt.
Aktion 1. GET /api/admin mit Bearer-Token von 'admin'. Im Frontend können alle Users über "User Management" in der Navbar aufgerufen werden.
Erwarteter Ergebniszustand HTTP 200 OK.
Antwort-Array enthält alle Benutzer (admin, user1, user2, elvis, anna, ben, clara, david, eva, felix, greta, hans, iris, jonas).
Passwort-Hashes sind nicht enthalten.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC User2.2: Alle Benutzer abrufen - fehlende Berechtigung

Feld Inhalt
Use Case UC User2 - Benutzerverwaltung
Ausgangszustand Benutzer 'user2' (Rolle: EMPLOYEE) ist eingeloggt. Im Frontend soll kein "User Management" Feld in der Navbar vorhanden sein.
Aktion 1. GET /api/admin mit Bearer-Token von 'user2' durch Endpoint API aufruf. Im Frontend ist keine
Erwarteter Ergebniszustand HTTP 403 Forbidden.
Kein Benutzer-Array wird zurückgegeben.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC User2.3: Neuen Benutzer anlegen

Feld Inhalt
Use Case UC User2 - Benutzerverwaltung
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Benutzername 'newuser' existiert nicht.
Aktion 1. POST /api/admin mit Body: { "username": "newuser", "password": "pw123", "firstName": "New", "lastName": "User", "email": "new@example.com", "enabled": true, "roles": ["EMPLOYEE"] }. Im Frontend kann ein neuer User unter "User Management -> "Add User" erstellt werden.
Erwarteter Ergebniszustand HTTP 201 Created.
Antwort-Body enthält den neuen Benutzer mit generierter ID.
Benutzername ist 'newuser', Rolle ist 'EMPLOYEE'.
Benutzer ist nachfolgend über GET /api/admin/{id} abrufbar.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC User2.4: Benutzer anlegen - Benutzername bereits vergeben

Feld Inhalt
Use Case UC User2 - Benutzerverwaltung
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Benutzername 'admin' existiert bereits.
Aktion 1. POST /api/admin mit Body: { "username": "admin", "password": "pw123", "roles": ["EMPLOYEE"], "enabled": true }.
Erwarteter Ergebniszustand HTTP 409 Conflict.
Fehlermeldung weist auf bereits vorhandenen Benutzernamen hin.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC User2.5: Benutzer aktualisieren

Feld Inhalt
Use Case UC User2 - Benutzerverwaltung
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Benutzer 'user2' existiert.
Aktion 1. PATCH /api/admin/{id_von_user2} mit Body: { "firstName": "MaxUpdated", "email": "updated@example.com" }. Im Frontend können die Daten eines Users unter "User Management" -> "Details" aktualisiert werden.
Erwarteter Ergebniszustand HTTP 200 OK.
Antwort enthält firstName: 'MaxUpdated' und email: 'updated@example.com'.
Andere Felder (username, roles) bleiben unverändert.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC User2.6: Benutzer löschen

Feld Inhalt
Use Case UC User2 - Benutzerverwaltung
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Testbenutzer 'newuser' wurde in TC User2.3 erstellt.
Aktion 1. DELETE /api/admin/{id_von_newuser} mit Bearer-Token von 'admin'. Im Frontend kann unter "User Management" der Button "Delete" benutzt werden.
Erwarteter Ergebniszustand HTTP 204 No Content.
Der gelöschte User ist in der separaten Liste "Deleted Users" ersichtlich.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC User2.7: Benutzer selbst aktualisieren (Self-Update)

Feld Inhalt
Use Case UC User3 - Self-Service
Ausgangszustand Benutzer 'user2' (Rolle: EMPLOYEE) ist eingeloggt.
Aktion 1. PATCH /api/userx/me mit Body: { "firstName": "MaxSelf", "phone": "+43 555 1234" }. Im Frontend können die Daten direkt wenn man seinen eigenen Namen rechts oben in Eck wählt geändert werden.
Erwarteter Ergebniszustand HTTP 200 OK.
Antwort enthält firstName: 'MaxSelf' und phone: '+43 555 1234'.
Username und Rollen bleiben unverändert.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

3.3 Abwesenheitsverwaltung

TC Abs3.1: Eigene Abwesenheiten abrufen

Feld Inhalt
Use Case UC Abs1 - Abwesenheitsverwaltung
Ausgangszustand Benutzer 'admin' ist eingeloggt. Abwesenheiten für 'admin' sind in der Datenbank vorhanden.
Aktion 1. GET /api/userx/me/absences mit Bearer-Token von 'admin'. Im Frontend unter "Absences" in der Navbar.
Erwarteter Ergebniszustand HTTP 200 OK.
Keine Abwesenheiten anderer Benutzer sind im Frontent ersichtlich.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Abs3.2: Abwesenheit anlegen

Feld Inhalt
Use Case UC Abs1 - Abwesenheitsverwaltung
Ausgangszustand Benutzer 'admin' ist eingeloggt.
Aktion 1. POST /api/absence mit Body: { "userxId": {id_von_admin}, "startDate": {freie_Wahl}, "endDate": {freie_Wahl}, "absenceType": "HOLIDAY" }. Im Frontend kann eine Abwesenheit unter "Absences" -> "Manage Absences" eingereicht werden.
Erwarteter Ergebniszustand HTTP 201 Created.
Antwort enthält die neue Abwesenheit mit Status 'PLANNED' und Typ 'HOLIDAY'.
Start- und Enddatum sind korrekt gespeichert.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Abs3.3: Abwesenheit anlegen - Enddatum vor Startdatum

Feld Inhalt
Use Case UC Abs1 - Abwesenheitsverwaltung
Ausgangszustand Benutzer 'admin' ist eingeloggt.
Aktion 1. POST /api/absence mit Body: { "userxId": {id_von_admin}, "startDate": "{freie_Wahl}", "endDate": "{freie_Wahl}", "absenceType": "HOLIDAY" }. Hinweis: startDate sollte größer als endDate sein. Siehe 3.2 für Frontend aktion.
Erwarteter Ergebniszustand HTTP 400 Bad Request.
Fehlermeldung weist auf ungültige Datumskombination hin.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

3.4 Gebäude & Räume

TC Room3.1: Alle Buildings abrufen

Feld Inhalt
Use Case UC Building1 - Gebäude
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Buildings sind in der Datenbank vorhanden.
Aktion Im Frontend kann der eingeloggte Benutzer unter „Organization“ in der Navbar alle Gebäude, Adressen und Departments verwalten. Beim Anklicken der Schaltfläche „Organization“ soll automatisch die Ansicht „Buildings“ geöffnet werden. Zusätzlich sollen alle vorhandenen Gebäude in Tabellenform angezeigt werden.
Erwarteter Ergebniszustand HTTP 200 OK.
Antwort enthält mindestens die Buildings: 'Still OLD IT', 'Tech Tower', 'Main Office', 'South HQ'
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Room3.2: Neues Building anlegen

Feld Inhalt
Use Case UC Building2 - Gebäude
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt.
Aktion Im Frontend kann der eingeloggte Benutzer unter „Organization“ in der Navbar alle Gebäude, Adressen und Departments verwalten. Beim Anklicken der Schaltfläche „Addresses“ muss der Benutzer zunächst eine neue Adresse anlegen. Anschließend kann unter „Buildings“ ein neues Gebäude erstellt werden, wobei die zuvor angelegte Adresse ausgewählt werden muss.
Erwarteter Ergebniszustand HTTP 201 CREATED. Die neu erstellte Entität sollte in der Liste erscheinen.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Room3.2: Neues Building anlegen

Feld Inhalt
Use Case UC Building2 - Gebäude
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt.
Aktion Im Frontend kann der eingeloggte Benutzer unter „Organization“ in der Navbar alle Gebäude, Adressen und Departments verwalten. Beim Anklicken der Schaltfläche „Addresses“ muss der Benutzer zunächst eine neue Adresse anlegen. Anschließend kann unter „Buildings“ ein neues Gebäude erstellt werden, wobei die zuvor angelegte Adresse ausgewählt werden muss.
Erwarteter Ergebniszustand HTTP 201 CREATED. Die neu erstellte Entität sollte in der Liste erscheinen.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Building3.3: Bestehendes Building bearbeiten und löschen

Feld Inhalt
Use Case UC Building3 - Gebäude
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Ein Building aus dem vorherigen Test Case existiert bereits in der Buildings-Liste.
Aktion Im Frontend navigiert der eingeloggte Benutzer unter „Organization“ zur View „Buildings“. Dort bearbeitet der Benutzer das zuvor erstellte Building über die Schaltfläche „Edit“, ändert den Namen des Buildings und speichert die Änderungen. Danach überprüft der Benutzer, ob der neue Name direkt aktualisiert in der Liste angezeigt wird. Anschließend löscht der Benutzer das gleiche Building über die Schaltfläche „Delete“ und bestätigt den Löschvorgang.
Erwarteter Ergebniszustand HTTP 200 OK. Das Building wird erfolgreich bearbeitet und direkt aktualisiert in der Liste angezeigt. Anschließend wird das Building erfolgreich gelöscht und verschwindet aus der Buildings-Liste. Beide Aktionen liefern eine SUCCESS-Meldung. Die verbundene Addresse mit dem Building wird auch komplett aus der Datenbank entfernt bzw. in der Liste "Addresses".
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Department3.3: Neues Department anlegen

Feld Inhalt
Use Case UC Department1 - Department
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Der Benutzer „Ben Schmidt“ existiert bereits im System.
Aktion Im Frontend kann der eingeloggte Benutzer unter „Organization“ in der Navbar alle Gebäude, Adressen und Departments verwalten. Beim Anklicken der Schaltfläche „Departments“ erstellt der Benutzer ein neues Department und weist diesem den Benutzer „Ben Schmidt“ zu. Anschließend wird das Department gespeichert.
Erwarteter Ergebniszustand HTTP 201 CREATED. Das neu erstellte Department sollte in der Liste erscheinen und den Benutzer „Ben Schmidt“ enthalten.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Department3.4: Bestehendes Department bearbeiten und löschen

Feld Inhalt
Use Case UC Department2 - Department
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Ein Department mit dem Benutzer „Ben Schmidt“ existiert bereits in der Departments-Liste.
Aktion Im Frontend navigiert der eingeloggte Benutzer unter „Organization“ zur View „Departments“. Dort bearbeitet der Benutzer das zuvor erstellte Department über die Schaltfläche „Edit“, ändert den Namen des Departments und speichert die Änderungen. Danach überprüft der Benutzer, ob der neue Name direkt aktualisiert in der Liste angezeigt wird. Anschließend löscht der Benutzer das gleiche Department über die Schaltfläche „Delete“ und bestätigt den Löschvorgang.
Erwarteter Ergebniszustand HTTP 200 OK. Das Department wird erfolgreich bearbeitet und direkt aktualisiert in der Liste angezeigt. Anschließend wird das Department erfolgreich gelöscht und verschwindet aus der Departments-Liste. Beide Aktionen liefern eine SUCCESS-Meldung.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Room3.5: Alle Räume abrufen

Feld Inhalt
Use Case UC Room1 - Raumverwaltung
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Räume sind bereits in der Datenbank vorhanden.
Aktion Im Frontend kann der eingeloggte Benutzer über die Navbar zur separaten View „Rooms“ navigieren. Nach dem Öffnen der Ansicht sollen alle bereits vorhandenen Räume in Tabellenform angezeigt werden. Dazu gehören unter anderem „Common Area 1“, „Common Area 2“, verschiedene „Eng Rooms“, „HR Rooms“ sowie „Mgmt Rooms“.
Erwarteter Ergebniszustand HTTP 200 OK. Die vorhandenen Räume werden erfolgreich geladen und in Tabellenform angezeigt. Die Liste enthält mehrere bereits angelegte Räume wie „Common Area 1“, „Common Area 2“, Engineering-, HR- und Management-Räume. Nur aktive Räume (active: true) werden angezeigt.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Room3.6: Neuen Raum anlegen

Feld Inhalt
Use Case UC Room2 - Raumverwaltung
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Ein Department „Engineering“ sowie das Building „TechTower“ existieren bereits im System.
Aktion Im Frontend navigiert der eingeloggte Benutzer über die Navbar zur View „Rooms“. Dort erstellt der Benutzer über die Schaltfläche "Add Room“ einen neuen Raum mit dem Namen „Eng Office D“. Als Raumtyp wird „OFFICE“ ausgewählt, zusätzlich wird das Department „Engineering“ sowie das Building „TechTower“ ausgewählt. Anschließend speichert der Benutzer den neuen Raum.
Erwarteter Ergebniszustand HTTP 201 CREATED. Der neue Raum „Eng Office D“ wird erfolgreich erstellt und direkt in der Raumliste angezeigt. Der Raum besitzt den Status active: true und eine SUCCESS-Meldung wird angezeigt.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Room3.7: Raum Soft-Delete

Feld Inhalt
Use Case UC Room3 - Raumverwaltung
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Der Raum „Eng Office D“ wurde im vorherigen Test Case erstellt und existiert in der Datenbank mit active: true.
Aktion Im Frontend navigiert der eingeloggte Benutzer über die Navbar zur View „Rooms“. Dort sucht er den Raum „Eng Office D“ in der Liste und löscht ihn über die Schaltfläche „Delete“. Der Benutzer bestätigt den Löschvorgang. Im Hintergrund wird ein Soft-Delete ausgeführt, sodass der Raum in der Datenbank erhalten bleibt, aber als inaktiv markiert wird.
Erwarteter Ergebniszustand HTTP 204 No Content. Der Raum wird erfolgreich soft-deleted und erhält den Status active: false. Ein anschließender GET /api/room/{id} liefert HTTP 404 zurück bzw. der Raum wird nicht mehr in der aktiven Raumliste angezeigt.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

3.5 Sensorstationen & RaspberryPis

TC Sensor4.1: Alle Raspberry PIs abrufen

Feld Inhalt
Use Case UC Raspberry1 - Raspberry Management
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Mehrere Raspberry Pis sind bereits in der Datenbank vorhanden.
Aktion Im Frontend navigiert der eingeloggte Benutzer über die Navbar zu „Devices“. Dort wird automatisch eine Liste aller vorhandenen Raspberry Pis geladen und als Cards angezeigt werden.
Erwarteter Ergebniszustand HTTP 200 OK. Die Antwort enthält mindestens die Raspberry Pis rpi-room1, rpi-common1, rpi-eng-a. Jeder Raspberry Pi enthält die Felder id, hostName, ipAddress, deviceStatus, roomId, sensorStationIds. Die Geräte werden im Frontend in der Device-Liste angezeigt. Beim Anklicken der Liste werden die dazugehörigen Sensor Stationen angezeigt.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Sensor4.2: Raspberry Pi Konfiguration herunterladen

Feld Inhalt
Use Case UC Raspberry1 - Raspberry Management
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Der Raspberry Pi „rpi-room1“ (id: 1) ist im System vorhanden und einem Raum zugewiesen.
Aktion Im Frontend navigiert der eingeloggte Benutzer über die Navbar zu „Devices“. Dort wird die Liste der vorhandenen Raspberry Pis angezeigt. Der Benutzer wählt den Raspberry Pi „rpi-room1“ aus und klickt auf den Button „Download config.yaml“. Dadurch wird eine YAML-Konfigurationsdatei für das ausgewählte Gerät generiert und automatisch heruntergeladen.
Erwarteter Ergebniszustand HTTP 200 OK. Eine config.yaml Datei wird erfolgreich heruntergeladen. Der Inhalt der Datei entspricht exakt der Konfiguration des ausgewählten Raspberry Pis und hat folgendes Format (siehe code block unter Tabelle).
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala
pi:
  id: 1
  room_id: 1
  room_name: "Room 1"
  host_name: "rpi-room1"
  backend_url: "http://192.168.0.110:8080"
  privacy_mode: true

TC Sensor4.3: SensorStation hinzufügen (Manuell über Raspberry Pi)

Feld Inhalt
Use Case UC Raspberry2 - Raspberry Management
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN) ist eingeloggt. Der Raspberry Pi „rpi-room1“ ist vorhanden und bereits einer Raumstruktur zugeordnet.
Aktion Im Frontend navigiert der Benutzer über die Navbar zu „Devices“ und wählt dort den Raspberry Pi „rpi-room1“ aus. Dadurch klappt die Detailansicht bzw. die zugehörige Liste der Stationen unter diesem Raspberry Pi auf. In dieser Ansicht kann der Benutzer über den Button „Add Station“ eine neue Sensorstation erstellen. Dabei werden frei wählbare Feldnamen und Werte angegeben. Die neu erstellte Sensorstation wird anschließend dem Raspberry Pi zugeordnet und erscheint in der Liste mit dem Status-Label „Needs setup“. Wichtig: In diesem Use Case ist SmartScan nicht aktiviert und wird nicht verwendet.
Erwarteter Ergebniszustand HTTP 200 OK. Die neue Sensorstation wird erfolgreich erstellt und dem Raspberry Pi „rpi-room1“ zugeordnet. Sie erscheint direkt in der aufklappbaren Liste unter dem Raspberry Pi mit dem Status „Needs setup“. Alle manuell eingegebenen Felder werden korrekt übernommen und gespeichert.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

3.6 Schwellenwerte

TC Thresh5.1: Schwellenwert anlegen

Feld Inhalt
Use Case UC Threshold1 - Schwellenwertverwaltung
Ausgangszustand Benutzer 'eva' (Passwort: 'passwd', Rolle: BUILDING_ADMIN) ist eingeloggt. Für den Raum „Room 1“ existiert noch kein Schwellenwert für die Metrik „PRESSURE“. Bereits vorhandene Schwellenwerte werden in der Liste unter „Thresholds“ angezeigt.
Aktion Im Frontend navigiert der Benutzer über die Navbar zum Menüpunkt „Thresholds“. Dort öffnet sich eine Liste aller bereits existierenden Schwellenwerte. Der Benutzer erstellt einen neuen Schwellenwert für den Raum „Room 1“ mit der Metrik „PRESSURE“ und wählt dabei beliebige gültige Werte für den Schwellenwert. ThresholdType sollte UPPER sein. Zusätzlich wird ein passender Climate Hint für „Pressure“ aus der vorhandenen Liste ausgewählt. Nach dem Ausfüllen der Felder speichert der Benutzer den neuen Schwellenwert.
Erwarteter Ergebniszustand HTTP 200 OK. Der neue Schwellenwert wird erfolgreich erstellt und ist dem Raum „Room 1“ zugeordnet. Die Antwort enthält metric: 'PRESSURE', thresholdType entsprechend der Auswahl, sowie die gesetzten Werte. Der ausgewählte Climate Hint ist korrekt verknüpft. Der neue Schwellenwert erscheint direkt in der Threshold-Liste im Frontend.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Thresh5.2: Schwellenwert bearbeiten

Feld Inhalt
Use Case UC Threshold1 - Schwellenwertverwaltung
Ausgangszustand Benutzer 'eva' (Passwort: 'passwd', Rolle: SYSTEM_USER oder SYSTEM_ADMIN je nach Systemdefinition) ist eingeloggt. Für den Raum „Room 1“ existiert bereits ein Schwellenwert für die Metrik „PRESSURE“, welcher im vorherigen Test Case erstellt wurde.
Aktion Im Frontend navigiert der Benutzer über die Navbar zu „Thresholds“. Dort wird die Liste der vorhandenen Schwellenwerte angezeigt. Der Benutzer sucht den zuvor erstellten Schwellenwert für „Room 1“ und öffnet diesen über die „Edit“-Funktion. Anschließend ändert der Benutzer den ThresholdType auf „LOWER“ und passt den Schwellenwert auf einen neuen beliebigen Wert an. Danach speichert der Benutzer die Änderungen.
Erwarteter Ergebniszustand HTTP 200 OK. Die Aktualisierung des Schwellenwerts kann aufgrund von HTTP-Anfragen einige Sekunden dauern. Nach erfolgreicher Verarbeitung ist der Schwellenwert mit metric: 'PRESSURE' weiterhin dem Raum „Room 1“ zugeordnet, jedoch mit thresholdType: 'LOWER' und dem aktualisierten Wert. Die Änderung wird korrekt in der Liste im Frontend angezeigt.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

3.7 Analytics

TC Ana6.1: Raumzusammenfassung - eigenes Büro (EMPLOYEE)

Feld Inhalt
Use Case UC Analytics1 - Raumanalyse
Ausgangszustand Benutzer 'ben' (Rolle: EMPLOYEE, Raum: 'Eng Office A', privacyMode: false) ist eingeloggt.
Aktion Im Frontend navigiert der Benutzer über die Navbar zum „Dashboard“. Dort wird automatisch die View „My Office“ aktiviert, die dem zugewiesenen Raum „Eng Office A“ entspricht. Der Benutzer sieht eine Übersicht mit den neuesten Messdaten seines Büros sowie die Anzahl aktiver Grenzwertverletzungen. Anschließend klickt der Benutzer auf „View History“. Dadurch werden historische Analysedaten geladen und in Diagrammform dargestellt. Es erscheinen mehrere Diagramm Blocks sowie zusätzliche Buttons zur Anpassung der Granularität. In diesem Use Case ist mindestens ein Diagramm für „Temperature“ über einen Zeitraum von 30 Tagen sichtbar, basierend auf den vorhandenen Mockdaten.
Erwarteter Ergebniszustand HTTP 200 OK. Die Dashboard-Ansicht zeigt korrekt „My Office“ für den Raum „Eng Office A“, inklusive aktueller Messdaten und Grenzwertverletzungen. Beim Öffnen von „View History“ werden mindestens 4 Diagramme sowie Steuerungselemente für die Granularität angezeigt, wobei mindestens das 30-Tage-Temperature-Diagramm korrekt gerendert wird (nur für TEMPERATURE aufgrund der Mock Daten).
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Ana6.2: Raumzusammenfassung - gemeinsamer Bereich (EMPLOYEE)

Feld Inhalt
Use Case UC Analytics1 - Raumanalyse
Ausgangszustand Benutzer 'ben' (Rolle: EMPLOYEE, Department: Engineering) ist eingeloggt. Der Raum „Eng Common Area“ gehört zum Department Engineering und ist dem Benutzer über die Organisationsstruktur zugänglich.
Aktion Im Frontend navigiert der Benutzer über die Navbar zum „Dashboard“. Dort wählt er den gemeinsamen Bereich „Eng Common Area“ aus. Anschließend wird automatisch die Raumzusammenfassung geladen. Zusätzlich öffnet der Benutzer die Ansicht „View History“, um historische Daten zu prüfen.
Erwarteter Ergebniszustand HTTP 200 OK. Im Frontend wird die Raumübersicht für „Eng Common Area“ korrekt angezeigt, jedoch werden keine Diagramme gerendert, da keine Daten existieren. Zusätzlich existieren keine Threshold Violations, da keine Messwerte vorliegen.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

CONTINUE HERE

TC Ana9.5: Raumtrend - DEPARTMENT_LEAD (reduzierte Granularität)

Feld Inhalt
Use Case UC Analytics3 - Trendanalyse
Ausgangszustand Benutzer 'anna' (Rolle: DEPARTMENT_LEAD, Department: Engineering) ist eingeloggt. Raum 'Eng Office A' hat privacyMode: false.
Aktion 1. GET /api/analytics/rooms/{3}/trends?metric=TEMPERATURE&from=2026-01-23T00:00:00&to=2026-02-22T00:00:00 mit Bearer-Token von 'anna'.
Erwarteter Ergebniszustand HTTP 200 OK.
bucketSize ist '1d' (erzwungene Tagesgranularität, nicht 'raw').
granularityReduced ist true.
Datenpunkte repräsentieren Tagesdurchschnitte.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Ana9.6: Abteilungszusammenfassung (DEPARTMENT_LEAD)

Feld Inhalt
Use Case UC Analytics4 - Abteilungsanalyse
Ausgangszustand Benutzer 'anna' (Rolle: DEPARTMENT_LEAD, Department: Engineering) ist eingeloggt.
Aktion 1. GET /api/analytics/departments/{id_Engineering}/summary mit Bearer-Token von 'anna'.
Erwarteter Ergebniszustand HTTP 200 OK.
Antwort enthält roomCount >= 5 (Eng Office A/B/C + Common Area).
activeViolations zählt korrekt die aktiven Verletzungen der Abteilung.
avgMetrics und currentMetrics sind befüllt.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Ana9.7: Abteilungszusammenfassung - fremde Abteilung (DEPARTMENT_LEAD)

Feld Inhalt
Use Case UC Analytics4 - Abteilungsanalyse
Ausgangszustand Benutzer 'anna' (Rolle: DEPARTMENT_LEAD, Department: Engineering) ist eingeloggt.
Aktion 1. GET /api/analytics/departments/{id_HR}/summary mit Bearer-Token von 'anna'.
Erwarteter Ergebniszustand HTTP 403 Forbidden.
Kein Abteilungsobjekt wird zurückgegeben.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Ana9.8: Verletzungsanalyse - Anonymisierung für MANAGEMENT

Feld Inhalt
Use Case UC Analytics5 - Anonymisierung
Ausgangszustand Benutzer 'iris' (Rolle: MANAGEMENT) ist eingeloggt.
Aktion 1. GET /api/analytics/departments/{id_Engineering}/violations mit Bearer-Token von 'iris'.
Erwarteter Ergebniszustand HTTP 200 OK.
Antwort enthält total, active, resolved und byMetric-Aufschlüsselung.
byRoom-Liste ist LEER (Anonymisierung gemäß Spezifikation).
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Ana9.9: Firmen-Dashboard (BUILDING_ADMIN)

Feld Inhalt
Use Case UC Analytics6 - Firmendashboard
Ausgangszustand Benutzer 'eva' (Rolle: BUILDING_ADMIN) ist eingeloggt.
Aktion 1. GET /api/analytics/company/dashboard mit Bearer-Token von 'eva'.
Erwarteter Ergebniszustand HTTP 200 OK.
Antwort enthält totalRooms, totalEmployees, activeViolations.
departmentBreakdowns enthält Einträge für alle Abteilungen.
Werte sind plausibel (totalEmployees >= 10).
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Ana9.10: Firmen-Trend (BUILDING_ADMIN)

Feld Inhalt
Use Case UC Analytics6 - Firmendashboard
Ausgangszustand Benutzer 'eva' (Rolle: BUILDING_ADMIN) ist eingeloggt.
Aktion 1. GET /api/analytics/company/trends?metric=TEMPERATURE&from=2026-01-23T00:00:00&to=2026-04-22T23:59:59 mit Bearer-Token von 'eva'.
Erwarteter Ergebniszustand HTTP 200 OK.
bucketSize ist nicht 'raw' (Fenster > 7 Tage => automatisch '1h', '6h' oder '1d').
Datenpunkte (points) sind nicht leer und enthalten plausible Temperaturwerte.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

TC Ana9.11: Ungültige Zeitspanne (from > to)

Feld Inhalt
Use Case UC Analytics1 - Validierung
Ausgangszustand Benutzer 'eva' (Rolle: BUILDING_ADMIN) ist eingeloggt.
Aktion 1. GET /api/analytics/rooms/{id_Eng_Office_A}/summary?from=2026-04-22T00:00:00&to=2026-01-01T00:00:00 mit Bearer-Token von 'eva'.
Erwarteter Ergebniszustand HTTP 400 Bad Request.
Fehlermeldung weist darauf hin, dass 'from' nicht nach 'to' liegen darf.
Beobachtete Abweichungen
Einstufung Siehe 3. Testfälle - Einstufungsskala

3.10 Klimahinweise

TC Hint10.1: Klimahinweis anlegen

Feld Inhalt
Use Case UC Hint1 - Klimahinweise
Ausgangszustand Benutzer 'admin' (Rolle: SYSTEM_ADMIN oder BUILDING_ADMIN) ist eingeloggt.
Aktion 1. POST /api/climatehint mit Body: { "metric": "TEMPERATURE", "hintText": "Testhinweis Temperatur" }
Erwarteter Ergebniszustand HTTP 201 Created.
Antwort enthält den neuen Hinweis mit id, metric: 'TEMPERATURE' und hintText: 'Testhinweis Temperatur'.
Beobachtete Abweichungen
Einstufung [ ] OK   [ ] Kosmetische Abweichungen   [ ] Mittlere Abweichungen   [ ] Große Abweichungen   [ ] System unbenutzbar

TC Hint10.2: Klimahinweis löschen - mit Schwellenwertverknüpfung

Feld Inhalt
Use Case UC Hint1 - Klimahinweise
Ausgangszustand Benutzer 'admin' ist eingeloggt. Klimahinweis 'Use a reverse-water-sprayer' ist mit dem HUMIDITY-Schwellenwert von 'Room 1' verknüpft.
Aktion 1. DELETE /api/climatehint/{id_reverseWaterSprayer} mit Bearer-Token von 'admin'.
Erwarteter Ergebniszustand HTTP 204 No Content.
Die Verknüpfung zum Schwellenwert wurde automatisch aufgelöst.
Der Schwellenwert selbst bleibt erhalten.
Beobachtete Abweichungen
Einstufung [ ] OK   [ ] Kosmetische Abweichungen   [ ] Mittlere Abweichungen   [ ] Große Abweichungen   [ ] System unbenutzbar

3.2 Testfälle weitere Use Cases

3.3 Weiter nichtfunktionale Testfälle

Führen Sie in diesem Abschnitt weitere Testfälle zur nachvollziehbaren und reproduzierbaren Überprüfung relevanter nichtfunktionaler Anforderungen an. Diese sind z.B.:

  • Tests zu Antwortzeiten
  • Konsistenz der Nutzeroberfläche
  • Stabilitätstests

4. Anhang

4.1 Glossar

Begriff Erklärung
ACTIVE Status einer Schwellenwert-Verletzung – Verletzung ist noch aktiv.
BUILDING_ADMIN Rolle mit Zugriff auf Gebäudeverwaltung und Analytics (kein User-Management).
DEPARTMENT_LEAD Rolle mit Zugriff auf eigene Abteilung; reduzierte Granularität bei Büroanalysen.
EMPLOYEE Basisrolle; Zugriff auf eigenes Büro und gemeinsame Bereiche der Abteilung.
IAQ Index of Air Quality – Luftqualitätsindex.
JWT JSON Web Token – statelesser Authentifizierungstoken.
MANAGEMENT Rolle mit anonymisiertem Zugriff auf Abteilungs- und Firmendaten.
privacyMode Bool-Flag pro Raum: true = Mindestbelegung nicht erreicht, keine Messdaten für EMPLOYEE sichtbar.
RESOLVED Status einer Schwellenwert-Verletzung - Verletzung wurde aufgelöst.
Soft-Delete Logisches Löschen: Raum bleibt in DB, wird aber als active: false markiert.
SYSTEM_ADMIN Administratorrolle für Benutzerverwaltung; KEIN Zugriff auf Analytics-Endpunkte.

4.2 Referenzierte Dokumente

  • Software Konzept (Version, Datum)

Clone this wiki locally