Inflearn brand logo image

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

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

작성한 질문수

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

질문드립니다.

작성

·

63

2

안녕하세요! 강의 절반을 본 수강생입니다.

뒷내용에 나올법한데 질문드려봅니다.

 

강의에서 거짓음성에 대한 경험때문에 테스트 코드에 @Transactional 를 안붙이신다고 하셨습니다.

 

  1. 그럼 예를 들어서 개발 디비기준으로 CRUD 테스트를 작성하시는건가요?

또 다른 질문으론

  1. TDD 기법이 아닌 , 실무 회사 코드에서 기존 코드에 인터페이스 테스트를 작성하려고 합니다 TDD가 아닌 유닛테스트로 이해가 되는데, 이런 방법또한 상관 없을까요?

 

답변 1

1

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

오개발님 안녕하세요. 강의 수강해주셔서 감사드립니다. :)

 

첫번째 질문부터 답변 드리겠습니다.

우선 테스트 코드의 @Transactional 사용 여부에 대해서는 강의에서 언급한 기억이 없고 자료를 찾아봐도 발견되지 않는데요, 제 기억이 잘 못 되었을 수도 있으니 제가 어떤 수업에서 말씀드렸는지 알려주시면 더 설명드리겠습니다.

디스코드 대화에서 이런 말씀을 드린 적이 있기는 합니다.

"또 하나는 예전에 데이터베이스가 완전히 초기화된 상태에서 테스트가 거짓 음성을 일으킨 일이 있었습니다. 다른 데이터들이 섞여 있었다면 실패할 논리가 운영코드에 들어갔는데 딱 테스트에 필요한 데이터만 있어서 테스트가 성공한 적이 있었습니다."

다만 테스트 코드에서 데이터베이스 롤백을 사용한 적이 없는 것은 맞고 이 내용은 강의에서 한두번 언급됩니다. :)

CRUD는 유일한 방식은 아니며 설계 패턴 중 한가지고 저는 CRUD 패턴을 잘 사용하지 않기는 합니다만, 데이터베이스가 사용되는 테스트를 지칭하신다면 테스트에 운영 환경과 격리된 데이터베이스를 사용하는 것은 맞습니다. 강의 실습에서는 이런 내용에 대해서 다루지 않았지만 실무에서는 운영 환경과 테스트 환경은 염격하게 격리해야 합니다. 이것은 데이터베이스 롤백 사용 여부와 무관하게 안정적인 서비스 운영을 위해 반드시 지켜야 합니다.

 

그럼 두번째 질문에 대해서 말씀드릴게요.

TDD는 테스트 기법이 아니라 테스트를 사용해서 소프트웨어를 개발하는 기법입니다. 그러니까 이미 만들어진 소프트웨어를 테스트 한다면 TDD가 필요하지는 않습니다. 그리고 이런 사례는 드물지 않게 발생하고 어색하거나 문제가 있는 상황은 아닙니다. :)

 

강의의 남은 수업들도 오개발님에게 도움이 되시길 바라겠습니다!

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

작성한 질문수

질문하기