본문 바로가기

node.js (OctoberSkyJs)

[특별번역] 바우즈(Vows), node.js를 위한 비동기 행위 주도 개발(BDD) 프레임워크

node.js용 테스트 프레임워크로 expresso 만은 조금 부족한 듯 하고, 조만간 모종의 부탁도 받을 것 같아서 관련 프레임워크들을 알아보았습니다. 몇가지 중에서 우선 Vows를 학습한 다음, 괜찮은 것 같아 특별 번역 페이지를 만들었습니다. 디자인이 예뻐서 디자인을 그대로 살려서 번역하고 싶더라구요.

단, 이번에 '특별번역'이라 이름 붙은 이유는 단순 번역이 아니라, 평소 BDD(Behavior Driven Developmen)에 대한 생각과 나름의 노하우를 녹이기 위해 노력하며 번역 하였기 때문입니다. 첨부파일로 덧 붙인 소스코드를 실행해 보시면 좀 더 감이 오시지 않을까 생각합니다. 물론 번역 내용을 쭉~ 따라나가면서 보셔야 더 좋습니다.

Vows 번역페이지로 이동>> Go!!


[실습용 첨부파일]


예제1) 0으로 나누기


예제2> 배열테스트


예제3> 테스트 스위트

예제4> 파일 비동기 테스트


BDD가 처음이신 분들을 위해 BDD가 뭔지부터 먼저 살짝 되살펴볼까요? :)


BDD (행위주도 개발)
BDD는 책임관계자의 관점에서 보는 애플리케이션의 행위(동작) 중 가치 있는 기능부터 개발하는 방식이다.

BDD는 세가지 측면에서 TDD와 차이점이 있다.

- 첫째, BDD는 사용자(고객)에 좀 더 가까운 고수준의 기능영역을 우선적으로 다룬다.
- 둘째, BDD는 '무엇을 테스트 할 것인가?' 즉, '현재 시스템에 들어 있지 않은 기능 중 가장 먼저 구현돼야 하는 기능은 무엇인가?"에 대한 질문이 된다.
- 셋째, 테스트 메소드 작성에 집중할 수 있는 자연 언어(natural language)적인 문장을 이용하며 그렇게 표현할 수 있는 템플릿을 제공한다.

- TDD실천법과 도구 中 (^^;


위 내용 중 첫째와 셋째를 만족시키기 위해서 테크니컬한 기술문장이 아닌, 사용자 관점의 문장으로 작성되어야 하고, 문장 자체도 자연스럽게 읽히는 조건들로 구성되며, 해당 조건들의 테스트 결과가 표시되어야 합니다. 

그런데 아시다시피 외국어, 특히 영어의 경우 주/술/목 구조로 인해 BDD 템플릿을 그대로 한글로 사용하면 어색하게 되기 십상입니다. ATDD(Acceptance TDD)도 동일한 문제를 겪고 있습니다. 문장적인 템플릿(보통 Given/When/Then)을 사용하지만, 그걸 한글로 표현 했을때는 어색해 지거나, 자연어 구조가 아닌, 명사 나열 구조가 되기 쉽습니다.

하지만 BDD의 장점을 살리고, 테스트의 요점과 문맥을 유지하려면 "번역"작업에 필요한 테크닉들이 필요합니다. 
흔한 방법으로는 문장자르기와 서술 구조 반전 입니다. (관련해서는 따로 또 포스팅을 해 보겠습니다.)

다음은 실행 결과들인데요, 한 번 살펴보세요. 한글임에도 구조상 큰 어색함은 없으실 겁니다. :)









아! 그리고 오프라인 모임을 준비하고 있습니다. 장소문제로 조금 시간이 들어가고 있는데요, 조만간 공지글을 올리도록 하겠습니다. 현재 오프모임 예정일은 11월 19일(토)입니다. :)