4.2 KiB
4.2 KiB
title, author, date, geometry, fontsize
| title | author | date | geometry | fontsize |
|---|---|---|---|---|
| Testprotokoll – Blackbox Test | Chat App | 19.03.2026 | margin=2cm | 11pt |
Projektinformationen
| Projekt | Chat App |
| Datum | 19.03.2026 |
| Tester | _______________ |
| Version | 1.0 |
Testumgebung
| Browser | Chrome / Firefox |
| URL | http://localhost |
| Methode | Manueller Blackbox Test |
Beschreibung der Systemteile
| Komponente | Technologie | Aufgabe |
|---|---|---|
| Frontend | React, Vite, Socket.IO Client, Nginx | Benutzeroberfläche für den Chat. Stellt Verbindung zum Backend über WebSocket her und zeigt Nachrichten, Teilnehmer und Verbindungsstatus an. |
| Backend | Node.js, Express, Socket.IO | REST-API und WebSocket-Server. Verwaltet Benutzer-Sessions, Räume und leitet Nachrichten in Echtzeit weiter. |
| Datenbank | MongoDB | Persistente Speicherung von Nachrichten und Benutzerdaten. Alternativ steht ein JSON-Fallback-Store zur Verfügung. |
| Infrastruktur | Docker, Docker Compose, Nginx | Containerisierung aller Dienste. Nginx fungiert als Reverse Proxy für das Frontend. |
Vorschläge zur Ausfallsicherheit
Frontend
- Automatischer Reconnect bei WebSocket-Verbindungsabbruch ist bereits implementiert (5 Versuche)
- Statische Dateien über CDN ausliefern für höhere Verfügbarkeit
Backend
- Mehrere Instanzen hinter einem Load Balancer betreiben (z. B. Nginx upstream)
- Bei mehreren Instanzen Socket.IO mit Redis Adapter koppeln, damit alle Instanzen dieselben Räume/Events teilen
- Health-Check-Endpunkt
/healthist bereits vorhanden und kann von einem Orchestrator (z. B. Kubernetes) genutzt werden
Datenbank
- MongoDB Replica Set einrichten: primärer Node schreibt, sekundäre Nodes lesen → bei Ausfall des primären Nodes übernimmt automatisch ein sekundärer
- Regelmäßige automatische Backups des Volumes einrichten
- JSON-Fallback-Store dient als Notlösung bei MongoDB-Ausfall (bereits implementiert)
Infrastruktur
restart: unless-stoppedist in allen Docker-Diensten bereits konfiguriert → automatischer Neustart bei Absturz- Für Produktion: Docker Swarm oder Kubernetes für automatisches Failover und Skalierung
Testfälle
| Nr. | Beschreibung | Eingabe | Erwartetes Ergebnis | Tatsächliches Ergebnis | Status |
|---|---|---|---|---|---|
| T01 | Beitreten mit gültigem Benutzernamen und Raum | Username: Max, Room: general |
Benutzer tritt dem Raum bei, Chatverlauf wird angezeigt | [ ] | |
| T02 | Beitreten ohne Benutzernamen | Username: (leer), Room: general |
Fehlermeldung wird angezeigt, kein Beitritt | [ ] | |
| T03 | Beitreten ohne Raumnamen | Username: Max, Room: (leer) |
Fehlermeldung wird angezeigt, kein Beitritt | [ ] | |
| T04 | Nachricht senden | Nachricht: Hallo! → Senden |
Nachricht erscheint im Chat | [ ] | |
| T05 | Leere Nachricht senden | Nachricht: (leer) → Senden | Nachricht wird nicht gesendet | [ ] | |
| T06 | Zwei Benutzer im selben Raum | Tab 1: Max / general, Tab 2: Anna / general |
Beide sehen Nachrichten des jeweils anderen in Echtzeit | [ ] | |
| T07 | Benutzer in verschiedenen Räumen | Tab 1: Max / general, Tab 2: Anna / privat |
Nachrichten sind voneinander getrennt | [ ] | |
| T08 | Teilnehmerliste aktualisiert sich | Tab 2 schließen | Tab 1 zeigt Benutzer als offline/entfernt | [ ] | |
| T09 | Chatverlauf nach Neuverbindung | Seite neu laden, wieder einloggen | Vorherige Nachrichten werden geladen | [ ] | |
| T10 | Sonderzeichen in Nachricht | Nachricht: <script>alert(1)</script> |
Text wird als plain text angezeigt, kein Script ausgeführt | [ ] | |
| T11 | Langer Text | Nachricht mit 500 Zeichen | Nachricht vollständig angezeigt, kein Layout-Fehler | [ ] | |
| T12 | Backend nicht erreichbar | Backend stoppen, App öffnen | Fehlermeldung oder Reconnect-Versuch wird angezeigt | [ ] |
Legende
| Symbol | Bedeutung |
|---|---|
| [OK] | Bestanden |
| [X] | Fehlgeschlagen |
| [ ] | Nicht getestet |
Gesamtergebnis
| Gesamt | Bestanden | Fehlgeschlagen | Nicht getestet |
|---|---|---|---|
| 12 |
Bemerkungen
\vspace{1cm}
\vspace{1cm}