#TDD #BDD #TEST #Mockito #JUnit
TDD(Test Driven Development) 테스트를 기준으로 하는 개발 방법론
BDD(Behavior Driven Development) 행동을 기준으로 하는 개발 방법론
테스트 주도로 개발을 이끌어 나가는 것. 테스트를 먼저 작성하고 나서, 테스트가 정상적으로 돌아갈 때 까지 테스트를 하면서 코드를 작성하는 작업
원하는 작업이 제대로 돌아갈 때까지 테스트와 코드 작성을 무한대로 반복하며 개발
테스트의 종류로는
각 모듈의 역할이 단순해지고 명확해진다. 즉 모듈의 크기를 줄일 수 있게 되고 모듈과 계층 간의 커플링을 적게 만들어 결국 프로젝트의 유지보수와 확장을 더 쉽게 한다
테스트 케이스를 작성하는 대신 동작 작성으로 시작하는 TDD의 확장
시나리오를 기반으로 테스트 케이스를 작성하며 함수 단위 테스트를 권장하지 않는다. 개발자가 아닌 사람이 봐도 이해할 수 있을 정도의 레벨을 권장한다. 하나의 시나리오는 Given, When, Then 구조를 가지는 것을 기본 패턴으로 권장
테스트 대상은 A 상태에서 출발하며(Given) 어떤 상태 변화를 가했을 때(When) 기대하는 상태로 완료되어야 한다. (Then)
BDD의 테스트케이스로 시나리오 검증을 하고, 해당 시나리오에서 사용하는 각 모듈들은 TDD의 테스트케이스로 검증을 하는 방법
개발자가 테스트 진행 시 어짜피 해당 테스트의 Exception을 고려 해서 개발하기 때문에 테스트를 해서 애플리케이션의 문제점을 찾기 보단 개발 하기 전 설계/기획을 한번 더 점검한다고 생각 됨