인생은 여행

Approval Test 본문

카테고리 없음

Approval Test

산떠 버하둘 2020. 11. 18. 23:08

을 보다가 Approval Test라는 새로운 용어를 발견하여 검색해 보고 알게 된 것을 정리해 본다.

 

우리말로 승인 테스트 정도로 불릴 Approval Test는 일반적인 Unit Test Framework가 사용하기 어렵다는 점을 보완하기 위하여 2008년경 Llewellyn Falcon이 만든 테스트 프레임워크이다. 참고: approvaltests.com

 

기본적인 아이디어는 다음과 같다. 프로그램은 입력을 받아서 처리하고 출력을 내놓는 하나의 박스라는 가정에서 출발한다. 이 출력을 사람이 읽을 수 있도록 문자화해서 개발자가 직접 눈으로 확인하고 정상 출력이 맞다고 하면 expected 값으로 채택하여 앞으로 수행하게되는 테스트의 기준 값으로 사용하게 되는 것이다. 이런 일련의 과정을 승인(approval)이라고 하는 것이다.

 

public class SampleArrayTest
{
  @Test
  public void testList()
  {
    String[] names = {"Llewellyn", "James", "Dan", "Jason", "Katrina"};
    Arrays.sort(names);
    Approvals.verifyAll("", names);
  }
}

처음 위 테스트 코드를 수행하면 아래와 같은 SampleArrayTest.testList.received.txt 파일이 생기면서 테스트가 실패한 것으로 표시한다.

[0] = Dan
[1] = James
[2] = Jason
[3] = Katrina
[4] = Llewellyn

이 파일 이름을 SampleArrayTest.testList.approved.txt 로 변경하면 승인되어 다음 테스트부터는 성공으로 표시한다.

 

어떻게 보면 콘솔로 값을 출력해서 눈으로 확인해 보는 원초적인 디버깅 방법과 비슷하다고 볼 수 있는데, 다른 점은 이런 과정을 파일로 출력해서 비교해 볼 수 있도록 체계화했고 일단 승인을 통과하면 그다음부터는 테스트가 자동화된다는 것이다.

 

괜찮은 아이디어라는 느낌이다. 테스트 코딩에 거부감이 있는 현장에 대안으로 사용해 볼 만한 카드 같다. 그런데 어떻게 10년도 넘은 개념을 처음 들어봤지? 테스트 코딩을 얼마 전에야 시작한 나의 무지에도 원인이 있겠지만 GitHub 자바 repository의 star가 200개도 안 되는 것 보면 널리 사용되지 않은 이유가 있을 것 같다. 확인해 봐야겠다.

Comments