테스트 커버리지

커버리지

구현 코드가 얼마나 테스트됐는지 측정 지표

$ npx jest --coverage
  • 커버리지 수치가 높다고 반드시 품질이 좋은 것이 아니다

  • 반대로 커버리지가 낮다는 것은 테스트가 부족하다는 신호

  • 커버리지는 특정 파일에 테스트를 추가해야 하는지 검토하는 계기로 활용된다.

리포트 구성

  • Stmts, Branch, Funcs, Lines 커버리지는 테스트를 실행했을 때 각 요소의 호출 여부를 백분율로 나타냄

FileStmtsBranchFuncsLinesUncovered Line

파일명

구문 커버리지

분기 커버리지

함수 커버리지

라인 커버리지

커버되지 않은 라인

  • Stmts(구문 커버리지): 구현 파일에 있는 모든 구문이 적어도 한 번은 실행됐는지 나타냄

  • Branch(분기 커버리지): 구현 파일에 있는 모든 조건 분기가 적어도 한 번은 실행됐는지 나타냄

    • if, case, 삼항연산자를 사용한 분기가 측정 대상

    • 커버리지를 정량 지표로 사용할 때 중점적으로 활용하는 핵심 지표

  • Funcs(함수 커버리지): 구현 파일에 있는 모든 함수가 적어도 한 번은 호출됐는지 나타냄

    • 프로젝트에서 실제로 사용하지 않지만 export 된 함수를 찾음

  • Lines(라인 커버리지): 구현 파일에 포함된 모든 라인이 적어도 한번은 통과됐는지 나타냄

// jest.config.ts
export default { 
  //...
  collectCoverage: true, // 테스트 커맨드 실행시 별도 옵션을 주지 않아도 리포트 생성
  coverageDirectory: "coverage",// 커버리지 리포트를 생성할 디렉터리명
}

커스텀 리포터

  • 테스트 실행 결과는 여러 리포트를 통해 확인 가능

  • jest.config.ts 에 선호하는 리포터를 추가해보자.

export default {
  reporters: [
    "default",
    [
      "jest-html-repoerters",
      {
        publicPath: "__reports__",
        filename: "jest.html",
      }
    ]
  ]
}
  • jest-html-reporters: 테스트 실행 결과를 그래프 형태로 보여줌

    • 시간이 많이 걸리는 테스트를 찾거나 정렬 기능이 있어 편리

    • 실패한 테스트에는 목록의 Action[info] 버튼이 생김 -> 해당 테스트의 상세 정보 표시됨

  • 그 외 jest-html-reporters , 깃허브에는 테스트가 실패한 부분에 코멘트를 남기는 등 다양한 리포터 존재

Last updated