BDD로 테스트에 중독되어 보자

나라가 허락한 유일한 마약

기계인간이 BDD를 소개하다

우리 팀에서는 매주 모여서 기술 이야기를 하는 자리가 있는데, 이 중 인기 코너인 존그립의 아무 이야기 코너에서 기계인간 이종립님이 BDD에 대해 소개를 해 주셨습니다.

사내 위키에 정리해 주신 글과 함께 소개해 주셨는데 아주 매력적인 테스트 코드 작성 패턴으로 보였습니다.

기계인간의BDD소개

이렇게 이쁜 테스트 결과 화면이!?

BDD를 해 보자

기계인간님의 소개로는 어렵지 않아 보이고 예쁜 테스트 결과 화면에 매료되어 무작정 시작해 보았습니다.

우선 BDD에 대한 자세한 내용은 기계인간님의 글을 참고하도록 합니다.

대략적인 작성 방법을 알아내고, 저희 팀 공식 TDD 교관 기계인가 조우현 님과 함께 페어로 간단한 기능에 대한 테스트 코드 작성을 시작하였습니다.

기계인간의BDD소개

장교 출신인 우현 님은 테스트 코드를 페어로 작성하다 보면 이런 말씀을 자주 하십니다

'테스트 코드는 한 번에 하나만 작성합니다. 올빼미.'

적립금 만료일 계산기

적립금 만료일 계산기의 기능은 아래와 같습니다

  • 정책 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을 진행하며 위 코드를 좀 더 다듬어 보았습니다.

PR

완성!

완성된 결과 화면은 아래와 같습니다.

완료

결과가 좀 더 명확하고 읽기 쉽게 변경되었습니다.

해보세요 BDD

시험해본 기능이 단순해서 많이 써보지는 못했지만, BDD는 역시 매력적이라고 느꼈고 계속하다 보면 작성하는 재미가 있어서 중독되게 됩니다.

저희 팀에서는 BDD를 통해 개발하는 것을 현재 계속 실험 중 이기 때문에 다음에 BDD에 대한 주제로 또 만날 날이 있을 것 같습니다. 사실 한국어를 잘하는 게 제일 중요합니다.

여러분도 BDD를 한번 해보세요!