테스트 코드에 대하여

Cherry·2022년 12월 8일
0

테스트 코드는 왜 작성해야 할까?

1. 시간 단축 및 기능 추가/변경에 따른 부작용 감소

테스트 코드를 작성하면 코드 작성에 추가적인 시간이 드니까 더 오래 걸리는 거 아니냐라고 생각할 수 있지만 테스트 코드를 작성하면 오히려 개발 시간을 단축시킬 수 있다. 기능을 추가하거나 변경해야 하는 경우 코드를 수정한 뒤 전체적인 기능이 잘 돌아가는지 테스트 코드를 통해 확인할 수 있다.
즉, 하나하나 확인할 필요 없이 수정 후 테스트 코드를 실행시켜 확인만 하면 되는 것이다!

2. 결함을 사전에 발견할 수 있다

다양한 테스트 케이스를 통해 사람이 하나씩 실행하며 확인할 때에는 발견하기 어려운 결함을 사전에 발견할 수 있다.

3. 문서로서 작용할 수 있다.

이미 제작되어 있거나 참고하려는 코드를 이용할 때 테스트 코드를 통해 작성자의 의도, 사용법, 주의사항 등이 드러나게 되어 있어 문서로서 사용이 가능하다.

테스트 코드 작성 유의사항

아래의 유의사항을 참고해서 테스트 코드를 작성하면 좋다.

1. 모든 테스트는 독립적으로 실행되어야 한다.

테스트에 사용되는 변수나 값은 다른 테스트에 의존해서는 안된다.

2. 기능의 모든 케이스를 다루어야 한다.

하나의 기능에 대해 테스트 코드를 작성할 때에는 성공, 실패, 오류에 대한 케이스를 모두 다루어야 한다.

3. 가독성을 생각하며 작성해야 한다.

해당 코드가 어떠한 테스트를 작성하는지 명확히 알 수 있도록 작성해야 한다.

  • Given : 주어진 어떠한 상태에서
  • When : 어떠한 동작을 하였을 때
  • Then : 원하는 결과가 나와야 한다.

일곱 테스트 원칙

올바른 테스트 코드 작성의 기본 원칙 7가지이다.

  1. 테스팅은 결함의 존재를 보여주는 것이다.
  2. 완벽한 테스트는 불가능하다.
  3. 테스트 구성은 가능한 빠른 시기에 시작한다.
  4. 결함은 군집되어 있다.
  5. 살충제 역설: 비슷한 테스트가 반복되면 새로운 결함을 발견할 수 없다.
  6. 테스팅은 정황에 의존적이다.
  7. 오류 부재의 오해: 사용되지 않는 시스템이나 사용자의 기대에 부응하지 않는 기능의 결함을 찾고 수정하는 것은 의미가 없다.

테스트 코드의 종류

1. Unit Test (단위 테스트)

단위 테스트는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다.

  • 어디에서 오류가 발생했는지 빠르게 확인할 수 있어 디버깅 시간을 단축시켜준다.

2. Integration Test (통합 테스트)

단위 테스트가 끝난 뒤 모듈 하나하나를 결합해나가며 진행하는 테스트이다.

  • 단위 테스트와 달리 개발자가 변경할 수 없는 부분(ex. 외부 라이브러리) 까지 묶어서 검증할 수 있다.
  • 단위 테스트에서 발견하기 어려운 버그를 찾아낼 수 있다.
  • 단위 테스트보다 더 많은 코드를 테스트하기 때문에 어디에서 문제가 발생했는지 찾기 어렵다.

3. UI Test

실제 사용자들이 사용하는 화면에 대한 테스트로, 서비스의 기능이 정상적으로 작동하는지 검증하는 테스트이다.

  • 실제 앱을 사용하는 사용자의 흐름에 대해 테스트하며 UI 변경 사항으로 발생할 수 있는 문제를 사전에 차단한다.
  • 화면과 직접적으로 연관되어있는 테스트이기 때문에 실행 시간이 오래 걸리고 디자인이 변경될 때마가 테스트 코드의 수정이 필요하다.

참고
테스트 코드 작성의 중요성
Test 코드를 작성해야하는 이유와, 방법
테스트코드를 왜 작성 해야 하는 걸까?
설마 아직도 테스트 코드를 작성 안 하시나요?

profile
호기심 많은 백엔드 개발자입니다 😝

0개의 댓글