0Pricing
Lua Academy · Aula

Por que testar

Encontre bugs antes dos usuários.

Por que testar é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.

Por que testar

Testes automatizados são código que verifica seu código. Em vez de executar manualmente um programa e examinar a saída, você escreve pequenas asserções que o executor de testes verifica por você.

Para Lua, a estrutura mais popular é o busted. Ela oferece uma sintaxe clara para descrever comportamentos e informar resultados de sucesso ou falha.

O custo de não ter testes

Sem testes, toda alteração é uma aposta. Você corrige um erro e quebra outro silenciosamente. À medida que a base de código cresce, torna-se impossível fazer uma verificação manual completa.

Os testes funcionam como uma rede de segurança. Ao refatorar, um conjunto de testes aprovado informa que o comportamento foi preservado.

Um primeiro arquivo de teste

Um arquivo de teste do busted geralmente fica em uma pasta spec/ e termina com _spec.lua. Nele, você descreve o que está testando.

Veja o menor exemplo útil. Ele verifica se a aritmética simples funciona.

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

Executando o busted

Você instala o busted com LuaRocks: luarocks install busted. Em seguida, execute o comando busted na raiz do seu projeto.

Ele localiza arquivos que terminam com _spec.lua, executa cada bloco it e imprime um ponto para cada sucesso e um F para cada falha.

Testando seu próprio módulo

Testes reais importam o módulo que está sendo testado com require. Você chama as funções dele e faz asserções sobre o resultado.

Suponha que você tenha um módulo calculator.lua que retorna uma tabela de funções.

local calc = require("calculator")

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

Testes como documentação

Testes bem escritos também funcionam como documentação viva. Uma pessoa desenvolvedora nova pode ler o arquivo de especificação e entender exatamente como uma função deve se comportar.

Como as descrições são cadeias de caracteres simples, elas parecem quase frases: "calculadora multiplica".

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

Ciclos rápidos de retorno

O verdadeiro poder dos testes está na velocidade. Executar um conjunto completo leva segundos, muito menos tempo do que percorrer manualmente um aplicativo clicando em suas telas.

Você pode até executar o busted no modo de observação ou direcioná-lo a um único arquivo para manter o retorno rápido durante o desenvolvimento.

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

Detectando regressões

Uma regressão é um erro que reaparece em um código que costumava funcionar. Quando encontrar um erro, a melhor prática é escrever primeiro um teste que o reproduza.

Depois que o teste falhar, corrija o código até ele ser aprovado. Esse teste passa a proteger contra o retorno do erro.

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

O que torna um bom teste

Bons testes são rápidos, isolados e determinísticos. Eles não devem depender de rede, tempo ou valores aleatórios, a menos que esses fatores sejam controlados.

Cada teste deve verificar um comportamento claro. Se um teste falhar, o nome deverá informar o que foi quebrado sem que seja necessário ler o corpo.

Pirâmide de testes

A pirâmide de testes sugere muitos testes unitários pequenos, menos testes de integração e pouquíssimos testes de ponta a ponta. Testes unitários são baratos e rápidos, portanto dê preferência a eles.

O busted é principalmente uma ferramenta de testes unitários, embora você também possa usá-lo para testes de integração.

Confiança para mudar

O benefício mais profundo dos testes é a confiança. Com um conjunto de testes confiável, você pode refatorar de forma agressiva, atualizar dependências e entregar mais rapidamente.

Este curso ensina busted desde os fundamentos: estrutura, asserções e dublês de teste, como simulações e espiões.

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

Verificação rápida

Teste sua compreensão sobre por que escrevemos testes.

Recapitulação

Testes são código que verifica código. O busted é a principal estrutura de testes do Lua: ele localiza arquivos _spec.lua e informa sucesso ou falha.

Bons testes são rápidos, isolados e determinísticos. Eles detectam regressões, servem como documentação e dão confiança para alterar o código livremente.

Perguntas Frequentes

A aula “Por que testar” é grátis?

Sim — o texto completo de “Por que testar” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.

O que vou aprender em “Por que testar”?

Encontre bugs antes dos usuários. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Lua Academy?

Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Por que testar”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Lua Academy?

Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Por que testar
  2. Blocos describe e it
  3. Asserções
  4. Mocks e spies
← Voltar para Lua Academy