You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
10.4.3 행위 주도 개발(BDD)<br />
행위 주도 개발 Behavior-Driven Development (BDD)은 애플리케이션이 행동하는 방식을 이야기처럼<br />
묘사하는 개발 방법론이다. BDD에는 스펙BDD SpecBDD 와 스토리BDD StoryBDD 유형이 있다.<br />
스펙BDD는 인간 친화적인 우아한 언어로 애플리케이션 구현을 묘사하는 단위 테스트 유형이<br />
다. 스펙BDD를 적용한 단위 테스트 도구는 <strong>PHP</strong>유닛과 동일한 역할을 수행하며, <strong>PHP</strong>유닛<br />
이 사용하는 xUnit 아키텍처와는 달리 사람이 이야기하는 것처럼 애플리케이션의 행동을 묘<br />
사한다. 예를 들어 <strong>PHP</strong>유닛으로 작성한 테스트 메서드명이 testRenderTemplate()이라면<br />
이에 상응하는 스펙BDD 테스트 메서드명은 itRendersTheTemplate()이 된다. 스펙BDD<br />
테스트는 헬퍼 메서드도 이와 유사하게 $this->shouldReturn ( ), $this->shouldBe ( ),<br />
$this->shouldThrow()처럼 이름을 짓는다. 스펙BDD 테스트는 이처럼 xUnit 계열 도구보<br />
다 훨씬 읽고 이해하기 쉬운 언어를 사용한다. 대표적인 스펙BDD 테스트 도구로는 <strong>PHP</strong>스펙<br />
<strong>PHP</strong>Spec<br />
(http://www.phpspec.net/)이 있다.<br />
스토리BDD 도구는 스펙BDD 테스트처럼 인간 친화적인 이야기를 사용하지만 하위 수준 구<br />
현보다는 상위 수준 행동에 관심이 있다. 예를 들자면 스토리BDD 테스트는 여러분의 코드가<br />
<strong>PDF</strong> 보고서를 작성하고 이메일로 발송하는지 검증한다. 스펙BDD 테스트라면 이 경우 <strong>PDF</strong><br />
생성 클래스 메서드가 매개변수를 입력받아 올바르게 <strong>PDF</strong> 파일을 생성하는지 검증할 것이다.<br />
둘 사이의 차이는 바로 테스트 영역이다. 스토리BDD는 프로젝트 관리자의 관점에서 작성한<br />
이야기(예: “보고서를 생성하고 나에게 이메일로 보내야 함”)와 비슷하고 스펙BDD 테스트는<br />
개발자의 관점에서 작성한 이야기(예: “이 클래스 메서드는 데이터 배열을 전달받아 <strong>PDF</strong> 파<br />
일에 기록해야 함”)와 비슷하다. 스토리BDD와 스펙BDD 도구는 상호 배타적이지 않으며 좀<br />
더 포괄적인 테스트셋을 구축하기 위해 종종 함께 쓰인다. 스토리BDD 테스트는 보통 포괄적<br />
인 애플리케이션 동작을 정의하기 위해 프로젝트 관리자와 함께 작성하며, 스펙BDD 테스트<br />
는 애플리케이션 구현을 설계하고 구축할 때 작성한다. 대표적인 스토리BDD 테스트 도구로<br />
는 비햇 Behat (http://behat.org/)이 있다.<br />
TIP<br />
스토리BDD 테스트는 구체적인 구현이 아닌 비즈니스 로직을 묘사하는 테스트다. 좋은 스토리BDD 테스<br />
트는 “장바구니에 상품을 추가할 때 증가하는 결제 금액”을 검증하고, 나쁜 스토리BDD 테스트는 “본문이<br />
product_id=1&quantity=2인 HTTP PUT 요청을 /cart URL에 보낼 때 증가하는 결제 금액”을 검증한<br />
다. 전자는 상위 수준에서 비즈니스 로직만을 포괄적으로 설명하는 반면 후자는 특정 구현에 대해 너무 구체<br />
적으로 묘사하고 있다.<br />
10장 테스팅<br />
83