Server) 그거 그렇게 하는거 아닌데... / TDD와 BDD에 대해

백준우·2023년 1월 8일
0

Server

목록 보기
4/4
post-thumbnail

1. 테스트의 중요성

1.1 단위 테스트
1.2 통합 테스트

2. TDD와 BDD

2.1 TDD에 대해
2.2 BDD에 대해


1. 테스트의 중요성

  • 개발을 하면서 테스트라는 말을 많이 들어봤을것이다. 배포전 테스트, 유닛테스트 , 단위테스트 , 등등 무수히 많은 테스트를 개발 혹은 협업간에 만나게된다.
  • 그렇다면 개발중 테스트는 왜 필요한 것일까라는 고민을 해봤다.

장점

  • 개발과정중 예상치 못한 문제를 미리 파악할 수 있다.
  • 작성한 코드의 의도와 작동 방식을 검증 할 수 있다.
  • 코드의 변경 혹은 리팩토링시 사이드 이펙트를 사전에 방시 할 수 있다.
  • 모듈화에 대해 한번더 되짚을 수 있다.
  • 다른사람에게 코드의 작동방식과 결과를 좀 더 확실히 입증할 수 있다.

물론, 테스트코드를 작성하면 개발에대한 시간이 늘어나고 비용이 증가하니 다소 안좋은 부분또한 발생 할 수 있다.
하지만 충분히 단점보다 이점이 많으므로 개발에 여유와 시간이 된다면 가지고 가면 도움이 많이 될것으로 보인다.

1.1 단위 테스트

  • 가장 범위가 적은 소형테스트 단위
  • 클래스 범주 내에서 작은단위의 기능에 대한 유효성을 검증하는 단계이다.
  • 단위 테스트는 매우 간단하고 명확하고 빠르게 실행된다.
  • 소프트웨어 개발시 내부구조나 구현방법을 고려하여 개발자 관점에서 테스트한다.
  • 단위테스트는 TDD와 함께할때 효과를 발휘한다.
  • ex) 유저가 새로운 모임을 생성 함

1.2 통합 테스트

  • 중형 테스트로 분류된다.
  • 서로다른 모듈 혹은 클래스간 상호작용의 유효성을 검사하는 테스트이다.
  • 개발자가 변경할 수 없는 부분(외부적 요소)를 묶어 검증하는 것이다.
  • 단위 테스트보다 테스트 코드를 작성하기가 복잡하다.
  • 하지만 단위 테스트 보다 더 넓은 범위의 종속성까지 테스트함으로써 단위 테스트 보다 좀 더 유의미한 테스트가 되는 경우가 많다.
  • ex) 싱글코어 CUP는 잘 되나 쿼드코어 CPU에서는 문제가 생긴다.

2. TDD와 BDD

2.1 TDD에 대해

  • TDD(Test Drive Development)로 말 그대로 테스트 주도 개발을 이끌어나가는 것이다.
  • 테스트를 먼저 작성하고 테스트가 끝날때 정상적으로 돌아가는지 확인하는것이다.
  • 코드를 작성하여 개발하기전 테스트를 먼저 개발하는것이다.
  • 흡사 단위테스트와 유사하다고 생각하면 되겠다.
  • TDD는 상황에 따라 다시 재설계해야하며 코드 작성중 설계가 수정되면 test부터 수정비용이 커짐

2.2 BDD에 대해

  • TDD와 비슷한 개념이며 잘 짠 TDD라고 생각하면 되겠다.
  • 프론트엔드에서 좀 더 도움이 많이되는 방법이다.
  • "이클래스는 어떤 행위를 해야한다"는 식의 행동기반 테스트이다.
  • BDD는 코드설계전에 작성되는것이라 수정되어도 비용이 줄어든다.
  • 정리

결론

  • 클린코드만큼 테스트주도 개발은 개발의 확장성과 유지보수성을 높인다.
  • 좋은 테스트를 만드는사람이되어 협업간 필요한 사람이 되도록 해야겠다.
  • 스프링에 Junit이나 Mock처럼 개발에 대한 기반 기술들을 공부하도록 해야겠다.

출처

profile
이게 되네?

0개의 댓글