파트 1 - 2) 코드 품질 - 5) 테스트 자동화와 Mocha

테스트 자동화와 Mocha 링크 : https://ko.javascript.info/testing-mocha

테스팅 자동화는 테스트 코드가 실제 동작에 관여하는 코드와 별개로 작성되었을 때 가능하다.
테스트 코드를 이용하면 함수를 다양한 조건에서 실행해 볼 수 있는데, 이 때 실행결과와 기대결과를 비교할 수 있다.
테스트 방법에는 여러 방법이 있지만 여기서는 Behavior Driven Development(BDD, 행위주도 개발)을 다룬다.

거듭제곱 함수와 명세서

테스트는 코드의 구현과정에 초점을 둔다. 따라서 거듭제곱 연산자인 ** 연산자가 있지만 거듭제곱을 직접 구현해본다.
이때 만들어진 산출물을 명세서 또는 spec 이라고 부른다.

describe("pow", function() {

  it("주어진 숫자의 n 제곱", function() {
    assert.equal(pow(2, 3), 8);
  });

});

스펙은 세가지 주요 구성 요소로 이루어진다.

1) describe ("title", function() {...})
구현하고자 하는 기능에 대한 설명이 들어간다. it 블록을 한데 모아주기도 한다.

2) it("유스케이스 설명", function() {...})
첫번째 인수에는 특정 유스케이스 테스트 함수가 들어간다.
두번째 인수에는 유스케이스 테스트 함수가 들어간다.

3) assert.equal (value1, value2)
'assert.비교함수'는 value1이 제대로 동작하여 value2를 결과로 갖는지 비교하는 역할을 한다.

개발순서

  1. 명세서 초안 작성 (기본적인 테스트 포함)
  2. 명세서 초안을 기반으로 코드 작성.
  3. 코드 작동을 확인하기 위해 'Mocha'라는 테스트 프레임워크로 명세서 실행. 코드에 문제가 있으면 에러가 추력된다. 에러가 출력되지 않을 때까지코드를 수정한다.
  4. 모든 테스트를 통과하는 코드 초안 완성.
  5. 명세서에 앞에서는 고려하지 않았던 유스케이스들 추가. 5번을 수행하면 '테스트 실패' 가 발생하게 된다.
  6. 3번으로 돌아가 테스트를 통과할 때까지 코드 수정.

위 과정 중 3~6단계를 반복한다.

스펙 실행하기

before / after 는 테스트 실행 전/후에 실행되고 beforeEach / afterEach 는 각 it 전/후에 실행되어 단일 테스트에 쓰인다.
이 네가지는 주로 값을 초기화 할 때 쓰인다.

숫자를 테스트 할 때는 음수인지, 정수가 아닌지, NaN인지도 테스트 해야한다.

좋은 웹페이지 즐겨찾기