TIL- 단위 테스트와 통합 테스트의 차이점
2024-06-12
오늘의 학습 🌠
소셜 로그인
모든 웹 사이트에서 회원가입 과정을 거치는 것은 사용자에게 부담이 됩니다. 매번 번거로운 회원가입 과정을 수행해야 할 뿐 아니라, 웹 사이트마다 다른 아이디와 비밀번호를 기억해야 합니다.
- 또한 웹 사이트를 운영하는 측에서도 회원들의 개인정보를 지켜야하는 역할이 부담이 됩니다. 바이러스와 백신의 관계 처럼, 발전하는 해킹 기술을 막기 위해 보안을 강화하는 노력이 지속적으로 필요하기 때문이죠.
이런 문제를 해결하기 위해 OAuth 를 사용한 소셜 로그인이 등장합니다.
- OAuth 란?
- OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준입니다.
- 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜 입니다.
통합 테스트와 단위 테스트
소프트웨어 테스트의 중요성
소프트웨어 개발 과정에서 테스트는 매우 중요한 단계입니다. 테스트를 통해 개발된 소프트웨어가 요구사항을 만족하는지, 버그 없이 잘 동작하는지 확인할 수 있습니다. 테스트 없이는 소프트웨어의 품질을 보장할 수 없으며, 이는 사용자의 신뢰도를 떨어뜨릴 수 있습니다.
단위 테스트는 소프트웨어의 가장 작은 단위를 테스트하는 반면, 통합 테스트는 여러 단위가 함께 잘 작동하는지 확인합니다.
- 단위 테스트(Unit Test)
하나의 모듈이나 클래스에 대해 세밀한 부분까지 테스트가 가능합니다.
하지만 모듈 간에 상호 작용 검증은 할 수 없습니다.
개발 초기 단계에서 버그를 발견하고 수정하는 데 매우 효과적입니다. 왜냐하면 단위 테스트는 소프트웨어의 작은 부분만을 대상으로 하기 때문에 버그의 원인을 빠르게 파악할 수 있습니다.
통합 테스트(Integration Test)
두 개 이상의 모듈이 연결된 상태를 테스트 할 수 있습니다.
모듈 간의 연결에서 발생하는 에러 검증이 가능합니다.
보통 개발의 후반 단계에서 수행되며 웹 애플리케이션에서 사용자가 로그인을 시도할 때, 인증 시스템과 DB가 올바르게 통신하는지 검증하는 테스트가 있습니다.
이러한 테스트를 통해 개발자는 시스템의 전체적인 동작을 검증할 수 있습니다.
Spring Boot를 이용한 통합 테스트
통합 테스트
여러 단위의 테스트를 하나의 통합된 테스트로 수행합니다.
단위 테스트 시 Spring은 동작되지 않습니다.
@SpringBootTest
스프링이 동작되도록 해주는 애너테이션입니다.
- 테스트 수행 시 스프링이 동작합니다.
- Spring IoC/DI 기능을 사용 가능합니다.
- Repository를 사용해 DB CRUD가 가능합니다.
단위 테스트와 통합 테스트의 차이점
통합 테스트는 두 개 이상의 모듈이 연결된 상태에서 테스트가 가능하므로 여러 단위가 함께 잘 작동하는지 전체 시스템이나 주요 컴포넌트들이 함께 어떻게 작동하는지를 검증하는 데 초점을 맞춥니다.
이는 전체 시스템의 행동을 테스트하며, 실제 환경과 가까운 조건에서 여러 컴포넌트의 상호작용을 검증합니다. 따라서 설정이 복잡하고 실행 시간이 길다는 특징이 있습니다.
단위 테스트는 소프트웨어의 가장 작은 단위를 대상으로 하며, 개별 단위의 동작을 검증합니다. 간단한 설정과 빠른 실행을 통해 코드의 특정 부분이 정확하게 동작하는지 빠르게 확인할 수 있습니다.
단위 테스트는 개발 초기에 수행되어 개별 단위의 버그를 빠르게 발견하고 수정할 수 있게 합니다. 통합 테스트는 개발의 후반 단계에서 수행되며, 시스템의 전체적인 동작을 검증합니다.
왜냐하면 단위 테스트는 소프트웨어의 작은 부분만을 대상으로 하기 때문에 버그의 원인을 빠르게 파악할 수 있고 통합 테스트는 시스템의 다양한 부분이 서로 올바르게 통신하고 데이터가 정확하게 전달되는지를 확인하기 때문입니다.
🐱🏍— —🤸🏻♀️ ~~~ 야~호~