구성요소 테스트란 무엇입니까? 기술, 예제 테스트 케이스

⚡ 스마트 요약

컴포넌트 테스트는 애플리케이션의 각 부분을 나머지 부분과 통합하지 않고 개별적으로 검사하여 조립이 시작되기 전에 단일 모듈 내에서 결함을 찾아 수정하는 방식입니다.

  • 🧩 범위: 한 번에 하나의 구성 요소씩, 주변 구성 요소와 분리하여 진행합니다.
  • 👥 소유자: 개발자가 단위 테스트를 완료한 후 테스터가 실행합니다.
  • 🔬 CTIS: 소규모 부품 테스트는 해당 부품을 완전히 분리하여 테스트합니다.
  • 🔗 CTIL: 대규모 컴포넌트 테스트는 실제 또는 시뮬레이션된 종속성을 유지합니다.
  • 🧱 Doubles: 드라이버는 컴포넌트를 호출하고, 스텁은 해당 컴포넌트에 의해 호출됩니다.
  • ✅ 종료 : 로그에 심각, 높음 또는 중간 수준의 결함이 남아 있지 않습니다.

컴포넌트 테스트 기법 및 예제 테스트 케이스

구성요소 테스트란 무엇입니까?

구성 요소 테스트 이는 소프트웨어 테스트 유형 중 하나로, 다른 구성 요소와 통합하지 않고 각 구성 요소를 개별적으로 테스트하는 방식입니다. 아키텍처 관점에서 보면 이러한 테스트 방식은 아키텍처 테스트라고도 불립니다. 모듈 테스트일부 참고 자료에서는 이를 프로그램 테스트라고 부릅니다.

소프트웨어 전체는 여러 구성 요소로 이루어져 있으며, 구성 요소 수준 테스트는 이러한 구성 요소를 개별적으로 테스트하는 것을 의미합니다. 이는 가장 빈번하게 사용되는 테스트 유형 중 하나입니다. 블랙 박스 테스트 QA 팀에서 수행한 유형입니다.

명명법에 대한 참고 사항은 초반에 언급할 가치가 있습니다. ISTQB 용어집에서는 구성 요소 테스트를 다음과 같이 정의합니다. 단위 테스트 단위 테스트와 컴포넌트 테스트는 동일한 테스트 레벨을 나타내는 동의어로 사용됩니다. 하지만 많은 개발팀과 이 글에서는 실제로 이 둘을 구분하여 사용합니다. 개발자는 자신이 작성한 코드에 대해 단위 테스트를 실행하고, 테스터는 배포된 빌드에 대해 컴포넌트 테스트를 실행합니다. 이 글 말미에 있는 비교표는 이러한 실질적인 구분을 보여줍니다.

아래 그림에서 볼 수 있듯이, 컴포넌트 테스트는 소프트웨어 또는 애플리케이션의 각 부분을 개별적으로 고려하는 고유한 테스트 전략 및 테스트 계획을 가지고 있습니다. 각 컴포넌트에 대해 테스트 시나리오 먼저 정의된 후, 이를 상위 수준 테스트 케이스로 세분화하고, 마지막으로 하위 수준의 상세 테스트 케이스로 세분화합니다. 테스트 케이스 필수 조건이 있습니다.

구성 요소 테스트 계층 구조는 테스트 전략부터 하위 수준 테스트 케이스까지 이어집니다.

"컴포넌트 테스트"라는 용어의 사용 방식은 분야별, 조직별로 다릅니다. 이러한 인식 차이의 가장 일반적인 이유는 다음과 같은 세 가지입니다.

  1. 선택된 개발 수명주기 모델 유형
  2. 테스트 대상 소프트웨어 또는 애플리케이션의 복잡성
  3. 애플리케이션의 다른 구성 요소와 격리하여 테스트를 수행하든 그렇지 않든 상관없이

소프트웨어 테스트 수명 주기는 테스트 활동 중에 생성되고 사용되는 문서인 다양한 테스트 산출물을 생성합니다. 그중에서도 테스트 정책과 테스트 전략은 어떤 ​​유형의 테스트를 사용할지, 그리고 프로젝트에서 테스트를 어느 정도 깊이까지 수행할지를 정의합니다.

구성 요소 테스트는 누가 수행합니까?

컴포넌트 테스트는 테스터가 수행합니다. 단위 테스트는 개발자가 수행하며, 개별 함수나 프로시저를 테스트합니다. 단위 테스트가 완료되면 컴포넌트 테스트가 이어지고, 테스터가 해당 테스트를 담당하게 됩니다.

구성 요소 테스트를 수행하는 경우

컴포넌트 테스트는 개발자가 단위 테스트를 완료하고 빌드를 테스트 팀에 배포한 직후에 수행됩니다. 이 빌드를 UT 빌드 또는 단위 테스트 빌드라고 합니다. 이 단계에서는 모든 컴포넌트의 주요 기능이 테스트됩니다.

