Lua Academy · Les

Codecoverage en testinstrumentatie

Meet testdekking met luacov en interpreteer de coverage rapporten

Les 4 van 413 stappen

Codecoverage en testinstrumentatie is een gratis Lua Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.

Wat is codedekking?

Codedekking meet welke regels, vertakkingen of functies van je code door tests worden uitgevoerd. Een hoge codedekking geeft vertrouwen dat tests de code goed uitvoeren.

luacov: de standaardtool

luacov is de standaardtool voor Lua-codedekking. Deze haakt in op de Lua-debuglaag en registreert welke regels worden uitgevoerd.

-- Run with luacov:
luacov script.lua
-- Or require at the start of the test file:
require("luacov")

luacov gebruiken met een testuitvoerder

Gebruik je busted of een aangepaste uitvoerder, laad luacov dan aan het begin met require; de codedekking wordt vervolgens automatisch geregistreerd.

-- spec/all_spec.lua
require("luacov")
describe("my module", function()
  it("does something", function()
    local m = require("mymodule")
    assert.equals(m.add(1,2), 3)
  end)
end)

Een rapport genereren

Na het uitvoeren van de tests schrijft luacov een luacov.stats.out-bestand. Voer luacov-reporter uit om een voor mensen leesbaar rapport te genereren.

# After tests:
luacov-reporter
# Produces luacov.report.out with per-file line coverage

Het rapport lezen

Elke regel toont: het aantal treffers, het aantal missers en de bronregel. Regels met 0 treffers zijn code zonder dekking — mogelijke dode code of ontbrekende testgevallen.

Dekking van vertakkingen

luacov houdt codedekking per regel bij, niet per vertakking. Gebruik voor dekking van vertakkingen een geavanceerdere tool of voeg handmatig testgevallen toe voor elk if/else-pad.

Aangepaste codedekkingshook

Bouw met debug.sethook een minimale codedekkingsrecorder voor regelgebeurtenissen.

local covered = {}
debug.sethook(function(event, line)
  local info = debug.getinfo(2, "S")
  local src = info.short_src
  covered[src] = covered[src] or {}
  covered[src][line] = (covered[src][line] or 0) + 1
end, "l")
-- ... run tests ...
debug.sethook()

Drempels voor codedekking

Stel een minimale codedekkingsdrempel in CI in, bijvoorbeeld 80%. Laat het buildproces mislukken als de codedekking daaronder komt. Zo voorkom je dat per ongeluk ontstane dode code zich opstapelt.

Patronen voor testinstrumentatie

Instrumenteer tests naast codedekking ook met: uitvoeringstijd (om trage tests te detecteren), assertions over het aantal aanroepen (om te controleren of functies het verwachte aantal keer worden aangeroepen) en waardevastlegging (om argumenten voor gemockte functies vast te leggen).

Mocking voor testisolatie

Vervang echte modules tijdens het testen door mocks om eenheden te isoleren. Bewaar de echte functie, vervang deze door een stub die aanroepen bijhoudt en herstel de functie na de test.

local realSend = http.send
local calls = {}
http.send = function(...) calls[#calls+1] = {...} end
-- run tests --
http.send = realSend  -- restore
print(#calls, "send calls")

Integratie met CI

Voer luacov uit in je CI-pijplijn. Stuur codedekkingsrapporten naar Coveralls of Codecov om trends tussen commits te volgen.

Vraag over codedekking

Wat geeft een regel met 0 treffers in een luacov-rapport aan?

Samenvatting: codedekking en testinstrumentatie

Gebruik luacov om regeldekking vast te leggen en rapporten te genereren. Stel drempelwaarden voor codedekking in CI in. Voeg aangepaste debug.sethook-instrumentatie toe voor gespecialiseerde tracking. Gebruik mocks om unit-tests te isoleren en het aantal aanroepen te controleren.

Gratis beginnen

Leer Lua met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
40
Lessen
159

Veelgestelde vragen

Is de les “Codecoverage en testinstrumentatie” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “Codecoverage en testinstrumentatie”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.

Wat leer ik in “Codecoverage en testinstrumentatie”?

Meet testdekking met luacov en interpreteer de coverage rapporten Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Lua Academy te beginnen?

Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Codecoverage en testinstrumentatie”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Lua Academy?

Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. De debug-bibliotheek uitgediept
  2. Op afstand debuggen met MobDebug
  3. Profileren met LuaProfiler
  4. Codecoverage en testinstrumentatie
← Terug naar Lua Academy