Lua Academy · Pelajaran

Cakupan Kode dan Instrumentasi Test

Ukur cakupan test dengan luacov dan tafsirkan laporan cakupan.

Pelajaran 4 dari 413 langkah

Cakupan Kode dan Instrumentasi Test adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Apa Itu Cakupan Kode?

Cakupan kode mengukur baris, percabangan, atau fungsi kode Anda yang dijalankan oleh pengujian. Cakupan yang tinggi memberikan keyakinan bahwa pengujian menjalankan kode dengan baik.

luacov: Alat Standar

luacov adalah alat cakupan standar untuk Lua. Alat ini terhubung ke lapisan debug Lua dan mencatat baris yang dijalankan.

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

Menggunakan luacov dengan Pelari Pengujian

Dengan busted atau pelari khusus, panggil require untuk luacov di awal dan luacov akan mencatat cakupan secara otomatis.

-- 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)

Membuat report

Setelah pengujian berjalan, luacov menulis berkas luacov.stats.out. Jalankan luacov-reporter untuk membuat report yang mudah dibaca manusia.

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

Membaca report

Setiap baris menampilkan: jumlah terkena, jumlah tidak terkena, dan baris sumber. Baris dengan 0 terkena adalah kode yang belum tercakup — kemungkinan kode mati atau kasus pengujian yang hilang.

Cakupan Percabangan

luacov melacak cakupan baris, bukan cakupan percabangan. Untuk cakupan percabangan, gunakan alat yang lebih canggih atau tambahkan kasus pengujian secara manual untuk setiap jalur if/else.

Pengait Cakupan Khusus

Buat pencatat cakupan minimal dengan debug.sethook untuk peristiwa baris.

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()

Ambang Cakupan

Tetapkan ambang minimum cakupan dalam CI (misalnya, 80%). Gagalkan proses pembuatan jika cakupan turun di bawahnya. Hal ini mencegah kode mati yang tidak sengaja menumpuk.

Pola Instrumentasi Pengujian

Selain cakupan, lengkapi pengujian dengan: waktu eksekusi (mendeteksi pengujian lambat), asersi jumlah pemanggilan (memverifikasi bahwa fungsi dipanggil sebanyak yang diharapkan), dan perekaman nilai (mencatat argumen yang diteruskan ke fungsi tiruan).

Objek Tiruan untuk Isolasi Pengujian

Ganti modul asli dengan objek tiruan selama pengujian untuk mengisolasi unit. Simpan fungsi asli, ganti dengan rintisan pelacakan, lalu pulihkan setelah pengujian.

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

Integrasi dengan CI

Jalankan luacov dalam alur kerja CI Anda. Unggah report cakupan ke Coveralls atau Codecov untuk melacak tren di antara commit.

Pertanyaan tentang Cakupan

Apa arti baris yang tidak pernah dijalankan dalam laporan luacov?

Ringkasan: Cakupan Kode dan Instrumentasi Pengujian

Gunakan luacov untuk mencatat cakupan baris dan membuat laporan. Tetapkan ambang batas cakupan CI. Tambahkan instrumentasi debug.sethook khusus untuk pelacakan tertentu. Gunakan objek tiruan untuk mengisolasi pengujian unit dan memverifikasi jumlah pemanggilan.

Gratis untuk memulai

Belajar Lua dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
40
Pelajaran
159

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Cakupan Kode dan Instrumentasi Test” gratis?

Ya — teks lengkap “Cakupan Kode dan Instrumentasi Test” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Cakupan Kode dan Instrumentasi Test”?

Ukur cakupan test dengan luacov dan tafsirkan laporan cakupan. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Cakupan Kode dan Instrumentasi Test” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pustaka debug secara Mendalam
  2. Debug Jarak Jauh dengan MobDebug
  3. Pembuatan Profil dengan LuaProfiler
  4. Cakupan Kode dan Instrumentasi Test
← Kembali ke Lua Academy