Zum Inhalt springen

Programmieren für technische Aufgaben – Automatisierte Tests für kleine Funktionen schreiben

Aus MOOCsWiki Staging
aiMOOC-Siegel aiMOOC

Programmieren für technische Aufgaben – Automatisierte Tests für kleine Funktionen schreiben

QR-Code


Programmieren für technische Aufgaben – Automatisierte Tests für kleine Funktionen schreiben

Zielgruppe: Berufliche Ausbildung in Informatik, Mechatronik, Elektrotechnik und Automatisierungstechnik

Niveau: Grundlagen bis Anwendung

Lernzeit: ca. 90 Minuten

Kurzbeschreibung: Du lernst, kleine Python-Funktionen mit automatisierten Tests zu überprüfen. Im Mittelpunkt stehen Normalfälle, Grenzfälle und Fehlerfälle. Du arbeitest mit fiktiven technischen Messwerten, zwei lokalen Testlaboren, visualisierten Testdaten und interaktiven Übungen.

Lernziele:

  1. Testfälle aus technischen Anforderungen entwickeln.
  2. Grenzwerte und ungültige Eingaben systematisch prüfen.
  3. Automatisierte Modultests in Python schreiben und ausführen.
  4. Fehler erkennen, korrigieren und durch Regressionstests absichern.
  5. Testergebnisse nachvollziehbar dokumentieren.


Einleitung

Eine Funktion soll entscheiden, ob ein Messwert innerhalb eines erlaubten Bereichs liegt. Doch funktioniert sie auch direkt an den Grenzen?

Automatisierte Tests vergleichen tatsächliche Ergebnisse mit vorher festgelegten Erwartungen.

Die Testpyramide: Viele kleine Modultests bilden eine wichtige Grundlage der Softwarequalität.

Ein Modultest überprüft eine einzelne Funktion oder andere kleine Softwareeinheit. Er ersetzt keine Systemprüfung, kann aber Fehler früh sichtbar machen.

Wichtig für die Ausbildung: Alle folgenden Messwerte und Anlagenregeln sind erfunden. Die Beispiele steuern keine Geräte.


Lerneinheit 1: Einen technischen Prüfauftrag verstehen

Dauer: 10 Minuten


Ausbildungsfall: Temperaturprüfung eines Werkstücks

In einer fiktiven Ausbildungswerkstatt soll eine Funktion die Temperatur eines Werkstücks beurteilen.

Festgelegte Übungsregeln:

  1. Die Temperatur muss zwischen 18 °C und 24 °C liegen.
  2. Beide Grenzwerte gehören zum erlaubten Bereich.
  3. Ein gültiger Zahlenwert außerhalb des Bereichs liefert False.
  4. Ein unzulässiger Datentyp löst TypeError aus.
  5. Unendliche Werte und NaN lösen ValueError aus.

Die Funktion heißt temperatur_freigabe(temp_c).

True bedeutet: Die fiktive Prüfregel ist erfüllt.

False bedeutet: Der gültige Zahlenwert liegt außerhalb des erlaubten Bereichs.

Das ist ausdrücklich keine Freigabe für eine echte Maschine.


Daten visualisieren

Temperatur Erwartetes Ergebnis Testart
17,9 °C ❌ False Unterhalb der Grenze
18,0 °C ✅ True Untere Grenze
21,0 °C ✅ True Normalfall
24,0 °C ✅ True Obere Grenze
24,1 °C ❌ False Oberhalb der Grenze
Text "21" TypeError Fehlerfall
NaN ValueError Fehlerfall

Visueller Wertebereich:

Temperatur in °C

 17,9     18         21         24      24,1
   |       |          |          |        |
   X       [==========●==========]        X
 ungültig      erlaubter Bereich       ungültig

 X = außerhalb des erlaubten Zahlenbereichs
 ● = typischer Normalfall
 [ ] = eingeschlossene Grenzen

Basisaufgabe: Entscheide, ob 18 °C und 24 °C gültig sind, und begründe Deine Entscheidung.

Feedback: Beide Werte sind gültig, weil die Spezifikation die Grenzen einschließt. Eine Implementierung mit ausschließlich strengen Vergleichsoperatoren würde diese Anforderung verletzen.


