- TSLint와 함께 사용할 수 있는 테스트 커버리지 도구 소개

목차

테스트 커버리지란?

테스트 커버리지는 소프트웨어 테스트 중 실행된 코드의 비율을 측정하는 도구입니다. 테스트 커버리지를 통해 우리는 어떤 부분이 제대로 테스트되지 않았는지, 테스트가 부족한 부분을 식별할 수 있습니다. 이는 코드의 품질을 향상시키고 버그를 미리 예방하는 데 도움이 됩니다.

TSLint의 장점

TSLint는 TypeScript 코드의 문제를 정적으로 분석하여 에러나 버그를 예방하는 도구입니다. TSLint를 사용하면 코드의 가독성을 높이고 일관된 코딩 스타일을 유지할 수 있습니다. 또한, TSLint는 다양한 규칙을 제공하여 개발자들이 코드를 더욱 안전하고 효율적으로 작성할 수 있도록 돕습니다.

테스트 커버리지 도구 소개

TSLint와 함께 사용할 수 있는 몇 가지 테스트 커버리지 도구가 있습니다. 여기서는 Istanbul과 istanbul-instrumenter-loader를 예시로 들어 설명하겠습니다.

1. Istanbul

Istanbul은 자바스크립트와 TypeScript 코드의 테스트 커버리지를 측정하는 도구입니다. Istanbul은 코드 실행 경로를 추적하여 어떤 부분이 실행되었는지 확인하고, 테스트 커버리지 보고서를 생성합니다. 이를 통해 어느 부분이 더 테스트가 필요한지 식별할 수 있습니다.

2. istanbul-instrumenter-loader

istanbul-instrumenter-loader는 Webpack과 함께 사용되는 도구로, 코드를 커버리지 분석을 위해 변환하는 역할을 합니다. 이 도구를 사용하면 Webpack 빌드 시 코드를 변환하여 Istanbul로 테스트 커버리지를 확인할 수 있습니다.

테스트 커버리지 도구의 사용법

아래는 Istanbul과 istanbul-instrumenter-loader를 사용하는 예제 코드입니다.

// app.ts
import { sum } from './math';

console.log(sum(2, 3));

// math.ts
export function sum(a: number, b: number): number {
  return a + b;
}

위 코드를 테스트하기 위해 Istanbul을 사용하려면 다음 명령을 실행합니다.

istanbul cover ./node_modules/mocha/bin/_mocha -- test/*.ts

이제 Istanbul은 코드를 실행하고 테스트 커버리지 보고서를 생성합니다. 보고서에서는 각 함수와 라인이 얼마나 테스트되었는지를 확인할 수 있습니다.

Webpack과 함께 istanbul-instrumenter-loader를 사용하는 경우, 웹팩 설정에 다음과 같이 추가하면 됩니다.

module.exports = {
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        exclude: /node_modules/,
        use: [
          'istanbul-instrumenter-loader',
          'ts-loader'
        ]
      }
    ]
  }
};

위와 같이 설정한 후 웹팩 빌드를 실행하면 Istanbul을 통해 테스트 커버리지를 확인할 수 있습니다.

마무리

테스트 커버리지 도구를 사용하면 소프트웨어 개발과 테스트의 효율성을 높일 수 있습니다. TSLint와 함께 사용할 수 있는 다양한 테스트 커버리지 도구들이 있으니 프로젝트에 맞게 선택하여 사용해보세요.

참고 자료