게으른개발너D

테스트 코드 작성에 대해 본문

개발/ETC

테스트 코드 작성에 대해

lazyhysong 2023. 10. 23. 17:49

 

  • 유닛 테스트 : 코드가 제대로 작동하는지 확인하기 위해 애플리케이션의 개별 모듈을 독립적으로 테스트(종속성과의 상호 작용없이)하는 것을 의미함.
  • 통합 테스트 : 다른 모듈이 그룹으로 결합될 때 잘 작동하는지 확인하는 것을 의미함.
  • 기능 테스트 : 시스템의 기능 조각(종속성과 상호 작용 할 수 있음)을 테스트하여 코드가 올바른 작업을 수행하는지 확인하는 것을 의미함. 통합 테스트와 관련이 있지만, 모든 코드가 함께 실행되는 상태에서 전체 애플리케이션의 기능을 확인하는 테스트를 의미함.

 

 

관리 방법

프로젝트를 진행하면서 가장 큰 고민 중 하나는 '테스트 코드를 어떻게 작성하고 관리하는가' 이다.

프로젝트가 커질수록, 기능이 복잡해질수록 테스트 코드를 작성하고 관리하는 것은 쉽지 않은 일이다.

이러한 상황에서 사용중인 테스팅 라이브러리를 어떻게 활용해야 할지, 어떻게 테스트 코드를 작성하고 관리할지, 팀에 맞는 활용법에 대해 고민해봐야 한다.

 

테스트 기법 / 기준 정하기

  1. 테스트 코드의 작성
    우리는 어떤 규칙을 가지고 테스트 코드를 작성해야 하는가?
  2. 테스트 커버리지 활용
    - 테스트 커버리지는 어떻게 만드는가?
    - 우리의 테스트 커버리지 목표는 무엇인가?
    - 테스트 커버리지는 어떻게 활용해야 할까?
  3. 테스트 코드 구조화
    테스트 코드를 어떻게 구조화(정의)할 것인가?

(테스트 커버리지란 시스템 및 소프트웨어에 대해 충분히 테스트가 되었는지를 나타내는 정도이다. 수행한 테스트가 얼마나 테스트 대상을 커버했는지를 나타낸다. 테스트 코드는 발생할 수 있는 모든 시나리오에 대해 작성되어야 하는데, 이때 코드 커버리지는 테스트를 수치화하여 개발자로 하여금 미처 놓친 코드의 구멍을 보완할 수 있게 해준다.)

 

테스트 커버리지 활용

테스트 커버리지는 코드가 얼마나 커버되었는 지, 소프트웨어 테스트를 진행했을 때 코드 자체가 얼마나 실행되었는지 알 수 있다.

테스트 커버리지를 만들기 위해서 별도의 모듈을 설치하는 여러 테스팅 프레임워크와 달리, Jest는 테스트 커버리지가 내장되어 있어 별도의 모듈을 설치할 필요가 없다. 테스트 커버리지를 만들려면 다음과 같이 세팅해야한다.

"scripts" : {
   "coverage": "jest --coverage"
}

세팅이 완료되면 해당 명령어를 실행한다.

// 일부의 테스트 코드만을 실행하는 경우 뒤에 폴더명 혹은 파일명을 붙여준다.
$ npm run coverage (파일명/폴더명)

아래와 같은 커버리지가 생성된다.

생성된 커버리지 활용은 이렇게 할 수 있다.

1. 커버리지 결과 점수 기반으로 목표를 정할 수 있다.

보통의 가이드라인은 60%면 용인되는 수준, 75%는 칭찬할 만한 수준, 90%는 모범적인 수준으로 본다. 하지만 비즈니스 요구에 맞춰 얼마를 달성할 것인지 정해야 한다.

2. 테스트 코드 실행이 누락되었는지 체크할 수 있다.

테스트 코드를 전체적으로 실행하다 보면 특정 function이 미 실행되는 등 예상치 못한 예외 사항을 보다 쉽게 파악할 수 있다.

 

 

 

 

 

출처

https://jestjs.io/

https://blog.imqa.io/testing-framework-jest/

'개발 > ETC' 카테고리의 다른 글

Framer  (0) 2024.06.02
[Git] CLI 1 - 버전 관리 (2)  (0) 2023.02.12
[Git] CLI 1 - 버전 관리 (1)  (0) 2023.02.12
Publishing on Github (Github Desktop)  (0) 2023.02.12
Windows Setup for Developer  (0) 2023.02.12
Comments