TDD 교육을 하면 가장 어려워하는 점은 어디서 어떻게 시작해야할지 몰라 막막해 하는 경우이다. 기존의 개발 방식과 다르기 때문에 시작할 지점을 찾기 어려워한다. 어떤 과정을 통해 시작하는 것이 좋을까?
나는 요구사항 분석을 통해 테스트할 항목(Test Case)을 찾는 것에서 시작하도록 가이드한다. 대부분의 경우 Test Case도 없는 상태에서 무작정 시작하려다보니 막막함이 밀려온다고 생각한다. 분석 가능한 수준으로 Test Case를 찾은 후 이 목록 중 가장 단순하면서, 성공하는 기능부터 시작하도록 가이드한다. SpringCamp2013 - TDD 라이브의 최범균님 동영상을 보면 쉬운 것, 예외적인 것에서 어려운 것, 정상적인 것으로 구현으로 진행하라고 가이드하고 있다.
쉬운 것은 일치하는데 정상 Case와 예외 Case에서 갈리는데 어느 부분부터 구현하는 것이 좋은지는 잘 모르겠다.
이렇게 말로만 설명하기보다 내가 미션으로 자주 사용하는 로또 프로그램을 구현하는 예를 들어 보겠다. 다음 로또 프로그램을 구현할 때 어디서 어떻게 시작할 것인가?
로또 프로그램 미션
기능 요구사항
- 로또 구입 금액을 입력하면 구입 금액에 해당하는 로또를 발급해야 한다.
- 로또 1장의 가격은 1000원이다.
- 당첨 번호를 입력해 당첨 결과를 출력해야 한다.
- 수익률을 계산해 출력해야 한다.
로또 규칙
- 로또는 1부터 45까지의 숫자 중 6개의 번호를 임의로 선택하는데 이 번호를 맞추면 된다.
- 6개의 번호 중 6개를 모두 맞히면 1등, 5개는 3등, 4개는 4등, 3개는 5등이다.
- 2등은 5개의 번호가 일치하고 1개의 보너스볼이 일치하면 된다.
프로그램 실행 결과
구입금액을 입력해 주세요.
5000
14개를 구매했습니다.
[8, 21, 23, 41, 42, 43]
[3, 5, 11, 16, 32, 38]
[7, 11, 16, 35, 36, 44]
[1, 8, 11, 31, 41, 42]
[13, 14, 16, 38, 42, 45]
지난 주 당첨 번호를 입력해 주세요.
1, 5, 11, 19, 25, 31
보너스 볼을 입력해 주세요.
7
당첨 통계
---------
3개 일치 (5000원)- 1개
4개 일치 (50000원)- 0개
5개 일치 (1500000원)- 0개
5개 일치, 보너스 볼 일치(30000000원) - 0개
6개 일치 (2000000000원)- 0개
총 수익률은 100%입니다.
0개의 의견 from FB
0개의 의견 from SLiPP
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.