# SQ03B
> [name=Martin. S]
> [time=Wed, Apr 06, 2023]
> [name=Lucas. C]
> [time=Wed, Apr 06, 2023]
> [name=Lukas. B]
> [time=Wed, Apr 06, 2023]
> [name=Linus. S]
> [time=Wed, Apr 06, 2023][color=#680de0]
## 1. Ordne die geplanten Test nach Testarten
| Testfall | Name | Testart |
| -------- | ----------------------------------------------- | ------------- |
| **#1** | Anzeige der Quiz-Frage und Antwortmöglichkeiten | Functionality |
| **#2** | Einreichen einer Quiz-Antwort | Functionality |
| **#3** | Erstellen eines Lensets | Functionality |
| **#4** | XSS Injection | Reliability |
**Welche Testarten wurden noch nicht berücksichtigt?**
- Usability
- Performancy
- Supportability
## 2. Plane 2 Tests für mindestens 2 Kategorien
### Usability-Test
#### Testkonzept
| Bereich / Funktion | Hypothese / Erwartetes Verhalten | Testszenario |
| --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| Vokabular Lernset "Französisch 1" finden und öffnen | Der Benutzer befindet sich auf der Home Seite. Um ein Lernset zu finden, klickt er auf den Button "Lernsets". Daraufhin wird er auf die Seite "Lernsets anzeigen" weitergeleitet. Dort erscheint eine Tabelle mit allen vorhandenen Lernsets. Der Benutzer klickt auf das Lernset "Französisch 1" um es zu öffnen | Der Benutzer möchte neues franzözisch Vokabular erlenen und entscheidet sich für das Lernset "Französisch 1" |
| Lernset "Französisch 1" durchführen | Der Benutzer befindet sich im bereits geöffneten Lernset "Französisch 1". Nun wird ihm ein Wort auf deutsch angezeigt. Er wird nun auf einer Auswahl aus 4 französischen Wörtern das auswehlen, welches er denkt richtig ist. Daraufhin wird ihm die korrekte Lösungen angezeigt und er drückt auf "weiter". Dies wiederholt er, bis alle Vokabulare durch sind. | Der Benutzer will nun die Vokabulare aus dem Lernset "Französisch 1" erlnen und will das Lernset durchführen |
#### Usability-Test Protokoll-Bogen:

---
### Performance-Test
#### Testfall #6: Performance-Test
#### Testumgebung vorbereiten:
- Sicherstellen, dass die Testumgebung dieselbe Konfiguration wie die Produktionsumgebung hat.
- Alle benötigten Ressourcen (z.B. Server, Datenbank, Netzwerk) bereitstellen und konfigurieren.
- Die Applikation und die Mockdaten für den Testfall #6 bereitstellen.
#### Testdurchführung:
- Den Testfall #6 gemäss dem oben beschriebenen Ablauf durchführen.
- Den Test mehrmals mit verschiedenen Daten und Eingaben wiederholen, um eine grössere Datenmenge und unterschiedliche Nutzungsszenarien abzudecken.
- Den Test mit verschiedenen Laststufen durchführen, um die Reaktion der Applikation auf unterschiedliche Nutzungsintensitäten zu testen.
- Die Performance-Messdaten während des Tests aufzeichnen, z.B. Response Time, Throughput, CPU- und Speicherauslastung, Netzwerklatenz.
#### Testergebnisse analysieren:
- Die aufgezeichneten Performance-Daten analysieren und Ausreisser oder Bottlenecks identifizieren.
- Die Ergebnisse mit den erwarteten Ergebnissen und den Akzeptanzkriterien vergleichen.
- Gegebenenfalls Optimierungspotenzial erkennen und Verbesserungsvorschläge formulieren.
#### Testbericht erstellen:
- Einen Testbericht mit den wichtigsten Ergebnissen, Erkenntnissen und Empfehlungen verfassen.
- Den Bericht an die relevanten Stakeholder und Entwickler weiterleiten.
- Gegebenenfalls weitere Tests und Optimierungen empfehlen.
## 3. Plane möglichst detailliert 4 noch fehlende Systemtests
### System Test #1:
#### Testfall #7: Systemtest für den Warenkorb**
**Bereich / Funktion**
Warenkorb-System
**Erwartetes Verhalten**
Wenn der Benutzer ein Produkt in den Warenkorb legt und zur Kasse geht, sollte das System den korrekten Preis berechnen und die Bestellung korrekt verarbeiten.
**Testszenario**
1. Der Benutzer navigiert zur Produktseite und wählt ein Produkt aus.
2. Der Benutzer legt das Produkt in den Warenkorb.
3. Der Benutzer navigiert zum Warenkorb und überprüft, ob das ausgewählte Produkt korrekt angezeigt wird.
4. Der Benutzer gibt seine Lieferadresse und Zahlungsinformationen ein.
5. Der Benutzer bestätigt seine Bestellung.
6. Das System sollte den korrekten Preis berechnen und die Bestellung erfolgreich verarbeiten.
**Testdurchführung**
1. Wählen ein Produkt aus der Produktseite aus und lege es in den Warenkorb.
2. Gehen Sie zum Warenkorb und überprüfe, ob das ausgewählte Produkt korrekt angezeigt wird.
3. Gebe die Lieferadresse und Zahlungsinformationen ein.
4. Bestätige Ihre Bestellung.
5. Überprüfe, ob das System den korrekten Preis berechnet und die Bestellung erfolgreich verarbeitet hat.
**Erwartete Testergebnise**
- Wenn das System den korrekten Preis berechnet und die Bestellung erfolgreich verarbeitet, gilt der Testfall als bestanden.
- Wenn das System einen falschen Preis berechnet oder die Bestellung nicht erfolgreich verarbeitet, gilt der Testfall als nicht bestanden.
### System Test #2:
#### Testfall #8: Lasttest der Vokabular-Testapp
**Bereich / Funktion**
Lattest
**Testdurchführung:**
1. Starte den Lasttest, um eine große Anzahl von Benutzern zu simulieren, die gleichzeitig auf die Anwendung zugreifen.
2. Überprüfe , ob die Anwendung unter der Last stabil läuft, ob alle Funktionen der Anwendung innerhalb einer akzeptablen Zeit geladen und ausgeführt werden können.
3. Überprüfe, ob die Anwendung die maximale Last verarbeiten kann, ohne zu überlasten oder Fehler zu verursachen.
4. Überprüfe, ob die Anwendung angemessen auf unerwartete Lastspitzen reagiert.
5. Überprüfen Sie, ob die Anwendung alle Anfragen korrekt verarbeitet.
**Erwartete Ergebnisse:**
- Die Anwendung läuft stabil unter der simulierten Last.
- Die Anwendung kann die maximale Last verarbeiten, ohne zu überlasten oder Fehler zu verursachen.
- Die Anwendung reagiert angemessen auf unerwartete Lastspitzen und bietet den Benutzern eine akzeptable Antwortzeit.
- Die Anwendung verarbeitet alle Anfragen korrekt.
### System Test #3:
#### Testfall #9: Kompatibilitätstest für verschiedene Browser
**Bereich / Funktion**
Anzeige und Nutzung der Anwendung in verschiedenen Browsern
**Erwartetes Verhalten**
Die Anwendung sollte in verschiedenen Browsern korrekt angezeigt werden und alle Funktionen sollten in allen Browsern ordnungsgemäß ausgeführt werden.
**Testszenario**
1. Die Anwendung wird in verschiedenen Browsern (z.B. Google Chrome, Mozilla Firefox, Microsoft Edge) geöffnet und auf ihre korrekte Anzeige überprüft.
2. Alle Funktionen der Anwendung werden in verschiedenen Browsern getestet, um sicherzustellen, dass sie in allen Browsern ordnungsgemäß ausgeführt werden.
**Testdurchführung**
1. Öffnen die Anwendung in verschiedenen Browsern und überprüfe, ob die Anzeige in allen Browsern korrekt ist.
2. Führen alle Funktionen der Anwendung in verschiedenen Browsern aus, um sicherzustellen, dass sie in allen Browsern ordnungsgemäß ausgeführt werden kann.
**Erwartete Ergebnisse:**
- Wenn die Anwendung in allen Browsern korrekt angezeigt wird und alle Funktionen in allen Browsern ordnungsgemäß ausgeführt werden, gilt der Testfall als bestanden.
- Wenn die Anwendung in einem oder mehreren Browsern
### System Test #4:
#### Testfall #10: Systemtest für die Datenbankzugriffe
**Bereich / Funktion**
Datenbankzugriffe
**Erwartetes Verhalten**
Das System sollte in der Lage sein, Datenbankzugriffe korrekt zu handhaben. Das bedeutet, dass das System Daten aus der Datenbank lesen, schreiben und aktualisieren kann, ohne dabei Datenverlust oder inkonsistente Daten zu verursachen.
**Testszenario**
1. Das System liest Daten aus der Datenbank und überprüft, ob die korrekten Daten gelesen wurden.
2. Das System schreibt Daten in die Datenbank und überprüft, ob die Daten korrekt gespeichert wurden.
3. Das System aktualisiert Daten in der Datenbank und überprüft, ob die Aktualisierung korrekt durchgeführt wurde.
4. Das System überprüft, ob Datenverluste oder inkonsistente Daten bei allen Datenbankzugriffen vermieden wurden.
**Testdurchführung**
1. Der Benutzer führt die Aktion aus, die einen Datenbankzugriff erfordert, wie beispielsweise das Erstellen eines neuen Lernsets oder das Abschließen eines Quiz.
2. Das System liest die benötigten Daten aus der Datenbank und verarbeitet sie.
3. Das System schreibt die Änderungen, die durch die Aktion des Benutzers verursacht wurden, in die Datenbank.
4. Der Benutzer überprüft, ob die Aktion korrekt ausgeführt wurde, indem er beispielsweise das neue Lernset in der Lernset-Übersicht sucht oder das Ergebnis des abgeschlossenen Quiz überprüft.
5. Der Benutzer wiederholt die Aktion mit verschiedenen Daten und Eingaben, um sicherzustellen, dass alle Datenbankzugriffe korrekt funktionieren und keine inkonsistenten Daten verursachen.
**Erwartete Testergebnisse**
- Wenn das System in der Lage ist, Daten aus der Datenbank korrekt zu lesen, zu schreiben und zu aktualisieren, ohne dabei Datenverlust oder inkonsistente Daten zu verursachen, gilt der Testfall als bestanden.
- Wenn das System bei einem oder mehreren Datenbankzugriffen fehlerhaft arbeitet oder inkonsistente Daten verursacht, gilt der Testfall als nicht bestanden.
- Der Benutzer sollte in der Lage sein, die Aktionen erfolgreich durchzuführen und die erwarteten Ergebnisse zu sehen.