TDD에 최근에 관심을 많이 가지고 있었는데, 인프콘에서 좋은 강의를 보고 요약해보려 한다.
개발자들은 문제 해결을 하는 직업이라 많이 표현한다. 그렇다면 문제라는 것은 무엇인가?
"문제란 바라는 것과 인식한 것의 차이. 문제를 해결한다는 것은 바라는 것과 인식한 것을 일치시키는 것."
그렇다면 문제를 해결할려면?
9L의 물통과 4L의 물통이 있을 때, 6L의 물을 정확히 만들려면 어떻게 해야하는가? (물의 양은 무제한이라 가정한다.)

한번 해결을 해보고 내려주세요 !
먼저 요구하고 있는 것으로부터 시작해서 그것을 이미 찾은 것 처럼 가정하자L의 물이 차있다고 생각해보자.

원하는 결과는 어떤 전제로부터 이끌어 낼 수 있는지 질문한다. 즉 4L의 물통에 1L만 물을 덜어낸다면 3L의 물을 뺀 6L의 물을 남길 수 있을것이다.

9-4-4를 하면 1L의 물이 남는다 1L의 물만남는다면 앞서 생각 한 것처럼 3L는 만들수 있게 된다.

이러한 해결방법을 "거꾸로 연구하기" 라고 칭한다.
1. 요구하고 있는 것으로부터 시작해서 그것을 이미 찾은 것처럼 가정한다.
2. 원하는 결과는 어떤 전제로부터 이끌어 낼 수 있는지 질문한다.
이 방법을 테스트 코드 작성에 적용하면,
1. 실패하는 테스트를 작성한다. (요구하고 있는 것)
2. 테스트를 통과시킨다. (이미 찾은것 처럼 가정)
3. 리펙토링 한다. (어떤 전제로부터 이끌어 낼 수 있는지 질문)
TDD 첫 테스트 작성에 막막하다면, 이 단계를 따르면 도움이 될 것 같다.
내가 강의를보고 느낀점은 TDD가 단순 프로젝트에서의 에러 해결뿐 아니라 프로젝트의 진행방향, 코드의 가독성 및 퍼포먼스, 코드작성의 아이디어 등에서 도움이 된다고 많이 느꼈다. 다음 프로젝트에선 TDD를 고려해봐야지..
[출저] 인프콘2023 안타깝게도 오늘의 TDD는 실패한 것 같군요. 내일은 가능할지도...? (한윤석)