TDD란?

devdo·2022년 9월 28일
0

TDD

목록 보기
1/6

테스트 코드를 작성하는 이유?

  1. 문서화 역할
  2. 코드에 결함을 발견하기 위함
  3. 리팩토링 시 안정성 확보
  4. 테스트 하기 쉬운 코드를 작성하다 보면 더 낮은 결합도를 가진 설계를 얻을 수 있음

=>결국 클린코드를 위한 길

요구사항이 수시로 변경되고 프로젝트 일정이 눈에 보이기 시작하면 테스트 코드 없이 바로 로직 구현을 하는 경우가 태반이라고 했다.

물론 신속히 개발할 수 있지만, 나중에 유지 보수 때 문제가 발생한다고 한다.

유지보수라고 하지만 새로운 기능을 요구할 때도 있다. 기존 로직에 영향을 주지 않고 코드를 작성해야 하는데 테스트 코드 없이 구현하다 보면 사이드 이펙트가 여기 저기서 터진다.

결국 유지보수기간에 코드에 대한 테스트 코드를 다시 작성하는 사태..

클린코드가 우선순위에서 밀려나서는 안되는 3가지 이유

  1. 유지보수하기 좋은 코드
    프로그래머 작업 중 가장 많은 시간을 투자하는 일이 유지보수이다. 유지보수하기 좋은 코드를 구현하는 것은 서비스의 성패를 좌우하는 중요한 요소이다. 유지보수하기 좋은 코드를 구현하는 핵심은 클린 코드 구현에 있다.
  2. 변화에 대응하는 핵심 능력
    운영 중 필연적으로 발생하기 마련인 기능 추가, 버그 수정, 레거시 코드 리뷰(이전 개발자들의 유산과도 같은 코드) 및 수정 작업과 같은 변화 자체에 확장성있게 대응하려면 클린 코드에 대한 이해와 작성 능력이 필수. 변화를 피할 수 없으면 제대로 대응하자.
  3. 프로젝트 협업 능력 향상
    읽기 좋은 클린 코드를 작성함으로서 오는 장점은 개인에게만 있지 않다. 특히 1인 개발이 아닌, 여러 개발자가 함께 참여하는 프로젝트일수록 확장성 있는 코드 작성 능력을 가진 개발자의 기여도는 높을 수 밖에 없다.

https://feel5ny.github.io/2017/12/08/TDD_01/


TDD 구조

  1. Test Driven Development (테스트 주도 개발)
  2. 프로덕션 코드보다 테스트 코드를 먼저 작성하는 개발 방법
  3. TFD(Test First Development) + 리팩토링
  4. 기능 동작을 검증 (메서드 단위)
  5. TDD 흐름

BDD

  • TDD에서 파생된 개발방법
  • Behavior Driven Development(행위 주도 개발)
  • "시나리오" 기반으로 테스트 코드를 작성하는 개발 방법
  • 하나의 시나리오는 "given, when, then 구조"를 가짐

ex) given-when-then test 구조

    @Test
    public void given_when_then(){
        // given - precondition or setup

        // when - action or the behaviour that we are going test

        // then - verify the output

    }

TDD vs BDD

목적 자체가 다르다!

1) TDD: 개발코드의 완성
2) BDD: 개발 결과의 검증

profile
배운 것을 기록합니다.

0개의 댓글