React

Why is E2E testing not enough?

Asset Type
File Type
When to use
Last edited time
2022/05/05 12:50
Created by
Reference
Why is E2E testing not enough? E2E tests and UI integration tests give us high confidence about the whole application, so why should we write low-level tests? There are a couple of reasons:
UI Integration Tests are fast but, more in general, Cypress is not. Cypress is fast if it's opened but if you need to run all the tests together you have to wait minutes, not seconds nor tenth of seconds
so high-level tests can tell you what did not work but usually, they cannot tell you why. You know that an AJAX call has not started but why has not started?
rendering the entire application is not always the best way to test something, a lot of parts are not related to the render phase at all, starting a real browser to test them is exaggerated
the end-user is probably the most important user of the application... But he/she is not the only one! All the components and the functions are consumed by the developer, not by the end-user. Every unit of the project has some APIs (its contract) and they need to be tested too. Testing an end-user flow does not allow you to replicate all the API cases
everything is integrated to compose the final application, but you need to test littler integrations to have the confidence you need
Obviously, it all depends on the project size. A landing page could not need hundreds of different tests but a standard little/medium application needs them.
왜 E2E 테스트가 충분하지 않은가요?
E2E 테스트와 UI 통합 테스트는 애플리케이션 전체에 대한 높은 신뢰도를 제공하는데 왜 하위 레벨 테스트를 작성해야 합니까? 몇 가지 이유가 있습니다.
UI 통합 테스트는 빠르지만 일반적으로 사이프레스는 그렇지 않습니다. 편백나무는 열려 있으면 빠르지만 모든 테스트를 함께 실행해야 하는 경우에는 몇 초도 10초도 아닌 몇 분 동안 기다려야 합니다.
그래서 높은 수준의 테스트는 당신에게 무엇이 효과가 없었는지 말해줄 수 있지만, 보통 그들은 당신에게 이유를 말해줄 수 없다. 당신은 AJAX 호출이 시작되지 않은 것을 알면서 왜 시작되지 않았습니까?
전체 응용 프로그램을 렌더링하는 것이 항상 어떤 것을 테스트하는 가장 좋은 방법은 아니며, 많은 부분이 렌더 단계와 전혀 관련이 없습니다. 테스트하기 위해 실제 브라우저를 시작하는 것은 과장된 것입니다.
최종 사용자는 아마도 애플리케이션의 가장 중요한 사용자일 것이다. 하지만 그/그녀만이 아닙니다! 모든 구성 요소와 기능은 최종 사용자가 아니라 개발자가 소비합니다. 프로젝트의 모든 단위는 몇 가지 API(계약)를 가지고 있으며 이것들도 테스트해야 합니다. 최종 사용자 흐름을 테스트해도 일부 API 사례를 복제할 수 없습니다.
모든 것이 최종 애플리케이션을 구성하기 위해 통합되지만, 필요한 자신감을 가지려면 리틀러 통합을 테스트해야 합니다.
확실히 프로젝트 규모에 따라 다 다릅니다. 랜딩 페이지에는 수백 개의 테스트가 필요하지만 표준 소형/중형 애플리케이션에는 테스트가 필요합니다.