일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- KMS
- auth method
- Approval Test
- 하만카돈 #오라 #스튜디오 #2 #harman #kardon #aura #studio #fix #repair #수리 #shutdown #bluetooth
- Unseal
- CQRS
- AWS SQS
- 멱등성
- JSR-330
- external_url
- Vault
- approle
- json.tool
- RequestFacade
- secretid
- 제어역전
- AWS SNS
- Session invalidate
- gitlab.rb
- 명령어 대체
- shanta #bahadur
- hashicorp
- Shamir
- 샤미르
- 우아콘
- gitlab-ctl
- InheritableThreadLocal
- WooWaCon
- backtick
- MSA
- Today
- Total
인생은 여행
Approval Test 본문
책을 보다가 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개도 안 되는 것 보면 널리 사용되지 않은 이유가 있을 것 같다. 확인해 봐야겠다.