Zum Inhalt springen
Informatik · Klasse 10 · Software-Projektmanagement · 2. Halbjahr

Software-Testing

Die Schülerinnen und Schüler sichern die Qualität von Software durch Unit-Tests und Integrationstests.

KMK BildungsstandardsKMK: STD.03KMK: STD.05

Über dieses Thema

Software-Testing sichert die Qualität von Programmen durch systematische Überprüfungen. In Klasse 10 lernen Schülerinnen und Schüler Unit-Tests für einzelne Funktionen und Integrationstests für das Zusammenspiel von Modulen. Sie erkunden, ob Fehlerfreiheit bewiesen werden kann, warum automatisierte Tests effizienter sind als manuelle und was einen Bug von einem Feature unterscheidet. Diese Inhalte knüpfen an die Standards KMK STD.03 und STD.05 an und fördern präzises Denken im Software-Projektmanagement.

Im Rahmen der Einheit Software-Projektmanagement vertiefen Schüler das Testen als integralen Bestandteil des Entwicklungsprozesses. Sie verstehen, dass Tests nicht nur Fehler aufdecken, sondern auch als Dokumentation dienen und Regressionen verhindern. Durch praktische Übungen entwickeln sie Fähigkeiten wie Debugging und Test-Driven Development, die für reale Projekte essenziell sind.

Aktives Lernen eignet sich hervorragend für Software-Testing, da Schüler ihre eigenen Codes testen und Fehler erleben. Kollaboratives Debuggen in Gruppen macht abstrakte Konzepte konkret und motiviert, weil Erfolge sofort sichtbar sind. Solche Ansätze stärken Problemlösungskompetenzen nachhaltig.

Leitfragen

  1. Kann man die Fehlerfreiheit einer Software beweisen?
  2. Warum ist automatisiertes Testen effizienter als manuelles?
  3. Was unterscheidet einen Bug von einem Feature?

Lernziele

  • Demonstrieren Sie die Anwendung von Unit-Tests zur Überprüfung der Funktionalität einzelner Code-Module.
  • Analysieren Sie das Zusammenspiel mehrerer Module durch die Durchführung von Integrationstests.
  • Bewerten Sie die Effizienz von automatisierten Teststrategien im Vergleich zu manuellen Testverfahren.
  • Erklären Sie die Kriterien, die einen Softwarefehler (Bug) von einer gewünschten Funktionalität (Feature) unterscheiden.
  • Erstellen Sie einfache Testfälle, um spezifische Fehlerbedingungen in einem gegebenen Code-Snippet zu identifizieren.

Bevor es losgeht

Grundlagen der Programmierung in [Programmiersprache, z.B. Python]

Warum: Schüler müssen grundlegende Programmierkonzepte wie Variablen, Funktionen und Kontrollstrukturen verstehen, um Code testen zu können.

Fehlersuche und Debugging

Warum: Ein grundlegendes Verständnis dafür, wie man Fehler im Code findet und behebt, ist eine notwendige Basis für das systematische Testen.

Schlüsselvokabular

Unit-TestEin Test, der die kleinste testbare Einheit eines Softwarecodes isoliert prüft, typischerweise eine Funktion oder Methode.
IntegrationstestEin Test, der das Zusammenspiel und die Kommunikation zwischen verschiedenen Modulen oder Komponenten einer Software überprüft.
BugEin Fehler im Programmcode, der dazu führt, dass die Software nicht wie erwartet funktioniert oder abstürzt.
Test-Driven Development (TDD)Ein Entwicklungsansatz, bei dem zuerst Tests geschrieben werden, die dann fehlschlagen, bevor der eigentliche Code geschrieben wird, um die Tests zu erfüllen.
RegressionstestEin Test, der sicherstellt, dass durch neue Codeänderungen keine bereits funktionierenden Teile der Software beeinträchtigt wurden.

Vorsicht vor diesen Fehlvorstellungen

Häufige FehlvorstellungDie Fehlerfreiheit einer Software lässt sich mathematisch beweisen.

Was Sie stattdessen lehren sollten

Fehlerfreiheit kann nicht absolut bewiesen werden, sondern nur durch exhaustive Tests mit hoher Abdeckung widerlegt werden. Aktive Ansätze wie das Schreiben eigener Testfälle helfen Schülern, diese Grenzen zu erleben und Edge-Cases zu entdecken.

Häufige FehlvorstellungAutomatisiertes Testen ist immer effizienter als manuelles Testen.

Was Sie stattdessen lehren sollten

