TDD / BDD
단위 테스트 (Unit Testing)
단위 테스트는 각각 하나의 행동에 대해서만 테스트를 구행하고, 서로 독립적이어야 한다.
모듈이나 객체를 구성하는 작은 단일 함수 크기에 집중하여 테스트 자체를 단순화하고 빠르게 작성, 수행한다.
단위 테스트로 변경과 상관없는 구현 코드 동작이 이상없다고 신뢰할 수 있다.
단위테스트는 네트워크, DB 등에 의존되지 않아야 한다.
TDD (Test-Driven Development)
짧은 개발 서클의 반복에 의존하는 소프트웨어 개발 프로세스
개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스 작성
해당 케이스를 통과하는 가장 짧고 가독성이 좋고 유지보수성이 뛰어난 코드 작성
일단 테스트 통과하는 코드를 작성하고 상황에 맞게 리팩토링하는 과정을 거침
말 그대로 테스트가 코드 작성을 주도하는 개발 방식
TDD Process
테스트 코드 작성 (Add a test) 새 기능을 추가하기 전 테스트 케이스를 먼저 작성한다. 개발자는 해당 기능의 요구사항과 명세를 이해하고, 사용자 케이스, 스토리 등과 함께 이해해야 한다. 이는 개발자가 코드를 작성하기 전 요구사항에 더 집중할 수 있도록 도와준다.
테스트 코드 수행 (Run all tests and see if new one fails) 새 기능 추가 시 기존에 잘 되던 기능이 작동하지 않을 수 있는데, 이를 방지하기 위해 테스트 코드를 작성한다. 새 기능 추가 시 테스트 코드를 작성하여, 새 기능과 기존 기능이 잘 작동하는지 테스트 케이스를 통해 확인할 수 있다.
코드 리펙토링 (Refactor code) 가독성, 코딩 컨벤션, 네이밍, 예외처리 등을 고려하여 유지보수, 확장하기 좋은 코드를 작성하기 위해 리펙토링 한다.
BDD (Behavior-Driven Development)
TDD에 파생된 프로그래밍 개발 프로세스
구현(Implementation)을 테스트하는 것이 아니라, 동작(Behavior)을 테스트하는 것
테스트 케이스 자체가 요구사항이 되도록 하는 방식
테스트 코드를 결합 테스트, 시나리오 테스트까지 확장하여 각각에 해당하는 문서를 대체.
어떤 것을 테스트할지, 얼마나 할지 등 테스트에 집중
Last updated