TDD 테스트 주도 개발. 테스트를 할 수 있게 코드를 설계.
(개인적인 생각으로 코드를 기능별로 함수화 하는 것이 중요하게 생각될 것으로 보임)
!!!!!!!!케이스를 잘 잡는 것이 중요함!!!!!!!!
EX) 오늘 시간이 오전, 오후 인지 판별 함수에 now함수 사용 -> 테스트가 어려워짐 -> (해결 방안) 함수 매개변수로 시간을 받을 수 있게 설정.
이유
불확실성(전역변수 및 다른 API서버로 값 받기) + 부수작업(DB에 기록, 메일 발송, 시스템 외부에 뭔가를 던지지만 return이 없는경우)
EX) 로그인 함수의 테스트 갯수 -> 7가지( 아이디 or 비번 공백의 경우 3가지 + 아이디 or 비번 잘못된 값 3가지 + 아이디 and 비번 유효한 값)
TDD 함수의 시작은 return에 false(fail)을 넣는 것으로 시작한다. 최악의 경우를 피하기 위함.
장점 : 디자인 패턴을 의식하지 않고 어느 정도 코드 결과물을 만들 수 있다. (테스트 코드 고민이 줄어든다.)
단점 : 테스트 케이스의 퀄리티에 다라 결과물이 달라진다. 발상의 전환에 시간이 소요된다.