Lerneinheit 2: Normalfälle, Grenzfälle und Fehlerfälle

Dauer: 15 Minuten


Normalfälle

Ein Normalfall überprüft typisches erwartetes Verhalten.

Beispiel: Bei 21 °C soll die Funktion True zurückgeben.

Ein gültiger Zahlenwert außerhalb des Freigabebereichs, etwa 17 °C, ist ebenfalls eine regulär verarbeitbare Eingabe. Das erwartete Ergebnis lautet dann False, nicht eine Ausnahme.


Grenzfälle

Grenzfälle überprüfen Übergänge zwischen verschiedenen Verhaltensbereichen.

Datei:Boundary value analysis one.jpg

Grenzwertanalyse: Besonders die Werte an den Bereichsgrenzen und unmittelbar daneben sind interessant.

Bei unserem Beispiel prüfen wir 17,9 °C, 18 °C, 24 °C und 24,1 °C.

Die Testwerte unmittelbar außerhalb der Grenzen sind hier Beispiele. Bei einer konkreten Messauflösung muss die kleinste zulässige Schrittweite aus der Spezifikation abgeleitet werden.


Äquivalenzklassen

Bei der Äquivalenzklassenbildung teilen wir Eingaben in Gruppen auf, für die dasselbe Verhalten erwartet wird.

Datei:ECP.png

Schematische Darstellung der Äquivalenzklassenbildung an einem anderen Rechenbeispiel.

Für unsere Temperaturfunktion unterscheiden wir drei Bereiche gültiger, endlicher Zahlen:

Bereich Beispiel Erwartung
Unterhalb des Sollbereichs 16 °C False
Innerhalb des Sollbereichs 20 °C True
Oberhalb des Sollbereichs 27 °C False

Fehlerhafte Datentypen bilden zusätzliche ungültige Eingabeklassen.


Fehlerfälle

Ein Fehlerfall prüft, wie eine Funktion mit unzulässigen Eingaben umgeht.

Beispiele:

  1. "21": Text statt Zahl → TypeError.
  2. None: Fehlender Zahlenwert → TypeError.
  3. float("nan"): Kein endlicher Zahlenwert → ValueError.

Eine erwartete Ausnahme ist kein fehlgeschlagener Test. Der Test besteht, wenn genau das spezifizierte Verhalten eintritt.

Anwendungsaufgabe: Warum ist der Test mit 18 °C aussagekräftiger als ein zweiter Test mit 22 °C?

Feedback: 18 °C prüft zusätzlich, ob die untere Grenze korrekt eingeschlossen ist. Ein weiterer typischer Innenwert erkennt diesen möglichen Vergleichsfehler unter Umständen nicht.


Lerneinheit 3: Dein erstes lokales Python-Testlabor

Dauer: 25 Minuten


Lernvideo: Automatisierte Tests mit Python

Datamics: Python Tutorial – Code testen mit Unittest, deutsch.

Vertiefungsvideo:

Corey Schafer: Unit Testing Your Code with the unittest Module, englisch.


Sichere lokale Testumgebung A

Du benötigst eine lokal installierte Version von Python 3.8 oder neuer und einen Texteditor.

Erstelle einen neuen Ordner mit dem Namen labor_a.

labor_a/
├── freigabe.py
└── test_freigabe.py

Sicherheitsregel: Verwende ausschließlich diese fiktiven Werte und lokale Dateien. Verbinde das Projekt weder mit einer Produktivanlage noch mit externen Schnittstellen, Kundensystemen oder fremden Netzwerken.

Die Tests benötigen keine zusätzlichen Python-Pakete und keine Netzwerkverbindung.


Schritt 1: Die Funktion programmieren

Speichere den folgenden vollständigen Code als freigabe.py.

import math

def temperatur_freigabe(temp_c):
    if isinstance(temp_c, bool) or not isinstance(
        temp_c, (int, float)
    ):
        raise TypeError("Temperatur muss eine Zahl sein")

    if not math.isfinite(temp_c):
        raise ValueError("Temperatur muss endlich sein")

    return 18 <= temp_c <= 24

Erklärung:

isinstance kontrolliert den Datentyp. Boolesche Werte werden ausgeschlossen, obwohl bool in Python von int abgeleitet ist.

math.isfinite prüft, ob der Wert weder unendlich noch NaN ist.

