Qualitätssicherung und Testing
Verfahren zur Sicherstellung der Softwarequalität durch Unit-Tests und Code-Reviews.
Brauchen Sie einen Unterrichtsplan für Informatik Oberstufe: Komplexe Systeme und Theoretische Grundlagen?
Leitfragen
- Wann gilt eine Software als 'fertig' und 'sicher'?
- Wie schreibt man testbaren Code und warum ist das für die Wartung wichtig?
- Welche Rolle spielt die Dokumentation für die Langlebigkeit eines Systems?
KMK Bildungsstandards
Über dieses Thema
In diesem Thema befassen wir uns mit Verfahren zur Sicherstellung der Softwarequalität. Unit-Tests prüfen isolierte Code-Einheiten auf Korrektheit, während Code-Reviews Kolleginnen und Kollegen einander Feedback geben, um Fehler früh zu erkennen und den Code zu verbessern. Beide Methoden sind essenziell, um Software als 'fertig' und 'sicher' zu betrachten. Testbarer Code erleichtert die Wartung, da Änderungen risikoarm getestet werden können. Dokumentation unterstützt die Langlebigkeit, indem sie den Kontext für zukünftige Entwickler schafft.
Die Inhalte knüpfen an die KMK-Standards 'Modellieren und Implementieren' sowie 'Strukturieren und Vernetzen' an. Schülerinnen und Schüler analysieren, wann Software bereit für den Einsatz ist, schreiben testbaren Code und verstehen die Rolle der Dokumentation. Praktische Übungen mit Programmiersprachen wie Python oder Java verdeutlichen diese Konzepte.
Active Learning nutzen, indem Schülerinnen und Schüler selbst Tests entwickeln und Reviews durchführen, vertieft das Verständnis. Es fördert kritisches Denken und Teamfähigkeiten, die im Berufsalltag unverzichtbar sind.
Lernziele
- Analysieren Sie die Kriterien, die zur Bestimmung der 'Fertigstellung' und 'Sicherheit' von Software herangezogen werden.
- Entwerfen Sie Unit-Tests für gegebene Code-Module, um deren Funktionalität nachzuweisen.
- Bewerten Sie die Qualität eines Code-Snippets anhand von Kriterien für Testbarkeit und Wartbarkeit.
- Erklären Sie die Bedeutung von Code-Reviews für die Fehlererkennung und Wissensvermittlung im Team.
- Erstellen Sie eine einfache technische Dokumentation für eine kleine Softwarekomponente.
Bevor es losgeht
Warum: Grundlegende Kenntnisse in einer Programmiersprache sind notwendig, um Code schreiben und testen zu können.
Warum: Das Verständnis von Kontrollstrukturen (if, for, while) und Funktionen ist essenziell für das Schreiben von isolierbaren Code-Einheiten und deren Tests.
Warum: Die Fähigkeit, mit grundlegenden Datenstrukturen umzugehen, ist wichtig für das Verständnis von Code und die Erstellung von Testdaten.
Schlüsselvokabular
| Unit-Test | Ein Test, der eine einzelne, isolierte Einheit (z. B. eine Funktion oder Methode) des Quellcodes überprüft, um sicherzustellen, dass sie korrekt funktioniert. |
| Code-Review | Ein systematischer Prozess, bei dem Entwickler den Quellcode anderer Teammitglieder überprüfen, um Fehler zu finden, die Codequalität zu verbessern und Wissen zu teilen. |
| Testbarkeit | Die Eigenschaft von Software, die es ermöglicht, ihre Funktionalität durch Tests einfach und effektiv zu überprüfen. |
| Refactoring | Die Verbesserung der internen Struktur von bestehendem Quellcode, ohne sein externes Verhalten zu verändern, oft um die Lesbarkeit und Wartbarkeit zu erhöhen. |
| Bug-Tracking | Der Prozess der Erfassung, Verfolgung und Verwaltung von Softwarefehlern (Bugs) während des gesamten Entwicklungszyklus. |
Ideen für aktives Lernen
Alle Aktivitäten ansehenPaararbeit: Unit-Tests schreiben
Schülerinnen und Schüler erhalten einen Code-Snippet und schreiben Unit-Tests dazu. Sie testen Edge-Cases und dokumentieren die Tests. Abschließend besprechen sie die Ergebnisse.
Kleingruppen: Code-Review simulieren
Gruppen reviewen den Code einer anderen Gruppe mit Checklisten. Sie notieren Stärken, Schwächen und Verbesserungsvorschläge. Eine kurze Präsentation schließt ab.
Individuell: Testbarkeit überprüfen
Jede Schülerin und jeder Schüler refaktoriert einen gegebenen Code für bessere Testbarkeit. Sie schreiben Tests und vergleichen mit dem Original.
Ganzer Unterricht: Review-Runde
Der gesamte Klassenraum führt eine Live-Code-Review durch. Jede Schülerin und jeder Schüler gibt Feedback zu einem gemeinsamen Code-Beispiel.
Bezüge zur Lebenswelt
Softwareentwickler bei Automobilherstellern wie Volkswagen oder BMW müssen sicherstellen, dass die Steuerungssoftware für sicherheitskritische Systeme wie Airbags oder ABS-Systeme rigoros getestet ist, bevor sie in Fahrzeugen eingesetzt wird.
Bei der Entwicklung von Online-Banking-Anwendungen durch Unternehmen wie die Deutsche Bank ist die Qualitätssicherung durch Unit-Tests und Code-Reviews unerlässlich, um finanzielle Transaktionen abzusichern und das Vertrauen der Kunden zu gewährleisten.
Teams, die an Open-Source-Projekten wie dem Linux-Kernel arbeiten, verlassen sich stark auf Code-Reviews und automatisierte Tests, um die Stabilität und Sicherheit des Betriebssystems über Tausende von Beitragenden hinweg zu gewährleisten.
Vorsicht vor diesen Fehlvorstellungen
Häufige FehlvorstellungUnit-Tests ersetzen manuelles Testen vollständig.
Was Sie stattdessen lehren sollten
Unit-Tests decken nur isolierte Einheiten ab. Sie ergänzen Integrationstests, Systemtests und manuelle Überprüfungen für umfassende Qualitätssicherung.
Häufige FehlvorstellungCode-Reviews sind zeitaufwendig und unnötig bei solo-Entwicklung.
Was Sie stattdessen lehren sollten
Reviews verbessern Code-Qualität und Wissenstransfer, auch solo. Automatisierte Tools und Peer-Reviews sparen langfristig Zeit durch weniger Fehler.
Häufige FehlvorstellungDokumentation ist nur für Endbenutzer relevant.
Was Sie stattdessen lehren sollten
Dokumentation dient Entwicklern bei Wartung und Erweiterung. Sie erklärt Code-Logik und Entscheidungen für Langlebigkeit.
Ideen zur Lernstandserhebung
Die Schülerinnen und Schüler erhalten jeweils ein kleines Code-Snippet (z. B. eine Funktion in Python). Sie schreiben zwei Unit-Tests dafür und geben dann ihren Code und die Tests an eine Partnerin oder einen Partner weiter. Die Partnerin/der Partner führt die Tests aus und gibt Feedback, ob die Tests die Funktionalität abdecken und ob der Code selbst gut lesbar ist.
Auf einem Zettel sollen die Schülerinnen und Schüler drei Kriterien nennen, die eine Software 'fertig' machen. Anschließend sollen sie ein Beispiel für einen Code-Review-Kommentar formulieren, der auf ein potenzielles Problem im Code hinweist.
Der Lehrer präsentiert einen kurzen Code-Abschnitt, der bewusst schlecht strukturiert oder schwer zu testen ist. Die Schülerinnen und Schüler sollen per Handzeichen signalisieren, ob sie den Code als 'gut testbar' oder 'schwer testbar' einstufen und kurz begründen, warum.
Vorgeschlagene Methoden
Bereit, dieses Thema zu unterrichten?
Erstellen Sie in Sekundenschnelle eine vollständige, unterrichtsfertige Mission für aktives Lernen.
Eigene Mission generierenHäufig gestellte Fragen
Wie integriere ich Unit-Tests in den Unterricht?
Warum ist testbarer Code für Wartung wichtig?
Was ist der Nutzen von Active Learning hier?
Wann gilt Software als 'fertig'?
Planungsvorlagen für Informatik Oberstufe: Komplexe Systeme und Theoretische Grundlagen
Mehr in Software-Engineering und Abschlussprojekt
Einführung in Software-Engineering
Die Schülerinnen und Schüler lernen die Phasen des Softwareentwicklungsprozesses und die Bedeutung von Software-Engineering kennen.
2 methodologies
Anforderungsanalyse und -management
Die Schülerinnen und Schüler lernen, Softwareanforderungen zu erheben, zu dokumentieren und zu verwalten.
2 methodologies
Software-Design und Architektur
Die Schülerinnen und Schüler entwerfen Softwarearchitekturen und wenden Designprinzipien an.
2 methodologies
Agile Softwareentwicklung (Scrum)
Projektmanagement und iterative Entwicklungsprozesse.
3 methodologies
Versionskontrolle mit Git
Die Schülerinnen und Schüler lernen den Umgang mit Versionskontrollsystemen zur Teamarbeit und Code-Verwaltung.
2 methodologies