코드 커버리지와 테스트 계측
luacov로 테스트 커버리지를 측정하고 커버리지 보고서를 해석합니다.
코드 커버리지와 테스트 계측은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 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를 require하면 커버리지가 자동으로 기록됩니다.
-- 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)보고서 생성
테스트가 실행된 후 luacov는 luacov.stats.out 파일을 작성합니다. 사람이 읽을 수 있는 보고서를 생성하려면 luacov-reporter를 실행하십시오.
# After tests:
luacov-reporter
# Produces luacov.report.out with per-file line coverage보고서 읽기
각 줄에는 적중 횟수, 누락 횟수, 소스 줄이 표시됩니다. 적중 횟수가 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 통합
CI 처리 흐름에서 luacov를 실행하십시오. 커밋 전반의 추세를 추적하려면 커버리지 보고서를 Coveralls 또는 Codecov에 업로드하십시오.
커버리지 질문
luacov 보고서에서 적중 횟수가 0인 줄은 무엇을 의미합니까?
요약: 코드 커버리지 및 테스트 계측
luacov를 사용하여 줄 커버리지를 기록하고 보고서를 생성합니다. CI 커버리지 기준을 설정합니다. 특수한 추적을 위해 사용자 지정 debug.sethook 계측을 추가합니다. 단위 테스트를 격리하고 call 횟수를 검증하려면 모의 객체를 사용합니다.
자주 묻는 질문
“코드 커버리지와 테스트 계측” 강의는 무료인가요?
네 — “코드 커버리지와 테스트 계측” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“코드 커버리지와 테스트 계측”에서 뭘 배우나요?
luacov로 테스트 커버리지를 측정하고 커버리지 보고서를 해석합니다. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Lua Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“코드 커버리지와 테스트 계측” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- debug 라이브러리 심층 학습
- MobDebug를 이용한 원격 디버깅
- LuaProfiler를 이용한 프로파일링
- 코드 커버리지와 테스트 계측