TDD 정리

오의석·2023년 5월 9일

TDD란?

TDD 테스트 주도 개발. 테스트를 할 수 있게 코드를 설계.
(개인적인 생각으로 코드를 기능별로 함수화 하는 것이 중요하게 생각될 것으로 보임)
!!!!!!!!케이스를 잘 잡는 것이 중요함!!!!!!!!

0. 코드는 결정, 피드백의 연속

1. 코드를 먼저 설계 후, 테스트를 나중에 만들게 될 경우 -> 테스트하기 어려운 상황이 생김.

EX) 오늘 시간이 오전, 오후 인지 판별 함수에 now함수 사용 -> 테스트가 어려워짐 -> (해결 방안) 함수 매개변수로 시간을 받을 수 있게 설정.

이유
불확실성(전역변수 및 다른 API서버로 값 받기) + 부수작업(DB에 기록, 메일 발송, 시스템 외부에 뭔가를 던지지만 return이 없는경우)

2. 테스트 케이스의 수

EX) 로그인 함수의 테스트 갯수 -> 7가지( 아이디 or 비번 공백의 경우 3가지 + 아이디 or 비번 잘못된 값 3가지 + 아이디 and 비번 유효한 값)

3. 작성 방식

TDD 함수의 시작은 return에 false(fail)을 넣는 것으로 시작한다. 최악의 경우를 피하기 위함.

TIP

장점 : 디자인 패턴을 의식하지 않고 어느 정도 코드 결과물을 만들 수 있다. (테스트 코드 고민이 줄어든다.)
단점 : 테스트 케이스의 퀄리티에 다라 결과물이 달라진다. 발상의 전환에 시간이 소요된다.

추가 내용

  • 단위 테스트는 성공 경우만 봄. TDD는 단위 테스트 + 모든 FAIL CASE 확인.
    -> CI/CD를 통해 자동화하면서 확인 -> Junit or RoadRunner (시나리오 모드)
  • BDD는 TDD 다음 단계. BDD는 TEST+사용자의 사용패턴
  • 요구사항 명세서가 제대로 확립되어야만 가능
profile
끊임없이 나아가는 사람이 되어볼게요.

0개의 댓글