Die letzte Zeile prüft den erlaubten Bereich einschließlich seiner Grenzen.


Schritt 2: Automatisierte Tests schreiben

Speichere den folgenden Code im selben Ordner als test_freigabe.py.

import unittest
from freigabe import temperatur_freigabe

class FreigabeTests(unittest.TestCase):

    def test_normalfall(self):
        self.assertTrue(temperatur_freigabe(21))

    def test_ausserhalb(self):
        self.assertFalse(temperatur_freigabe(17))
        self.assertFalse(temperatur_freigabe(25))

    def test_grenzfaelle(self):
        for wert, erwartet in [
            (17.9, False),
            (18, True),
            (24, True),
            (24.1, False)
        ]:
            with self.subTest(wert=wert):
                self.assertEqual(
                    temperatur_freigabe(wert),
                    erwartet
                )

    def test_fehlerfall_text(self):
        with self.assertRaises(TypeError):
            temperatur_freigabe("21")

    def test_fehlerfall_nicht_endlich(self):
        with self.assertRaises(ValueError):
            temperatur_freigabe(float("nan"))

Die wichtigsten Testmethoden:

Methode Bedeutung
assertTrue Erwartet True
assertFalse Erwartet False
assertEqual Vergleicht Soll und Ist
assertRaises Erwartet eine bestimmte Ausnahme
subTest Kennzeichnet einzelne Prüfdaten innerhalb eines Tests


Schritt 3: Tests ausführen

Öffne ein lokales Terminal im Ordner labor_a.

Führe aus:

python -m unittest discover -v

Unter Windows kannst Du bei entsprechender Installation alternativ py -m unittest discover -v verwenden.

Erwartetes Ergebnis:

test_ausserhalb ... ok
test_fehlerfall_nicht_endlich ... ok
test_fehlerfall_text ... ok
test_grenzfaelle ... ok
test_normalfall ... ok

Ran 5 tests

OK

Die genaue Reihenfolge und zusätzliche Ausgabetexte können sich unterscheiden.

Feedback: Die fünf Testmethoden prüfen mehrere konkrete Eingaben. Dass sie bestehen, bestätigt die geprüften Fälle, beweist aber nicht die vollständige Fehlerfreiheit.


Lerneinheit 4: Fehler finden und Regressionen verhindern

Dauer: 15 Minuten


Ein absichtlich eingebauter Fehler

Ändere in Deiner lokalen Kopie von freigabe.py ausschließlich die letzte Zeile zu:

return 18 < temp_c < 24

Führe die Tests erneut aus.

Beobachtung: Die Grenzwertprüfungen für 18 °C und 24 °C schlagen fehl.

Warum? Die Operatoren < schließen die Grenzwerte aus, obwohl die Spezifikation sie erlaubt.

Korrigiere die Zeile anschließend wieder:

return 18 <= temp_c <= 24

Führe alle Tests noch einmal aus.


Testgetriebene Entwicklung

Fehler beim Erstellen des Vorschaubildes:

Der Grundgedanke der testgetriebenen Entwicklung: Test schreiben, zum Bestehen bringen, anschließend den Code verbessern.

ANFORDERUNG
    |
    v
TEST SCHREIBEN
    |
    v
FEHLER SICHTBAR? ---- nein ---> Test prüfen
    |
   ja
    |
    v
CODE KORRIGIEREN
    |
    v
ALLE TESTS AUSFÜHREN
    |
    v
BESTANDEN

Ein Regressionstest prüft nach einer Änderung, ob bereits getestetes Verhalten weiterhin funktioniert.

Wichtige Unterscheidung:

Testergebnis Bedeutung
OK Die getestete Erwartung wurde erfüllt
FAIL Eine Testbehauptung wurde nicht erfüllt
ERROR Bei der Testausführung trat ein unerwarteter Fehler auf


Gestufte Hilfen

Hilfe 1 – Orientierung: Vergleiche die genaue Aufgabenstellung mit den Erwartungen in der Testtabelle.

Hilfe 2 – Eingrenzung: Untersuche zuerst die beiden Tests an den eingeschlossenen Bereichsgrenzen.

Hilfe 3 – Konkreter Hinweis: Prüfe den Unterschied zwischen < und <=.

