등가 분할

Equivalence partitioning

동등성 파티셔닝 또는 동등성 클래스 파티셔닝([1]ECP)은 소프트웨어 유닛의 입력 데이터를 테스트 케이스를 도출할 수 있는 동등한 데이터 파티션으로 나누는 소프트웨어 테스트 기법이다.시험 케이스는 각 칸막이를 1회 이상 커버하도록 설계하는 것을 원칙으로 한다.이 기법은 오류의 종류를 밝혀내는 테스트 케이스를 정의하여 개발해야 하는 테스트 케이스의 총 수를 줄이려고 한다.이 접근법의 장점은 적은 수의 시험 사례로 인해 소프트웨어 시험에 필요한 시간이 단축된다는 것이다.

동등성 분할은 일반적으로 시험된 구성 요소의 입력에 적용되지만 드문 경우 출력물에 적용될 수 있다.동등성 파티션은 일반적으로 테스트 객체의 처리에 영향을 미치는 입력 속성에 대한 요구사항 명세서로부터 파생된다.

ECP의 기본 개념은 동등성 등급에서 비롯되며, 이는 동등성 관계에서 비롯된다.소프트웨어 시스템은 실제로 어떤 구현 프로그래밍 언어에서 알고리즘으로 구현된 계산 가능한 기능이다.입력 테스트 벡터에 해당 알고리즘의 일부 지침이 적용되지만(자세한 내용은 코드 범위 참조) 다른 명령어는 적용되지 않는다.이는 입력 시험 벡터 사이에 흥미로운 관계를 제공한다.- 는 벡터 a, b의 커버리지 풋프린트가 정확히 동일한 경우에만, 즉, 동일한 단계에서 동일한 지침을 포함하는 시험 벡터 a, b 사이동등성 관계.이는 명백히 관계 덮개 C시험 벡터의 영역을 다중 동등성 등급으로 분할한다는 것을 의미한다.이 분할을 시험 입력의 동등성 등급 분할이라고 한다.N 등가 등급이 있는 경우, N 벡터만 시스템을 완전히 커버하기에 충분하다.

시연은 C:에 명시된 기능을 사용하여 수행할 수 있다.

인트로 safe_add( 인트로 a, 인트로 b ) {     인트로 c = a + b;     만일 ( a > 0 && b > 0 && c <= 0 )     {         인쇄물 ( 더부룩한, "과잉(긍정)!\n" );     }      만일 ( a < 0 && b < 0 && c >= 0 )     {         인쇄물 ( 더부룩한, "과잉(부정)!\n" );     }      돌아오다 c; } 

코드에 근거하여 [a,b]의 입력 벡터를 분할한다.우리가 커버해야 할 블록은 긍정적인 방향, 부정적인 방향, 그리고 이 둘 중 어느 것도 아니다.그것은 코드 검토 자체에서 3개의 동등한 등급으로 증가한다.

동등성 등급 파티셔닝 시연

입력 문제를 해결하기 위해 우리는 불평등에서 피신한다.

우리는 정수(컴퓨터 과학)의 고정된 크기가 있기 때문에 z는 다음과 같이 대체될 수 있다.

INT_MIN ≤ x + y ≤ INT_MAX

그리고

x { INT_MIN , ... , INT_MAX }y { INT_MIN , ... , INT_MAX } 포함.

INT_MIN = x + y, INT_MAX = x + y인 등등의 엄격한 조건에서의 시험 벡터의 값을 경계 값이라고 하며, 경계 값 분석에는 이에 대한 자세한 정보가 있다.그래프는 X 및 Y 양의 값에 대한 첫 번째 사분면인 오버플로우 사례만 다룬다는 점에 유의하십시오.

일반적으로 입력에는 유효한 특정 범위와 유효하지 않은 다른 범위가 있다.여기서 잘못된 데이터는 데이터가 잘못되었음을 의미하는 것이 아니라 이 데이터가 특정 파티션 외부에 있음을 의미한다.이는 매개변수 "월"을 사용하는 함수의 예에 의해 가장 잘 설명될 수 있다.이 달의 유효 범위는 1월부터 12월까지로 1월부터 12월까지입니다.이 유효한 범위를 파티션이라고 한다.이 예에서는 유효하지 않은 범위의 파티션이 두 개 더 있다.첫 번째 유효하지 않은 파티션은 ≤ 0이고 두 번째 유효하지 않은 파티션은 ≥ 13일 것이다.

