Post

TIL- 단위 테스트와 통합 테스트의 차이점

2024-06-12

오늘의 학습 🌠


1


소셜 로그인


  • 모든 웹 사이트에서 회원가입 과정을 거치는 것은 사용자에게 부담이 됩니다. 매번 번거로운 회원가입 과정을 수행해야 할 뿐 아니라, 웹 사이트마다 다른 아이디와 비밀번호를 기억해야 합니다.

  • 또한 웹 사이트를 운영하는 측에서도 회원들의 개인정보를 지켜야하는 역할이 부담이 됩니다. 바이러스와 백신의 관계 처럼, 발전하는 해킹 기술을 막기 위해 보안을 강화하는 노력이 지속적으로 필요하기 때문이죠.
  • 이런 문제를 해결하기 위해 OAuth 를 사용한 소셜 로그인이 등장합니다.

  • OAuth 란?
    • OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준입니다.
    • 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜 입니다.


통합 테스트와 단위 테스트


  • 소프트웨어 테스트의 중요성

    • 소프트웨어 개발 과정에서 테스트는 매우 중요한 단계입니다. 테스트를 통해 개발된 소프트웨어가 요구사항을 만족하는지, 버그 없이 잘 동작하는지 확인할 수 있습니다. 테스트 없이는 소프트웨어의 품질을 보장할 수 없으며, 이는 사용자의 신뢰도를 떨어뜨릴 수 있습니다.

    • 단위 테스트는 소프트웨어의 가장 작은 단위를 테스트하는 반면, 통합 테스트는 여러 단위가 함께 잘 작동하는지 확인합니다.

1

이미지 출처 : Unit Testing: Creating Functional Alexa Skills

  • 단위 테스트(Unit Test)
    • 하나의 모듈이나 클래스에 대해 세밀한 부분까지 테스트가 가능합니다.

    • 하지만 모듈 간에 상호 작용 검증은 할 수 없습니다.

    • 개발 초기 단계에서 버그를 발견하고 수정하는 데 매우 효과적입니다. 왜냐하면 단위 테스트는 소프트웨어의 작은 부분만을 대상으로 하기 때문에 버그의 원인을 빠르게 파악할 수 있습니다.

  • 통합 테스트(Integration Test)

    • 두 개 이상의 모듈이 연결된 상태를 테스트 할 수 있습니다.

    • 모듈 간의 연결에서 발생하는 에러 검증이 가능합니다.

    • 보통 개발의 후반 단계에서 수행되며 웹 애플리케이션에서 사용자가 로그인을 시도할 때, 인증 시스템과 DB가 올바르게 통신하는지 검증하는 테스트가 있습니다.

    • 이러한 테스트를 통해 개발자는 시스템의 전체적인 동작을 검증할 수 있습니다.

    • Spring Boot를 이용한 통합 테스트

      • 통합 테스트

        • 여러 단위의 테스트를 하나의 통합된 테스트로 수행합니다.

        • 단위 테스트 시 Spring은 동작되지 않습니다.

      • @SpringBootTest

        • 스프링이 동작되도록 해주는 애너테이션입니다.

        • 테스트 수행 시 스프링이 동작합니다.
        • Spring IoC/DI 기능을 사용 가능합니다.
        • Repository를 사용해 DB CRUD가 가능합니다.


단위 테스트와 통합 테스트의 차이점


  • 통합 테스트는 두 개 이상의 모듈이 연결된 상태에서 테스트가 가능하므로 여러 단위가 함께 잘 작동하는지 전체 시스템이나 주요 컴포넌트들이 함께 어떻게 작동하는지를 검증하는 데 초점을 맞춥니다.

  • 이는 전체 시스템의 행동을 테스트하며, 실제 환경과 가까운 조건에서 여러 컴포넌트의 상호작용을 검증합니다. 따라서 설정이 복잡하고 실행 시간이 길다는 특징이 있습니다.

  • 단위 테스트는 소프트웨어의 가장 작은 단위를 대상으로 하며, 개별 단위의 동작을 검증합니다. 간단한 설정과 빠른 실행을 통해 코드의 특정 부분이 정확하게 동작하는지 빠르게 확인할 수 있습니다.

  • 단위 테스트는 개발 초기에 수행되어 개별 단위의 버그를 빠르게 발견하고 수정할 수 있게 합니다. 통합 테스트는 개발의 후반 단계에서 수행되며, 시스템의 전체적인 동작을 검증합니다.

  • 왜냐하면 단위 테스트는 소프트웨어의 작은 부분만을 대상으로 하기 때문에 버그의 원인을 빠르게 파악할 수 있고 통합 테스트는 시스템의 다양한 부분이 서로 올바르게 통신하고 데이터가 정확하게 전달되는지를 확인하기 때문입니다.

🐱‍🏍— —🤸🏻‍♀️ ~~~ 야~호~

This post is licensed under CC BY 4.0 by the author.