구성요소 테스트란 무엇입니까? 기술, 예제 테스트 케이스
⚡ 스마트 요약
컴포넌트 테스트는 애플리케이션의 각 부분을 나머지 부분과 통합하지 않고 개별적으로 검사하여 조립이 시작되기 전에 단일 모듈 내에서 결함을 찾아 수정하는 방식입니다.

구성요소 테스트란 무엇입니까?
구성 요소 테스트 이는 소프트웨어 테스트 유형 중 하나로, 다른 구성 요소와 통합하지 않고 각 구성 요소를 개별적으로 테스트하는 방식입니다. 아키텍처 관점에서 보면 이러한 테스트 방식은 아키텍처 테스트라고도 불립니다. 모듈 테스트일부 참고 자료에서는 이를 프로그램 테스트라고 부릅니다.
소프트웨어 전체는 여러 구성 요소로 이루어져 있으며, 구성 요소 수준 테스트는 이러한 구성 요소를 개별적으로 테스트하는 것을 의미합니다. 이는 가장 빈번하게 사용되는 테스트 유형 중 하나입니다. 블랙 박스 테스트 QA 팀에서 수행한 유형입니다.
명명법에 대한 참고 사항은 초반에 언급할 가치가 있습니다. ISTQB 용어집에서는 구성 요소 테스트를 다음과 같이 정의합니다. 단위 테스트 단위 테스트와 컴포넌트 테스트는 동일한 테스트 레벨을 나타내는 동의어로 사용됩니다. 하지만 많은 개발팀과 이 글에서는 실제로 이 둘을 구분하여 사용합니다. 개발자는 자신이 작성한 코드에 대해 단위 테스트를 실행하고, 테스터는 배포된 빌드에 대해 컴포넌트 테스트를 실행합니다. 이 글 말미에 있는 비교표는 이러한 실질적인 구분을 보여줍니다.
아래 그림에서 볼 수 있듯이, 컴포넌트 테스트는 소프트웨어 또는 애플리케이션의 각 부분을 개별적으로 고려하는 고유한 테스트 전략 및 테스트 계획을 가지고 있습니다. 각 컴포넌트에 대해 테스트 시나리오 먼저 정의된 후, 이를 상위 수준 테스트 케이스로 세분화하고, 마지막으로 하위 수준의 상세 테스트 케이스로 세분화합니다. 테스트 케이스 필수 조건이 있습니다.
"컴포넌트 테스트"라는 용어의 사용 방식은 분야별, 조직별로 다릅니다. 이러한 인식 차이의 가장 일반적인 이유는 다음과 같은 세 가지입니다.
- 선택된 개발 수명주기 모델 유형
- 테스트 대상 소프트웨어 또는 애플리케이션의 복잡성
- 애플리케이션의 다른 구성 요소와 격리하여 테스트를 수행하든 그렇지 않든 상관없이
소프트웨어 테스트 수명 주기는 테스트 활동 중에 생성되고 사용되는 문서인 다양한 테스트 산출물을 생성합니다. 그중에서도 테스트 정책과 테스트 전략은 어떤 유형의 테스트를 사용할지, 그리고 프로젝트에서 테스트를 어느 정도 깊이까지 수행할지를 정의합니다.
구성 요소 테스트는 누가 수행합니까?
컴포넌트 테스트는 테스터가 수행합니다. 단위 테스트는 개발자가 수행하며, 개별 함수나 프로시저를 테스트합니다. 단위 테스트가 완료되면 컴포넌트 테스트가 이어지고, 테스터가 해당 테스트를 담당하게 됩니다.
구성 요소 테스트를 수행하는 경우
컴포넌트 테스트는 개발자가 단위 테스트를 완료하고 빌드를 테스트 팀에 배포한 직후에 수행됩니다. 이 빌드를 UT 빌드 또는 단위 테스트 빌드라고 합니다. 이 단계에서는 모든 컴포넌트의 주요 기능이 테스트됩니다.
구성요소 테스트 진입 기준
- UT 빌드에 포함될 최소 구성 요소 세트가 개발 및 단위 테스트를 완료했습니다.
구성 요소 테스트 종료 기준
- 모든 구성 요소의 기능은 명시된 대로 작동합니다.
- 심각도, 중요도 높음 또는 중간 수준, 또는 우선순위가 높은 결함은 더 이상 남아 있지 않습니다. 결함 로그.
구성 요소 테스트 기술
테스트 수준의 깊이에 따라 구성 요소 테스트는 두 가지 방식으로 분류됩니다.
- CTIS — 소규모 구성 요소 테스트
- CTIL — 대규모 구성 요소 테스트
CTIS — 소규모 구성 요소 테스트
구성 요소 테스트는 테스트 대상 애플리케이션의 다른 구성 요소와 분리하여 수행하거나 분리하지 않고 수행할 수 있습니다. 다른 구성 요소를 분리하여 수행하는 경우 이를 소규모 구성 요소 테스트라고 합니다.
예 1 : 서로 다른 웹페이지가 다섯 개 있는 웹사이트에서 각 웹페이지를 다른 구성 요소와 분리하여 개별적으로 테스트하는 것은 소규모 구성 요소 테스트라고 할 수 있습니다.
예 2 : 아래에 표시된 guru99.com 홈페이지는 홈, 테스트 등 여러 구성 요소로 이루어져 있습니다. SAP웹, 필독 사항!, 빅데이터, 실무 프로젝트 및 블로그.
모든 소프트웨어는 여러 구성 요소로 이루어져 있으며, 각 구성 요소에는 하위 구성 요소가 있습니다. 예제 2에 나열된 각 모듈을 다른 구성 요소와의 통합을 고려하지 않고 개별적으로 테스트하는 것은 구성 요소 테스트의 축소판입니다.
테스트 드롭다운 메뉴를 열면 테스트 구성 요소의 하위 구성 요소가 표시됩니다. 수동 테스트, SOAPUI, QTP, JUnit, Selenium테스트 관리 및 모바일 테스트아래 스냅샷에서 해당 하위 구성 요소들이 빨간색으로 강조 표시되어 있습니다.
CTIL — 대규모 구성 요소 테스트
테스트 대상 애플리케이션의 다른 구성 요소와 분리하지 않고 수행하는 구성 요소 테스트를 대규모 구성 요소 테스트라고 합니다.
예시를 통해 차이점을 더 명확히 설명하겠습니다. 애플리케이션이 A, B, C 세 가지 구성 요소로 이루어져 있다고 가정해 보겠습니다.
개발자는 컴포넌트 B를 개발했고 테스트를 원합니다. 컴포넌트 B를 완벽하게 테스트하려면 아래 다이어그램에서 보는 것처럼 일부 기능은 컴포넌트 A에, 일부 기능은 컴포넌트 C에 의존해야 합니다.
기능 흐름은 A → B → C이며, 이는 컴포넌트 B가 A와 C 모두에 의존한다는 것을 의미합니다. 이 흐름에서 스텁은 호출되는 함수이고 드라이버는 호출하는 함수입니다.
컴포넌트 A와 컴포넌트 C는 아직 개발되지 않았습니다. 컴포넌트 B를 완벽하게 테스트하기 위해 필요에 따라 A와 C는 드라이버와 스텁으로 대체되었으며, 따라서 누락된 두 부분은 실제 구성 요소가 개발될 때까지 더미 객체 역할을 합니다.
- 그루터기: 테스트 대상 구성 요소에서 스텁이 호출됩니다. 구성 요소 C가 준비되지 않았으므로 스텁이 C를 대신하여 B가 예상하는 응답을 반환합니다.
- 드라이버 : 드라이버가 테스트 대상 구성 요소를 호출합니다. 구성 요소 A가 준비되지 않았으므로 드라이버가 A를 대신하여 필요한 입력을 사용하여 구성 요소 B를 호출합니다.
구성 요소 테스트를 위한 테스트 사례 예
아래 두 웹 페이지는 기능적인 측면에서 서로 연관되어 있으므로 테스트하기에 유용한 구성 요소 쌍입니다.
웹페이지 1은 데모 뱅킹 사이트의 로그인 페이지입니다.
사용자가 유효한 사용자 ID와 비밀번호를 입력하고 제출 버튼을 클릭하면 다음 그림과 같이 데모 은행 웹사이트의 홈페이지로 이동합니다.
여기서 로그인 페이지는 하나의 구성 요소이고 홈페이지는 또 다른 구성 요소입니다. 각 페이지의 기능을 개별적으로 테스트하는 것을 구성 요소 테스트라고 합니다.
웹페이지 1의 구성 요소 테스트 시나리오:
- 잘못된 사용자 ID를 입력하고 최종 사용자에게 사용자 친화적인 경고 메시지가 표시되는지 확인하십시오.
- 잘못된 사용자 ID와 비밀번호를 입력하고 '재설정'을 클릭한 다음 사용자 ID 및 비밀번호 입력란이 지워졌는지 확인하십시오.
- 유효한 사용자 이름과 비밀번호를 입력하고 로그인 버튼을 클릭하십시오.
웹페이지 2의 구성 요소 테스트 시나리오:
- 관리자 페이지에 대한 환영 메시지가 홈페이지에 표시되는지 확인하십시오.
- 웹페이지 왼쪽의 모든 링크가 클릭 가능한지 확인하십시오.
- 홈페이지 중앙에 관리자 ID가 표시되는지 확인하십시오.
- 그림과 같이 홈페이지에 세 가지 이미지가 모두 있는지 확인하십시오.
단위 테스트와 구성 요소 테스트
아래 표는 두 수준이 일상적인 업무에서 어떻게 다른지 요약한 것입니다.
| 단위 테스트 | 구성 요소 테스트 |
| 개별 프로그램과 모듈을 테스트하여 프로그램이 사양대로 실행되는지 확인합니다. | 소프트웨어의 각 객체 또는 부분을 다른 객체와 분리하거나 분리하지 않고 개별적으로 테스트합니다. |
| 설계 문서와 대조하여 검증되었습니다. | 테스트 요구사항 및 사용 사례에 대해 검증되었습니다. |
| 개발자들이 완료했습니다. | 테스터들이 완료했습니다. |
| 먼저 완료되었습니다. | 개발자 측에서 단위 테스트가 완료된 후에 진행됩니다. |
| 결함은 대개 현장에서 수정되며 공식적으로 기록되지 않습니다. | 결함은 기록되고 trac결함 관리 프로세스를 통해 확인되었습니다. |






