Inflearn brand logo image

인프런 커뮤니티 질문&답변

오개발님의 프로필 이미지
오개발

작성한 질문수

Spring Boot TDD - 입문부터 실전까지 정확하게

시스템의 상태

질문드립니다.

작성

·

122

·

수정됨

1

안녕하세요 TDD에 관심 있는 개발자입니다.

좋은 강의 만들어주셔서 감사합니다.

 

강의에 대한 질문이 아닌 실무적인 질문드립니다.

뒷 내용을 못봐서,, 지금까지 보면서 궁금했던 내용 질문드립니다.

 

  1. 상황마다 다르겠지만 형상관리하는 시점이 언제정도 될까요? 제 생각엔 Green 상태에 커밋을 할텐데 Green 상태는 단순히 api 상태값만 통과하는 기준일까요..?

  2. 디비 먼저 설계가 아닌 인터페이스설계 테스트를 하고 필요시 디비 스키마를 작성한다라고 이해 하였습니다만 결국 해당 테스트 시나리오를 전부 만족 한다면, API 개발이 끝난 상태라고 할수 있는 건가요?

  3. 리팩토링은 선택이라고 강의에서 이야기 해주셨는데 예를 들어서 @Valid 라는 애노테이션으로 외부 인터페이스의 값을 필터링 해서 상태값을 반환해주겠다라는 내용일까요?

  4. 실무적으로 테스트 시나리오는 노션에 작성하신다고 하셨는데 이슈 트래킹 ( 지라 등등) 쪽을 작성하시는게 더 좋을까요?

 

 

답변 2

1

이규원님의 프로필 이미지
이규원
지식공유자

최강개발자님 안녕하세요. 수강해주셔서 감사드립니다. 🙂

질문 답변드리겠습니다.

  1. 만약에 모든 테스트가 통과하는 상태를 green이라고 한다면, 그 시점까지 작성된 테스트가 API 상태값을 검사하는 테스트까지만 작성되었을 수도 있고 테스트가 더 추가돼서 다른 요구사항을 검사하는 테스트들이 작성되었을 수도 있습니다. 테스트 작성이 어디까지 진행되었는지와 상관없이 커밋을 만들 때는 그 시점까지 작성된 모든 테스트가 통과하는 상태인 것이 바람직합니다.


  2. TDD를 사용하지 않아도 API 개발이 끝났다고 판단하는 기준은 항상 있습니다. TDD는 그 기준을 테스트라는 형태로 사전에 작성하는 프로세스죠. 그러니까 작업 완료 기준 자체가 변하는 것이 아니라 그 기준을 표현하는 방식이 다른 것입니다.

    일반적으로 작업 완료 기준은 모든 요구사항이 만족되었는지입니다. 데이터베이스 스키마를 아무리 잘 설계했어도 요구사항에 포함된 기능이 동작하지 않으면 의미가 없겠죠? 🙂

    그러니까 말씀하신 '해당 테스트 시나리오를 전부 만족'한다는 것은 모든 요구사항이 만족되었다는 의미이고 그러면 작업이 완료됐다고 판단할 수 있겠습니다. 만약 둘 사이에 차이가 있다면 테스트 시나리오를 충분히 작성하지 못한 것이겠죠.


  3. 리팩터링은 인터페이스 설계와 기능 동작을 유지하면서 내부 설계를 개선하는 모든 활동을 의미합니다. 입력값을 필터링하는 요구사항과 테스트가 있고 @Valid 애노테이션을 사용하지 않고 테스트를 통과했다면 요구사항을 만족시킨 것입니다. 그런데 @Valid 애노테이션을 사용해서 내부 설계가 더 좋게 개선된다면 리팩터링이라고 할 수 있겠죠.

    하지만 @Valid 애노테이션을 사용하지 않아도 테스트가 모두 통과했다면 이미 요구사항이 만족된 것이니 반드시 @Valid 애노테이션을 사용하도록 코드를 수정해야 하는 것은 아닙니다. 그렇기 때문에 리팩터링은 필수가 아닌 선택입니다.


  4. 각 팀의 상황에 최적인 도구를 사용하시면 됩니다. 저는 이슈 트래커를 이용하기도 하고 노션을 이용하기도 합니다. 그리고 오픈소스 프로젝트에서는 강의 실습처럼 마크다운 파일을 사용합니다. 환경에 맞게 작성, 관리, 확인이 수월한 방식을 선택하시면 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 최강개발자님.

TDD와 관련된 실무적인 질문에 대해 여러 측면에서 접근할 수 있을 것 같습니다. 각 질문에 대한 답변을 다음과 같이 정리해 보았습니다:

  1. 형상관리 시점:

    • 일반적으로 TDD에서 “Green 상태”란 모든 테스트가 통과되고 코드가 잘 작동하는 상태를 의미합니다. 이 상태에서 커밋하는 것이 일반적입니다. Green 상태는 단순히 API 상태값의 성공 여부를 넘어서 시스템의 기대 동작이 모두 만족되는 상태로 고려할 수 있습니다.
  2. API 개발 완료 여부:

    • 인터페이스 설계를 통해 테스트 시나리오를 모두 만족한다면, API 개발이 논리적으로 완료되었다고 볼 수 있습니다. 그러나 이후에도 비기능적 요구사항, 성능 개선 등 추가적인 작업이 있을 수 있습니다.
  3. 리팩토링에 대한 이해:

    • 리팩토링이 선택이라는 의미는 코드가 작동하는 상태에서 구조적 개선을 할 필요가 있을 때 수행하면 됩니다. @Valid 애노테이션을 통한 검증은 단순한 리팩토링이라기보다는 입력 값의 유효성을 보장하기 위한 한 가지 방법입니다. 리팩토링은 코드의 가독성이나 유지보수성을 높이는 방향으로 진행할 수 있습니다.
  4. 테스트 시나리오 기록 방식:

    • 테스트 시나리오를 어디에 작성하느냐는 팀의 개발 프로세스에 따라 다릅니다. 노션과 같은 도구를 사용하여 문서화할 수도 있고, 지라와 같은 이슈 트래킹 도구와 연동하여 관리할 수도 있습니다. 중요한 것은 팀 내에서 공유가 잘 되고, 추적 가능성이 높은 방식으로 관리하는 것입니다.

각 질문에 대해 더 깊이 들어가길 원하시면, 추가적인 정보를 요청해주세요. 다음 URL에서 이와 관련된 자세한 논의 및 예시를 참조하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

오개발님의 프로필 이미지
오개발

작성한 질문수

질문하기