TDD
Introducing TDD


What is Testing ?
제품이 예상하는 대로 동작하는지 확인
- 함수, 특정한 기능, UI, 성능, API 스펙 등을 확인한다.
- 원하는 대로 동작하는지 확인한다.
Why Testing ?
- 리팩토링 및 유지보수 👍
- 문서화 👍
- 코드 품질향상 및 코드간 의존성 👇
Test Pyramid 란?
1. Unit Tests(단위 테스트)
- 함수
- 모듈
- 클래스
2. Integration Test(통합 테스트)
- 여러 개의 단위들을 묶었을 때의 상호작용을 테스트
3. E2E Test(end-to-end 테스트)
- UI 테스트
- 사용자 테스트
TDD란 무엇인가 ?
Test-driven development (테스트 주도 개발)
개발 코드를 작성하기 전, 테스트 코드를 먼저 작성해나가는 (개발)방식이다.
TDD가 최근에 다시 각광받기 시작하는 이유가 무엇일까 ?
- 요구 사항 분석 및 철저한 이해도가 쏙쏙 자라난다 👍
- 사용자 입장에서 코드를 작성하게됌
- 모든 요구 사항에 대해 점검해야함
- 이에 따라 코드 설계의 퀄리티 및 코드의 퀄리티가 좋아진다.
- 내부 구현 사항보다도 인터페이스 위주로 코드를 작성
- 이에 따라 디커플링된 코드를 작성하게됌, 이는 코드 퀄리티가 좋아지는 결과를 낳는다.
- 시스템 전반적인 설계 향상
- 개발 집중력 향상
When TDD ?
팀의 일원으로서, 메인 repo에 코드를 올리기 전 혹은 코드 리뷰를 요청하기 전에는 꼭 그에 해당하는 테스트 코드를 작성하고 포함시켜 올리자.
이러한 이유는 자신의 코드가 전혀 버그가 없다거나 기존의 코드에도 아무런 나쁜 영향을 미치지 않는다는 것을 검증할 수 있기 때문이다.
또한 이러한 방식은 좋은 문서화의 효과도 누릴 수 있다.
TDD는 필수는 아니다, 하지만 테스트 코드를 함께 포함시켜 머지하는 것은 필수다! 꼭 기억하자 👍
그렇다면 TDD를 명확하게 사용하는게 좋을 때는 언제일까 ?
- 요구사항이 명확할 때
- 비지니스 로직
- 협업시 명세서(문서) 역할이 필요할 때
- 설계에 대한 고민이 필요할 때
- UI에 대한 코드에 대해서는 굳이 TDD가 필요 없을 수도 😊
# Agile# TDD