-
Notifications
You must be signed in to change notification settings - Fork 0
Abnahmetest
Uns als Abnahmeteam wurden insgesamt 27 Testfälle vom Entwicklerteam zur Verfügung gestellt. Diese deckten verschiedene Bereiche des Systems ab, darunter Login, Employee, Department, Facility Administration, System Administration sowie die Hardware Komponenten (Sensorstationen und Raspberry Pi). Die Testfälle wurden in einer Excel-Tabelle exportiert, welche wir für die Durchführung der Tests sowie zur Dokumentation von Feedback und Auffälligkeiten verwendet haben. Alle Teammitglieder beteiligten sich an der Durchführung der Tests, wobei die Testfälle möglichst gleichmäßig aufgeteilt wurden. Für die Tests standen unterschiedliche Testdaten zur Verfügung, darunter mehrere Users mit verschiedenen Rollen sowie bereits angelegte Systemdaten. Insgesamt ist das System teilweise funktionsfähig; ebestehen lediglich einige Mängel, die im Folgenden beschrieben werden.
- Die bereitgestellten Funktionen sind größtenteils implementiert und funktionieren wie vorgesehen
- Bei Räumen, die die definierte Mindestbelegung nicht erreichen, werden teilweise dennoch Messwerte angezeigt. Dabei ist nicht eindeutig ersichtlich, ob es sich um ältere zwischengespeicherte Daten handelt oder ob die Logik zur Behandlung der Mindestbelegung nicht korrekt greift
- Die Funktionalität ist insgesamt nur teilweise vollständig umgesetzt. Insbesondere schlägt die erneute Synchronisation zwischengespeicherter Messdaten nach einer Offline Phase fehl (siehe TC Hub1.3). Dadurch werden lokal gepufferte Daten nicht wie vorgesehen an das Backend übertragen
- Das Löschen eines Benutzerkontos funktioniert grundsätzlich korrekt. Nach der Löschung werden weitere Anmeldeversuche mit den entsprechenden Zugangsdaten ordnungsgemäß abgelehnt. Allerdings erhält der Benutzer lediglich eine generische Fehlermeldung („Server Error“). Hier sollte eine aussagekräftigere Rückmeldung implementiert werden, die den tatsächlichen Grund der fehlgeschlagenen Anmeldung beschreibt
- Die Anwendung läuft insgesamt stabil und performant. Insbesondere das Laden der Diagramme erfolgt schnell und ohne spürbare Verzögerungen oder Latenzen
- Da keine expliziten Testfälle für Performanz- oder Stabilitätstests bereitgestellt wurden, erfolgte die Bewertung dieser Aspekte im Rahmen des Testen der Anwendung. Dabei konnten keine größeren Performance- oder Stabilitätsprobleme festgestellt werden
- Positiv hervorzuheben ist die Implementierung von Validierungen für Thresholds sowie für Abwesenheiten. Das System überprüft entsprechende Eingaben zuverlässig und verhindert dadurch fehlerhafte oder unrealistische Konfigurationen
- Die Offline-Pufferung von Messdaten auf dem Raspberry Pi funktioniert grundsätzlich korrekt. Im Fehlerfall werden Datensätze lokal gespeichert. Die anschließende automatische Synchronisation dieser Daten nach Wiederherstellung der Verbindung ist jedoch derzeit nicht vollständig funktionsfähig (siehe TC Hub1.3)
- Das System ist eine intuitive und gut strukturierte Webanwendung. Die Benutzeroberfläche ist übersichtlich gestaltet und ermöglicht eine einfache Navigation, wodurch sich das System insgesamt gut für die adressierte Zielgruppe eignet
- Besonders positiv hervorzuheben sind die übersichtliche Darstellung der Daten sowie die Diagramme. Diese bieten verschiedene Granularitätsstufen und ermöglichen dadurch detaillierte Auswertungen historischer Messwerte
- Zusätzlich tragen die rollenbasierten Zugriffskonzepte zu einer klaren und sinnvollen Nutzerstruktur bei
- Verbesserungspotenzial besteht insbesondere bei der Fehlerkommunikation. In mehreren Testfällen wurden technische Fehlermeldungen oder generische Meldungen („Server Error“) angezeigt, obwohl eine benutzerfreundliche Rückmeldung für den Anwender hilfreicher wäre
- Die Setup Dokumentation weist kleinere Unklarheiten auf. Einige Startbefehle sind ungenau bzw. nicht korrekt beschrieben
| TC-ID | Status | Bemerkung |
|---|---|---|
| TC Auth1.1 | OK | Login funktioniert korrekt für alle getesteten Benutzer. Bei Anmeldung mit einem nicht existierenden Benutzer wird aktuell jedoch die Meldung „Server Error, Bad Credentials“ angezeigt. Die Exception BadCredentialsException sollte im GlobalExceptionHandler behandelt werden. |
| TC Auth1.2 | Mittlere Abweichungen | Anmeldung mit falschem Passwort führt derzeit zu einer generischen „Server Error“-Meldung. Erwartet wird eine benutzerfreundliche Fehlermeldung. |
| TC Auth1.3 | Mittlere Abweichungen | Die angezeigte Fehlermeldung entspricht jedoch derselben Problematik wie bei den vorherigen Login-Testfällen. Grundsätzlich kann sich der User nicht mehr anmelden, was OK ist. |
| TC Auth1.4 | Große Abweichungen | Der erwartete Dialog zur Eingabe der E-Mail-Adresse beim erstmaligen Login wird nicht angezeigt. |
| TC-ID | Status | Bemerkung |
|---|---|---|
| TC Emp1.1 | OK | Keine aktiven Verstöße sichtbar. Es wurden wahrscheinlich keine Testdaten hinterlegt, die Anzeige verhält sich dennoch korrekt. |
| TC Emp1.2 | OK | Keine Auffälligkeiten festgestellt. |
| TC Emp1.3 | OK | Funktioniert wie beschrieben. |
| TC Emp1.4 | Kosmetische Abweichungen | The expected state says "This field is empty" (no display/text). In reality, the placeholder text “Leave blank to keep your current password” is shown. Functionally equivalent, but not entirely matching the specification. |
| TC Emp1.5 | OK | Einsehen sowie Verwaltung eigener Abwesenheiten funktioniert wie vorgesehen. |
| TC-ID | Status | Bemerkung |
|---|---|---|
| TC Dep1.1 | Mittlere Abweichungen | Historische Klimadaten werden grundsätzlich korrekt dargestellt. Bei Räumen mit nicht erfüllter Mindestbelegung werden jedoch weiterhin einzelne Messwerte angezeigt, obwohl kein Graph dargestellt wird. |
| TC Dep1.2 | OK | Funktioniert wie im Testfall beschrieben. |
| TC-ID | Status | Bemerkung |
|---|---|---|
| TC Fac1.1 | OK | Threshold-Konfiguration funktioniert zuverlässig, einschließlich der implementierten Boundary-Logik. |
| TC Fac1.2 | OK | Funktionalität entspricht den Anforderungen. |
| TC Fac1.3 | OK | Funktionalität entspricht den Anforderungen. |
| TC-ID | Status | Bemerkung |
|---|---|---|
| TC SA1.1 | OK | Im Testskript wird der Begriff „suspended“ verwendet, während die UI „disabled“ anzeigt. Die Funktionalität ist identisch (Benutzer kann sich nicht anmelden; Server-Fehler), lediglich die Terminologie unterscheidet sich. |
| TC SA1.2 | OK | Im Testskript wird „commit changes“ verwendet, während die Anwendung „save changes“ nutzt. Die Funktionalität entspricht den Erwartungen. |
| TC SA1.3 | OK | Im Testskript wird „Department Setup“ verwendet, während die Anwendung „Departments Setup“ verwendet. Keine funktionale Abweichung festgestellt. |
| TC SA1.4 | OK | Funktioniert wie vorgesehen. |
| TC SA1.5 | Große Abweichungen | RPI kann zwar erstellt werden, aber ein Raum kann nicht zugewiesen werden. Man kann zwar im Popup eine eingeben, aber der wird nicht persistiert. Auch nicht, wenn man versucht den Raum nachträglich noch zu bearbeiten. Infolge dessen kann man aber auch keine conf.yaml downloaden, weil da der fehlende Raum eine Exception im Backend auslöst. Ich habe zum Testen, die conf.yaml manuell bearbeitet und kopiert, aber eigentlich funktioniert das Setup ohne conf.yaml ja nicht. Siehe Abbildung 1 unten. |

