26.10.2015 Views

Modern PHP - 맛보기 PDF

조시 록하트 저 | 정병렬 역 | 한빛미디어 | 2015년 10월 | 22,000원

조시 록하트 저 | 정병렬 역 | 한빛미디어 | 2015년 10월 | 22,000원

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!