구성요소 테스트 진입 기준

  • UT 빌드에 포함될 최소 구성 요소 세트가 개발 및 단위 테스트를 완료했습니다.

구성 요소 테스트 종료 기준

  • 모든 구성 요소의 기능은 명시된 대로 작동합니다.
  • 심각도, 중요도 높음 또는 중간 수준, 또는 우선순위가 높은 결함은 더 이상 남아 있지 않습니다. 결함 로그.

구성 요소 테스트 기술

테스트 수준의 깊이에 따라 구성 요소 테스트는 두 가지 방식으로 분류됩니다.

  1. CTIS — 소규모 구성 요소 테스트
  2. CTIL — 대규모 구성 요소 테스트

CTIS — 소규모 구성 요소 테스트

구성 요소 테스트는 테스트 대상 애플리케이션의 다른 구성 요소와 분리하여 수행하거나 분리하지 않고 수행할 수 있습니다. 다른 구성 요소를 분리하여 수행하는 경우 이를 소규모 구성 요소 테스트라고 합니다.

예 1 : 서로 다른 웹페이지가 다섯 개 있는 웹사이트에서 각 웹페이지를 다른 구성 요소와 분리하여 개별적으로 테스트하는 것은 소규모 구성 요소 테스트라고 할 수 있습니다.

예 2 : 아래에 표시된 guru99.com 홈페이지는 홈, 테스트 등 여러 구성 요소로 이루어져 있습니다. SAP웹, 필독 사항!, 빅데이터, 실무 프로젝트 및 블로그.

Guru99개의 홈페이지 탐색 메뉴는 별도의 테스트 가능한 구성 요소로 취급됩니다.

모든 소프트웨어는 여러 구성 요소로 이루어져 있으며, 각 구성 요소에는 하위 구성 요소가 있습니다. 예제 2에 나열된 각 모듈을 다른 구성 요소와의 통합을 고려하지 않고 개별적으로 테스트하는 것은 구성 요소 테스트의 축소판입니다.

테스트 드롭다운 메뉴를 열면 테스트 구성 요소의 하위 구성 요소가 표시됩니다. 수동 테스트, SOAPUI, QTP, JUnit, Selenium테스트 관리 및 모바일 테스트아래 스냅샷에서 해당 하위 구성 요소들이 빨간색으로 강조 표시되어 있습니다.

드롭다운 메뉴를 테스트하고 하위 구성 요소를 빨간색으로 강조 표시합니다.

CTIL — 대규모 구성 요소 테스트

테스트 대상 애플리케이션의 다른 구성 요소와 분리하지 않고 수행하는 구성 요소 테스트를 대규모 구성 요소 테스트라고 합니다.

예시를 통해 차이점을 더 명확히 설명하겠습니다. 애플리케이션이 A, B, C 세 가지 구성 요소로 이루어져 있다고 가정해 보겠습니다.

개발자는 컴포넌트 B를 개발했고 테스트를 원합니다. 컴포넌트 B를 완벽하게 테스트하려면 아래 다이어그램에서 보는 것처럼 일부 기능은 컴포넌트 A에, 일부 기능은 컴포넌트 C에 의존해야 합니다.

구성 요소 B는 구성 요소 A를 드라이버로, 구성 요소 C를 스텁으로 대체하여 테스트되었습니다.

기능 흐름은 A → B → C이며, 이는 컴포넌트 B가 A와 C 모두에 의존한다는 것을 의미합니다. 이 흐름에서 스텁은 호출되는 함수이고 드라이버는 호출하는 함수입니다.

컴포넌트 A와 컴포넌트 C는 아직 개발되지 않았습니다. 컴포넌트 B를 완벽하게 테스트하기 위해 필요에 따라 A와 C는 드라이버와 스텁으로 대체되었으며, 따라서 누락된 두 부분은 실제 구성 요소가 개발될 때까지 더미 객체 역할을 합니다.

  • 그루터기: 테스트 대상 구성 요소에서 스텁이 호출됩니다. 구성 요소 C가 준비되지 않았으므로 스텁이 C를 대신하여 B가 예상하는 응답을 반환합니다.
  • 드라이버 : 드라이버가 테스트 대상 구성 요소를 호출합니다. 구성 요소 A가 준비되지 않았으므로 드라이버가 A를 대신하여 필요한 입력을 사용하여 구성 요소 B를 호출합니다.

구성 요소 테스트를 위한 테스트 사례 예

아래 두 웹 페이지는 기능적인 측면에서 서로 연관되어 있으므로 테스트하기에 유용한 구성 요소 쌍입니다.

웹페이지 1은 데모 뱅킹 사이트의 로그인 페이지입니다.

사용자 ID와 비밀번호 입력란이 있는 로그인 페이지 구성 요소

