개념: 테스트 레벨
테스트는 작업 노력의 여러 가지 단계 또는 레벨에 있는 여러 가지 유형의
대상에 적용됩니다. 이러한 레벨은 일반적으로 테스트 설계 및 수행 기술이
뛰어난 역할 담당자에 의해 구별되고 그러한 경우 각 레벨에서 기법이 테스트에 가장
적절합니다. 이러한 여러 가지 작업 노력에 대해 균형 있는 초점을 갖는 것이 중요합니다.
개발자 테스트 
개발자 테스트는 개발자 팀이 수행하기에 가장 적절한 테스트 설계 및 구현 부분을 설명합니다.
이것은 독립 테스트와 대조됩니다. 대부분의 경우 테스트 실행은 처음에 테스트를 설계 및
구현한 개발자 테스트 그룹에서 발생하지만 독립 테스트 그룹이 실행 가능하도록
개발자가 테스트를 작성하는 것이 좋습니다.
전통적으로 개발자 테스트는 주로 단위 테스트와 연관되어 왔습니다.
또한 일부 개발자가 여러 가지 레벨의 통합 테스트를 수행하는 경우
이것은 방식 및 기타 컨텍스트 이슈에 의해 상당히 좌우됩니다. 개발자 테스트는
독립 단위를 따로 테스트하는 것 이상을 다루는 것이 바람직합니다.
독립 테스트
독립 테스트는 개발자 팀과 관계 없는 사람이 수행하기에 가장 적절한 테스트 설계 및 구현을 설명합니다.
이러한 구별을 독립적인 검증 및 유효성 확인을 포함하는 수퍼세트로 간주할 수 있습니다.
대부분의 경우 테스트 실행은 처음에 테스트를 설계 및
구현한 독립 테스트 그룹에서 발생하지만 개발자 테스트 그룹이 실행할 수 있도록
독립 테스터가 테스트를 작성해야 합니다. Boris Beizer는 개발자 테스트와 다른 독립
테스트가 가진 목표를 다음과 같이 설명합니다.
"독립 테스트의 목적은 다른 관점을 제공하는 것이므로
다른 테스트 즉, 개발자에게 가능한 것보다 풍부한 [...] 환경에서
이러한 테스트를 수행하는 것입니다." [BEI95]
독립 스테이크홀더 테스트

독립 테스트의 다른 시각은 여러 스테이크홀더의 요구 및 관심사항에 근거하는 테스트라는 점입니다.
따라서 스테이크홀더 테스트라고도 합니다. 이것은 중요하게 구별됩니다. 고객 및 일반 사용자 외에도
기술 지원 인력, 기술 훈련자, 영업 인력과 같은 스테이크홀더와 함께 어느 정도
일반적인 "고객" 개념을 확장하여 전통적으로 간주되어온 스테이크홀더의
관심사항을 보다 넓힐 수 있도록 도와줍니다.
마지막으로 XP의
고객 테스트 개념은 RUP에서 독립 테스트에 대한 이러한 범주화와 관련됩니다.
단위 테스트 
단위 테스트는 소프트웨어의 가장 작은 테스트 가능한 요소의 확인에 초점을 둡니다.
일반적으로 단위 테스트는 제어 플로우 및 데이터 플로우가 다루어졌고
예상대로 기능하는지 확인하기 위해 구현 모델에 있는 컴포넌트에 적용됩니다.
구현자는 단위를 개발하면서 단위 테스트를 수행합니다.
단위 테스트의 세부사항은 구현 규칙에 설명되어 있습니다.
통합 테스트 
통합 테스트는 구현 모델의 컴포넌트가 유스 케이스와 함께 실행될 때 제대로
작동하는지 확인하기 위해 수행됩니다. 테스트 대상은 구현 모델의 패키지 또는
패키지 세트입니다. 종종 서로 다른 개발 조직에서 조합된 패키지가 나옵니다.
통합 테스트는 패키지의 인터페이스 스펙에 있는 불완전성 또는 실수를 보여줍니다.
어떤 경우 개발자는 독립 테스터와 같은 다른 그룹이 통합 테스트를 수행한다고
가정합니다. 이 경우 다음과 같은 이유로 소프트웨어 프로젝트에 대한 위험이
제기되고 궁극적으로 소프트웨어 품질에 위협을 받게 됩니다.
- 통합 분야가 소프트웨어 장애의 공통 지점입니다.
- 독립 테스터가 수행하는 통합 테스트는 일반적으로 블랙박스 기법을
사용하고 대형 소프트웨어 컴포넌트를 다룹니다.
더 나은 방법은 각 팀 테스트 노력이 중복되지 않게 하면서
개발자와 독립 테스터 모두의 책임으로 통합 테스트를 고려하는 것입니다.
그러한 중복의 정확한 특성은 개별 프로젝트의 요구사항에 근거합니다.
개발자와 독립 시스템 테스터가 품질에 대한 단일 시각을 공유하는 환경을
조성하는 것이 바람직합니다. 자세한 정보는
개념: 개발자 테스트를 참조하십시오.
시스템 테스트 
일반적으로 시스템 테스트는 소프트웨어가 전체로서 기능할 때 수행됩니다.
반복적 라이프사이클로 시스템 테스트는 잘 형식화된 유스 케이스 작동 서브세트가
구현되자마자 훨씬 미리 발생할 수 있습니다. 보통 대상은 시스템의 엔드-투-엔드 기능 요소입니다.
인수 테스트 
사용자 인수 테스트는 소프트웨어 전개 이전에 취하는 마지막 테스트 조치입니다.
인수 테스트의 목적은 소프트웨어가 준비되어 일반 사용자가 소프트웨어에 빌드된 해당 기능 및 타스크를
수행할 수 있는지 확인하는 것입니다. 자세한 정보는 개념: 인수 테스트를 참조하십시오
일반적으로 한 그룹 또는 한 팀에서 다른 그룹 또는 다른 팀으로의 이동으로
특징지을 수 있는 인수 테스트의 다른 개념이 있습니다. 예를 들어, 빌드 인수 테스트는
개발에서 독립 테스트로 새 소프트웨어 빌드의 인계를 승인하는 데 수행된 테스트입니다.
테스트 레벨의 순서 및 시기에 대한 설명 
일반적으로 단위 테스트는 첫 번째 테스트 단계로 반복 초기에 구현되는 것으로
생각됩니다. 다음 단계를 수행하기 전에 모든 단위를 통과시켜야 합니다.
그러나 반복적 개발 프로세스에서 이 방법은 일반적으로 부적절합니다.
더 나은 방법은 오류 발견 가능성이 높은 단위, 통합 및 시스템 테스트를 식별한 후
최대 위험 및 지원 환경 조합에 기초하여 그러한 테스트를 구현 및 실행하는 것입니다.
|