참고 사이트

테스트

  1. 유닛테스트 vs 통합테스트 vs E2E테스트를 비교하여 설명해주세요

    유닛 테스트(Unit Test), 통합 테스트(Integration Test), 그리고 E2E(End-to-End) 테스트는 소프트웨어 테스트에서 다양한 수준의 테스트를 수행하는 방법들입니다. 이들은 서로 다른 테스트 레벨에 초점을 두며, 애플리케이션의 다른 측면을 다양하게 검증합니다.

    유닛 테스트 (Unit Test)란?

    유닛 테스트 설명

    통합 테스트 (Integration Test)란?

    통합 테스트 설명

    E2E 테스트 (End-to-End Test)란?

    E2E 테스트 설명

    요약하면, 유닛 테스트는 개별 유닛의 정확성을 검증하고, 통합 테스트는 모듈 간의 상호작용과 통합을 확인하며, E2E 테스트는 사용자 관점에서 애플리케이션 전체를 테스트하여 실제 사용 시나리오를 검증한다. 이러한 다양한 테스트 수준을 적절하게 조합하여 애플리케이션의 품질과 안정성을 보장할 수 있다. 따라서, 상황에 맞는 적절한 테스트를 선택해서 활용할 필요가 있다.

  2. 리액트 테스트에 사용되는 도구들을 비교하여 설명해주세요

    Facebook에서는 [React Testing Library](<https://testing-library.com/react>) 사용을 권장합니다. 이 라이브러리는 사용자가 컴포넌트를 사용하는 것처럼 테스트를 작성할 수 있도록 설계되었습니다.

    1. Jest
      • Jest는 페이스북에서 개발한 JavaScript 테스트 프레임워크로, 기본적으로 리액트 애플리케이션을 테스트하기에 매우 적합합니다.
      • Jest는 가볍고 빠르며, 자동화된 테스트 실행과 결과 보고를 지원합니다.
      • React 컴포넌트 테스트를 위한 특별한 기능과 함께, 스냅샷 테스트(snapshot testing) 기능을 제공하여 UI 변화를 캡처하고 비교하여 UI 컴포넌트의 예상 동작 여부를 테스트할 수 있습니다.
    2. React Testing Library
      • React Testing Library는 리액트 컴포넌트를 테스트하기 위한 유명한 도구 중 하나입니다.
      • 사용자 시나리오에 기반하여 애플리케이션의 행동을 테스트하기 때문에, 실제 사용자 관점에서 테스트하며, 접근성과 사용자 경험을 높일 수 있습니다.
      • DOM에 대한 접근을 제공하므로, 렌더링된 결과와 상호작용할 수 있는 메서드들을 사용하여 테스트를 작성할 수 있습니다.
    3. Enzyme
      • Enzyme은 Airbnb에서 개발한 리액트 컴포넌트 테스팅 유틸리티로, 특히 컴포넌트의 속성(props)과 상태(state)를 테스트하는 데 유용합니다.
      • Shallow rendering과 mount rendering 두 가지 방법을 제공하여, 컴포넌트의 테스트 환경을 유연하게 구성할 수 있습니다.
      • React 16 이상의 버전에서도 지원됩니다.
    4. Cypress
      • Cypress는 E2E 테스트를 수행하는 데 주로 사용되는 도구로, 리액트 애플리케이션의 최종 사용자 시나리오를 검증하는 데 유용합니다.
      • 빠른 실행 속도와 간편한 디버깅 기능을 제공하며, 실제 브라우저에서 테스트를 실행하여 실제 사용자와 유사한 환경을 만들어줍니다.

최적화

  1. CDN(Content Distributed Network)에 대해 설명해주세요

CDN(Content Distributed Network)이란?

CDN 예시

ex) 온라인 게임은 OBT(Open Beta Test)나 정식 서비스 시작시점에 클라이언트(Client) 다운로드(Download) 수요가 급격하게 증가한다.

많은 분들이 이때문에 PC방에서 대기했던 경험이 있지 않을까 싶다. 이때 콘텐츠 병목 현상이 일어나거나, 심한 경우 서버다운도 발생하기 때문에 CDN이 필수적으로 사용된다.

이뿐만 아니라 대규모 업데이트(Update)를 위한 패치(Patch)가 있을 경우에도 콘텐츠 병목 현상이 발생하는 경우가 있어 CDN을 사용하게 된다.

(출처:https://goddaehee.tistory.com/173)

CDN 동작 방식

일반적으로 CDN의 동작 방식은 다음과 같다.

  1. 콘텐츠 배포

    웹 사이트나 애플리케이션의 정적 콘텐츠를 원본 서버에서 CDN의 서버 노드로 배포합니다. 이러한 서버 노드들은 전 세계적으로 여러 곳에 위치해 있으며, 사용자들과 가까운 지역에 배치되어 있습니다.

  2. 캐싱

    CDN의 서버 노드들은 전 세계에 흩어져 있기 때문에, 사용자들이 웹 콘텐츠에 접근할 때 가장 가까운 노드에 캐시된 콘텐츠를 제공합니다. 이로 인해 사용자는 콘텐츠를 빠르게 다운로드할 수 있게 됩니다.

  3. 부하 분산

    CDN은 높은 트래픽을 처리할 수 있는 확장 가능한 인프라를 제공합니다. 따라서 웹 서버의 부하를 분산시켜 웹 사이트나 애플리케이션의 성능을 향상시킵니다.

CDN의 장점

  1. 빠른 콘텐츠 제공

  2. 부하 분산

  3. 안정성과 가용성

  4. 보안 강화

  5. 대역폭 비용 절감

  6. Web Vitals에 대해 설명해주세요