코드스테이츠_국비교육/[Section3]

56.03_[Spring MVC] 테스팅(Testing)_TDD_22.11.10

생각없이 해도 생각보다 좋다. 2022. 11. 11. 02:15

>TDD(Test Driven Development)
: 테스트 주도 개발
: 선 테스트 후 구현을 하는 방식

>TDD 방식 구현
1. 계획 의도에 맞는 테스트를 구현한다. 하지만 계획된 의도 중 세부 사항들을 제외하고 입력값을 넣었을때 출력값이 나온다 정도의 구현을 한다.
구현함에 있어 사용할 클래스나 메서드가 없어도 그냥 작성한다.

2. 사용했던 존재하지 않는 클래스와 메서드를 만들어준다. 컴파일 에러를 만들어내는 부분, 즉 없는 클래스나 메서드를 사용한 부분의 에러를 없애준다.

3. 새로운 테스트를 복사하고, 복사한 테스트를 계획된 의도 중 세부 사항들에 통과하지 못하게 구현한다.

4. 테스트가 통과하지 못하는 범위를 큰 범위부터 작은 범위로 줄여나가며 세부적으로 구현한다.

>TDD 방식 구현 요약
실패하는 테스트 작성 -> 테스트를 통과시킬 기능 구현 -> 테스트 성공 -> 리팩토링 -> 실패하는 기능을 추가한 테스트 작성 -> 추가된 기능을 통과시킬 기능 구현 -> 테스트 성공 -> .... -> 테스트 성공

>TDD 방식의 장점
: 한번에 모든 기능을 다 구현할 필요가 없다. 점진적으로 개발할 수 있다.
: 그때 그때 리팩토링하며 기능을 구현하기 때문에 리팩토링에 쓰이는 비용을 줄일 수 있다.
: 리팩토링 비용이 적기 때문에 리팩토링에 대한 부담을 줄일 수 있음.

>TDD 방식의 단점
: 익숙해지기 어려움
: 팀 단위의 개발이 일반적이기 때문에 개인이 TDD 방식을 사용하기 위해서는 팀 모두가 TDD 방식을 수용해야한다.