Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Tests von einem Assistenten schreiben lassen

Nach dieser Lektion: Ich kann einen Assistenten um Tests bitten und beurteilen, ob jeder davon wirklich scheitern kann.

Lektion, 60 Min.5 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Fünfzehn Tests, alle grün

Ein KI-Assistent kann in einer Minute Tests für eine Funktion schreiben, und alle laufen durch. Das beruhigt.

Ein Test, der nie scheitern kann, beweist aber nichts. Diese Lektion zeigt, wie Sie einen Assistenten um Tests bitten und dann für jeden einzelnen beurteilen, ob er einen Fehler melden würde.

Am Ende dieser Lektion

Notiz

Ich kann einen Assistenten um Tests bitten und beurteilen, ob jeder davon wirklich scheitern kann.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Anforderungwas der Code tun soll, in Sätzen geschrieben
Grenzfallein Wert am Rand einer Regel7 und 8 Stück
Wirkungsloser Testein Test, der auch bei falschem Code besteht
Abschreibenein erwarteter Wert, der aus dem Code stammt
Absichtlich kaputteine falsche Kopie, an der sich Tests beweisen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Gute Tests beginnen bei der Regel

Geben Sie dem Assistenten die Regel in Sätzen und nicht nur den Code. Zum Beispiel: Ab acht Stück gibt es 5 Prozent Rabatt.

Bitten Sie um einen Fall für jedes Stück der Regel und für jeden Rand. Ein Grenzfall ist der Wert, an dem die Regel wechselt, hier 7 und 8. Der erwartete Wert stammt aus der Regel. Stammt er aus dem Code, kann der Test dem Code nur zustimmen.

Beispiel: von der Regel zu den Fällen

FallStückErwartet in CentWas der Fall prüft
Ein Stück1120Den Preis ohne Rabatt
Sieben Stück7840Den letzten Fall ohne Rabatt
Acht Stück8912Den ersten Fall mit Rabatt
Kein Stück00Den kleinsten Fall

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine mögliche Anfrage an den Assistenten

So könnte eine Anfrage lauten: „Die Regel: Ab acht Stück gibt es 5 Prozent Rabatt. Schreibe Tests für gesamtpreis(menge, cent), einen je Zeile dieser Tabelle. Schreibe die erwarteten Werte von Hand, ohne sie mit dem Code zu berechnen.“

Was der Assistent zurückgibt, ist jedes Mal anders. Lesen Sie jeden Test und prüfen Sie zuerst, ob die Grenzfälle darin vorkommen.

Ein Test muss scheitern können

Ob ein Test etwas taugt, sehen Sie so: Machen Sie den Code absichtlich kaputt. Kopieren Sie ihn mit einem kleinen Fehler und lassen Sie dieselben Tests darauf laufen. Bestehen sie noch immer, schützen sie Sie vor nichts.

Die Runs unten schreiben in einen Ordner demo-pruefung/: den guten Code, eine kaputte Kopie und zwei Prüfdateien. Beide sind von Hand geschrieben und keine Antworten eines Assistenten.