Beim Anlegen eines Raspberry Pi wurde ein Raum ausgewählt. Zur Sicherheit wurde zuvor überprüft, dass diesem Raum kein anderer Raspberry Pi zugeordnet ist. Nach dem Erstellen erscheint der Raspberry Pi zwar in der Liste, die Raumzuordnung wird jedoch nicht übernommen und bleibt leer.

Auch eine nachträgliche Bearbeitung des Raspberry Pi führt nicht zum gewünschten Ergebnis. Obwohl ein Raum ausgewählt und die Änderungen gespeichert werden, wird die Raumzuordnung weiterhin nicht aktualisiert. Andere Eigenschaften wie die IP Adresse oder der Log Pfad lassen sich hingegen erfolgreich ändern

| TC-ID | Status | Bemerkung |
|---|---|---|
| TC Sen1.1 | OK | Funktioniert wie vorgesehen. |
| TC Sen1.2 | Kosmetische Abweichungen | Angezeigter Zeitstempel weicht um etwa 2 Stunden von der tatsächlichen Zeit ab. |
| TC Sen1.3 | OK | Funktioniert wie vorgesehen. |
| TC Sen1.4 | OK | Funktioniert wie vorgesehen. |
| TC-ID | Status | Bemerkung |
|---|---|---|
| TC Hub1.1 | OK | Das lokale Puffern der Messdaten in der SQLite-Datenbank funktioniert wie vorgesehen. Zur direkten Überprüfung der gespeicherten Einträge musste die Datei central.db jedoch zunächst von g5t5/central/config nach g5t5/central verschoben werden, da Docker die Datenbank von dort aus einbindet. |
| TC Hub1.2 | Mittlere Abweichungen | Die Events werden korrekt in den Docker Logs protokolliert. Die im Testfall spezifizierte Logdatei /var/log/iot/central_1.log konnte auf dem Raspberry Pi jedoch nicht gefunden werden. |
| TC Hub1.3 | Mittlere Abweichungen | Die Übertragung von Messdaten an die Webanwendung funktioniert grundsätzlich. Ist das Backend erreichbar, werden die Daten erfolgreich übertragen und in der Raspberry PI Datenbank mit dem Status SYNCHED markiert. Ist das Backend nicht erreichbar, werden die Messdaten korrekt mit dem Status PENDING gespeichert. Das spätere erneute Senden dieser zwischengespeicherten Datensätze funktioniert jedoch nicht. Die Webanwendung lehnt diese Datensätze ab. Als mögliche Ursache wurde festgestellt, dass die aus der SQLite Datenbank geladenen Messdaten Feldnamen im snake_case-Format (z. B. is_active) enthalten, während erfolgreich übertragene Datensätze das vom Backend erwartete camelCase Format (z. B. isActive) verwenden. |
| TC Hub1.4 | OK | Die Berechnung von Grenzwertüberschreitungen funktioniert wie im Testfall beschrieben. |
-
Das System sollte vollständig über Docker containerisiert werden, sodass sowohl Backend als auch Frontend gemeinsam gestartet werden können und kein manueller Start über
mvnbzw.npm starterforderlich ist. -
Die angegebenen Startbefehle (
docker up -dundmvn springboot:run) funktionieren in der aktuellen Form nicht. Korrekt wären hierdocker compose up -dsowiemvn spring-boot:run. -
In den Logs treten mehrfach
AccessDeniedExceptionFehler auf, die aktuell durch eine generische Methode imGlobalExceptionHandlerabgefangen werden. Beispiel:Unhandled exception at path: /api/department/rooms/violations, caught by global handler: org.springframework.security.authorization.AuthorizationDeniedException: Access DeniedEs wird empfohlen, die
AccessDeniedExceptionexplizit in der MethodehandleNotAllowedExceptionzu berücksichtigen. Dies kann z. B. durch Gruppierung der Exceptions erfolgen:@ExceptionHandler({NotAllowedException.class, AccessDeniedException.class}) -
Für Tester war es nicht sofort ersichtlich, wo sich der „Enabled“-Button befindet, um Benutzer im User Management zu aktivieren bzw. zu deaktivieren. Eine klarere Benennung (z. B. statt „Authorize“) sowie eine intuitivere Platzierung im UI wäre hier sinnvoll.
-
In den Logfiles treten
NullPointerException-Fehler auf, z. B.:NullPointerException occurred at path: /api/employee/common-areasUrsache ist, dass
Userx.getDepartment()teilweisenullzurückgibt, wodurch anschließendDepartment.getId()nicht aufgerufen werden kann. Es wird empfohlen, entsprechende Null-Checks oder Validierungen im Code zu ergänzen.
| Kategorie | Klassifikation | Beschreibung |
|---|---|---|
| Authentifizierung | Mittlere Abweichung | Fehlende benutzerfreundliche Fehlermeldungen (z. B. „Server Error“ bei Login-Fehlern). |
| Authentifizierung | Große Abweichung | First-Login-Dialog zur E-Mail-Eingabe wird nicht angezeigt. |
| Mitarbeitende | Kosmetische Abweichung | Abweichung in UI-Text/Placeholder gegenüber Spezifikation. |
| Department | Mittlere Abweichung | Inkonsistente Darstellung von Messwerten bei nicht erfüllter Mindestbelegung. |
| System Administration | Kosmetische Abweichung | Terminologische Unterschiede zwischen Testdrehbuch und UI. |
| Sensorstation | Kosmetische Abweichung | Zeitstempel weicht ca. 2 Stunden ab. |
| Raspberry Pi | Mittlere Abweichung | Angegebene Logdatei nicht vorhanden, Logging nur über Docker-Logs sichtbar. |
| Raspberry Pi | Große Abweichung | Re-Synchronisation von Offline-Daten schlägt aufgrund Format-Inkonsistenz fehl. |
| System Administration | Mittlere Abweichung | Benutzeraktivierung im UI schwer auffindbar bzw. unklar benannt. |
| Backend | Mittlere Abweichung |
AccessDeniedException wird nur generisch behandelt. |
| Backend | Große Abweichung |
NullPointerException durch fehlende Null-Checks bei Department-Zugriffen. |