Automatisierte Tests sparen Zeit bei Regressionen, eignen sich aber nicht für UI-Tests oder exploratives Testen. Praktische Vergleiche in Gruppen zeigen Schülern, wann welche Methode passt und fördern nuanciertes Urteilsvermögen.

Häufige FehlvorstellungEin Bug ist immer ein Programmierfehler, ein Feature eine gewollte Funktion.

Was Sie stattdessen lehren sollten

Der Unterschied hängt vom Anforderungskontext ab; was als Bug gilt, kann subjektiv sein. Diskussionen zu realen Beispielen in der Klasse klären dies und trainieren Kommunikation mit Stakeholdern.

Ideen für aktives Lernen

Alle Aktivitäten ansehen

Bezüge zur Lebenswelt

  • Softwareentwickler bei großen Automobilherstellern wie Volkswagen nutzen automatisierte Tests intensiv, um die Zuverlässigkeit von Steuergeräten für Fahrerassistenzsysteme zu gewährleisten, bevor diese in Serienfahrzeuge eingebaut werden.
  • Qualitätssicherungsingenieure bei Spieleentwicklungsstudios wie Ubisoft verwenden Integrationstests, um sicherzustellen, dass verschiedene Spielmechaniken wie Charakterbewegung und Physik-Engine reibungslos zusammenarbeiten.
  • Webentwickler bei E-Commerce-Plattformen wie Zalando führen kontinuierlich Unit- und Integrationstests durch, um sicherzustellen, dass Funktionen wie der Warenkorb und der Bezahlvorgang auch nach Updates stets fehlerfrei funktionieren.

Ideen zur Lernstandserhebung

Lernstandskontrolle

Die Schüler erhalten ein kleines Code-Snippet mit einer absichtlichen Fehlfunktion. Sie sollen einen Unit-Test schreiben, der diesen Fehler aufdeckt, und kurz begründen, warum ihr Test erfolgreich wäre.

Diskussionsfrage

Stellen Sie die Frage: 'Warum ist es oft effizienter, einen automatisierten Test zu schreiben, der bei jedem Update erneut läuft, anstatt denselben Test manuell durchzuführen?' Sammeln Sie Antworten und diskutieren Sie die Aspekte Zeitersparnis, Konsistenz und Fehleranfälligkeit.

Kurze Überprüfung

Zeigen Sie zwei Szenarien: A) Ein Benutzer meldet, dass die Schaltfläche zum Speichern nicht funktioniert. B) Ein Benutzer meldet, dass die Schaltfläche zum Speichern nach dem letzten Update manchmal nicht reagiert. Lassen Sie die Schüler entscheiden, ob es sich wahrscheinlich um einen Bug oder ein Feature handelt und begründen Sie kurz.

Häufig gestellte Fragen

Was unterscheidet Unit-Tests von Integrationstests?
Unit-Tests prüfen isolierte Funktionen auf Korrektheit, ohne Abhängigkeiten wie Datenbanken. Integrationstests überprüfen das Zusammenspiel mehrerer Module. Schüler lernen durch Übungen, dass Unit-Tests schnell und granular sind, Integrationstests aber reale Interaktionen simulieren. Dies schützt vor versteckten Fehlern im Gesamtsystem und verbessert die Wartbarkeit. (62 Wörter)
Warum ist automatisiertes Testen effizienter als manuelles?
Automatisierte Tests laufen wiederholbar und skalierbar, decken Regressionen ab und integrieren sich in CI/CD-Pipelines. Manuelle Tests sind zeitintensiv und fehleranfällig bei Wiederholungen. In der Praxis sparen sie Entwicklungszeit und erhöhen Zuverlässigkeit, wie Schüler bei eigenen Projekten feststellen. (58 Wörter)
Wie hilft aktives Lernen beim Verständnis von Software-Testing?
Aktives Lernen lässt Schüler eigene Tests schreiben, ausführen und debuggen, was abstrakte Konzepte greifbar macht. Kollaborative Bug-Hunts fördern Peer-Learning und Diskussionen zu Fehlern. Solche Methoden bauen Selbstwirksamkeit auf, verbessern Problemlösung und machen den Prozess motivierend, da Erfolge sofort sichtbar sind. (64 Wörter)
Was ist der Unterschied zwischen einem Bug und einem Feature?
Ein Bug ist eine Abweichung von den Anforderungen, die zu Fehlverhalten führt. Ein Feature ist eine intendierte Funktion. Der Unterschied wird durch Spezifikationen definiert; ohne klare Specs wirkt ein Feature wie Bug. Schüler üben dies durch Review-Sessions und lernen Anforderungsmanagement. (59 Wörter)

Planungsvorlagen für Informatik