ความครอบคลุมโค้ดและการตรวจวัดการทดสอบ
วัดความครอบคลุมของการทดสอบด้วย luacov และแปลความหมายรายงานความครอบคลุม
ความครอบคลุมโค้ดและการตรวจวัดการทดสอบ เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
ความครอบคลุมโค้ดคืออะไร
ความครอบคลุมโค้ดวัดว่าบรรทัด สาขา หรือฟังก์ชันใดในโค้ดของคุณถูกเรียกใช้โดยการทดสอบบ้าง ความครอบคลุมสูงช่วยสร้างความมั่นใจว่าการทดสอบกำลังตรวจสอบโค้ดได้อย่างทั่วถึง
luacov: เครื่องมือมาตรฐาน
luacov คือเครื่องมือวัดความครอบคลุมมาตรฐานสำหรับ Lua โดยเชื่อมเข้ากับชั้นดีบักของ Lua และบันทึกว่าบรรทัดใดถูกเรียกใช้
-- Run with luacov:
luacov script.lua
-- Or require at the start of the test file:
require("luacov")การใช้ luacov กับตัวเรียกใช้การทดสอบ
เมื่อใช้ busted หรือตัวเรียกใช้ที่กำหนดเอง ให้นำเข้า luacov ตอนเริ่มต้น แล้วระบบจะบันทึกความครอบคลุมโดยอัตโนมัติ
-- 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)การสร้าง report
หลังจากการทดสอบทำงานเสร็จ luacov จะเขียนไฟล์ luacov.stats.out จากนั้นเรียกใช้ luacov-reporter เพื่อสร้าง report ที่อ่านเข้าใจได้
# After tests:
luacov-reporter
# Produces luacov.report.out with per-file line coverageการอ่าน report
แต่ละบรรทัดจะแสดงจำนวนครั้งที่ทำงาน จำนวนครั้งที่ไม่ทำงาน และบรรทัดต้นฉบับ บรรทัดที่มีจำนวนครั้งเป็น 0 คือโค้ดที่ไม่ถูกครอบคลุม ซึ่งอาจเป็นโค้ดตายหรือกรณีทดสอบที่ขาดหายไป
ความครอบคลุมสาขา
luacov ติดตามความครอบคลุมระดับบรรทัด ไม่ใช่ความครอบคลุมระดับสาขา หากต้องการความครอบคลุมสาขา ให้ใช้เครื่องมือขั้นสูงกว่า หรือเพิ่มกรณีทดสอบสำหรับเส้นทาง if/else ทุกเส้นทางด้วยตนเอง
ฮุกวัดความครอบคลุมแบบกำหนดเอง
สร้างตัวบันทึกความครอบคลุมขนาดเล็กด้วย debug.sethook สำหรับเหตุการณ์ระดับบรรทัด
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()ขีดจำกัดความครอบคลุม
กำหนดขีดจำกัดความครอบคลุมขั้นต่ำใน CI เช่น 80% และทำให้การสร้างระบบล้มเหลวหากความครอบคลุมต่ำกว่าค่านั้น วิธีนี้ช่วยป้องกันไม่ให้โค้ดตายสะสมโดยไม่ตั้งใจ
รูปแบบการวัดข้อมูลในการทดสอบ
นอกเหนือจากความครอบคลุมแล้ว ให้วัดข้อมูลในการทดสอบด้วยเวลาที่ใช้ทำงานเพื่อตรวจจับการทดสอบที่ช้า การยืนยันจำนวนครั้งที่เรียกใช้เพื่อตรวจสอบว่าฟังก์ชันถูกเรียกตามจำนวนที่คาดไว้ และการเก็บค่าที่ส่งผ่านเพื่อบันทึกอาร์กิวเมนต์ที่ส่งให้ฟังก์ชันจำลอง
การจำลองเพื่อแยกการทดสอบ
แทนที่โมดูลจริงด้วยสิ่งจำลองระหว่างการทดสอบเพื่อแยกหน่วยออกจากกัน จัดเก็บฟังก์ชันจริง แทนที่ด้วยฟังก์ชันแทนที่สำหรับติดตาม และคืนค่าฟังก์ชันเดิมหลังการทดสอบ
local realSend = http.send
local calls = {}
http.send = function(...) calls[#calls+1] = {...} end
-- run tests --
http.send = realSend -- restore
print(#calls, "send calls")การผสานรวมกับ CI
เรียกใช้ luacov ในกระบวนการ CI ของคุณ อัปโหลด report ความครอบคลุมไปยัง Coveralls หรือ Codecov เพื่อติดตามแนวโน้มระหว่างคอมมิตต่าง ๆ
คำถามเกี่ยวกับความครอบคลุม
บรรทัดที่มีการทำงาน 0 ครั้งในรายงาน luacov บ่งชี้อะไร
บทสรุป: ความครอบคลุมโค้ดและการติดตั้งเครื่องมือวัดการทดสอบ
ใช้ luacov เพื่อบันทึกความครอบคลุมของบรรทัดและสร้างรายงาน กำหนดเกณฑ์ขั้นต่ำของความครอบคลุมใน CI เพิ่มการติดตั้งเครื่องมือวัดแบบกำหนดเองด้วย debug.sethook สำหรับการติดตามเฉพาะทาง ใช้ม็อกเพื่อแยกการทดสอบหน่วยและตรวจสอบจำนวนครั้งที่เรียกใช้
เรียนรู้ Lua ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 40
- บทเรียน
- 159
คำถามที่พบบ่อย
บทเรียน “ความครอบคลุมโค้ดและการตรวจวัดการทดสอบ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ความครอบคลุมโค้ดและการตรวจวัดการทดสอบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ความครอบคลุมโค้ดและการตรวจวัดการทดสอบ”
วัดความครอบคลุมของการทดสอบด้วย luacov และแปลความหมายรายงานความครอบคลุม คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ความครอบคลุมโค้ดและการตรวจวัดการทดสอบ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม
ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ไลบรารี debug เชิงลึก
- การดีบักระยะไกลด้วย MobDebug
- การสร้างโพรไฟล์ด้วย LuaProfiler
- ความครอบคลุมโค้ดและการตรวจวัดการทดสอบ