Koodikattavuus ja testien instrumentointi
Mitatkaa testikattavuutta luacovilla ja tulkitkaa kattavuusraportteja.
Koodikattavuus ja testien instrumentointi on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Mitä koodikattavuus on
Koodikattavuus mittaa, mitkä koodin rivit, haarat tai funktiot testit suorittavat. Suuri kattavuus lisää luottamusta siihen, että testit kattavat koodin hyvin.
luacov: vakiotyökalu
luacov on Lua-kielen vakiotyökalu kattavuuden mittaamiseen. Se kytkeytyy Luan debug-kerrokseen ja tallentaa suoritetut rivit.
-- Run with luacov:
luacov script.lua
-- Or require at the start of the test file:
require("luacov")luacovin käyttäminen testiajon kanssa
Käyttäkää busted-testikehyksen tai mukautetun testiajon kanssa luacovia vaatimalla se ohjelman alussa, jolloin se tallentaa kattavuuden automaattisesti.
-- 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)Raportin luominen
Testien suorittamisen jälkeen luacov kirjoittaa tiedoston luacov.stats.out. Suorittakaa luacov-reporter ihmisen luettavan raportin luomiseksi.
# After tests:
luacov-reporter
# Produces luacov.report.out with per-file line coverageRaportin lukeminen
Jokaisella rivillä näkyvät osumien määrä, ohitusten määrä ja lähdekoodirivi. Rivit, joihin ei osuta kertaakaan, ovat kattamatonta koodia – mahdollisesti kuollutta koodia tai puuttuvia testitapauksia.
Haarakattavuus
luacov seuraa rivikattavuutta, ei haarakattavuutta. Haarakattavuutta varten käyttäkää kehittyneempää työkalua tai lisätkää manuaalisesti testitapaukset jokaiselle if/else-polulle.
Mukautettu kattavuushook
Rakentakaa debug.sethook-funktiolla minimaalinen kattavuuden tallennin rivitapahtumia varten.
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()Kattavuuskynnykset
Asettakaa CI:ssä kattavuudelle vähimmäiskynnys (esimerkiksi 80 %). Epäonnistuttakaa koonti, jos kattavuus laskee sen alle. Näin estätte kuolleen koodin kertymisen vahingossa.
Testien instrumentointimallit
Kattavuuden lisäksi instrumentoikaa testit seuraavasti: suoritusajan mittaus (hitaiden testien havaitsemiseen), kutsumäärien assert-tarkistukset (funktioiden odotetun kutsumäärän varmistamiseen) ja arvojen tallennus (mock-funktioille välitettyjen argumenttien tallentamiseen).
Mockit testien eristämiseen
Korvatkaa todelliset moduulit testeissä mockeilla yksiköiden eristämiseksi. Tallentakaa todellinen funktio, korvatkaa se kutsuja seuraavalla stubilla ja palauttakaa alkuperäinen funktio testin jälkeen.
local realSend = http.send
local calls = {}
http.send = function(...) calls[#calls+1] = {...} end
-- run tests --
http.send = realSend -- restore
print(#calls, "send calls")Integrointi CI:n kanssa
Suorittakaa luacov CI-putkessanne. Ladatkaa kattavuusraportit Coveralls- tai Codecov-palveluun eri commitien välisten trendien seurantaa varten.
Kattavuutta koskeva kysymys
Mitä luacov-raportissa ilmaisee rivi, jolla on 0 osumaa?
Kertaus: koodikattavuus ja testien instrumentointi
Käyttäkää luacov-työkalua rivikattavuuden tallentamiseen ja raporttien luomiseen. Asettakaa CI-ympäristön kattavuusrajat. Lisätkää mukautettua debug.sethook-instrumentointia erityisseurantaa varten. Käyttäkää mock-objekteja yksikkötestien eristämiseen ja kutsumäärien tarkistamiseen.
Opi Lua tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 40
- Oppitunnit
- 159
Usein kysytyt kysymykset
Onko oppitunti ”Koodikattavuus ja testien instrumentointi” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “Koodikattavuus ja testien instrumentointi”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Koodikattavuus ja testien instrumentointi”?
Mitatkaa testikattavuutta luacovilla ja tulkitkaa kattavuusraportteja. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Koodikattavuus ja testien instrumentointi”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?
Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- debug-kirjasto syvällisesti
- Etävirheenkorjaus MobDebugilla
- Profilointi LuaProfilerilla
- Koodikattavuus ja testien instrumentointi