<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Testgetriebene_Softwareentwicklung_mit_KI-Agenten</id>
	<title>Testgetriebene Softwareentwicklung mit KI-Agenten - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Testgetriebene_Softwareentwicklung_mit_KI-Agenten"/>
	<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Testgetriebene_Softwareentwicklung_mit_KI-Agenten&amp;action=history"/>
	<updated>2026-10-22T08:57:18Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MOOCsWiki Staging</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://staging.moocwiki.org/index.php?title=Testgetriebene_Softwareentwicklung_mit_KI-Agenten&amp;diff=72892&amp;oldid=prev</id>
		<title>Glanz: AI MOOC Plugin d45987c019eb5c93da35f079165eefa5</title>
		<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Testgetriebene_Softwareentwicklung_mit_KI-Agenten&amp;diff=72892&amp;oldid=prev"/>
		<updated>2026-10-21T22:08:33Z</updated>

		<summary type="html">&lt;p&gt;AI MOOC Plugin d45987c019eb5c93da35f079165eefa5&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{T}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Einleitung =&lt;br /&gt;
Du entwickelst eine kleine &amp;#039;&amp;#039;&amp;#039;Messdaten-App&amp;#039;&amp;#039;&amp;#039; mit synthetischen Beispieldaten weiter. In diesem Kurs lernst du, Anforderungen zuerst als überprüfbare Tests zu beschreiben, dann nur die notwendige Funktion zu ändern und anschließend bestehende Funktionen erneut zu prüfen. Ein KI-Agent darf Änderungsvorschläge liefern, aber die Anforderungen, Rechte, Abnahme und Freigabe bleiben bei Menschen. &amp;#039;&amp;#039;&amp;#039;Lernprodukt&amp;#039;&amp;#039;&amp;#039; ist eine dokumentierte TDD-Änderung an einer Grenzwertprüfung.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Zielgruppe:&amp;#039;&amp;#039;&amp;#039; Auszubildende im 2. bis 3. Ausbildungsjahr. &amp;#039;&amp;#039;&amp;#039;Voraussetzungen:&amp;#039;&amp;#039;&amp;#039; A1 oder Grundlagen in Python, Dateien, [[Git]] und einfachen Softwaretests. &amp;#039;&amp;#039;&amp;#039;Zeitbedarf:&amp;#039;&amp;#039;&amp;#039; etwa 4 bis 6 Unterrichtseinheiten einschließlich Lernnachweis. &amp;#039;&amp;#039;&amp;#039;Ohne Bezahlkonto:&amp;#039;&amp;#039;&amp;#039; Alle Kernaufgaben funktionieren lokal mit Python und der Standardbibliothek unittest. Eine KI kann durch vorbereitete Agentenvorschläge simuliert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anschluss an den Vorkurs:&amp;#039;&amp;#039;&amp;#039; [https://moocwiki.org/index.php?curid=60543 Vorhandene MOOCwiki-Grundlage (Seiten-ID 60543)]. Wiederhole dort bei Bedarf Dateistrukturen, Git und Testaufrufe. Die konkrete Seite war beim Quellencheck nicht abrufbar; ihr genauer Inhalt wird deshalb nicht behauptet.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sicherheitsrahmen:&amp;#039;&amp;#039;&amp;#039; Nur simulierte Messwerte und lokale Dateien. Keine reale Maschinensteuerung, keine Sicherheitsfreigabe, keine echten Betriebs- oder Schülerdaten. Dieses unabhängige Bildungsangebot ist weder eine offizielle Liebherr-Schulung noch eine IHK-Zertifizierung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Anforderungen vor Code: der TDD-Gedanke =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Test zuerst – Red, Green, Refactor ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Testgetriebene Entwicklung&amp;#039;&amp;#039;&amp;#039; (Test-driven Development, TDD) beginnt mit einer beobachtbaren Anforderung. Du schreibst zuerst einen Test, der für die noch fehlende Funktion &amp;#039;&amp;#039;&amp;#039;aus dem richtigen Grund scheitert&amp;#039;&amp;#039;&amp;#039; (Red). Dann ergänzt du gerade genug Produktivcode, damit er besteht (Green). Erst bei grünem Testlauf verbesserst du bei Bedarf die interne Struktur ohne das geforderte Verhalten zu verändern (Refactor).&lt;br /&gt;
&lt;br /&gt;
[[File:Test-driven development.svg|500px|frameless|center|alt=Englisches Ablaufdiagramm des testgetriebenen Entwicklungszyklus mit Test, Implementierung und erneuter Prüfung]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bildbeschreibung:&amp;#039;&amp;#039;&amp;#039; Das englischsprachige Diagramm zeigt den wiederholten Zyklus von Test und Implementierung. Ohne Bild: &amp;#039;&amp;#039;Anforderung → neuer Test schlägt erwartungsgemäß fehl → kleinste Änderung → alle Tests bestehen → optional aufräumen → erneut testen.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum Anforderungen spiegeln statt Implementierungen?&amp;#039;&amp;#039;&amp;#039; Ein Test soll beantworten, was bei einer Eingabe laut Fachanforderung herauskommt – nicht, ob ein bestimmter Codezweig oder Funktionsname existiert. Beispiel: „81 ist bei Grenzwert 80 oberhalb“ ist eine Verhaltensaussage. „Die Funktion muss eine if-Abfrage benutzen“ wäre nur eine Implementierungsvorgabe. Diese Unterscheidung schützt vor Tests, die Fehler bloß nachprogrammieren.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Drei überprüfbare Qualitätskriterien ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kriterium !! Sichtbarer Nachweis !! Gegenbeispiel&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Rot zuerst&amp;#039;&amp;#039;&amp;#039; || Ein neuer, sinnvoller Test scheitert am fehlenden Verhalten, dokumentiert mit Fehlermeldung. || Er scheitert nur wegen eines Tippfehlers im Import.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Minimale Änderung&amp;#039;&amp;#039;&amp;#039; || Ausschließlich die zur Anforderung gehörende Fallunterscheidung wird ergänzt. || Ein Agent baut nebenbei Datenbank und Benutzerverwaltung um.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Regression grün&amp;#039;&amp;#039;&amp;#039; || Neuer und vorhandene Tests bestehen nach der Änderung gemeinsam. || Nur der neue Test wird isoliert ausgeführt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Begriffe:&amp;#039;&amp;#039;&amp;#039; Eine &amp;#039;&amp;#039;&amp;#039;Assertion&amp;#039;&amp;#039;&amp;#039; vergleicht erwartetes mit beobachtetem Ergebnis. Ein &amp;#039;&amp;#039;&amp;#039;Grenzfall&amp;#039;&amp;#039;&amp;#039; liegt unmittelbar am Übergang, zum Beispiel 80 oder 81. Ein &amp;#039;&amp;#039;&amp;#039;Regressionstest&amp;#039;&amp;#039;&amp;#039; prüft, dass zuvor funktionierendes Verhalten durch eine Änderung nicht kaputtging.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Vertiefung: Warum ein grüner Test nicht alles beweist ==&lt;br /&gt;
Tests prüfen nur ausgewählte Beispiele. Ein fehlerhaft formulierter Test kann grün werden, obwohl die Anforderung verletzt ist. Entscheidend sind nachvollziehbare Fachregeln, Eingabevalidierung, positive und negative Fälle sowie der Blick auf die Grenzen einer Testabdeckung. Bei Messwerten müssen Einheiten, Genauigkeit, fehlende Werte und der Unterschied zwischen &amp;#039;&amp;#039;größer als&amp;#039;&amp;#039; und &amp;#039;&amp;#039;größer oder gleich&amp;#039;&amp;#039; bewusst festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|https://www.youtube.com/watch?v=H943sC8r7nQ|500|center}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Video (Deutsch):&amp;#039;&amp;#039;&amp;#039; the native web GmbH, &amp;#039;&amp;#039;Testen mit TDD: Eine Einführung in 100 Minuten&amp;#039;&amp;#039; (2022). Besonders relevant sind die Abschnitte über den ersten roten Test, die minimale Implementierung und Refactoring. &amp;#039;&amp;#039;&amp;#039;Ohne Video:&amp;#039;&amp;#039;&amp;#039; Lies die obige Definition und zeichne drei Kästen „Rot“, „Grün“ und „Aufräumen“ mit Prüfnachweisen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Fachanforderungen in ausführbare Tests übersetzen =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fachliche Regel für die Messdaten-App ==&lt;br /&gt;
Die erfundene App bekommt simulierte Temperaturwerte als Zahlen. &amp;#039;&amp;#039;&amp;#039;Anforderung G1:&amp;#039;&amp;#039;&amp;#039; Bei Grenzwert 80 bedeutet ein Messwert bis einschließlich 80 „ok“; erst ein Wert &amp;#039;&amp;#039;&amp;#039;größer als 80&amp;#039;&amp;#039;&amp;#039; liefert „ueber“. Das ist eine reine Textkennzeichnung, kein Alarm und kein Steuerbefehl. &amp;#039;&amp;#039;&amp;#039;Anforderung G2:&amp;#039;&amp;#039;&amp;#039; Negative Werte sind in diesem vereinfachten Modell ungültig und sollen mit ValueError abgewiesen werden. In echten Systemen können negative Temperaturen selbstverständlich sinnvoll sein; G2 ist nur eine ausdrücklich vereinbarte Übungsregel.&lt;br /&gt;
&lt;br /&gt;
Eine gute Akzeptanzbeschreibung enthält Eingabe, erwartetes Ergebnis und einen Grenzfall. Beispiele: (50, 80) → „ok“; (80, 80) → „ok“; (81, 80) → „ueber“. Ergänze einen Eingabefehler und erkläre, warum gerade dieser Test zur Fachregel gehört.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Arrange, Act, Assert und lesbare Fehlersignale ==&lt;br /&gt;
Teile die Prüfung gedanklich in drei Teile: &amp;#039;&amp;#039;&amp;#039;Arrange&amp;#039;&amp;#039;&amp;#039; bereitet Werte vor, &amp;#039;&amp;#039;&amp;#039;Act&amp;#039;&amp;#039;&amp;#039; ruft die Funktion auf, &amp;#039;&amp;#039;&amp;#039;Assert&amp;#039;&amp;#039;&amp;#039; vergleicht das Resultat. Die Python-Standardbibliothek &amp;#039;&amp;#039;&amp;#039;unittest&amp;#039;&amp;#039;&amp;#039; kann das offline erledigen. Mit &amp;#039;&amp;#039;&amp;#039;pytest&amp;#039;&amp;#039;&amp;#039; geht es ebenfalls, falls es bereits installiert ist; ein zusätzliches KI-Konto ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# test_messwerte.py – zunächst vollständig anlegen&lt;br /&gt;
import unittest&lt;br /&gt;
from messwerte import bewerte_wert&lt;br /&gt;
&lt;br /&gt;
class TestGrenzwert(unittest.TestCase):&lt;br /&gt;
    def test_normal(self):&lt;br /&gt;
        self.assertEqual(bewerte_wert(50), &amp;quot;ok&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def test_genau_am_limit(self):&lt;br /&gt;
        self.assertEqual(bewerte_wert(80), &amp;quot;ok&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def test_oberhalb(self):&lt;br /&gt;
        self.assertEqual(bewerte_wert(81), &amp;quot;ueber&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    unittest.main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beobachtung statt Geheimlösung:&amp;#039;&amp;#039;&amp;#039; Die letzte Assertion prüft das neu verlangte Verhalten. Die zwei ersten bilden die Rückversicherung. Ein fachlich guter Test nennt konkrete Eingaben und Ergebnisse; er schreibt keine bestimmte if-Anweisung vor.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Importprüfung als nächster Entwicklungsauftrag ==&lt;br /&gt;
Die spätere Datei &amp;#039;&amp;#039;&amp;#039;werte.csv&amp;#039;&amp;#039;&amp;#039; enthält ausschließlich synthetische Zeilen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
id;wert&lt;br /&gt;
M01;50&lt;br /&gt;
M02;80&lt;br /&gt;
M03;81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Formuliere vor dem Parser fachliche Importtests: korrekte Spaltennamen und Trennzeichen, zulässige Zahlen, Leerdatei und fehlerhafte Zahl wie „achtzig“. Ein Importfehler muss einen verständlichen Hinweis erzeugen statt still einen Ersatzmesswert zu erfinden. Vorhandene Grenzwerttests dürfen durch neue Importfunktionen nicht verändert werden. Nutze zunächst Texte im Arbeitsspeicher, keine fremden Dateien.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Geführtes Praxisbeispiel: Rot, minimale Änderung, Regression =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Ausgangspunkt und roter Test ==&lt;br /&gt;
Lege in einem leeren lokalen Übungsordner &amp;#039;&amp;#039;&amp;#039;messwerte.py&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;test_messwerte.py&amp;#039;&amp;#039;&amp;#039; an. Die Ausgangsfunktion bewahrt die beiden bekannten Fälle, kennt aber noch keine Überschreitung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# messwerte.py – Ausgangsversion&lt;br /&gt;
def bewerte_wert(wert, grenze=80):&lt;br /&gt;
    return &amp;quot;ok&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Führe im Projektordner &amp;#039;&amp;#039;&amp;#039;python -m unittest -v&amp;#039;&amp;#039;&amp;#039; aus; je nach System heißt der Befehl &amp;#039;&amp;#039;&amp;#039;python3 -m unittest -v&amp;#039;&amp;#039;&amp;#039;. Erwartung: &amp;#039;&amp;#039;test_normal&amp;#039;&amp;#039; und &amp;#039;&amp;#039;test_genau_am_limit&amp;#039;&amp;#039; sind grün; &amp;#039;&amp;#039;test_oberhalb&amp;#039;&amp;#039; schlägt als &amp;#039;&amp;#039;&amp;#039;AssertionError&amp;#039;&amp;#039;&amp;#039; fehl, weil „ok“ statt „ueber“ zurückkommt. Die Namen und Zählwerte hängen von der Testumgebung ab; relevant ist die Ursache, nicht die exakte Textform der Konsolenausgabe.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Prüfnachweis Rot:&amp;#039;&amp;#039;&amp;#039; Schreibe „test_oberhalb: erwartet ueber, erhalten ok“. Wäre stattdessen das Python-Modul nicht auffindbar, musst du erst das Setup reparieren; das wäre noch kein guter TDD-Nachweis.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Kleinste Implementierung ==&lt;br /&gt;
Erst nach dem dokumentierten roten Test änderst du &amp;#039;&amp;#039;&amp;#039;nur&amp;#039;&amp;#039;&amp;#039; die Produktivfunktion:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# messwerte.py – minimale Änderung für G1&lt;br /&gt;
def bewerte_wert(wert, grenze=80):&lt;br /&gt;
    if wert &amp;gt; grenze:&lt;br /&gt;
        return &amp;quot;ueber&amp;quot;&lt;br /&gt;
    return &amp;quot;ok&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Prüfe die drei Beispiele gedanklich: 50 und 80 bleiben „ok“; 81 wird „ueber“. Keine Änderung an Testwerten, keine Erweiterung anderer Dateien, keine zusätzliche Benutzeroberfläche. &amp;#039;&amp;#039;&amp;#039;Der Änderungssatz ist minimal&amp;#039;&amp;#039;&amp;#039;, weil er ausschließlich das neue Verhalten abbildet.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Alle Tests grün und Refactoring ==&lt;br /&gt;
Rufe erneut &amp;#039;&amp;#039;&amp;#039;python -m unittest -v&amp;#039;&amp;#039;&amp;#039; auf. Erwartung: alle drei Tests bestehen. Das ist der &amp;#039;&amp;#039;&amp;#039;Regression-nach-Green-Nachweis&amp;#039;&amp;#039;&amp;#039;. Sichere eine kurze Änderungsnotiz: Regel G1, vorherige Fehlermeldung, betroffene Funktion, vollständiges Testergebnis. Ist der Code bereits klar, musst du kein unnötiges Refactoring durchführen.&lt;br /&gt;
&lt;br /&gt;
[[File:TDD Global Lifecycle.png|480px|frameless|center|alt=Englisch beschriftetes Schaubild zu wiederholten TDD-Zyklen vom Test über Implementierung zur erneuten Prüfung]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bildbeschreibung:&amp;#039;&amp;#039;&amp;#039; Mehrere kleine Zyklen bilden eine fortlaufende Entwicklung. Ohne Bild: Nach jedem grünen Durchlauf beginnt für die nächste neue Anforderung wieder ein roter Test.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Begründeter Fehlerfall als zweite Runde ==&lt;br /&gt;
Nun folgt G2, &amp;#039;&amp;#039;&amp;#039;negative Werte zurückweisen&amp;#039;&amp;#039;&amp;#039;. Schreibe erst einen zusätzlichen Test und führe alle Tests aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def test_negativer_wert(self):&lt;br /&gt;
    with self.assertRaises(ValueError):&lt;br /&gt;
        bewerte_wert(-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Füge diese Methode innerhalb der Klasse &amp;#039;&amp;#039;&amp;#039;TestGrenzwert&amp;#039;&amp;#039;&amp;#039; ein. Sie ist zunächst rot, weil die Funktion für -1 „ok“ liefert und keinen Fehler auslöst. &amp;#039;&amp;#039;&amp;#039;Erst jetzt&amp;#039;&amp;#039;&amp;#039; ergänze am Funktionsanfang:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if wert &amp;lt; 0:&lt;br /&gt;
    raise ValueError(&amp;quot;Negativer Uebungswert&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Führe erneut alle Tests aus und erläutere, weshalb ein still akzeptiertes -1 in &amp;#039;&amp;#039;&amp;#039;diesem vereinbarten Modell&amp;#039;&amp;#039;&amp;#039; ein Fehler wäre. Für eine reale Anwendung wäre die Fachregel zu negativen Temperaturen zuerst neu zu prüfen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= KI-Agenten kontrolliert an TDD beteiligen =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Entwicklungsauftrag mit prüfbaren Grenzen ==&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;Coding-Agent&amp;#039;&amp;#039;&amp;#039; ist ein Programm, das aus Anweisungen Änderungen und Testläufe vorschlägt oder – wenn ausdrücklich berechtigt – ausführt. Ein Agent ist keine unabhängige fachliche Prüfstelle. Formuliere den Auftrag wie ein überprüfbares Ticket:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Auftrag:&amp;#039;&amp;#039;&amp;#039; „In der lokalen Beispiel-App soll ein Wert oberhalb von 80 mit ueber gekennzeichnet werden. Erstelle zuerst den neuen Verhaltenstest und zeige den erwarteten AssertionError. Ändere danach nur messwerte.py minimal. Führe die vollständige Testsuite aus. Melde geänderte Dateien, Diff und Testergebnisse. Keine Netzwerkanfragen, keine geheimen Daten, keine Änderungen außerhalb des Übungsordners, keine Veröffentlichung.“&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Abnahmekriterien:&amp;#039;&amp;#039;&amp;#039; Nachweis Rot vor Codeänderung, minimale Diff-Prüfung, alle bestehenden und neuen Tests grün, keine Änderung an Test-Erwartungen zur Ergebnisbeschönigung. Die menschliche Fachprüfung bewertet vor allem die Unterscheidung zwischen &amp;#039;&amp;#039;größer&amp;#039;&amp;#039; und &amp;#039;&amp;#039;größer oder gleich&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Rechte, Review und menschliche Freigabe ==&lt;br /&gt;
Nutze das &amp;#039;&amp;#039;&amp;#039;Prinzip der geringsten Berechtigung&amp;#039;&amp;#039;&amp;#039;: Der Agent darf nur die für den Auftrag nötigen Übungsdateien lesen; Schreibrechte gelten nur für einen eigenen Arbeitszweig oder begrenzten Ordner. Gehe bei unbekannten Werkzeugen von &amp;#039;&amp;#039;&amp;#039;keiner&amp;#039;&amp;#039;&amp;#039; zusätzlichen Berechtigung aus. Verweigere Zugriff auf echte Messsysteme, Zugangsdaten, Konten, Produktionskonfiguration, Deployment und den Hauptzweig. Ein menschlicher Reviewer kontrolliert die Dateiliste und jede fachliche Abweichung. Auch ein grüner Testlauf ersetzt weder Freigabe noch Sicherheitsnachweis.&lt;br /&gt;
&lt;br /&gt;
[[File:Git-logo.svg|310px|frameless|center|alt=Orangefarbenes Git-Logo zur Kennzeichnung der Versionsverwaltung und Änderungsprüfung]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bildbeschreibung:&amp;#039;&amp;#039;&amp;#039; Das Logo verweist auf nachvollziehbare Versionsstände. Ohne Bild: Prüfe in Git die geänderten Dateien und den Diff vor dem menschlich genehmigten Merge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Agent-Simulation ohne KI:&amp;#039;&amp;#039;&amp;#039; Eine Person übernimmt die Rolle „Agent“ und schlägt einen Patch vor; eine andere spielt den Reviewer. Alternativ vergleiche zwei vorbereitete Vorschläge: A fügt nur die eine Fallunterscheidung hinzu, B ändert zusätzlich Tests und deaktiviert die Prüfung für den Grenzfall. Verwerfe B, auch wenn dessen Testlauf grün erscheint.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerarten unterscheiden ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Situation !! Aussage !! Sichere Folgerung&lt;br /&gt;
|-&lt;br /&gt;
| Roter AssertionError zu 81 || Erwartetes Verhalten fehlt. || Minimalen Produktivcode ergänzen.&lt;br /&gt;
|-&lt;br /&gt;
| Roter ImportError || Testumgebung oder Modulpfad fehlerhaft. || Setup reparieren, noch kein Verhaltensnachweis.&lt;br /&gt;
|-&lt;br /&gt;
| Grüner Test nach Änderung der erwarteten Ausgabe auf „ok“ || Test wurde passend zum Fehler verbogen. || Anforderung gegenlesen und Test korrigieren.&lt;br /&gt;
|-&lt;br /&gt;
| Nur neuer Test grün, alter Test rot || Regression. || Änderung nicht abnehmen.&lt;br /&gt;
|-&lt;br /&gt;
| Alle Tests grün, Agent fordert Schreibrecht für Produktion || Unzulässige Rechteausweitung. || Rechte verweigern und menschlich prüfen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die MCP-Sicherheitsleitlinien behandeln unter anderem Berechtigungsgrenzen und die Gefahr missbrauchter Autorisierung. Das NIST-Profil zu generativer KI dient als freiwilliger Rahmen für Risikobetrachtung, Nachvollziehbarkeit und menschliche Verantwortlichkeit. Beide ersetzen keine technische Sicherheitsprüfung.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|https://www.youtube.com/watch?v=hYZdIwFIy-c|480|center}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Video (Englisch):&amp;#039;&amp;#039;&amp;#039; Matt Pocock, Beitrag zu TDD mit Coding-Agenten (23.02.2026). &amp;#039;&amp;#039;&amp;#039;Ohne Video:&amp;#039;&amp;#039;&amp;#039; Lies den vorstehenden Auftrag und markiere darin die Test-, Datei-, Netzwerk- und Freigabegrenzen. Das Video illustriert einen Workflow, nicht die Verlässlichkeit eines bestimmten Agenten.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Transfer: selbstständig eine sichere Änderung nachweisen =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fallstudie Import und Grenzwerte ==&lt;br /&gt;
Du erhältst die drei synthetischen Datensätze M01=50, M02=80, M03=81. Plane getrennte Tests für &amp;#039;&amp;#039;&amp;#039;Import&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Bewertung&amp;#039;&amp;#039;&amp;#039;. Ergänze zwei fehlerhafte CSV-Zeilen: etwa M04=abc und einen fehlenden Wert. Definiere ausdrücklich, ob bei einem Fehler die gesamte Datei oder nur eine Zeile abgewiesen wird. Ohne eine solche Entscheidung ist ein Test nicht eindeutig.&lt;br /&gt;
&lt;br /&gt;
[[File:Regresyon-testi.jpg|390px|frameless|center|alt=Diagramm aus der Softwaretest-Praxis, das die Abfolge wiederholbarer Regressionstests verdeutlicht]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bildbeschreibung:&amp;#039;&amp;#039;&amp;#039; Die Grafik verdeutlicht die Wiederholung standardisierter Prüfungen. Ohne Bild: Notiere für jede Änderung alten Sollzustand, neuen Test und vollständigen Regressionstestlauf.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Prüfprotokoll für das Lernprodukt ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Prüffeld !! Dein Nachweis&lt;br /&gt;
|-&lt;br /&gt;
| Regel || Bei Grenzwert 80 ist 80 „ok“, 81 „ueber“.&lt;br /&gt;
|-&lt;br /&gt;
| Rot || Vorher fehlschlagender neuer Verhaltenstest mit Fehlerursache.&lt;br /&gt;
|-&lt;br /&gt;
| Minimale Änderung || Diff zeigt nur nötige Funktionserweiterung.&lt;br /&gt;
|-&lt;br /&gt;
| Regression grün || Gesamte lokale Testsuite bestanden.&lt;br /&gt;
|-&lt;br /&gt;
| Fehlerbegründung || Negativer Übungswert oder fehlerhafte CSV-Zeile fachlich erklärt.&lt;br /&gt;
|-&lt;br /&gt;
| Rechte und Review || Kein Produktionszugriff; menschliche Abnahme mit Begründung.&lt;br /&gt;
|}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vertiefung:&amp;#039;&amp;#039;&amp;#039; Nutze zusätzlich eine datengesteuerte Tabelle mit Werten knapp unter, exakt auf und knapp über einer fachlich gewählten Grenze. Diskutiere Dezimalwerte und den Umgang mit NaN, falls das Zahlenmodell solche Werte erlauben soll. Ein grüner Beispieltest ist kein Beweis für Vollständigkeit oder Sicherheit.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Interaktive Aufgaben =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bearbeitungshinweis:&amp;#039;&amp;#039;&amp;#039; Beantworte zunächst ohne den Code zu verändern. Die Auswertung erfolgt innerhalb der Quizaufgaben. Begründungen lassen sich aus den Fachkapiteln ableiten; die Lösungen werden nicht als vorgeschaltete Liste gezeigt.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Quiz: Teste dein Wissen ==&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Woran erkennst du den ersten gültigen roten TDD-Schritt für G1?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Der Test zu Wert 81 meldet eine fachlich falsche Rückgabe)&lt;br /&gt;
(!Ein Dateiname wurde falsch geschrieben)&lt;br /&gt;
(!Die Python-Installation ist nicht vorhanden)&lt;br /&gt;
(!Der Test wurde ohne Ausführung als rot markiert)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Aussage legt die Grenze 80 eindeutig fest?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Erst Werte über 80 werden als ueber bewertet)&lt;br /&gt;
(!Bereits 80 wird als ueber bewertet)&lt;br /&gt;
(!Jeder positive Wert wird als ueber bewertet)&lt;br /&gt;
(!Die Grenzzahl wird vom Agenten zufällig gewählt)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist nach einem erwarteten roten Verhaltenstest der passende Schritt?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Die kleinste nötige Produktivcodeänderung vornehmen)&lt;br /&gt;
(!Alle bestehenden Tests löschen)&lt;br /&gt;
(!Einen Produktionsserver anbinden)&lt;br /&gt;
(!Die erwartete Testausgabe an den Fehler anpassen)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welcher Nachweis belegt Regression grün?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Neue und bestehende Tests bestehen im vollständigen Lauf)&lt;br /&gt;
(!Nur der neue Test wurde aufgerufen)&lt;br /&gt;
(!Der Code sieht für einen Agenten plausibel aus)&lt;br /&gt;
(!Die Testdatei wurde aus der Versionsverwaltung entfernt)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist ein fachlicher Grenzfall zu Schwelle 80?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Der Messwert 80 selbst)&lt;br /&gt;
(!Eine beliebige neue Ordnerbezeichnung)&lt;br /&gt;
(!Eine nicht installierte Entwicklungsumgebung)&lt;br /&gt;
(!Der Name der verwendeten Programmiersprache)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie reagierst du auf einen ImportError im neuen Test?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Zuerst Pfad oder Importkonfiguration prüfen)&lt;br /&gt;
(!Sofort von einer gelungenen Red-Phase sprechen)&lt;br /&gt;
(!Die Fachanforderung verwerfen)&lt;br /&gt;
(!Dem Agenten alle Systemrechte erteilen)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist im Übungsmodell die erwartete Behandlung von minus eins?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Eine ValueError Ausnahme)&lt;br /&gt;
(!Ungeprüft als ok ausgeben)&lt;br /&gt;
(!Die lokale Festplatte löschen)&lt;br /&gt;
(!Einen echten Maschinenstopp auslösen)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Agentenberechtigung ist für diesen Auftrag angemessen?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Begrenzter Zugriff auf Übungsdateien ohne Produktionsrechte)&lt;br /&gt;
(!Uneingeschränkter Zugriff auf alle Konten)&lt;br /&gt;
(!Automatisches Deployment ohne Review)&lt;br /&gt;
(!Lesen privater Zugangsdaten für den Grenzwerttest)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum ist ein unveränderter Verhaltenstest für die Abnahme wichtig?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Er bewahrt die unabhängig formulierte Erwartung der Fachregel)&lt;br /&gt;
(!Er zwingt den Agenten zur Verwendung einer bestimmten Schleife)&lt;br /&gt;
(!Er ersetzt die Prüfung aller anderen Tests)&lt;br /&gt;
(!Er garantiert die Fehlerfreiheit des gesamten Systems)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wann darf eine simulierte Änderung fachlich abgenommen werden?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Nach geprüftem Diff vollständigem grünen Testlauf und menschlichem Review)&lt;br /&gt;
(!Sobald der Agent erfolgreich meldet)&lt;br /&gt;
(!Sobald nur ein ausgewählter Test grün wird)&lt;br /&gt;
(!Sobald Zugriff auf Produktionsgeräte eingerichtet ist)&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Memory ==&lt;br /&gt;
Ordne Fachbegriff und Bedeutung zu.&lt;br /&gt;
&amp;lt;div class=&amp;quot;memo-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Red-Phase || Neuer Test schlägt aus dem erwarteten fachlichen Grund fehl&lt;br /&gt;
|-&lt;br /&gt;
| Green-Phase || Kleinste Produktivänderung bringt Tests zum Bestehen&lt;br /&gt;
|-&lt;br /&gt;
| Refactoring || Interne Struktur ohne geändertes Sollverhalten verbessern&lt;br /&gt;
|-&lt;br /&gt;
| Regressionstest || Früher funktionierendes Verhalten erneut prüfen&lt;br /&gt;
|-&lt;br /&gt;
| Assertion || Beobachtetes Ergebnis mit erwarteter Aussage vergleichen&lt;br /&gt;
|-&lt;br /&gt;
| Reviewer || Änderung und fachliche Abnahme unabhängig kontrollieren&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Drag-and-Drop ==&lt;br /&gt;
Ordne die Schritte den passenden Beobachtungen zu.&lt;br /&gt;
&amp;lt;div class=&amp;quot;lueckentext-quiz&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Passenden Begriff zuordnen&lt;br /&gt;
! Beobachtung aus dem Entwicklungsablauf&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Fachregel&amp;#039;&amp;#039;&amp;#039; || Eingabe 81 bei Grenze 80 soll ueber ergeben&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Roter Nachweis&amp;#039;&amp;#039;&amp;#039; || Assertion meldet vor Änderung ok statt ueber&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Minimale Implementierung&amp;#039;&amp;#039;&amp;#039; || Ausschließlich neue Fallunterscheidung in der Funktion&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Gesamtlauf&amp;#039;&amp;#039;&amp;#039; || Alle bisherigen und neuen Prüfungen werden ausgeführt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Reviewfreigabe&amp;#039;&amp;#039;&amp;#039; || Mensch kontrolliert Diff Rechte und Begründung&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Kreuzworträtsel ==&lt;br /&gt;
Trage die gesuchten Fachwörter ein.&lt;br /&gt;
&amp;lt;div class=&amp;quot;kreuzwort-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Grenze || Welcher Schwellenwert trennt im Modell die Bereiche?&lt;br /&gt;
|-&lt;br /&gt;
| Regression || Wie heißt eine unerwünschte Rückkehr eines alten Fehlers?&lt;br /&gt;
|-&lt;br /&gt;
| Testfall || Wie nennt man eine konkrete Eingabe mit erwarteter Ausgabe?&lt;br /&gt;
|-&lt;br /&gt;
| Freigabe || Wie heißt die menschliche Erlaubnis nach dem Review?&lt;br /&gt;
|-&lt;br /&gt;
| Import || Wie heißt das Einlesen einer Datei in das Programm?&lt;br /&gt;
|-&lt;br /&gt;
| Refactoring || Wie heißt das Umstrukturieren bei unverändertem Verhalten?&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== LearningApps ==&lt;br /&gt;
Suche nach passenden Zuordnungs- und Übungsaufgaben zur testgetriebenen Softwareentwicklung. Der Suchlink ist kein geprüfter einzelner Lernbaustein.&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://learningapps.org/index.php?s=Testgetriebene+Softwareentwicklung+mit+KI-Agenten &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alternative ohne externe Plattform:&amp;#039;&amp;#039;&amp;#039; Verwende die sechs Begriffspaare aus dem Memory und ordne sie auf Papier zu.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Lückentext ==&lt;br /&gt;
Fülle jeweils den fachlich passenden Begriff ein.&lt;br /&gt;
&amp;lt;quiz display=simple&amp;gt;&lt;br /&gt;
{&amp;#039;&amp;#039;&amp;#039;Vervollständige den Text.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|type=&amp;quot;{}&amp;quot;}&lt;br /&gt;
Bei TDD wird vor der Implementierung ein { Test } geschrieben.&lt;br /&gt;
Ein erwarteter Fehlschlag heißt { Rot }.&lt;br /&gt;
Die kleinste passende Änderung führt zur Phase { Grün }.&lt;br /&gt;
Anschließend werden alle bestehenden Prüfungen als { Regressionstests } erneut ausgeführt.&lt;br /&gt;
Die Grenze 80 bleibt bei der Bedingung größer als 80 noch { ok }.&lt;br /&gt;
Ein negativer Wert löst in unserem Modell einen { ValueError } aus.&lt;br /&gt;
Ein Agent bekommt nur die benötigten { Berechtigungen }.&lt;br /&gt;
Die fachliche Endentscheidung liegt bei einem menschlichen { Reviewer }.&lt;br /&gt;
&amp;lt;/quiz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alternative ohne Quizdarstellung:&amp;#039;&amp;#039;&amp;#039; Schreibe die Sätze mit eigenen Formulierungen ab und ergänze die Lücken aus deinem Lernprotokoll.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Offene Aufgaben =&lt;br /&gt;
Die Aufgaben sind nach Schwierigkeitsgrad gestaffelt. Bearbeite sie lokal und mit synthetischen Werten.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Leicht ===&lt;br /&gt;
# [[Testgetriebene Entwicklung|TDD erklären]]: Erkläre Red, Green und Refactor in eigenen Worten anhand von 80 und 81.&lt;br /&gt;
# [[Grenzwert|Grenzwerte erkennen]]: Erstelle eine Tabelle mit den Werten 79, 80 und 81 sowie jeweils begründetem Sollresultat.&lt;br /&gt;
# [[Softwaretest|Fehlermeldung lesen]]: Unterscheide einen AssertionError wegen falscher Ausgabe von einem ImportError wegen eines fehlerhaften Pfads.&lt;br /&gt;
# [[Git|Änderungen erkennen]]: Markiere in zwei synthetischen Patches, welcher nur die Fachregel G1 umsetzt.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Standard ===&lt;br /&gt;
# [[Unit-Test|Rote Phase dokumentieren]]: Schreibe zuerst den Test für 81 und protokolliere den erwarteten Fehlschlag.&lt;br /&gt;
# [[Python|Kleinste Änderung implementieren]]: Ergänze die Fallunterscheidung, ohne bisherige Erwartungen zu verändern, und erkläre jede neue Zeile.&lt;br /&gt;
# [[Regressionstest|Gesamtlauf nachweisen]]: Führe alle Tests aus und notiere die Ergebnisse vor und nach der Änderung als Tabelle.&lt;br /&gt;
# [[CSV|Importprüfung spezifizieren]]: Entwickle fachliche Tests für die Kopfzeile id;wert, gültige Zahlen und den ungültigen Text abc.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Schwer ===&lt;br /&gt;
# [[Testfall|Fehlerfall verteidigen]]: Formuliere den Test für den negativen Übungswert und begründe, warum die besondere Modellregel im Anforderungstext stehen muss.&lt;br /&gt;
# [[Software-Review|Agentenpatch auditieren]]: Vergleiche zwei künstliche Diff-Vorschläge; prüfe Teständerungen, Dateigrenzen, Rechte und Regression.&lt;br /&gt;
# [[Testautomatisierung|Transfer entwerfen]]: Plane eine datengesteuerte Prüfung für zwei frei gewählte Grenzwerte und diskutiere gültige Dezimalzahlen.&lt;br /&gt;
# [[Softwarequalität|Qualitätsurteil schreiben]]: Beurteile einen angeblich grünen Testlauf, bei dem der Agent nur den neuen Test ausgeführt hat, und fordere fehlende Belege nach.&lt;br /&gt;
&lt;br /&gt;
{{:Offene Aufgabe - MOOC erstellen}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernkontrolle =&lt;br /&gt;
# [[Testgetriebene Entwicklung|TDD-Reihenfolge]]: Weise anhand der Konsolenmeldungen nach, ob der rote Test tatsächlich vor dem Produktivcode entstand.&lt;br /&gt;
# [[Anforderungsanalyse|Fachliche Präzision]]: Erkläre, wie die Ergebnisse für 80 und 81 die Formulierung „größer als 80“ prüfen und weshalb „mindestens 80“ falsch wäre.&lt;br /&gt;
# [[Versionsverwaltung|Minimale Änderung]]: Beurteile einen Diff, der neben der Grenzwertfunktion auch Test-Erwartungen und Konfigurationsdateien verändert.&lt;br /&gt;
# [[Regressionstest|Rückwärtsverträglichkeit]]: Begründe, warum zwei alte grüne Tests nötig bleiben, auch wenn der neue Test allein besteht.&lt;br /&gt;
# [[Sichere Softwareentwicklung|Berechtigungsgrenzen]]: Entscheide begründet, ob ein Agent für den Grenzwerttest Netzwerkzugriff oder Schreibrecht auf den Hauptzweig braucht.&lt;br /&gt;
# [[Datenvalidierung|Fehlerfallanalyse]]: Vergleiche die Behandlung von -1 und dem CSV-Text abc und leite zwei verschiedene Tests daraus ab.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernnachweis =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Abgabeprodukt:&amp;#039;&amp;#039;&amp;#039; Ein kleiner, lokal lauffähiger Übungsordner mit &amp;#039;&amp;#039;&amp;#039;messwerte.py&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;test_messwerte.py&amp;#039;&amp;#039;&amp;#039;, synthetischen Beispieldaten und einem kurzen Prüfprotokoll. Füge einen Diff oder eine nachvollziehbare Liste der geänderten Zeilen hinzu. Vermeide private Informationen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bewertungsbereich !! Nachweis !! Orientierung&lt;br /&gt;
|-&lt;br /&gt;
| Fachanforderung || G1 und G2 präzise einschließlich Grenzfällen erklärt || 20 Prozent&lt;br /&gt;
|-&lt;br /&gt;
| Test zuerst rot || Ursprünglicher AssertionError und zeitliche Reihenfolge belegt || 20 Prozent&lt;br /&gt;
|-&lt;br /&gt;
| Minimaler Patch || Keine sachfremden Änderungen und keine manipulierten Sollwerte || 20 Prozent&lt;br /&gt;
|-&lt;br /&gt;
| Regression grün || Vollständiger erfolgreicher Testlauf nachvollziehbar || 20 Prozent&lt;br /&gt;
|-&lt;br /&gt;
| Fehler und Verantwortung || Fehlerfall fachlich begründet, Agentenrechte und Reviewgrenzen reflektiert || 20 Prozent&lt;br /&gt;
|}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Selbsteinschätzung:&amp;#039;&amp;#039;&amp;#039; Kannst du auch ohne bezahlten KI-Dienst erklären, weshalb 81 erst rot und später grün ist, warum 80 unverändert bleibt und wer eine Änderung tatsächlich freigeben darf? Wenn nein, arbeite den betroffenen Schritt erneut durch. Dieser Lernnachweis ist eine schulische Übungsleistung, keine Sicherheitszulassung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= OER und Wikipedia =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stand der Quellenprüfung: 22.10.2026.&amp;#039;&amp;#039;&amp;#039; Der fachliche Kern basiert auf den genannten Primärquellen; versionsabhängige Funktionen und Verfügbarkeit können sich ändern. Angaben zu Medien sind den jeweils verlinkten Dateiseiten entnommen. Die Vorkursseite mit curid=60543 war über den öffentlichen Abruf nicht erreichbar; ihre Inhalte wurden nicht unterstellt.&lt;br /&gt;
&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Testgetriebene_Entwicklung Wikipedia: Testgetriebene Entwicklung] – deutschsprachige Einführung und Begriffsklärung, kollaborativ bearbeitet, kein Ersatz für Primärdokumentation.&lt;br /&gt;
* [https://docs.pytest.org/en/stable/getting-started.html pytest: Get Started] – aktuelle Online-Dokumentation, beim Abruf mit Beispielstand 9.1.1; lokales unittest ist als kostenlose Offline-Alternative vollständig ausreichend.&lt;br /&gt;
* [https://docs.pytest.org/en/stable/how-to/assert.html pytest: Assertions] – offizielle Erläuterung zu Assertions, Fehlermeldungen und Ausnahmen.&lt;br /&gt;
* [https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/security_best_practices MCP Security Best Practices] – Dokumentpfad 2026-07-28, Leitlinien für Autorisierung, Werkzeug- und Vertrauensgrenzen; sie ersetzen keine organisatorische Freigabe.&lt;br /&gt;
* [https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.600-1.pdf NIST AI 600-1: Generative AI Profile] – Ausgabe Juli 2024; freiwilliger Risikomanagementrahmen, keine Prüfung oder Zertifizierung dieser App.&lt;br /&gt;
* [https://moocwiki.org/index.php?curid=60543 Vorausgesetzter MOOCwiki-Lernkurs] – vom Auftrag vorgegebene Grundlage, beim Abruf nicht inhaltlich verifiziert.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Quellen und Nutzungsrechte der eingebundenen Wikimedia-Dateien:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Datei !! Tatsächliche Dateiseite !! Urheber !! Lizenz laut Commons&lt;br /&gt;
|-&lt;br /&gt;
| File:Test-driven development.svg || [https://commons.wikimedia.org/wiki/File:Test-driven_development.svg Wikimedia Commons] || Excirial; Vektorisierung Jarozwj || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0]&lt;br /&gt;
|-&lt;br /&gt;
| File:TDD Global Lifecycle.png || [https://commons.wikimedia.org/wiki/File:TDD_Global_Lifecycle.png Wikimedia Commons] || Xarawn || [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA 4.0]&lt;br /&gt;
|-&lt;br /&gt;
| File:Git-logo.svg || [https://commons.wikimedia.org/wiki/File:Git-logo.svg Wikimedia Commons] || Jason Long || [https://creativecommons.org/licenses/by/3.0/ CC BY 3.0]; mögliche Markenrechte gesondert beachten&lt;br /&gt;
|-&lt;br /&gt;
| File:Regresyon-testi.jpg || [https://commons.wikimedia.org/wiki/File:Regresyon-testi.jpg Wikimedia Commons] || Ezgi2015 || [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA 4.0]&lt;br /&gt;
|}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Medienhinweis:&amp;#039;&amp;#039;&amp;#039; Die Bilddateien werden unverändert unter ihren eigenen Lizenzen genutzt. Zwei YouTube-Videos sind als externe Einbettungen verlinkt, nicht als frei lizenzierte OER behauptet: [https://www.youtube.com/watch?v=H943sC8r7nQ the native web GmbH, 2022, deutsch] und [https://www.youtube.com/watch?v=hYZdIwFIy-c Matt Pocock, 2026, englisch]. Upload-Rechte und zukünftige Abspielbarkeit stehen unter Kontrolle der Anbieter; Vorschautitel wurden geprüft, eine dauerhaft garantierte Wiedergabe ist nicht möglich. Für nicht sicher verifizierte, fachlich geeignete Commons-Audio- oder Animationsdateien wird kein Dateiname erfunden. Die Textalternativen, Tabellen und lokalen Übungen ermöglichen die Bearbeitung ohne externe Medien.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://de.m.wikipedia.org/wiki/Testgetriebene_Entwicklung &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Verknüpfte Lernbereiche =&lt;br /&gt;
{| align=center&lt;br /&gt;
{{:D-Tab}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Softwareentwicklung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Testgetriebene Entwicklung]]&lt;br /&gt;
# [[Unit-Test]]&lt;br /&gt;
# [[Regressionstest]]&lt;br /&gt;
# [[Softwarequalität]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Programmierung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Python]]&lt;br /&gt;
# [[CSV]]&lt;br /&gt;
# [[Datenvalidierung]]&lt;br /&gt;
# [[Git]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Künstliche Intelligenz]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Coding-Agent]]&lt;br /&gt;
# [[Anforderungsanalyse]]&lt;br /&gt;
# [[Software-Review]]&lt;br /&gt;
# [[IT-Sicherheit]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Sprache:Deutsch]]&lt;br /&gt;
[[Category:Locale:de-DE]]&lt;br /&gt;
[[Category:Informatik]]&lt;br /&gt;
[[Category:Softwareentwicklung]]&lt;br /&gt;
[[Category:Berufsausbildung]]&lt;br /&gt;
[[Category:Programmierung]]&lt;br /&gt;
[[Category:Künstliche Intelligenz]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= aiMOOC-Projekte =&lt;br /&gt;
[[Category:AI_MOOC]] [[Category:GPT aiMOOC]]&lt;br /&gt;
{{MT}}&lt;/div&gt;</summary>
		<author><name>Glanz</name></author>
	</entry>
</feed>