113 lines
4.2 KiB
Markdown
113 lines
4.2 KiB
Markdown
---
|
||
title: "Testprotokoll – Blackbox Test"
|
||
author: "Chat App"
|
||
date: "19.03.2026"
|
||
geometry: margin=2cm
|
||
fontsize: 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 `/health` ist 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-stopped` ist 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}
|
||
|
||
_______________________________________________
|