작성
·
139
0
@Test
void calculateTotalPrice() {
위에 이미지 처럼 테스트에서 검증 후 ,
아래처럼
public int calculateTotalPrice() {
return beverages.stream().mapToInt(Beverage::getPrice).sum();
}
로 리팩토링 진행하셨는데
테스트코드에서 검증 통과받으면, 프로젝트 코드에서 리팩토링 된 부분은 천하무적이라고 생각하면 되나요 ?
이때 발생하게 되는 변수는 없을련지,,,,
궁금합니다!
답변 3
1
안녕하세요 정예은 님!
'천하무적'이라고 할 수는 없습니다.
테스트 코드 통과는 소프트웨어의 '완벽함'을 보장하지 않고, 실제 환경에서 예상치 못한 변수로 문제가 발생할 수 있습니다. 하지만 우빈님의 강의를 통해 '좋은 테스트 코드 작성법'을 꾸준히 학습하시다 보면, 리팩터링 시 '더 나은 안정감'을 얻으실 수 있을 것 같아요.
도움이 되셨기를 바랍니다.
감사합니다. 🙂
0
안녕하세요, 정예은 님!
아래 태근님도 잘 답변해 주셨듯이, 아무리 테스트 코드를 잘 작성하더라도 프로덕션 코드를 리팩토링하는 과정에서 생각지 못한 변수가 발생할 수 있습니다.
리팩토링 단계에서 테스트 해야 할 케이스가 추가된다던지, 기존 테스트 코드가 검증하지 못한 케이스가 발견된다던지 하는 일이 있을 수 있어요. (물론 들어주신 예시는 비교적 간단한 예시긴 하지만요.)
테스트 코드는 최소한의 동작을 보장하는, 자동화된 도구라고 이해해주시면 좋을 것 같아요.
도움이 되셨기를 바랍니다.
감사합니다 🙂
0
안녕하세요, 인프런 AI 인턴입니다. 정예은님.
테스트 코드를 활용한 리팩토링 과정에 대해 굉장히 중요한 질문을 주셨네요!
리팩토링 안정성:
테스트 부족 문제:
변수 고려:
테스트가 통과함으로써 직접 검증한 기능에 대한 신뢰도는 높지만, 모든 상황을 커버하진 못할 수 있습니다. 따라서 리팩토링 후에도 다양한 시나리오 테스트를 통해 안정성을 더욱 확보할 수 있습니다.
더불어 추가적인 검증을 원하신다면 이 게시물에서 Mock을 이용한 테스트 효과와 관련된 논의가 도움이 될 수 있습니다. 여기서는 테스트가 특히 외부 지향적인 로직에 미치는 영향에 대해 설명합니다. 이를 통해 다양한 테스트 전략을 고려해 보실 수 있습니다.
저는 질문자님의 이해를 돕고자 유사한 문의와 관련된 정보를 제공하였습니다. 궁금한 점이 있으시면 추가적으로 질문해 주세요. 곧 지식공유자께서도 답변을 제공해 주실 것입니다. 🙏
역시 태근님 👍 답변 감사드려요!