프론트/테스트

[Nuxt] TDD 적용기 - TDD 는 무엇이고 BDD 는 무엇인가

ZestLee 2023. 1. 10. 22:09

TDD

테스트 주도 개발이다

테스트 주도 개발이라 함은… 이름 그대로 테스트가 주도하는 개발이다 (…?)

함수 단위의 테스트를 권장한다

테스트 코드를 먼저 짜고, 테스트가 정상적으로 돌아갈 때까지 테스트를 하면서 코드를 작성한다

장점이 무엇일까

  1. 모듈의 역할이 단순하고, 명확해진다
  2. 만들어야 하는 기능을 좀 더 명확하게 만들 수 있다
  3. 실제 상황에서 발생할 에러를 발견할 수 있다

BDD

행동 주도 개발이다

TDD 에서 파생된 프로세스이다 (동작 작성으로 시작한다)

시나리오 기반의 테스트 케이스를 작성한다 (비개발자가 이해할 수 있을 정도로 테스트 케이스를 작성한다)

Given When Then 을 기본 패턴으로 권장한다

비즈니스 요구사항에 집중하여 개발한다

최종 사용자를 위한 동작에 중점을 둔다

장점이 무엇일까

  1. 비지니스 시나리오를 토대로 테스트 시나리오를 만들기 때문에, 비개발자와 협업하기에도 편하다
  2. 비지니스 요구 사항을 빠르게 반영할 수 있다
  3. 기획의 요구사항을 빈틈없이 설계할 수 있다

 

둘 중 어떤 것을 선택해야 하나?

여기서 알아야 할 것은…

TDD 와 BDD 는 배타적인 관계가 아닌, 상호 보완적인 관계이다

따라서 “선택” 을 하는 선택지가 아니다

BDD 로 시나리오 검증을 하고, 시나리오에서 사용되는 모듈들은 TDD 로 검증을 할 수 있다

그럼 어떻게 해야 할까

BDD 사이클 안에 TDD 사이클을 두는 건 어떨까?

요구사항이 하나 주어진다면, BDD 로 테스트를 작성하고, TDD 로 개발을 하고,
요구사항을 작성한 BDD 의 테스트를 통과시키면…? (머라는거요 🤔)

그렇다면 Vue 에서는?

Vue router, Store, Axios, Component 의 methods > TDD 로 개발

Template rendering > BDD 로 개발 (뭐 클릭하면 ㅇㅇㅇ가 ㅁㅁㅁ가 된다)

 

참고하면 좋을 자료 추가

https://tv.kakao.com/channel/3693125/cliplink/414004682