... -2 -1 0 1 .............. 12 13 14 15 ..... -------------------------------------------------------------------------------------------- 유효 파티션 1 유효 파티션 유효 파티션 2

동등성 분할과 관련된 시험 이론에 따르면 관련 분할에 대한 프로그램의 동작을 평가하기 위해서는 각 분할 영역에 대한 하나의 시험 사례만 필요하다고 한다.즉, 각 파티션에서 하나의 테스트 케이스를 선택하여 프로그램의 동작을 확인하는 것으로 충분하다.파티션의 더 많은 또는 심지어 모든 테스트 케이스를 사용하는 것은 프로그램에서 새로운 결함을 발견하지 못할 것이다.하나의 파티션 내의 값은 "등가"로 간주된다.따라서 시험 건수는 상당히 감소할 수 있다.

이 기법을 적용하면 이른바 '더러운' 시험 사례도 발견된다는 것이 추가적 효과다.경험이 부족한 검사자는 해당 달의 입력 데이터 1~12를 테스트 사례로 사용하고 잘못된 파티션 중 일부를 선택하는 것을 잊어버릴 수 있다.이것은 한편으로는 불필요한 시험 케이스가 엄청나게 많아지고, 다른 한편으로는 더러운 범위에 대한 시험 케이스가 부족하게 될 것이다.

이러한 경향은 동등성 파티셔닝을 소프트웨어의 내부 구조를 고려하지 않고 그것의 인터페이스에서 소프트웨어 구성요소를 엄격하게 검사하고 있는 소위 블랙박스 테스트와 연관시키는 경향이 있다.그러나 주제를 자세히 살펴보면 그레이 박스 테스트에도 적용되는 경우가 있다.위의 예와 같이 1에서 12 사이의 유효한 범위를 가진 구성 요소에 대한 인터페이스를 상상해 보십시오.그러나 내부적으로 함수는 1과 6 사이의 값과 7과 12 사이의 값의 차이를 가질 수 있다.입력 값에 따라 소프트웨어는 내부적으로 서로 다른 경로를 통해 실행되어 약간 다른 작업을 수행한다.구성 요소에 대한 입력 및 출력 인터페이스에 대해서는 이 차이를 알 수 없지만 회색 상자 테스트에서는 두 경로를 모두 검사하려고 한다.이를 위해서는 블랙박스 테스트에 필요하지 않은 동등성 파티션을 추가로 도입할 필요가 있다.이 예제의 경우 다음과 같다.

... -2 -1 0 1 ..... 6 7 ..... 12 13 14 15 ..... ------------------------------------------------------------------------------------------------------------------------------------------------------- 잘못된 칸막이 1 P1 P2 유효 칸막이 2

예상 결과를 확인하려면 출력 인터페이스가 아닌 내부 중간 값을 평가해야 한다.각 파티션의 값을 여러 개 사용할 필요는 없다.위의 시나리오에서 우리는 잘못된 파티션 1, 유효한 파티션 P1에서 6을, 유효한 파티션 P2에서 7을, 그리고 잘못된 파티션 2에서 15를 얻을 수 있다.

동등성 분할은 시험 사례를 결정하는 독립적 방법이 아니다.경계값 분석으로 보완해야 한다.가능한 입력의 분할을 결정한 후 경계 값 분석 방법을 적용하여 이러한 분할 중에서 가장 효과적인 시험 사례를 선택해야 한다.

제한 사항

데이터 범위 또는 집합이 접근 단순성을 포함하며(예: 0-10, 11-20, 21-30) 모든 값을 테스트하는 것이 실용적일 경우 범위 내 및 범위 내와 인접한 모든 값을 사용하여 포괄적 테스트 적용 범위를 고려해야 한다.소프트웨어에 검사자가 알 수 없는 하위 파티션이 포함된 경우, 포괄적 검사 범위에서는 동등성 분할 방법을 사용하여 걸리지 않는 버그를 발견할 수 있다.[2]또한, 단순화된 경우에서 더 큰 범위를 포함하는 경우(예: 0-1000, 1001-2000, 2001-3000)에 비해 동등성 분할을 사용하여 검정 값의 수를 줄일 수 있는 효익이 감소한다.

추가 읽기

참조

  1. ^ Burnstein, Ilene (2003), Practical Software Testing, Springer-Verlag, p. 623, ISBN 0-387-95131-8
  2. ^ Mathur, Aditya (2007), Foundations of Software Testing: Fundamental Algorithms and Techniques, Pearson India, p. 96, ISBN 81-317-0795-4