Den guten Code schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-pruefung && printf '%s\n' '// Preis fuer menge Stueck zu je cent Cent. Ab 8 Stueck gibt es 5 Prozent Rabatt.' 'function gesamtpreis(menge, cent) {' '  const brutto = menge * cent;' '  if (menge >= 8) return Math.round(brutto * 0.95);' '  return brutto;' '}' 'module.exports = { gesamtpreis };' > demo-pruefung/preise.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die kaputte Kopie schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-pruefung && printf '%s\n' '// Absichtlich kaputte Kopie: Der Rabatt beginnt erst nach 8 Stueck.' 'function gesamtpreis(menge, cent) {' '  const brutto = menge * cent;' '  if (menge > 8) return Math.round(brutto * 0.95);' '  return brutto;' '}' 'module.exports = { gesamtpreis };' > demo-pruefung/preise-kaputt.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die guten Prüfungen schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-pruefung && printf '%s\n' 'const gesamtpreis = require(process.argv[2]).gesamtpreis;' 'let fehler = 0;' 'function pruefe(name, stimmt) {' '  if (stimmt === false) {' '    fehler = fehler + 1;' '    console.log(\"fehler: \" + name);' '  }' '}' '// Faelle aus der Regel, die erwarteten Werte von Hand geschrieben.' 'pruefe(\"ein stueck\", gesamtpreis(1, 120) === 120);' 'pruefe(\"sieben stueck\", gesamtpreis(7, 120) === 840);' 'pruefe(\"acht stueck\", gesamtpreis(8, 120) === 912);' 'pruefe(\"kein stueck\", gesamtpreis(0, 120) === 0);' 'console.log(\"gut.js mit \" + process.argv[2] + \": \" + fehler + \" Fehler\");' > demo-pruefung/gut.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die schwachen Prüfungen schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-pruefung && printf '%s\n' 'const gesamtpreis = require(process.argv[2]).gesamtpreis;' 'let fehler = 0;' 'function pruefe(name, stimmt) {' '  if (stimmt === false) {' '    fehler = fehler + 1;' '    console.log(\"fehler: \" + name);' '  }' '}' '// Eine Rechnung, abgeschrieben vom Code, der vor Augen lag, samt Grenze.' 'function erwartet(menge, cent) {' '  if (menge > 8) return Math.round(menge * cent * 0.95);' '  return menge * cent;' '}' 'gesamtpreis(8, 120);' 'pruefe(\"ohne vergleich\", true);' 'pruefe(\"ist eine zahl\", typeof gesamtpreis(8, 120) === \"number\");' 'pruefe(\"gleiche rechnung\", gesamtpreis(8, 120) === erwartet(8, 120));' 'console.log(\"schwach.js mit \" + process.argv[2] + \": \" + fehler + \" Fehler\");' > demo-pruefung/schwach.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Jede Prüfung auf jeden Code anwenden

Befehl
docker exec -w /home/node/project/demo-pruefung agent sh -c "node gut.js ./preise.js; node gut.js ./preise-kaputt.js; node schwach.js ./preise.js; node schwach.js ./preise-kaputt.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Test kann den Code abschreiben

Die dritte schwache Prüfung berechnet den erwarteten Wert mit einer Kopie des Codes samt Grenze. Sie wurde beim Lesen der kaputten Kopie geschrieben und übernimmt deren Fehler. Auf der kaputten Kopie besteht sie, auf dem guten Code scheitert sie.

Das ist das Abschreiben. Es passiert, wenn der Assistent den Code vor Augen hat und die Regel fehlt. Ein erwarteter Wert muss eine von Hand geschriebene Zahl sein.

Ein häufiger Fehler

Warnung

Viele denken, je mehr Tests, desto sicherer der Code. Fünfzehn Tests, die nie scheitern können, schützen vor nichts. Zählen Sie, was ein Test fangen kann, nicht wie viele es sind: Machen Sie den Code absichtlich kaputt und sehen Sie, welche Tests rot werden.

Beispiel: vier Läufe

PrüfungCodeAusgabe
gut.jspreise.jsgut.js mit ./preise.js: 0 Fehler
gut.jspreise-kaputt.jsfehler: acht stueck, dann 1 Fehler
schwach.jspreise.jsfehler: gleiche rechnung, dann 1 Fehler
schwach.jspreise-kaputt.jsschwach.js mit ./preise-kaputt.js: 0 Fehler

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Weiter: an einer anderen Änderung ausprobieren

Jetzt ist ein guter Moment, diese Ideen an einer anderen Änderung auszuprobieren. Der Fehler des Labs bleibt unberührt, er ist die Arbeit des Labs. Versuchen Sie lieber eine neue Rabattregel in einer Kopie von shop.js.

Schreiben Sie die Regel in Sätzen, bitten Sie den Assistenten um Tests und machen Sie dann Ihren Code absichtlich kaputt. Notieren Sie jeden Test, der grün bleibt, und warum er nichts sieht.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.