BDD로 테스트에 중독되어 보자
나라가 허락한 유일한 마약
기계인간이 BDD를 소개하다
우리 팀에서는 매주 모여서 기술 이야기를 하는 자리가 있는데, 이 중 인기 코너인 존그립의 아무 이야기
코너에서 기계인간 이종립
님이 BDD
에 대해 소개를 해 주셨습니다.
사내 위키에 정리해 주신 글과 함께 소개해 주셨는데 아주 매력적인 테스트 코드 작성 패턴으로 보였습니다.
이렇게 이쁜 테스트 결과 화면이!?
BDD를 해 보자
기계인간
님의 소개로는 어렵지 않아 보이고 예쁜 테스트 결과 화면에 매료되어 무작정 시작해 보았습니다.
우선 BDD
에 대한 자세한 내용은 기계인간님의 글을 참고하도록 합니다.
대략적인 작성 방법을 알아내고, 저희 팀 공식 TDD
교관 기계인가 조우현
님과 함께 페어로 간단한 기능에 대한 테스트 코드 작성을 시작하였습니다.
장교 출신인 우현 님은 테스트 코드를 페어로 작성하다 보면 이런 말씀을 자주 하십니다
'테스트 코드는 한 번에 하나만 작성합니다. 올빼미.'
적립금 만료일 계산기
적립금 만료일 계산기의 기능은 아래와 같습니다
- 정책 1. 지급일을 기준으로 다음 해 같은 일이 포함된 분기의 말일
- 정책 2. 지급일을 기준으로 다음 해 같은 일
- 정책 3. 지급일을 기준으로 N일 후
정책1이 조금 복잡한데 예시를 보면 이해하기가 쉽습니다.
- 2020년 1월 1일에 지급된 적립금은 그다음 해 1분기 말일인 2021년 3월 31일
- 2020년 4월 1일에 지급된 적립금은 그다음 해 2분기 말일인 2021년 6월 30일
참 쉽죠?
기능이 정해졌으니 한 번에 하나씩 테스트코드를 BDD
로 작성해 보았습니다.
테스트를 한 번에 두 개 이상 작성하려고 하면 근손실 방지를 위해 자기 반성의 시간을 가집니다.
이럴 때면 기계인간님은 이 모습을 흐뭇하게 바라보십니다.
첫 번째 결과물
BDD
에 관한 공부를 제대로 안한 티가 나는 것 같습니다.
계층형으로 보이지만 잘 읽히지는 않네요. 영문을 없애면 조금 더 읽기가 쉬워지긴 한데 좀 더 전문가의 의견을 듣고자 PR
을 통해 팀원들의 의견을 들어보았습니다.
역시 페어보다는 몹! 들어는 보았나 몹 프로그래밍!
한국어도 못 하고 영어도 못 하는 0개 국어
의 소유자인 저는 1인분도 못하기 때문에 페어로는 역시 만족할만한 결과는 안 나오는 것 같습니다.
기계인간
님과 PR을 진행하며 위 코드를 좀 더 다듬어 보았습니다.
완성!
완성된 결과 화면은 아래와 같습니다.
결과가 좀 더 명확하고 읽기 쉽게 변경되었습니다.
해보세요 BDD
시험해본 기능이 단순해서 많이 써보지는 못했지만, BDD
는 역시 매력적이라고 느꼈고 계속하다 보면 작성하는 재미가 있어서 중독되게 됩니다.
저희 팀에서는 BDD
를 통해 개발하는 것을 현재 계속 실험 중 이기 때문에 다음에 BDD
에 대한 주제로 또 만날 날이 있을 것 같습니다. 사실 한국어를 잘하는 게 제일 중요합니다.
여러분도 BDD
를 한번 해보세요!