주어진 '웹 -> 앱 -> 유닛'의 구조는 소프트웨어 개발 및 테스트 분야에서 시스템의 크기(범위)가 커다란 외부 환경(웹)에서부터 가장 작은 내부 코드 조각(유닛)으로 좁혀지는 계층적 관계를 나타내는 것으로 보입니다.
특히 '유닛(Unit)'은 **단위 테스트(Unit Test)**의 맥락에서 가장 일반적으로 사용되는 용어입니다.
💻 웹 -> 앱 -> 유닛의 계층적 이해
이러한 구조는 소프트웨어를 구성하는 요소의 범위 또는 테스트의 대상이 어떻게 달라지는지를 설명하는 데 사용될 수 있습니다.
1. 웹 (Web) - 가장 넓은 범위
의미: 가장 넓은 범위로, 사용자가 웹 브라우저를 통해 접근하고 상호작용하는 모든 시스템 환경을 포함합니다.
특징: 여러 개의 앱/서비스가 통합되어 있을 수 있으며, 서버, 네트워크, 사용자 인터페이스 등 시스템 전체를 아우르는 개념입니다.
테스트 관점: E2E(End-to-End) 테스트나 시스템 테스트와 같이, 사용자의 실제 시나리오를 따라 시스템 전체가 의도대로 작동하는지 검증하는 단계에 해당됩니다.
2. 앱 (App) - 중간 범위
의미: 웹 환경 내에서 구동되거나 별도로 설치되어 사용되는 **특정 애플리케이션(Application)**을 의미합니다. (예: 특정 웹 서비스, 모바일 앱, 데스크톱 프로그램 등)
특징: 하나의 독립된 기능을 수행하는 서비스의 덩어리입니다. 여러 개의 모듈과 유닛으로 구성됩니다.
테스트 관점: **통합 테스트(Integration Test)**와 같이, 앱을 구성하는 주요 모듈이나 여러 유닛들이 서로 연동하여 올바르게 작동하는지 검증하는 단계에 해당됩니다.
3. 유닛 (Unit) - 가장 작은 범위
의미: 소프트웨어를 구성하는 가장 작은 단위의 코드 조각을 의미합니다. 보통 하나의 함수(Function)나 메서드(Method), 또는 클래스(Class) 내의 특정 기능을 지칭합니다.
특징: 독립적으로 테스트가 가능하며, 외부 환경(네트워크, 데이터베이스 등)의 영향을 받지 않도록 고립된 상태에서 검증됩니다.
테스트 관점: **단위 테스트(Unit Test)**의 대상입니다. 특정 기능이 예상되는 입력에 대해 정확한 출력(결과)을 내는지 검증하여 코드의 안정성을 높입니다.
📝 소프트웨어 테스트 관점에서의 역할
| 범위 | 용어 (Level) | 테스트의 목적 |
| 웹 | 시스템 / E2E (End-to-End) | 사용자의 관점에서 시스템 전체의 시나리오를 검증 |
| 앱 | 통합 테스트 (Integration Test) | 주요 모듈/기능들이 연동하여 잘 작동하는지 검증 |
| 유닛 | 단위 테스트 (Unit Test) | **가장 작은 코드 조각(함수, 메서드)**이 독립적으로 정확히 작동하는지 검증 |
이 구조는 소프트웨어 품질 보증(QA)에서 테스트 피라미드의 개념과도 연결될 수 있습니다. 테스트 피라미드는 실행 속도가 빠르고 비용이 저렴한 **단위 테스트(유닛)**의 비중을 가장 크게 가져가고, 실행 속도가 느리고 비용이 비싼 **E2E 테스트(웹)**의 비중을 가장 작게 가져가는 것을 권장합니다.
혹시 특정 분야(예: 모바일 개발, 웹 개발)에서의 이 세 가지 개념의 관계에 대해 더 자세히 알고 싶으신가요?
댓글
댓글 쓰기