Begründetes Feedback: Eine bestandene Normalfallprüfung mit 21 °C reicht nicht aus, um die fehlerhafte Variante aufzudecken. Erst die Grenzwerttests zeigen, dass die Implementierung von der Anforderung abweicht.


Lerneinheit 5: Zweites isoliertes Testlabor

Dauer: 15 Minuten


Transferfall: Stückzahl einer Prüfcharge

Eine zweite fiktive Ausbildungsaufgabe betrifft die Stückzahl einer Prüfcharge.

Die Regel lautet: Nur ganze Zahlen von 1 bis 5 sind gültig.

Erstelle einen neuen, getrennten Ordner labor_b und speichere diesen vollständigen Code als labor_b.py.

import unittest

def stueckzahl_ok(anzahl):
    if type(anzahl) is not int:
        raise TypeError("Stueckzahl muss ganzzahlig sein")
    return 1 <= anzahl <= 5

class StueckzahlTests(unittest.TestCase):

    def test_normal(self):
        self.assertTrue(stueckzahl_ok(3))

    def test_grenzen(self):
        for wert, erwartet in [
            (0, False),
            (1, True),
            (5, True),
            (6, False)
        ]:
            with self.subTest(wert=wert):
                self.assertEqual(
                    stueckzahl_ok(wert),
                    erwartet
                )

    def test_fehler(self):
        with self.assertRaises(TypeError):
            stueckzahl_ok(2.5)

if __name__ == "__main__":
    unittest.main()

Lokal ausführen:

python labor_b.py

Erwartetes Ergebnis: Drei erfolgreiche Testmethoden und OK.


Drei Übungsstufen

Basis: Ergänze einen Test mit der Eingabe 4. Erwartung: True, weil 4 innerhalb des erlaubten Bereichs liegt.

Anwendung: Ergänze einen Test mit True als Eingabe. Erwartung: TypeError, weil nur echte ganzzahlige Stückzahlen erlaubt sind und der Typ bool ausgeschlossen wird.

Transfer: Ändere die fiktive Regel so, dass Stückzahlen von 2 bis 8 erlaubt sind. Passe die Funktion und alle betroffenen Testerwartungen an.

Hilfe 1: Formuliere zuerst die neuen Anforderungen als Tabelle.

Hilfe 2: Untersuche die Werte 1, 2, 8 und 9.

Hilfe 3: Ändere den Vergleich zu 2 <= anzahl <= 8 und aktualisiere die Grenzwerttests.

Feedback: Nach der Regeländerung müssen 2 und 8 akzeptiert und 1 und 9 abgelehnt werden. Ein alter Test, der weiterhin die Stückzahl 1 erwartet, ist jetzt nicht mehr fachlich korrekt. Tests und Spezifikation müssen übereinstimmen.


Interaktive Aufgaben


Quiz: Teste Dein Wissen

Was ist das Hauptziel eines Modultests? (Eine einzelne Funktion oder kleine Softwareeinheit überprüfen) (!Ein vollständiges Produktionsnetzwerk überwachen) (!Eine Maschine ohne Freigabe starten) (!Alle möglichen Softwarefehler ausschließen)




Welche Eingabe ist ein typischer Normalfall unserer Temperaturprüfung? (21 Grad Celsius) (!Ein Text ohne Zahlenwert) (!Eine leere Eingabe) (!Ein unendlicher Zahlenwert)




Welches Ergebnis muss die Temperaturfunktion bei 18 Grad Celsius liefern? (True) (!False) (!TypeError) (!ValueError)




Welche Eingabe prüft den Bereich unmittelbar oberhalb der Obergrenze? (24 Komma 1 Grad Celsius) (!21 Grad Celsius) (!20 Grad Celsius) (!22 Grad Celsius)




Was soll bei der Texteingabe 21 in Anführungszeichen geschehen? (TypeError auslösen) (!Die Temperatur freigeben) (!Immer den Wert Null zurückgeben) (!Den Test kommentarlos überspringen)




Welche Methode prüft, ob zwei Ergebnisse gleich sind? (assertEqual) (!assertRaises) (!print) (!input)




Welche Methode verwendet man für eine erwartete Ausnahme? (assertRaises) (!assertTrue) (!assertFalse) (!subTest allein)




