1주차 세션에서 jun이 TDD를 7단계로 체화하는 방법에 대해 세션을 진행하였다. 우선, 아래의 방식을 최대한 따라하며 나만의 방법을 정립해 나아가야겠다. 😉
전체 문제가 해결되었을 때 어떤 상태일지 상상해보기. 결국 내가 뭐하려는 걸까?
적당한 난이도로 문제를 쪼개거나 변형하기. 단, 핵심을 포함하게
1. 경주 셋팅
- 자동차 이름(참여자)를 입력 받는다.
2. 경주 진행
- 전진 조건을 정하고,
- 랜덤으로 차를 전진시키고,
- 경주를 하고,
- 각 자동차별 진행 결과 출력
3. 우승자 출력
- 우승자를 출력하고, 여러명인 경우 ,를 이용하여 보여준다.
- 참고로 우승자는 제일 멀리 간 사람이다.
핵심과 가까우면서, 지금 내 상태에서 비교적 쉽게 할 수 있는 적절한 것을 하나 선택한다.
이걸 먼저 동작되게 함으로써 뒤에 구현할 기능들이 수월해지는가.
이걸 먼저 하기 때문에 1번에 가까워지거나, 1번을 구현하는데 있어 내가 더 유리해지는가
결과의 모습이 뭔지 구체화하고 시뮬레이션한다.
자동차 입력 받기,
자동차 이름을 입력 받는 그 인터렉션에서 어떤 상황들이 있을 수 있을지, 예외케이스를 포함해서!
- 빈값인 상태에서 엔터를 치는 경우
- 자동차를 너무 많이 입력하는 경우
- 같은 자동차 이름을 입력하는 경우도 있을수 있고
- 특수문자를 넣은경우도 있을 수 있고
- 가나,다라,,,마라
- 너무 긴 이름의 자동차 이름을 입력한 경우도 있을 수 있고
우리가 일반적으로 보는 TDD 사이클이 여기서 진행된다
1. 실패하는 테스트 코드를 작성한다. (빈값인 상태에서 엔터를 치는 경우, 프로그램이 종료된다)
2. 테스트를 통과할 만큼의 개발 코드를 작성
3. 리팩터링
jest라는 도구를 이용해서 진행을 할껀데, 계산기 온보딩 미션에서 기본적인 연습을 해보셨다면 좀 더 수월하게 진행하실 수 있을 거고
리팩터링을 하면서 중복을 줄이거나 의도를 드러나게 한다.
리팩터링하고 나서는 기존의 테스트 코드가 잘 동작하는지 확인한다
- 테스트를 가장 먼저 작성한다. 만족하는 코드가 없는 상태이므로 테스트는 실패함
- 테스트를 통과하는 코드를 작성한다.
- 리팩터링: 중복이 보이거나 더 개선할 방법이 있다면 코드를 개선한다.
- 실패할 테스트를 작성하기 전에는 아무런 프로덕션 코드도 작성하지 않는다.
- 실패할 테스트 말고는 작성하지 않는다.
- 현재
실패한 테스트를 만족시키는 코드 외에는 작성하지 않는다
.
- 실행 속도가 빨라야 함.
- 내부 구현(테스트하지 않는 부분)을 변경했다고 해서 테스트가 실패하면 안된다.
인터페이스(입출력 위주)를 중심으로 작성
.- 버그를 찾을 수 있어야 한다. 만들었다고 끝이 아님
테스트 시나리오를 잘 설정
해야 함.- 테스트
결과에 일관성
이 있어야 한다. 코드가 변하지 않았다면 테스트 결과는 항상 동일 해야 한다.의도가 명확히 드러나야 한다
.