0Pricing
Lua Academy · Lektion

Warum testen

Finden Sie Fehler, bevor es die Nutzer tun.

Warum testen ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum überhaupt testen

Automatisierte Tests sind Code, der Ihren Code überprüft. Statt ein Programm manuell auszuführen und die Ausgabe zu beurteilen, schreiben Sie kleine Assertions, die der Test-Runner für Sie überprüft.

Für Lua ist busted das beliebteste Framework. Es bietet eine klare Syntax, um Verhalten zu beschreiben und Ergebnisse als bestanden oder fehlgeschlagen zu melden.

Die Kosten fehlender Tests

Ohne Tests ist jede Änderung ein Glücksspiel. Sie beheben einen Fehler und verursachen unbemerkt einen anderen. Mit wachsender Codebasis wird eine gründliche manuelle Prüfung unmöglich.

Tests dienen als Sicherheitsnetz. Beim Refactoring zeigt Ihnen eine grüne Testsuite, dass das Verhalten erhalten geblieben ist.

Eine erste Testdatei

Eine busted-Testdatei liegt normalerweise in einem Ordner spec/ und endet auf _spec.lua. Darin beschreiben Sie, was Sie testen.

Hier ist das kleinste nützliche Beispiel. Es prüft, ob einfache Arithmetik funktioniert.

describe("math", function()
  it("adds numbers", function()
    assert.are.equal(4, 2 + 2)
  end)
end)

busted ausführen

Sie installieren busted mit LuaRocks: luarocks install busted. Führen Sie anschließend im Stammverzeichnis Ihres Projekts den Befehl busted aus.

Das Tool findet Dateien, die auf _spec.lua enden, führt jeden it-Block aus und gibt für jeden erfolgreichen Test einen Punkt und für jeden Fehler ein F aus.

Ihr eigenes Modul testen

In echten Tests importieren Sie das zu testende Modul mit require. Sie rufen dessen Funktionen auf und prüfen das Ergebnis mit Assertions.

Angenommen, Sie haben ein Modul calculator.lua, das eine Tabelle mit Funktionen zurückgibt.

local calc = require("calculator")

describe("calculator", function()
  it("multiplies", function()
    assert.are.equal(6, calc.mul(2, 3))
  end)
end)

Tests als Dokumentation

Gut geschriebene Tests dienen zugleich als lebende Dokumentation. Eine neue Entwicklerin oder ein neuer Entwickler kann die Spec-Datei lesen und genau verstehen, wie sich eine Funktion verhalten soll.

Da die Beschreibungen einfache Strings sind, lesen sie sich beinahe wie Sätze: „calculator multipliziert“.

describe("string utils", function()
  it("trims whitespace", function()
    assert.are.equal("hi", utils.trim("  hi  "))
  end)
end)

Schnelle Feedbackschleifen

Die eigentliche Stärke von Tests ist ihre Geschwindigkeit. Das Ausführen einer vollständigen Testsuite dauert Sekunden und ist damit deutlich schneller, als eine App manuell durchzuklicken.

Sie können busted sogar im Watch-Modus ausführen oder eine einzelne Datei angeben, damit Sie während der Entwicklung schnell Feedback erhalten.

-- run only one file
-- busted spec/calculator_spec.lua

Regressionen erkennen

Eine Regression ist ein Fehler, der in Code erneut auftritt, der zuvor funktioniert hat. Wenn Sie einen Fehler finden, sollten Sie zuerst einen Test schreiben, der ihn reproduziert.

Sobald der Test fehlschlägt, korrigieren Sie den Code, bis er erfolgreich ist. Dieser Test verhindert nun, dass der Fehler zurückkehrt.

it("handles empty input", function()
  assert.are.equal(0, calc.sum({}))
end)

Was einen guten Test ausmacht

Gute Tests sind schnell, isoliert und deterministisch. Sie sollten nicht von Netzwerk, Zeit oder zufälligen Werten abhängen, sofern diese nicht kontrolliert werden.

Jeder Test sollte ein eindeutig bestimmtes Verhalten prüfen. Wenn ein Test fehlschlägt, sollte sein Name ohne Lesen des Testinhalts erkennen lassen, was kaputtgegangen ist.

Testpyramide

Die Testpyramide empfiehlt viele kleine Unit-Tests, weniger Integrationstests und sehr wenige End-to-End-Tests. Unit-Tests sind kostengünstig und schnell, daher sollten Sie sie bevorzugen.

busted ist in erster Linie ein Werkzeug für Unit-Tests, kann aber auch für Integrationstests verwendet werden.

Sicherheit beim Ändern

Der größte Vorteil von Tests ist das Vertrauen. Mit einer zuverlässigen Testsuite können Sie umfangreiche Refactorings durchführen, Abhängigkeiten aktualisieren und schneller ausliefern.

In diesem Kurs lernen Sie busted von Grund auf: Struktur, Assertions und Test-Doubles wie Mocks und Spies.

describe("feature", function()
  it("still works after refactor", function()
    assert.is_true(feature.enabled())
  end)
end)

Kurzer Test

Testen Sie, ob Sie verstanden haben, warum wir Tests schreiben.

Zusammenfassung

Tests sind Code, der Code überprüft. busted ist das führende Lua-Framework. Es findet _spec.lua-Dateien und meldet, ob Tests bestanden wurden oder fehlgeschlagen sind.

Gute Tests sind schnell, isoliert und deterministisch. Sie erkennen Regressionen, dienen als Dokumentation und geben Ihnen die Sicherheit, Code frei zu ändern.

Häufig gestellte Fragen

Ist die Lektion „Warum testen“ kostenlos?

Ja — der vollständige Text von „Warum testen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Warum testen“?

Finden Sie Fehler, bevor es die Nutzer tun. Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Lua Academy zu starten?

Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Warum testen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?

Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum testen
  2. describe- und it-Blöcke
  3. Assertions
  4. Mocks und Spies
← Zurück zu Lua Academy