2015년 8월 1일 토요일

자바스크립트 테스트 프레임워크 - 자스민 ( Jasmine )

자스민은  자바스크립트을 테스트하기 위한 테스트 프레임워크이다. 소개 문서에서 설명하듯이 Behavior-Driven JavaScript 으로, 테스트 케이스를 쉽게 작성할 수 있게 api 가 구성되어 있다. 자바에서의 junit 과 같은 테스트 프레임워크를 사용해본 경험이 있다면 쉽게 익힐 수 있다.

나는 새로운 언어나 기술을 익힐 때, 그 기술의 테스트 프레임워크부터 익혀서 사용하려고 노력하고 있다. 이것은 여러모로 도움이 된다. 배움의 초반에서부터 학습테스트(learning test) 을 써 봄으로서, 기술에 대한 기본적인 내용과 함께 테스트 케이스를 어떻게 써야 하는지도 알게 된다. 대개의 경우 테스트 하기 쉬운 코드가 변경이나 유지보수 하기도 편하다. 또한 어느 정도 기술을 익히고, 실무에 도입할 때에도 테스트 케이스를 이용해 점진적으로 개선해 나갈 수 있다. 동료들과 지식 공유에도 유용하다. 개인적으로 잘 만들어 둔 테스트 케이스는 그 소프트웨어의 명세(specification)가 된다고 생각한다. 이것은 그 어떤 문서보다 유용하다. 또한, 소프트웨어가 계속 발전해가는 과정에서 새로운 기능의 변경들이 기본 기능들의 깨트리지 않는지  지킴이 역활도 수행한다.

1.테스트 작성
자스민의 테스트는 아래와 같은 구조로 되어 있다.
"describe" 을 통해서 test suite을 정의한다. 이것은 여러개의 test case을 가지고 있다. 각가의 test case는 "it"을 통해서 정의한다. [라인 2]에서와 같이 첫번째 인자는 그 테스트 케이스에 대한 설명이 된다. 두번째 인자는 함수로 실제로 해당 테스트 케이스가 실행될 때 이 함수가 호출된다. "expect"  실제 함수 호출의 결과 값이나 로직이 실행되는 결과값을 가지게 하고, "toBe" 을 통해서 그 로직의 기대되는 값을 기술한다. 자스민에서는 테스트를 위한 여러 Matcher 및 API을 지원하고 있다. 이에 대한 자세한 내용은 API  문서를 참조하자.
2. 테스트 실행
그렇다면 테스트 케이스의 실행은 어떻게 해야 하는가? 먼저 자스민 릴리즈 페이지에서 자스민을 다운로드 하자. 압축을 풀어서 보면 SpecRunner.html 이 포함되어 있는 것을 알 수 있다.
[라인 15]에서는 실제 로직을, [라인 18]에서는 테스트 케이스 파일을 포함하고 있다.

그리고 이것을 브라우저를 통해서 열게 되면 아래와 같은 화면을 볼 수 있다.


























3. 도구
개발이나 테스트 케이스를 작성하면서 디버그나 콘솔 로그확인등은 매우 일상적인 작업이다. 이때 크롬이나 파이어폭스 브라우저의 개발자 도구를 이용하면 매우 편하다.



댓글 없음:

댓글 쓰기