해결된 질문
작성
·
26
·
수정됨
1
테스트와 코드간 성장 헙력 관계를 보면서 문득 궁금증이 들었습니다.
테스트 시나리오는 작성하면서 시나리오의 순서 역시도 중요하지 않을까? 하는 의문이 들었습니다.
단순한 기능들은 (예시로 들어주신 회원가입)은 테스트 시나리오의 순서에 큰 영향을 받지 않을 것 같으나
좀 더 복잡한 로직, 예를 들면 금액 계산과 같은 로직은 테스트 시나리오를 작성함에 있어서 순서를 신경 써야 할까요?
좋은 예시가 떠오르지는 않지만
예약 시스템을 만들면서 테스트 시나리오를 짠다고 했을 때 테스트 시나리오의 순서대로 코드가 성장이 된다고 가정하면 테스트 시나리오를 작성하는 순서 역시도 중요한 부분 중 하나일 수 있겠다는 생각이 들었습니다.
강사님은 테스트 시나리오를 작성 하실 때 순서를 크게 신경 쓰지 않으시나요? 아니면 로직의 흐름을 미리 어느정도 파악해 두시고 시나리오를 그 흐름에 맞춰 작성하시나요?
두서 없는 질문이라 정말 죄송합니다.
답변 2
1
좋은 질문이지만 답변 드리기 어려운 질문입니다. 결론부터 말씀드리면 아직 알려진 명확한 순서 기준이 없습니다. 만약에 있는데 제가 알지 못한다면 저도 배우고 싶습니다.
Kent Beck은 테스트 선택에 대해서 이렇게 얘기했습니다.
Picking the next test is an important skill, & one that only comes with experience. The order of the tests can significantly affect both the experience of programming & the final result.
다음 테스트를 선택하는 것은 중요한 기술이며, 경험이 쌓여야만 얻을 수 있는 능력입니다. 테스트의 순서는 프로그래밍 경험과 최종 결과 모두에 상당한 영향을 미칠 수 있습니다.
경험이 쌓여야만 한다고 얘기했지만, 그래서 어떻게 하면 되는지 방법을 특정하지는 않습니다.
그래도 제가 실무에서 사용하는 기준 몇 개를 말씀드려 보면
비즈니스 프로세스의 성공적 서례(해피 패스)부터 선택
비교적 자신이 있는 기능을 만들 때는 구현하기 쉬운(또는 그럴 것으로 예상되는) 것부터 선택
자신이 충분하지 기능을 만들 때는 구현하기 어려운(또는 그럴 것으로 예상되는) 것부터 선택
등 이 있는데요, 이런 것들은 어디에선가 배운 것이 아니고 긴시간 경험적으로 사용하게 된 것이고 1, 2, 3번 중 어떤 기준을 선택할 지도 새로운 기능을 만들 때 마다 경험적으로 선택합니다. 아직 저도 뚜렷한 원칙이 있지는 않습니다.
명확하게 답변 드리지 못해서 죄송합니다.
0
안녕하세요, 인프런 AI 인턴입니다. counterchord89님.
테스트 시나리오 작성 시 순서에 대한 질문을 주셨군요. 복잡한 로직을 다룰 때 테스트 시나리오의 순서가 어떻게 영향을 미칠 수 있는지에 대해 궁금해 하시는 점 잘 알겠습니다.
단순 vs 복잡한 로직: 회원 가입과 같은 단순 기능은 독립적으로 테스트할 수 있는 경우가 많아 시나리오 순서에 크게 영향을 받지 않습니다. 하지만 금액 계산이나 예약과 같이 여러 단계가 있는 복잡한 로직은 흐름에 맞는 순서로 테스트 시나리오를 작성하는 것이 유리할 수 있습니다.
로직에 따른 성장: 로직이 복잡할수록 테스트 시나리오가 로직의 흐름에 따라 단계적으로 작성되면 코드를 점진적으로 발전시키는 데 도움이 됩니다. 이는 코드를 작성하는 과정에서 로직이 올바르게 구현되고 있는지 검증하며 개발할 수 있기 때문입니다.
테스트 주도 개발(TDD) 과정: TDD에서는 작은 단위의 테스트를 작성하고 이에 맞춰 구현을 진행하며 코드를 발전시켜 나갑니다. 이 과정에서 자연스럽게 테스트 시나리오의 순서가 로직의 흐름을 따르게 됩니다.
강사님 또한 복잡한 로직을 다룰 때는 보통 로직의 흐름을 미리 파악하고 시나리오를 그 흐름에 맞춰 작성할 가능성이 컵니다. 이를 통해 논리적인 오류를 사전에 방지하고, 효과적인 테스트를 통해 코드 품질을 높일 수 있습니다.
이와 관련된 유사한 질문 사례를 참고하시면 도움이 될 것입니다. 다음 링크를 참조해 주세요:
- 테스트 코드 작성 범위 고민: 이 게시물에서는 테스트의 역할과 각 계층에서의 테스트 목표를 어떻게 설정하는지 논의하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아닙니다! 좋은 답변 감사합니다. 오히려 말씀 주신 덕에 TDD와 테스트에 대해 좀 더 고민 해 볼 거리가 생긴 것 같습니다.
감사합니다.