공부/QA

[QA] 테스트 레벨

으뜸정신 2024. 3. 19. 15:04

테스트 레벨이란 함께 분류되고 관리되는 테스트 활동의 집합을 지칭한다.

  • 컴포넌트 테스팅
  • 통합 테스팅
  • 시스템 테스팅
  • 인수 테스팅

이 있다.

 

테스트의 목적, 목표, 테스트 베이시스, 테스트 대상과 같은 특성을 기준으로 분류하며 각각 테스트 레벨의 특징에 맞게 다르게 정의되고 식별되어야 한다.


컴포넌트

단위 테스트 혹은 모듈 테스팅이라고 부르기도 한다.

 

테스트가 가능한 최소단위(모듈, 프로그램, 객체, 클래스)로 나누어진 소프트웨어 내에서 결함을 찾고 그 기능을 검증하는 것으로 개별적으로 테스트할 수 있는 컴포넌트에 초점을 맞춘다.

 

컴포넌트 테스팅의 목적은 

  • 기본 경로, 오류 처리 경로 확인
  • 컴포넌트 내의 인터페이스 확인
  • 리스크 완화
  • 컴포넌트의 기능과 비기능 동작이 설계 및 명세와 일치하는지 여부 판단
  • 컴포넌트에 존재하는 결함 발견

이다.

 

컴포넌트 테스팅은 소프트웨어 개발 수명주기 모델과 시스템에 따라 개별적으로 이루어지는 경우가 많다.

 

테스트 케이스는 컴포넌트 명세서, 소프트웨어 상세 설계 또는 데이터 모델과 같은 개발 산출물에서 도출되며

일반적으로 테스팅은 코드 중심으로 수행하며 디버깅 툴 같은 개발 환경의 지원을 필요로 한다.

 

결함을 발견할 때마다 바로 수정을 한다. 주된 테스팅 방법은 구조 기반 테스팅이다. (화이트 박스)


 

통합 테스팅

컴포넌트 간의 인터페이스를 테스트하는 것은 물론 OS, 파일 시스템, 하드웨어 또는 시스템 간 인터페이스와 같은 시스템의 각기 다른 부분과 상호 연동하는 동작을 테스트한다.

 

시스템의 기능에 초점을 맞추기보다는 시스템 간의 커뮤니케이션에 테스트를 진행한다.

 

통합하는 범위가 크면 클수록 장애나 결함의 위치를 찾아 격리하기 쉽지 않다. 그래서 가능한 한 번에 모든 것을 통합하지 않고 점진적으로 진행해야 한다.

 

통합 테스팅의 목적은

  • 인터페이스의 기능과 비기능 동작이 설계 및 명세와 일치하는지 여부 판단
  • 인터페이스 품질 수준에 대한 자신감 획득
  • 결함 발견

이다.


시스템 테스팅

전체 시스템 또는 제품의 동작이나 능력에 관심을 가지며 시스템이 수행할 엔드-투-엔드 작업과 그런 작업을 수행할 때 나타나는 비기능 동작을 고려하는 경우가 많다.

 

개발 프로젝트 차원에서 정의된 전체 시스템 또는 제품의 동작에 대해 테스트하는 것이다.

 

태스팅에서 발견하지 못하여 발생할 수 있는 환경특성 장애 리스크를 최소화하기 위해서 시스템 테스팅은 가능한 범위에서 실제 최종 사용 환경 또는 이와 유사한 환경에서 수행해야 한다.

 

시스템 테스팅은 기능 및 비기능 요구사항을 모두 검증해야 한다

기능적 요구 사항은 테스트 대상의 특성을 가장 상세하게 명세한 문서를 기반으로 명세 기반(블랙박스) 기법을 수행한다.

 

 

시스템 테스팅의 목적은

  • 시스템의 기능/비기능 동작이 설계 및 명시된 대로 동작하는지 검증
  • 완성된 시스템이 기대한 대로 동작 기능 확인
  • 결함 발견

이다.


인수 테스팅

시스템을 사용하는 고객이나 사용자가 전담하여 수행하는 경우가 대부분이다.

 

결함을 찾는 것이 주된 관심사가 아니다.

 

시스템을 배포하거나 실제 사용할만한 준비가 되었는지에 대해 평가하는 것이다.

 

인수 테스팅의 목적은

  • 시스템이나 시스템의 일부 또는 특정한 비기능적인 특성에 대해 확신을 얻는 것
  • 완성된 시스템이 기대한 대로 동작하는지 확인
  • 시스템의 기능/비기능 동작이 명세대로 동작하는지 확인

이다.

 

백업/ 복원 테스팅이나 유지보수, 보안 취약성에 대한 정기적인 점검이 있다.

 

기존 고객이나 잠재적 고객에게 피드백을 받고 싶을 경우 알파 테스팅과 베타 테스팅을 진행한다.

알파테스팅(공장 인수 테스팅)은 개발 조직 내에서 고객에 의해 수행되며

베타 테스팅(사이트 인수 테스팅)은 실제 환경에서 사용자 혹은 잠재 고객에 의해 수행된다.