Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 시험에서 모든 것을 조롱하는 잠재적 인 함정은 무엇입니까?


시험에서 모든 것을 조롱하는 잠재적 인 함정은 무엇입니까?


테스트에서 모든 것을 조롱하면 몇 가지 잠재적 인 함정이 발생하여 테스트 전략의 효과와 신뢰성에 부정적인 영향을 줄 수 있습니다. 과도한 조롱과 관련된 주요 문제는 다음과 같습니다.

1. 부서지기 쉬운 테스트 및 단단한 커플 링 **

모든 종속성을 조롱하면 테스트가 테스트중인 코드의 구현 세부 사항과 테스트가 엄격하게 연결됩니다. 이는 외부 동작이 변경되지 않더라도 코드의 내부 작업의 사소한 변화조차도 테스트를 중단 할 수 있음을 의미합니다. 이러한 테스트는 부서지기 쉬우 며 빈번한 업데이트가 필요하며, 이는 시간이 많이 걸리고 실망 스러울 수 있습니다 [6] [9].

2. 거짓 자신감과 숨겨진 버그 **

과도한 조롱은 코드의 신뢰성에 대한 잘못된 신뢰를 초래할 수 있습니다. 모의로 구성 요소를 분리하면 모든 구성 요소가 서로 상호 작용할 때만 나타나는 실제 문제를 놓칠 수 있습니다. 이로 인해 테스트 중에는 생산에서 버그가 발견되어 테스트 목적을 손상시킬 수 있습니다 [1] [9].

3. 과잉 복잡성 및 유지 보수 문제 **

모의, 특히 복잡한 시스템의 경우 조롱을 만들고 유지하는 것은 도전적이고 시간이 많이 걸릴 수 있습니다. 시스템이 발전함에 따라, 의존성이나 행동의 변화를 반영하기 위해 모의를 자주 업데이트해야 할 수도 있으며, 이는 번거롭고 오류가 발생하기 쉽다 [9] [11].

4. 실제 행동을 확인하는 데 어려움 **

모든 것을 조롱하면 실제 시나리오에서 시스템이 어떻게 작동하는지 확인하기가 어려울 수 있습니다. 조롱이 적은 통합 테스트는 종종이 목적에 더 적합합니다. 모의에 대한 과도한 관계는 실제 상호 작용을 정확하게 반영하지 않는 테스트로 이어질 수 있습니다 [9] [11].

5. 비효율적 인 자원 사용 **

과도한 조롱은 비효율적 인 자원 사용으로 이어질 수 있습니다. 조롱을 구성하면 실제 테스트 로직을 작성하는 것보다 특히 데이터베이스가 많거나 복잡한 시스템에서 더 많은 시간을 소비 할 수 있습니다 [2] [11]. 이러한 비 효율성은 개발 프로세스를 늦추고 테스트 비용을 증가시킬 수 있습니다.

6. 통합 테스트와 겹침 **

단위 테스트가 모의없이 통합 테스트로 테스트되는 시나리오를 다룰 때이 단위 테스트에서 추가 된 가치에 대한 질문이 제기됩니다. 통합 테스트는 종종 광범위한 조롱이 필요없이 시스템 동작에 대한보다 포괄적 인 범위를 제공합니다 [2] [7].

7. 잘못된 모의 행동의 잠재력 **

모의가 대체 실제 객체의 동작을 정확하게 모방하지 않으면 실제 시스템이 실패하더라도 테스트가 통과 될 수 있습니다. 이것은 잘못된 보안 감각으로 이어질 수 있으며 버그를 놓쳤다 [5] [9].

요약하면, 조롱은 테스트에 유용한 도구가 될 수 있지만, 과도하게 사용하면 부서지기 쉬운 테스트, 허위 신뢰 및 비 효율성이 발생할 수 있습니다. 신중하게 조롱하고 가능한 경우 통합 테스트와 같은 대안을 고려하는 것이 중요합니다.

인용 :
[1] https://cs-syd.eu/posts/2021-10-22-wy-mocking-is-a-bad-idea
[2] https://softwareengineering.stackexchange.com/questions/454887/how-to-avoid-much-mocking-in-unit-tests-in-a-database-method
[3] https://ryanclements.dev/posts/you-probilly-dont-need-mocking
[4] https://stackoverflow.com/questions/61793083/should-i-mock-every-single-dependencies-in-unit-testing
[5] https://softwareengineering.stackexchange.com/questions/382087/how-xactly-should-unit-tests-be-written-without-mocking-extensely
[6] https://pytest-with-eric.com/mocking/pytest-common-mocking-problems/
[7] https://www.reddit.com/r/typescript/comments/1ei9f4a/is_it_me_or_or_mocking_everything_everywhows_in/
[8] https://stackoverflow.com/questions/38181/when-should-i-mock
[9] https://www.qodo.ai/blog/mock-testing/
[10] https://hynek.me/articles/what-to-mock-in-5-mins/
[11] https://vinted.engineering/2023/10/02/mocking-framework-dideside/