상세 컨텐츠

본문 제목

단위 테스트 소개

개인 공부/TDD

by 카페코더 2020. 6. 18. 18:03

본문

반응형

TDD와 단위 테스트의 간단한 차이부터 생각해보자.

TDD

TDD는 테스트가 주도하는 개발을 의미한다. 테스트 코드를 먼저 작성하는 것 부터 시작한다.

레드 그린 사이클

  1. RED - 항상 실패하는 테스트를 먼저 작성하고,
  2. Green - 테스트가 통과하는 프로덕션 코드를 작성하고,
  3. Refactor - 테스트가 통과하면 프로덕션 코드를 리팩토링한다.

 

단위 테스트

이번 포스팅의 메인이라 할 수 있다. 

단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 의미한다.

TDD와는 다르게, 레드 그린 사이클을 따라할 필요가 없다.

 

테스트 코드는 왜 작성해야 하는가?

  1. 단위 테스트는 개발단계 초기에 문제를 발견하게 도와준다.
  2. 단위 테스트는 개발자가 나중에 코드를 리팩토링 하거나, 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인할 수 있다. (ex: 희귀 테스트)
  3. 단위 테스트는 기능에 대한 불확실성을 감소시킬 수 있다.
  4. 단위 테스트는 시스템에 대한 실제 문서를 제공한다.
    - 단위 테스트 자체를 문서로 사용할 수 있다.
  5. System.out.println과 같이 출력된 데이터를 통해 눈으로 검증할 필요가 없어진다.
  6. 개발자가 만든 기능을 안전하게 보호한다.

5번의 경우 아주 중요한 장점이다. 작은 프로젝트라면 단순 출력데이터로 결과를 눈으로 검증하는것이 큰 문제로 작용하지 않는다. 하지만, 프로젝트의 규모가 거대해진다면, 단순히 서버 On / Off 만으로 엄청난 시간을 들이게될 수 있다. 테스트 코드의 경우 자동으로 결과를 검증해주기 때문에 더이상 수동검증은 필요가 없어진다.

6번의 경우, B라는 기능이 추가되어 테스트하는데, 기존에 잘되던 A의 기능에 문제가 생긴것이 발견되는 경우가 있다. 규모가 큰 프로젝트에서 빈번하게 발생하는 문제점인데, 이것을 방지하기 위해 프로젝트 내 모든 기능을 테스트 할 순 없다. 따라서 새로운 기능이 추가될 떄, 기존 기능이 잘 작동되는 것을 보장해주는 것이 테스트 코드다.

jojoldu 개발자는 테스트 코드를 서비스 기업에서는 특히나 강조되고 있어 100% 익혀야 할 기술이자 습관 이라 얘기했다.

 

xUnit 프레임워크

  1. Junit - Java
  2. DBUnit - DB
  3. CppUnit - C++
  4. NUnit - .net
반응형

관련글 더보기

GitHub 댓글

댓글 영역