TestCode를 작성하는 이유와 그 습관을 가져보기전에 정리를 한 번 하고 넘어가려고 합니다
TDD(Test Driven Development)란?
소프트웨어 개발 방법론 중 하나입니다
TDD는 개발자가 작성할 코드에 대한 테스트를 먼저 작성하고 그 뒤에 구현할 코드를 작성하는 방식입니다.
TDD를 구현하는 팀은 개발에서 더 많은 시간이 걸릴수도 있습니다 하지만 시간이 오래걸린만큼 결함이 거의없는 경향이 있습니다
이처럼 TDD를 사용하면 코드 품질이 형샹되며 재사용이 가능한 코드가 생성 되겠죠?
TDD의 사이클은 6단계로 나뉩니다
1. 테스트 케이스 작성: 요구 사항에 따라 자동화 된 테스트 사례를 작성합니다.
2. 모든 테스트 케이스를 실행: 현재 개발된 코드에서 자동화 된 테스트 케이스를 실행합니다
3. 해당 테스트 케이스에 대한 코드를 개발: 테스트 케이스가 실패하면 테스트 케이스가 예상대로 작동하도록 코드를 작성합니다
4. 테스트 케이스를 다시 실행: 테스트 케이스를 다시 실행하고 지금까지 개발 된 모든 테이스 케이스가 구현되었는지 확인합니다
5. 코드 리팩터링: 선택할 수 있는 단계입니다 코드를 더 읽기 쉽고 유지보수가 가능하도록 리팩토링합니다
6. 새 테이스 케이스에 대해 1~5단계를 반복합니다 : 모든 테스트 케이스가 구현 될 때까지 반복합니다
이렇게 사이클을 나눠서 진행하면 후에 좀 더 완벽한 코드가 나옵니다
다음으로는 BDD (Behavior Driven Development)
직역해서 행동 주도 개발이라고 말할 수 있습니다
사용자의 행위까지 생각하고 테스트하며 개발을하는 과정으로써 BDD는 TDD의 한 종류로 속합니다
테스테 케이스자체가 요규사항이 되도록 하는 개발방식이라고 생각하면 좋을 거 같습니다
BDD는 보통 Given-When-Then 방식으로 진행됩니다
1. 특정 값을 줍니다 (Given)
2. 어떤 이벤트 발생(When)
3. 그것에 대한 결과를 보장(Then)
이런식으로 진행이 되다보니 비 전공자도 이해하기 수월합니다 어떤 맥락인지 알 수 있으니까요
TDD VS BDD의 차이
위에서 보이는 것처럼 TDD는 개발코드의 완성이 목적 BDD는 개발 결과의 검증이 목적입니다
그래서 TDD를 할 때면 시간이 오래걸리지만 오류가 없는 코드가 만들어지고 BDD를 한다면 비즈니스적 가치를 높이고 결과만 검증하기때문에 속도면에서는 빠를 수 있습니다
'스프링' 카테고리의 다른 글
[Spring] Github OAuth 2.0 + Jwt를 통해 로그인하기 (3) | 2023.05.18 |
---|---|
[Spring] Slice를 이용하여 무한스크롤 구현하기 (0) | 2023.02.12 |
[Spring] Spring Security이용한 JWT 로그인 구현기 (1) | 2023.01.28 |
[Spring] JWT Refresh Token 어디에 저장해야 할까? 그리고 꼭 저장해야 할까? (0) | 2023.01.25 |
[Spring] 자바의 대표적인 빌드 관리 도구 Maven vs Gradle 차이 (0) | 2023.01.04 |