Skip to content
Software-Engineering und Abschlussprojekt · 2. Halbjahr

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?

Mission erstellen

Leitfragen

  1. Wann gilt eine Software als 'fertig' und 'sicher'?
  2. Wie schreibt man testbaren Code und warum ist das für die Wartung wichtig?
  3. Welche Rolle spielt die Dokumentation für die Langlebigkeit eines Systems?

KMK Bildungsstandards

KMK: Sekundarstufe II - Modellieren und ImplementierenKMK: Sekundarstufe II - Strukturieren und Vernetzen
Klasse: Klasse 13
Fach: Informatik Oberstufe: Komplexe Systeme und Theoretische Grundlagen
Einheit: Software-Engineering und Abschlussprojekt
Zeitraum: 2. Halbjahr

Ü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

Grundlagen der Programmierung (z.B. in Python oder Java)

Warum: Grundlegende Kenntnisse in einer Programmiersprache sind notwendig, um Code schreiben und testen zu können.

Kontrollstrukturen und Funktionen

Warum: Das Verständnis von Kontrollstrukturen (if, for, while) und Funktionen ist essenziell für das Schreiben von isolierbaren Code-Einheiten und deren Tests.

Datenstrukturen (Listen, Dictionaries/Maps)

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-TestEin Test, der eine einzelne, isolierte Einheit (z. B. eine Funktion oder Methode) des Quellcodes überprüft, um sicherzustellen, dass sie korrekt funktioniert.
Code-ReviewEin systematischer Prozess, bei dem Entwickler den Quellcode anderer Teammitglieder überprüfen, um Fehler zu finden, die Codequalität zu verbessern und Wissen zu teilen.
TestbarkeitDie Eigenschaft von Software, die es ermöglicht, ihre Funktionalität durch Tests einfach und effektiv zu überprüfen.
RefactoringDie Verbesserung der internen Struktur von bestehendem Quellcode, ohne sein externes Verhalten zu verändern, oft um die Lesbarkeit und Wartbarkeit zu erhöhen.
Bug-TrackingDer Prozess der Erfassung, Verfolgung und Verwaltung von Softwarefehlern (Bugs) während des gesamten Entwicklungszyklus.

Ideen für aktives Lernen

Alle Aktivitäten ansehen

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

Gegenseitige Bewertung

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.

Lernstandskontrolle

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.

Kurze Überprüfung

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.

Bereit, dieses Thema zu unterrichten?

Erstellen Sie in Sekundenschnelle eine vollständige, unterrichtsfertige Mission für aktives Lernen.

Eigene Mission generieren

Häufig gestellte Fragen

Wie integriere ich Unit-Tests in den Unterricht?
Beginnen Sie mit einfachen Funktionen in Python oder Java. Zeigen Sie Frameworks wie pytest oder JUnit vor. Lassen Sie Schülerinnen und Schüler Tests für ihr eigenes Code schreiben. Diskutieren Sie Coverage und Mocking. So lernen sie, testbaren Code zu schreiben, was Wartung erleichtert. (62 Wörter)
Warum ist testbarer Code für Wartung wichtig?
Testbarer Code erlaubt schnelle Überprüfung nach Änderungen. Kleine, unabhängige Einheiten mit klaren Interfaces minimieren Regressionen. Automatisierte Tests laufen regressiv und geben Sicherheit bei Evolution. Ohne das steigen Kosten durch manuelle Tests. Dies entspricht KMK-Standards zum Modellieren. (58 Wörter)
Was ist der Nutzen von Active Learning hier?
Active Learning lässt Schülerinnen und Schüler Unit-Tests und Reviews selbst durchführen. Sie entdecken Fehler aktiv, reflektieren Ansätze und lernen aus Peer-Feedback. Das stärkt Problemlösungsfähigkeiten und Teamarbeit, die im Software-Engineering zentral sind. Passiv hören reicht nicht für komplexe Konzepte wie Test-Driven Development. (64 Wörter)
Wann gilt Software als 'fertig'?
Software ist 'fertig', wenn Tests 80-90% Coverage erreichen, Reviews abgeschlossen sind und Dokumentation aktuell ist. Keine kritischen Bugs, Performance-Ziele erfüllt. 'Sicher' bedeutet Schutz vor Injection, Overflow etc. durch Tests und Reviews. Iterative Releases mit CI/CD sichern Qualität über den Lebenszyklus. (59 Wörter)