- 1 Abschnitt
- 11 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
- Softwaretests12
- 1.1Einführung in das Testen von Software
- 1.2Testkonzepte und -strategien
- 1.3Testplanung und Testdesign
- 1.4Durchführung von Tests
- 1.5Bewertung und Dokumentation der Testergebnisse
- 1.6Testautomatisierung
- 1.7Testmetriken und Testmanagement
- 1.8Best Practices und Fallstricke
- 1.9Multimediale Aufbereitung
- 1.10Testkonzepte8 Fragen
- 1.11Aufgaben
- 1.12Lösungen
Lösungen
Aufgabe 1: Grundlagen des Softwaretestens
Frage 1: Warum ist Softwaretesten wichtig? Nenne zwei Hauptziele des Softwaretestens und beschreibe ihre Bedeutung.
Lösung: Softwaretesten ist wichtig, weil es sicherstellt, dass die Software die festgelegten Anforderungen erfüllt und frei von Fehlern ist.
- Ziele:
- Fehlererkennung und -behebung: Identifikation und Beseitigung von Fehlern vor der Auslieferung an den Kunden.
- Qualitätssicherung: Sicherstellen, dass die Software zuverlässig, sicher und benutzerfreundlich ist, um die Zufriedenheit der Endbenutzer zu gewährleisten.
Frage 2: Unterscheide zwischen funktionalen und nicht-funktionalen Tests und gib je ein Beispiel für beide Testarten.
Lösung:
Funktionale Tests: Überprüfen, ob die Software die spezifizierten Anforderungen erfüllt.
- Beispiel: Testen, ob ein Benutzer sich mit gültigen Anmeldeinformationen erfolgreich einloggen kann.
Nicht-funktionale Tests: Überprüfen andere Aspekte der Software wie Leistung, Sicherheit und Benutzerfreundlichkeit.
- Beispiel: Testen der Ladezeiten einer Webseite unter hoher Last (Leistungstest).
Aufgabe 2: Testkonzepte und -strategien
Frage 3: Erläutere die Hauptbestandteile eines Testkonzepts und beschreibe, warum jeder Bestandteil wichtig ist.
Lösung:
| Bestandteil | Beschreibung | Bedeutung |
|---|---|---|
| Testziele | Definiert, was durch die Tests erreicht werden soll, z.B. Fehler finden, Qualität verbessern | Gibt die Richtung und den Fokus des Testprozesses vor |
| Testumfang | Beschreibt, welche Teile der Software getestet werden und welche nicht | Hilft, den Fokus auf wichtige Bereiche zu legen und Ressourcen zu sparen |
| Testansatz | Beschreibt die Methoden und Techniken, die beim Testen verwendet werden | Bestimmt die Effizienz und Effektivität des Testprozesses |
| Testressourcen | Listet die benötigten Ressourcen auf, z.B. Hardware, Software, Personal | Sicherstellt, dass alle benötigten Ressourcen vorhanden sind |
| Testumgebungen | Beschreibt die Umgebungen, in denen die Tests durchgeführt werden | Sicherstellt, dass die Tests unter realistischen Bedingungen durchgeführt werden |
Frage 4: Was ist eine risikobasierte Teststrategie und in welchem Szenario könnte sie besonders nützlich sein?
Lösung: Eine risikobasierte Teststrategie priorisiert Tests basierend auf der Wahrscheinlichkeit und dem potenziellen Schaden von Fehlern. Sie ist besonders nützlich in Projekten mit begrenzten Ressourcen oder kritischen Anwendungen, wo die kritischsten Teile der Software zuerst und am gründlichsten getestet werden müssen.
Aufgabe 3: Testplanung und Testdesign
Frage 5: Beschreibe den Prozess der Erstellung eines Testplans und liste die wichtigsten Elemente auf, die in einem Testplan enthalten sein sollten.
Lösung: Die Erstellung eines Testplans umfasst die Definition der Testziele, den Testumfang, die Teststrategie, die Ressourcenplanung, die Zeitplanung, die Beschreibung der Testumgebungen, die Risikoanalyse und die Abnahmekriterien.
Elemente eines Testplans:
- Testziele
- Testumfang
- Teststrategie
- Ressourcenplanung
- Zeitplanung
- Testumgebungen
- Risikoanalyse
- Abnahmekriterien
Frage 6: Erkläre die Äquivalenzklassenmethode und die Grenzwertanalyse. Wie helfen diese Methoden bei der Erstellung von Testfällen?
Lösung:
Äquivalenzklassenmethode: Teilt die Eingabedaten in gleichwertige Klassen auf, um die Anzahl der Testfälle zu reduzieren. Jede Klasse repräsentiert eine Gruppe von Eingaben, die dasselbe Verhalten der Software erwarten lassen.
- Beispiel: Für ein Altersfeld könnten die Äquivalenzklassen [0-17], [18-64], [65+] sein.
Grenzwertanalyse: Testet die Grenzen der Eingabebereiche, um Fehler an den Rändern zu finden.
- Beispiel: Für ein Passwortfeld mit einer Länge von 8-16 Zeichen wären die Grenzwerte 7, 8, 16 und 17 Zeichen.
Aufgabe 4: Durchführung von Tests
Frage 7: Was sind die Unterschiede zwischen manuellen und automatisierten Tests? Nenne zwei Vorteile der Testautomatisierung.
Lösung:
- Manuelle Tests: Werden von Testern manuell durchgeführt. Sie sind flexibel, aber zeitaufwändig und anfällig für menschliche Fehler.
- Automatisierte Tests: Werden durch Skripte und Tools ausgeführt. Sie sind schneller und wiederholbar, aber erfordern initialen Aufwand für die Skripterstellung und -wartung.
Vorteile der Testautomatisierung:
- Höhere Effizienz durch schnellere Testausführung.
- Größere Genauigkeit durch Eliminierung menschlicher Fehler.
Frage 8: Schreibe ein einfaches Testskript in Python, das eine Webanwendung mit Selenium testet. Das Skript soll die Startseite öffnen und überprüfen, ob der Titel der Seite korrekt ist.
Lösung:
from selenium import webdriver
# Webdriver für den Chrome-Browser initialisieren
driver = webdriver.Chrome()
# Webseite öffnen
driver.get("https://example.com")
# Überprüfen, ob der Titel der Seite korrekt ist
assert "Example Domain" in driver.title
# Browser schließen
driver.quit()
Aufgabe 5: Bewertung und Dokumentation der Testergebnisse
Frage 9: Welche Informationen sollten in einem Testbericht enthalten sein? Erstelle eine Beispielstruktur für einen Testbericht.
Lösung:
Beispielstruktur eines Testberichts:
- Zusammenfassung:
- Kurze Übersicht über die wichtigsten Ergebnisse und den Teststatus.
- Testumfang:
- Beschreibung der getesteten Funktionen und Module.
- Testergebnisse:
- Detaillierte Darstellung der Testergebnisse, inklusive Testfälle und deren Status.
- Testabdeckung:
- Bericht über die Testabdeckung, z.B. prozentuale Abdeckung der Funktionen und Codebereiche.
- Gefundene Fehler:
- Liste der identifizierten Fehler, klassifiziert nach Schweregrad.
- Empfehlungen:
- Vorschläge zur Behebung der identifizierten Fehler und Verbesserung des Testprozesses.
Frage 10: Wie kannst du die Testergebnisse effektiv an Stakeholder kommunizieren? Nenne zwei Methoden und ihre Vorteile.
Lösung:
- Testbericht: Ein ausführlicher schriftlicher Bericht, der die Testergebnisse detailliert beschreibt.
- Vorteil: Bietet eine umfassende und dokumentierte Übersicht über die Testergebnisse.
- Präsentation: Eine visuelle Präsentation der Testergebnisse, z.B. in Form von Diagrammen und Tabellen.
- Vorteil: Ermöglicht eine klare und prägnante Darstellung der Ergebnisse und erleichtert die Diskussion.
Aufgabe 6: Testautomatisierung
Frage 11: Nenne drei gängige Werkzeuge für die Testautomatisierung und beschreibe kurz ihre Hauptfunktionen.
Lösung:
| Werkzeug | Hauptfunktionen |
|---|---|
| Selenium | Automatisierung von Webbrowsern für Tests von Webanwendungen |
| JUnit | Framework für Unit-Tests in Java, unterstützt das Schreiben und Ausführen von Tests |
| pytest | Framework für Unit-Tests in Python, bietet einfache Syntax und starke Erweiterbarkeit |
Frage 12: Wie kann die Testautomatisierung in CI/CD-Pipelines integriert werden? Gib ein Beispiel für eine GitHub Actions Workflow-Datei, die Tests automatisch bei jedem Push ausführt.
Lösung:
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: |
pytest
Aufgabe 7: Testmetriken und Testmanagement
Frage 13: Was sind Testmetriken und warum sind sie wichtig? Nenne und beschreibe drei wichtige Testmetriken.
Lösung:
| Metrik | Beschreibung |
|---|---|
| Testabdeckung | Prozentsatz des Codes oder der Anforderungen, der durch Tests abgedeckt ist |
| Fehlerfindungsrate | Anzahl der gefundenen Fehler im Verhältnis zur Anzahl der ausgeführten Testfälle |
| Testausführungszeit | Zeit, die benötigt wird, um alle Tests auszuführen |
