2023. 3. 8. 07:26ㆍSpring
◎ TDD
-> 테스트 주도 개발이라는 의미로 테스트를 먼저 구현하고 구현을 하는 방식
-> 모든 조건에 만족하는 테스트를 먼저 진행하고, 조건에 만족하지 않는 테스트를 단계적으로 진행하여 실패하는 테스트를 점차 줄여나가는 방식이다.
-> 예시 상황으로 패스워드 검증 테스트를 한다고 가정한다.
패스워드의 조건으로 8~20 사이의 길이, 알파벳 대/소문자 + 숫자 + 특수문자의 조합, 알파벳 대/소문자와 숫자 제외 나머지 문자는 특수문자라고 가정한다.
-> 최초 테스트 메서드만 선언을 하면 실행 결과는 passed다.
-> 이후에 테스트 코드를 작성하면 아직 PasswordValidator 클래스가 존재하지 않아 테스트에 실패한다.
-> PasswordValidator 클래스를 작성하고, 해당 클래스에 validate(String password)메서드를 선언한다.
-> 다시 테스트 코드를 보면 빨간색 표시가 사라지고, 해당 테스트 케이스를 실행하면 passed가 나온다.
-> 이처럼 TDD는 결과가 failed인 테스트 케이스를 지속적으로 수정해가면서 테스트 케이스의 결과가 passed가 되게 하는 방식이다.
※ TDD 흐름
실패하는 테스트 -> 실패하는 테스트를 통과할 만큼의 기능 구현 -> 성공하는 테스트 -> 리펙토링 -> 실패하는 테스트와 성공하는 테스트 확인
◎ TDD 장점
-> 테스트 통과할 만큼의 기능을 구현하기 때문에 한 번에 너무 많은 기능을 구현할 필요가 없다.
-> 테스트 코드가 추가되면서 검증하는 범위를 넓혀가면서 기능 구현도 완성되어 간다.
-> 작은 기능에서 복잡한 기능을 구현하는 과정 속에서 단계적으로 테스트를 진행하여 기능 구현 과정 속에서 검증을 꾸준히 할 수 있다.
-> 리페토링 할 부분이 보이면 보일 때마다 리펙토링을 빠르게 진행하여 리펙토링 비용이 상대적으로 줄어든다.
-> 꾸준한 리펙토링으로 코드가 개선되어 코드의 품질을 유지할 수 있다.
-> 코드 수정하고 바로 테스트를 진행하여 빠르게 피드백을 받을 수 있다.
◎ TDD 단점
-> 익숙하지 않아서 공부를 많이 해야한다.
-> 팀 단위로 개발을 진행하기 때문에 TDD 사용전 팀원들간 협의가 되어야 한다.
'Spring' 카테고리의 다른 글
Spring Security (0) | 2023.03.16 |
---|---|
애플리케이션 빌드/실행/배포 (0) | 2023.03.10 |
Mockito (0) | 2023.03.08 |
단위 테스트(Unit Test) (0) | 2023.03.06 |
Spring Data JDBC 기반의 도메인 엔티티 및 테이블 설계 (0) | 2023.02.23 |