[Testing] TDD (Test Driven Development) 개념

Song-YunMin·2021년 5월 5일
2

TDD (Test Driven Development)란?

TDD의 정의

테스트가 개발을 이끌어 나간다.

TDD란 테스트를 먼저 만들고, 테스트를 통과하기 위한 로직을 작성하는 것입니다. 즉, 만드는 과정에서 테스트를 먼저 작성하고, 그걸 통과하는 코드를 만들고를 반복하면서 제대로 동작하는지에 대한 피드백을 적극적으로 받는 것입니다.

행동 레벨에서의 TDD 개념

보통은 SW개발을 진행할 때 코딩이 끝난 후에 테스트를 합니다. TDD는 이러한 순서를 바꿔서 소프트웨어 개발 과정을 진행하는 것인데, 이를 적용한 사례는 아래와 같습니다.

예를 들어 생년월일(input)을 입력받으면, 현재 나이(output)를 출력하는 프로그램을 개발한다고 가정해 보겠습니다.

  1. 2015, 2018(태어난 해, 올해 연도) → 만 3살이 출력되는 프로그램을 만들겠다고 생각을 해 둡니다.
  2. 2015, 2018을 입력하면 2가 나오는 테스트 프로그램(테스트 코드)을 만듭니다.
  3. 그 다음, 그 테스트를 통과할 로직(1을 목표로 작성한 코드)을 만듭니다.
  4. 테스트 프로그램을 이용하여, 이 프로그램을 실행합니다.
  5. 만약 테스트에 통과했다면, 새로운 테스트를 추가합니다. (ex: 생월을 추가했을때 계산하는 프로그램)
  6. 위 작업을 반복합니다.

추상 레벨에서의 TDD 개념

결정과 피드백 사이의 갭에 대한 인식, 더 나아가 결정과 피드백 사이의 갭을 조절하기 위한 테크닉이라고도 할 수 있습니다.

TDD는 프로그래밍 기법이나 기술적인 느낌보다는 심리적인 것으로 볼 수 있습니다.

  • 결정(decision)
    • 프로그램을 개발하다 보면, '이 방법으로 해야지', '이 부분은 이걸 이용해서 짜야지' 라는 것을 결정하게 됩니다.
  • 피드백(feedback)
    • 프로그램을 하다보면 성공/실패(에러)라는 피드백을 받게 됩니다.

이 둘(결정과 피드백) 사이에 갭이 생기게 됩니다.

갭이 커질수록 문제가 되며, 개발자 본인이 그 갭을 모를수도 있습니다. 이렇게 되면 더 큰문제가 발생합니다.

Reference

TDD(Test Driven Develoment)의 정의와 효과

profile
고독한 서버 개발 3년차

0개의 댓글