Welche Änderung würde die beiden gültigen Temperaturgrenzen ausschließen? (Strenge Vergleiche ohne Gleichheitszeichen verwenden) (!Den Normalwert erneut testen) (!Den Testnamen umbenennen) (!Die Testausgabe ausführlicher anzeigen)




Was kennzeichnet einen Regressionstest? (Bereits geprüftes Verhalten nach Änderungen erneut kontrollieren) (!Nur einmalig die Software installieren) (!Nur neue Funktionen dokumentieren) (!Tests nach jeder Änderung löschen)




Welche Aussage zur Testqualität ist richtig? (Bestandene Tests bestätigen das Verhalten der geprüften Fälle) (!Fünf erfolgreiche Tests beweisen absolute Fehlerfreiheit) (!Grenzwerte sind grundsätzlich unwichtig) (!Eine erwartete Ausnahme bedeutet immer einen fehlgeschlagenen Test)




Begründetes Quiz-Feedback: Achte besonders auf die Unterschiede zwischen gültigen Zahlen außerhalb des Freigabebereichs und unzulässigen Eingaben. Die erste Art liefert False, während die zweite eine spezifizierte Ausnahme auslösen kann. Die richtige Teststrategie ergibt sich immer aus den Anforderungen.


Memory

Ordne die Fachbegriffe ihren Bedeutungen zu.

Normalfall Typische gültige Eingabe
Grenzfall Eingabe an einem Bereichsübergang
Fehlerfall Unzulässige Eingabe prüfen
Sollwert Erwartetes Prüfergebnis
Istwert Tatsächlich erhaltenes Ergebnis
Assertion Automatisierte Testbehauptung
Regressionstest Wiederholte Prüfung nach einer Änderung





Drag and Drop

Ordne die richtigen Begriffe zu. Thema
Normalfall Typischer Wert innerhalb des gültigen Bereichs
Untergrenze Kleinster gerade noch akzeptierter Zahlenwert
Obergrenze Größter gerade noch akzeptierter Zahlenwert
Bereichsverletzung Gültiger Zahlentyp außerhalb der erlaubten Werte
Fehlerfall Eingabe mit unzulässigem Datentyp
Regressionstest Erneute Prüfung nach einer Codeänderung




Feedback: Ein außerhalb des erlaubten Bereichs liegender Zahlenwert ist nicht automatisch ein Programmfehler. Entscheidend ist die vereinbarte Reaktion der Funktion.


Kreuzworträtsel

Modultest Wie heißt der Test einer einzelnen Softwareeinheit?
Grenzwert Wie heißt ein Wert direkt an einer Bereichsgrenze?
Fehlerfall Wie nennt man einen Test mit einer unzulässigen Eingabe?
Testfall Wie heißt eine konkrete Prüfung mit Eingabe und erwartetem Ergebnis?
Regression Wie nennt man die unerwünschte Verschlechterung bereits funktionierender Software nach Änderungen?
Ausnahme Wie heißt ein durch raise ausgelöstes Fehlersignal in Python?





LearningApps

Ergänzende interaktive Übungen zum Themenfeld:

Hinweis: Dies ist eine externe Übungssuche, kein lokaler Python-Code-Runner. Die Inhalte sind nicht Bestandteil der geprüften lokalen Testprogramme. Externe Übungen nur nach freiwilliger Freigabe durch Lehrkraft oder Lernende verwenden.


Lückentext

Vervollständige den Text.
Ein automatisierter Test vergleicht ein tatsächliches Ergebnis mit einer festgelegten

.
Die Prüfung einer einzelnen kleinen Softwareeinheit nennt man

.
Eine typische gültige Eingabe wird als

bezeichnet.
Ein Wert direkt an einem erlaubten Bereichsübergang heißt

.
Die systematische Prüfung solcher Übergänge nennt man

.
Eingaben mit vergleichbarem erwarteten Verhalten können in

eingeteilt werden.
In Python können erwartete Ausnahmen mit der Methode

geprüft werden.
Der Vergleich zweier Ergebnisse erfolgt häufig mit

.
Ein fehlgeschlagener Ergebnisvergleich wird von unittest als

angezeigt.
Eine erfolgreich erfüllte Testmethode wird üblicherweise mit

