박종훈 기술블로그

E2E(End-to-End) 테스트

원문: https://microsoft.github.io/code-with-engineering-playbook/automated-testing/e2e-testing/


E2E(End-to-End) 테스트는 여러 하위 시스템으로 구성된 애플리케이션의 기능 및 데이터 흐름을 종합적으로 테스트하는 소프트웨어 테스트 방법론입니다.

하나의 어플리케이션을 개발하지만, 서로 다른 팀 또는 조직으로 나누어 서로 다른 기술 스택으로 개발을 하게 되는 경우가 있습니다. 이러한 경우에는 단일 시스템을 테스트하는 것만으로는 충분하지 않기 때문에 E2E 테스트를 통해 어플리케이션의 모든 구성 요소를 종합적으로 확인해야 합니다.

end to end testing

왜 E2E 테스트를 해야하나요?

최신 소프트웨어들은 여러 하위 시스템들의 연결로 구성되어 있습니다. 이러한 하위 시스템들은 같은 조직 내에 있을 수도 있겠지만 서로 다른 조직으로 묶여 있을 수 있습니다. 뿐만 아니라 하위 시스템들은 서로 다른 릴리즈 주기를 가질 수도 있습니다. 결과적으로 하나의 하위 시스템이라도 이슈가 발생 되었을 경우, 전체 소프트웨어 시스템을 붕괴시키는 부정적인 영향을 줄 수도 있습니다.

testing pyramid

위의 그림은 Kent C. Dodd’s blog 에 있는 테스트 피라미드입니다. Martin Fowler’s blog와 Google Testing Blog의 피라미드를 합친 것입니다.

각 테스트 유형은 용도, 적용 분야 및 적용 범위에 따라 다릅니다. 소프트웨어를 개발하면서 진행되는 대부분의 시험들은 아래쪽에 있을 것이고, 위로 올라갈수록 시험 횟수는 점점 줄어듭니다. 위로 올라갈수록 더 실행하는데 더 많은 시간이 소요되고 작성, 실행 및 유지 비용이 많이 들게 됩니다.

E2E 테스트 설계 블록

E2E Testing Design Blocks

세 가지 범주를 하나씩 살펴보도록 하겠습니다.

사용자 기능

사용자 기능 구축의 일부로 다음 작업들을 수행해야 합니다.

조건

사용자 기능을 기반으로 하여 조건들을 만들어 나가기 위해서 다음 작업들을 수행해야 합니다.

테스트 케이스

테스트 케이스를 구축하려면 다음 요소들을 고려해야 합니다.

E2E 테스트 적용하기

다른 테스트와 마찬가지로 E2E 테스트도 계획, 테스트 실행 및 종료 단계를 거칩니다. E2E 테스트는 다음 단계로 수행됩니다.

계획

전제조건

테스트 실행

테스트 종료

테스트 지표

테스트 지표 추적을 통해 테스트의 현재 상태를 파악할 수 있습니다. E2E 테스트의 몇 가지 일반적인 지표는 다음과 같습니다.

결론

소프트웨어 상용 릴리스의 경우 E2E 테스트 검증은 네트워크 통신, 미들웨어 및 백엔드 서비스 상호 작용 등과 같은 실제 사용자를 정확하게 모방하는 환경에서 전체 애플리케이션을 테스트하기 때문에 중요한 역할을 합니다.

E2E 테스트는 이러한 테스트 사례를 자동화하는 비용이 너무 높아 조직에서 감당할 수 없기 때문에 종종 수동으로 수행됩니다. 그렇긴 하지만 각 조직의 궁극적인 목표는 프로세스에 전체 및 반자동 테스트 구성 요소를 추가하여 e2e 테스트를 최대한 간소화하는 것입니다.