0Pricing
Lua Academy · Lezione

Perché eseguire test

Individui i bug prima degli utenti.

Perché eseguire test è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.

Perché eseguire i test

I test automatizzati sono codice che verifica altro codice. Invece di eseguire manualmente un programma e controllarne rapidamente l'output, scrive piccole asserzioni che il test runner verifica al posto suo.

Per Lua, il framework più usato è busted. Offre una sintassi chiara per descrivere il comportamento e indicare se i test sono superati o falliti.

Il costo dell'assenza di test

Senza test, ogni modifica è un rischio. Risolve un bug e ne rompe silenziosamente un altro. Man mano che la base di codice cresce, controllare tutto manualmente diventa impossibile.

I test fungono da rete di sicurezza. Quando esegue un refactoring, una suite di test con esito positivo conferma che il comportamento è stato preservato.

Il primo file di test

Un file di test di busted si trova solitamente in una cartella spec/ e termina con _spec.lua. Al suo interno descrive ciò che sta verificando.

Ecco l'esempio utile più semplice. Verifica che la semplice aritmetica funzioni.

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

Eseguire busted

Installi busted con LuaRocks: luarocks install busted. Esegua quindi il comando busted nella directory principale del progetto.

Il comando individua i file che terminano con _spec.lua, esegue ogni blocco it e stampa un punto per ogni test superato e una F per ogni test fallito.

Verificare il proprio modulo

I test reali importano il modulo sottoposto a test con require. Ne chiamano le funzioni e verificano il risultato con asserzioni.

Supponga di avere un modulo calculator.lua che restituisce una tabella di funzioni.

local calc = require("calculator")

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

I test come documentazione

I test ben scritti fungono anche da documentazione vivente. Un nuovo sviluppatore può leggere il file spec e comprendere esattamente come dovrebbe comportarsi una funzione.

Poiché le descrizioni sono semplici stringhe, si leggono quasi come frasi: "calculator moltiplica".

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

Cicli di feedback rapidi

Il vero potere dei test è la velocità. Eseguire un'intera suite richiede pochi secondi, molto meno tempo rispetto a fare clic manualmente nell'app.

Può persino eseguire busted in modalità watch o indirizzarlo a un singolo file per mantenere rapido il feedback durante lo sviluppo.

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

Individuare le regressioni

Una regressione è un bug che ricompare in codice che prima funzionava. Quando trova un bug, la procedura consigliata è scrivere prima un test che lo riproduca.

Quando il test fallisce, corregga il codice finché non viene superato. Quel test proteggerà ora dal ritorno del bug.

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

Cosa rende valido un test

I test validi sono veloci, isolati e deterministici. Non dovrebbero dipendere dalla rete, dal tempo o da valori casuali, a meno che questi aspetti non siano controllati.

Ogni test dovrebbe verificare un comportamento chiaro. Se un test fallisce, il nome dovrebbe indicare cosa si è rotto senza doverne leggere il corpo.

Piramide dei test

La piramide dei test suggerisce molti piccoli test unitari, un numero minore di test di integrazione e pochissimi test end-to-end. I test unitari sono economici e veloci, quindi è opportuno privilegiarli.

busted è principalmente uno strumento per i test unitari, ma può utilizzarlo anche per i test di integrazione.

La sicurezza necessaria per cambiare

Il beneficio più importante dei test è la sicurezza. Con una suite affidabile può eseguire refactoring anche significativi, aggiornare le dipendenze e distribuire più velocemente.

Questo corso insegna busted dalle basi: struttura, asserzioni e test double come mock e spy.

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

Verifica rapida

Verifichi la sua comprensione del motivo per cui si scrivono i test.

Riepilogo

I test sono codice che verifica altro codice. busted è il principale framework di Lua: individua i file _spec.lua e segnala se i test sono superati o falliti.

I test validi sono veloci, isolati e deterministici. Individuano le regressioni, fungono da documentazione e danno la sicurezza necessaria per modificare liberamente il codice.

Domande Frequenti

La lezione «Perché eseguire test» è gratuita?

Sì — il testo completo di «Perché eseguire test» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.

Cosa imparerò in «Perché eseguire test»?

Individui i bug prima degli utenti. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Lua Academy?

Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Perché eseguire test»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Lua Academy?

Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché eseguire test
  2. Blocchi describe e it
  3. Asserzioni
  4. Mock e spy
← Torna a Lua Academy