markiert.
Ein erneuter Test bereits geprüften Verhaltens nach einer Änderung heißt

.
Der reguläre Wahrheitswert für eine akzeptierte Temperatur lautet

.




Offene Aufgaben

Bearbeite die Aufgaben ausschließlich mit fiktiven Daten und lokal ausführbaren Programmen. Dokumentiere neben dem Ergebnis auch Deine Begründung.


Leicht

  1. Testfalltabelle: Erstelle eine Tabelle mit sechs Temperaturwerten und den zugehörigen Soll-Ergebnissen.
  2. Normalfälle: Erfinde zwei zusätzliche gültige Normalwerte und erkläre, warum sie keine Grenzen testen.
  3. Grenzwerte markieren: Zeichne den erlaubten Temperaturbereich und kennzeichne die unmittelbar angrenzenden Testwerte.
  4. Python-Test: Ergänze im ersten Testlabor einen weiteren Normalfalltest und führe alle Tests aus.


Standard

  1. Fehlerfälle: Ergänze einen Test für die Eingabe None und begründe die erwartete Ausnahme.
  2. Testprotokoll: Dokumentiere Testname, Eingabe, Erwartung, tatsächliches Ergebnis und Status für einen lokalen Testlauf.
  3. Fehlerreproduktion: Baue den Vergleichsfehler mit ausgeschlossenen Grenzen ein, dokumentiere die fehlgeschlagenen Tests und korrigiere ihn.
  4. Testklassen: Entwickle für das zweite Testlabor einen Testkatalog für gültige und ungültige Stückzahlen.


Schwer

  1. Test zuerst: Entwickle eine neue fiktive Prüffunktion für einen Zahlenbereich. Schreibe die Tests vor der Implementierung und dokumentiere die Testläufe.
  2. Fehleranalyse: Vergleiche zwei fehlerhafte Implementierungen und beurteile, welche Testfälle die jeweiligen Fehler entdecken.
  3. Testlabor erweitern: Ergänze eine reine Rechenfunktion zur Umrechnung von Millimetern in Meter und teste Normalwerte, Null, negative Zahlen sowie unzulässige Eingaben anhand einer selbst festgelegten Spezifikation.
  4. Ausbildungsprojekt: Erstelle ein kurzes Erklärvideo oder eine Bildschirmaufnahme, die den Weg von der technischen Anforderung über Testfälle bis zur Korrektur eines Fehlers zeigt. Verwende nur die lokalen Übungsdateien.




Text bearbeiten Bild einfügen Video einbetten Interaktive Aufgaben erstellen



Lernkontrolle

Bearbeite die folgenden Aufgaben schriftlich und mit geeigneten lokalen Codebeispielen.

  1. Zusammenhänge erklären: Eine Funktion besteht alle Normalfalltests, scheitert jedoch an der unteren Grenze. Erkläre die mögliche Ursache und entwirf einen passenden Regressionstest.
  2. Testfälle optimieren: Du hast zwanzig mögliche Messwerte, darfst aber zunächst nur sechs prüfen. Wähle begründet besonders aussagekräftige Werte aus.
  3. Verhalten bewerten: Vergleiche zwei Funktionen, von denen eine bei Texteingaben False zurückgibt und die andere TypeError auslöst. Erkläre, warum keine Reaktion ohne Kenntnis der Spezifikation grundsätzlich richtig ist.
  4. Anforderungsänderung: Der erlaubte Temperaturbereich wird in einer neuen fiktiven Spezifikation auf 19 °C bis 23 °C verkleinert. Welche Änderungen sind an Tests und Funktion erforderlich?
  5. Regression analysieren: Nach einer Codeverbesserung schlägt ein früher erfolgreicher Test fehl. Entwickle einen systematischen Plan zur Fehlersuche.
  6. Aussagekraft beurteilen: Ein Testprogramm meldet sämtliche Tests erfolgreich. Erkläre, warum zusätzliche Tests dennoch nötig sein können.

Bewertungsschwerpunkte: Fachlich richtige Begründung, Bezug zur Spezifikation, geeignete Testdaten, reproduzierbare Ausführung, sinnvolle Fehlerdiagnose und sichere Durchführung.




Lernnachweis

Für einen erfolgreichen Lernnachweis erstellst Du eine kleine, vollständig lokale Testmappe.