사용자가 유효한 사용자 ID와 비밀번호를 입력하고 제출 버튼을 클릭하면 다음 그림과 같이 데모 은행 웹사이트의 홈페이지로 이동합니다.

관리자 홈페이지 구성 요소(탐색 링크 및 이미지 포함)

여기서 로그인 페이지는 하나의 구성 요소이고 홈페이지는 또 다른 구성 요소입니다. 각 페이지의 기능을 개별적으로 테스트하는 것을 구성 요소 테스트라고 합니다.

웹페이지 1의 구성 요소 테스트 시나리오:

  • 잘못된 사용자 ID를 입력하고 최종 사용자에게 사용자 친화적인 경고 메시지가 표시되는지 확인하십시오.
  • 잘못된 사용자 ID와 비밀번호를 입력하고 '재설정'을 클릭한 다음 사용자 ID 및 비밀번호 입력란이 지워졌는지 확인하십시오.
  • 유효한 사용자 이름과 비밀번호를 입력하고 로그인 버튼을 클릭하십시오.

웹페이지 2의 구성 요소 테스트 시나리오:

  • 관리자 페이지에 대한 환영 메시지가 홈페이지에 표시되는지 확인하십시오.
  • 웹페이지 왼쪽의 모든 링크가 클릭 가능한지 확인하십시오.
  • 홈페이지 중앙에 관리자 ID가 표시되는지 확인하십시오.
  • 그림과 같이 홈페이지에 세 가지 이미지가 모두 있는지 확인하십시오.

단위 테스트와 구성 요소 테스트

아래 표는 두 수준이 일상적인 업무에서 어떻게 다른지 요약한 것입니다.

단위 테스트 구성 요소 테스트
개별 프로그램과 모듈을 테스트하여 프로그램이 사양대로 실행되는지 확인합니다. 소프트웨어의 각 객체 또는 부분을 다른 객체와 분리하거나 분리하지 않고 개별적으로 테스트합니다.
설계 문서와 대조하여 검증되었습니다. 테스트 요구사항 및 사용 사례에 대해 검증되었습니다.
개발자들이 완료했습니다. 테스터들이 완료했습니다.
먼저 완료되었습니다. 개발자 측에서 단위 테스트가 완료된 후에 진행됩니다.
결함은 대개 현장에서 수정되며 공식적으로 기록되지 않습니다. 결함은 기록되고 trac결함 관리 프로세스를 통해 확인되었습니다.

자주 묻는 질문

위험을 줄이고, 구성 요소의 기능적 및 비기능적 동작을 검증하고, 품질에 대한 신뢰를 구축하고, 결함을 발견하고, 이러한 결함이 확산되는 것을 방지합니다.ping 더 높은 시험 단계로.

모델은 구성 요소 con을 읽습니다.trac수동 테스트에서 놓치기 쉬운 잘못된 입력, 경계값 및 오류 경로를 제안합니다. 테스터는 실행 전에 모든 예상 결과를 확인합니다.

네. 미리 정해진 응답을 반환하는 스텁과 고정된 입력을 제공하는 드라이버는 어시스턴트가 빠르게 작성할 수 있는 정형화된 코드입니다. 하지만 어떤 응답이 현실적인지는 여전히 사람이 판단해야 할 부분입니다.

컴포넌트 테스트는 하나의 컴포넌트만을 검사합니다. 통합 테스트 구성 요소 간의 인터페이스와 상호 작용을 검사하고 구성 요소 테스트 후에 실행됩니다.

Code-레벨 프레임워크와 같은 것들 JUnit, TestNGNUnit 및 pytest, 그리고 UI 컴포넌트 실행 도구 등이 포함됩니다. Cypress 컴포넌트 테스트, 스토리북, 제스트. 이 모든 것들은 하나의 범주에 속합니다. 자동화 관로.

모의 객체를 구축하고 유지 관리합니다. 실제 구성 요소와 동떨어진 모의 객체는 통합 전까지 결함을 숨기므로, 실제 종속성이 출시되면 모든 시뮬레이션 응답을 다시 검토해야 합니다.

순서가 반대입니다. 컴포넌트가 존재하기 전에 테스트 케이스를 작성하고 자동화한 다음, 케이스가 통과할 때까지 코드를 추가합니다. 컴포넌트는 테스트 스위트가 이미 갖춰진 상태로 출시됩니다.

누가 실행하느냐에 따라 둘 다 해당됩니다. 테스터는 구성 요소 사양에 대해 블랙박스 방식으로 작업하는 반면, 코드 접근 권한이 있는 개발자는 이를 적용합니다. 테스터는 구성 요소 사양에 따라 블랙박스 테스트를 수행하고, 코드 접근 권한이 있는 개발자는 이를 구현합니다. 흰색 상자 동일 구성 요소 내부의 커버리지.

이 게시물을 요약하면 다음과 같습니다.