Diese Bestandteile gehören dazu:

  1. Eine klar beschriebene fiktive technische Anforderung.
  2. Eine lauffähige Python-Funktion ohne externe Geräte- oder Netzwerkschnittstellen.
  3. Ein automatisierter Normalfalltest.
  4. Mindestens vier begründete Grenzwertprüfungen.
  5. Mindestens zwei Tests für unzulässige Eingaben.
  6. Eine Testfalltabelle mit Soll- und Ist-Ergebnissen.
  7. Ein dokumentierter Fehler mit anschließender Korrektur.
  8. Ein erfolgreicher erneuter Testlauf.
  9. Eine kurze Reflexion zu Grenzen und Aussagekraft der Tests.

Möglicher Bewertungsmaßstab:

Kompetenzbereich Gewichtung
Anforderungen und Testfalldesign 30 %
Lauffähige automatische Tests 30 %
Fehleranalyse und Korrektur 20 %
Dokumentation und Reflexion 20 %

Erfolgsmerkmal: Du kannst nicht nur zeigen, dass Tests funktionieren, sondern begründen, weshalb genau diese Testfälle geeignet sind.




OERs zum Thema


Wikipedia: Modultest


Fachlich geprüfte Lernquellen

  1. Python-Dokumentation: unittest – Testklassen, Assertions, Ausnahmen und Testausführung.
  2. Python-Dokumentation: math – Bedeutung von math.isfinite.
  3. Python-Dokumentation: Fehler und Ausnahmen – Verwendung von raise und Ausnahmetypen.
  4. German Testing Board: Certified Tester 4.0 – Fachliche Grundlage für Testentwurfsverfahren.
  5. ISTQB: Standardglossar des Softwaretestens – Anerkannte Fachbegriffe.
  6. Modultest – Grundlagen automatisierter Tests einzelner Komponenten.
  7. Softwaretest – Einordnung des Testens in die Softwareentwicklung.
  8. Testautomatisierung – Nutzen automatisierter Wiederholungsprüfungen.


Mediennachweise und Nutzungsrechte

Die folgenden Abbildungen stammen aus Wikimedia Commons. Ihre Dateiseiten dokumentieren Urheber und freie Lizenzen.

  1. Testing Pyramid.svg – Abbe98, CC BY-SA 4.0.
  2. Boundary value analysis one.jpg – Amrinarin, CC BY-SA 4.0.
  3. ECP.png – Nmondal, CC BY-SA 3.0.
  4. Test-driven development.svg – Excirial und Bearbeitung durch Jarozwj, CC BY-SA 3.0 beziehungsweise weitere auf Commons dokumentierte Lizenzoptionen.

Lizenzhinweis: Bei Wiederverwendung und Bearbeitung die jeweilige Namensnennung, Lizenzverlinkung und gegebenenfalls die Weitergabe unter gleichen Bedingungen beachten. Die Dateiseiten sind für die vollständigen Lizenzbedingungen maßgeblich.

Videos:

  1. Datamics: Python Tutorial – Code testen mit Unittest – Externes Lernvideo.
  2. Corey Schafer: Python Tutorial – Unit Testing Your Code – Externes Lernvideo.

Für YouTube-Inhalte gelten die Rechte und Nutzungsbedingungen der jeweiligen Rechteinhaber. Die Einbettung bedeutet keine freie Lizenz zur Weiterverbreitung der Videodateien.

Datenschutz und sichere Durchführung: Externe Video- und iFrame-Angebote können beim Aufruf Daten an ihre Anbieter übertragen. Für die Programmieraufgaben sind sie nicht erforderlich. Der Python-Code wird ausschließlich lokal mit erfundenen Werten ausgeführt. Eine Verbindung zu Produktivanlagen, Fremdsystemen, Kundendaten oder Zugangsdaten ist weder vorgesehen noch erlaubt.


Verknüpfte Lernbereiche


aiMOOC-Projekte



Schulfach+




aiMOOCs



aiMOOC Projekte









MOOCwiki · Deutsch

Nach dem Lernen ist vor dem Lernen

Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.

Zur MOOCwiki-Hauptseite

Mediathek

Inhalte werden geladen ...

Mediathek wird aus dem Wiki geladen ...