직교 배열 테스트란 무엇입니까? (예)

⚡ 스마트 요약

직교 배열 테스트는 통계적 배열을 사용하여 간결한 테스트 세트를 구축하는 블랙박스 기법으로, 전수 조합 테스트에 필요한 것보다 훨씬 적은 테스트 케이스로 모든 입력값 쌍을 테스트할 수 있습니다.

  • 🎯 핵심 약속: 생성된 시뮬레이션 결과에는 임의의 두 요인 사이의 모든 레벨 쌍이 최소 한 번 이상 나타납니다.
  • 🔢 표기법: 배열은 L로 표기됩니다.실행(레벨)요인), 따라서 L9(3⁴)는 4개의 3단계 요인에 대한 9번의 실행을 의미합니다.
  • 📉 저축 규모: 각각 3단계에 있는 4개의 요인은 81가지의 모든 조합에서 9가지의 직교 조합으로 축소됩니다.
  • 🧮 균형 규칙: 각 열은 두 요소가 동시에 움직이지 않도록 채워야 하며, 그렇지 않으면 표가 직교하지 않게 됩니다.
  • 🛠️ 압형: GeneratorPICT 및 ACTS와 같은 도구는 배열을 자동으로 구축하여 수동 오류의 주요 원인을 제거합니다.
  • ⚠️ 알려진 한계: 쌍별 커버리지는 세 개 이상의 특정 값이 동시에 필요한 결함을 감지할 수 없습니다.

직교 배열 테스트는 입력 조합을 균형 잡힌 소수의 테스트 케이스 세트로 줄입니다.

직교 배열 테스트

직교 배열 테스트(OAT) 직교 배열 테스트는 직교 배열을 사용하여 테스트 케이스를 생성하는 소프트웨어 테스트 기법입니다. 이는 통계적 테스트 접근 방식이며, 특히 테스트 대상 시스템이 많은 양의 데이터 입력을 받을 때 유용합니다. 직교 배열 테스트는 입력값을 쌍으로 묶고 조합하여 테스트 커버리지를 극대화하므로, 상대적으로 적은 수의 테스트 케이스와 짧은 실행 시간으로 시스템을 테스트할 수 있습니다.

예를 들어, 기차표를 검증해야 할 경우 승객 수, 티켓 번호, 좌석 번호, 열차 번호 등 여러 요소를 확인해야 합니다. 각 요소를 하나씩 검사하는 것은 번거롭습니다. QA 엔지니어가 여러 입력값을 결합하여 한 번에 검사하는 것이 훨씬 효율적입니다. 이러한 경우 직교 배열 테스트 방법을 사용할 수 있습니다.

시간을 절약하기 위해 입력값을 짝지어 결합하는 이러한 방식을 페어와이즈 테스트(Pairwise testing)라고 하며, OATS 기법은 페어와이즈 테스트 세트를 생성하는 한 가지 방법입니다. 이 기법은 내부 코드를 전혀 고려하지 않고 입력값과 예상 결과만을 기반으로 작동하기 때문에 페어와이즈 테스트에 속합니다. 블랙 박스 테스트 가족.

왜 OAT(직교 배열 테스트)입니까?

현재 상황에서는 코드의 복잡성으로 인해 고객에게 고품질 소프트웨어 제품을 제공하는 것이 어려워졌습니다.

기존 방식에서는 테스트 스위트에 모든 입력값과 사전 조건의 조합에서 파생된 테스트 케이스가 포함됩니다. 결과적으로 n개의 테스트 케이스를 모두 테스트해야 합니다.

하지만 실제 상황에서는 테스터들이 모든 테스트 케이스를 실행하여 결함을 찾아낼 여유가 없습니다. 테스트 단계 내에 문서 작업, 제안 및 고객 피드백 수렴과 같은 다른 활동들도 처리해야 하기 때문입니다.

따라서 테스트 관리자는 테스트 사례의 수와 품질을 최적화하여 최대한의 보장을 원했습니다. 테스트 커버리지 최소한의 노력으로. 이러한 노력을 테스트 케이스 최적화라고 합니다.

  • 쌍별 상호작용을 검정하는 체계적이고 통계적인 방법.
  • 상호 작용 및 통합 지점은 결함의 주요 원인입니다.
  • 잘 정의되고 간결한 테스트 케이스 세트를 실행하여 대부분의 버그(전부는 아님)를 발견하십시오.
  • 직교적 접근 방식은 모든 변수에 대한 쌍별 적용 범위를 보장합니다.

따라서 이 기법은 팀이 이미 사용하고 있는 다른 입력값 감소 방법들과 함께 사용됩니다. 동등 분할 및 경계값 분석 단일 필드에 대해 어떤 값을 테스트할 가치가 있는지 결정하는 반면, 직교 배열은 어떤 값을 함께 테스트해야 하는지 결정합니다.

직교 배열 테스트는 어떻게 표현되는가?

직교 배열은 그 내용물보다는 간단한 공식으로 설명됩니다. 아래 그림은 그 공식에 있는 세 가지 요소가 배열의 모양과 어떻게 관련되는지 보여줍니다.

L(Runs) 공식에서 런, 요인 및 수준을 보여주는 직교 배열 표기법

  • 실행 횟수(N) - 배열의 행 수, 즉 생성될 테스트 케이스 수입니다.
  • 요인(K) - 배열의 열 개수로, 처리할 수 있는 최대 변수 개수를 의미합니다.
  • 레벨(V) - 단일 요소에 대해 취할 수 있는 최대 값의 개수.

일반적으로 하나의 요인에는 테스트할 입력값이 2~3개 있습니다. 입력값의 최대 개수가 레벨을 결정합니다.

배열 이름을 왼쪽에서 오른쪽으로 읽으세요. L9(34) 9는 실행 횟수이고, 3은 각 요인이 가질 수 있는 레벨 수이며, 위첨자 4는 요인의 개수를 나타냅니다. 같은 기사에서 사용됩니다. L4(23)이는 각각 두 가지 수준을 가진 세 가지 요인에 대해 네 번의 실행을 의미합니다.

배열을 직교하게 만드는 두 가지 속성이 있으며, 실행 횟수를 신뢰할 수 있으려면 이 두 가지 속성이 모두 충족되어야 합니다.

  • 밸런스: 각 요인의 모든 수준은 해당 열에 동일한 횟수로 나타납니다.
  • 쌍별 완전성: 임의의 두 열에 대해, 각 열에서 한 단계씩 선택하는 모든 조합은 동일한 횟수로 나타납니다.

두 번째 속성이 충족되지 않으면 해당 테이블은 직교 배열이 아니라 단순히 축소된 테스트 세트일 뿐이며, 축소를 정당화하는 쌍별 보장은 더 이상 적용되지 않습니다.

직교 배열 테스트를 수행하는 방법: 예

  1. 시나리오에 대한 독립변수를 식별합니다.
  2. 실행 횟수로 가장 작은 배열을 찾습니다.
  3. 요인을 배열에 매핑합니다.
  4. "남은" 수준에 대한 값을 선택합니다.
  5. 연주를 악보로 옮겨 적으세요 테스트 케이스생성되지 않은 특히 의심스러운 조합을 추가합니다.

아래의 두 예시에서는 해당 다섯 단계를 먼저 작은 2단계 문제에 적용하고, 그 다음에는 더 큰 3단계 문제에 적용합니다.

예제 1

웹 페이지는 상단, 중간, 하단의 세 부분으로 구성되며, 각 부분은 사용자에게 개별적으로 표시되거나 숨겨질 수 있습니다.

  • 요인 수 = 3(상단, 중간, 하단)
  • 레벨 수(가시성) = 2(숨김 또는 표시)
  • 배열 유형 = L4(23)

(4는 OAT 배열을 생성한 후 얻은 실행 횟수입니다.)

기존 방식대로 한 번에 한 부분씩 변경하는 경우, 2 x 3 = 6개의 테스트 케이스가 필요합니다.

테스트 케이스 시나리오 테스트할 값
테스트 #1 HIDDEN 인기
테스트 #2 크게보기 인기
테스트 #3 HIDDEN 바닥
테스트 #4 크게보기 바닥
테스트 #5 HIDDEN 중간
테스트 #6 크게보기 중간

이 여섯 번의 실행은 한 번에 한 부분씩만 변화시키며, 선택된 상태에 두 부분을 동시에 배치하지 않습니다. 모든 조합을 테스트하는 대신 모든 조합을 테스트하려면 2가 소요됩니다.3 = 8회 실행.

OAT 테스트를 진행하려면 아래와 같이 4개의 테스트 케이스가 필요합니다.

테스트 케이스 홈 중간 바닥
테스트 #1 숨겨진 숨겨진 숨겨진
테스트 #2 숨겨진 명백한 명백한
테스트 #3 명백한 숨겨진 명백한
테스트 #4 명백한 명백한 숨겨진

해당 표의 임의의 두 열을 확인해 보면, 숨김/표시 쌍 네 가지가 모두 정확히 한 번씩 나타나는데, 이것이 바로 직교성 속성의 가장 기본적인 형태입니다.

예제 2

마이크로프로세서의 기능을 테스트해야 합니다.

  • 온도: 100℃, 150℃, 200℃.
  • 압력: 2psi, 5psi 및 8psi
  • Doping 금액: 4%, 6%, 8%
  • 증착 속도: 0.1 mg/s, 0.2 mg/s 및 0.3 mg/s

기존 방식을 사용하면 3이 필요합니다.4 모든 입력값을 커버하기 위한 테스트 케이스는 총 81개입니다. OATS 방식을 사용해 보겠습니다.

요인 개수 = 4개 (온도, 압력, 온도)ping 금액 및 예치율)

각 요소당 3단계로 구성됩니다 (온도는 100°C, 150°C, 200°C의 3단계로 나뉘며, 다른 요소들도 각각 3단계로 구성됩니다).

아래와 같이 배열을 생성합니다.

1. 요인 개수가 표시된 열

테스트 케이스 # 온도 압력 Doping 양 증착률

2. 각 요인별 수준 수만큼 행을 입력하십시오. 예를 들어 온도에는 3개의 수준이 있으므로 온도 수준마다 3개의 행을 삽입하십시오.

테스트 케이스 # 온도 압력 Doping 양 증착률
1 100C
2 100C
3 100C
4 150C
5 150C
6 150C
7 200C
8 200C
9 200C

3. 이제 압력을 분산시키세요.ping 컬럼 내 침전량 및 침전 속도.

예를 들어, 100°C, 150°C 및 200°C 온도에 걸쳐 2psi를 입력하고, 마찬가지로 do를 입력하십시오.ping 100℃, 150℃, 200℃ 등에서 각각 4%씩 증가합니다.

테스트 케이스 # 온도 압력 Doping 양 증착률
1 100C 2의 PSI 4% 0.1mg/초
2 100C 5의 PSI 6% 0.2mg/초
3 100C 8의 PSI 8% 0.3mg/초
4 150C 2의 PSI 4% 0.1mg/초
5 150C 5의 PSI 6% 0.2mg/초
6 150C 8의 PSI 8% 0.3mg/초
7 200C 2의 PSI 4% 0.1mg/초
8 200C 5의 PSI 6% 0.2mg/초
9 200C 8의 PSI 8% 0.3mg/초

따라서 OA에서는 9개의 테스트 케이스를 다루어야 합니다.

정확도 참고: 3단계에서처럼 나머지 세 열을 똑바로 아래로 채우면 동일한 압력이 반복됩니다.ping 그리고 각 온도 블록 내부에서 증착이 세 배로 증가합니다. 압력과ping 따라서 양은 함께 움직이며 2psi와 6%와 같은 쌍은 나타나지 않으므로 위의 9개 행은 진정한 직교 배열이 아니라 축소된 테스트 세트입니다. 균형 잡힌 L9(34아래 배열은 모든 두 요인 사이의 9개 수준 쌍을 모두 포함하면서 동일한 9개의 실행을 유지합니다.

테스트 케이스 # 온도 압력 Doping 양 증착률
1 100C 2의 PSI 4% 0.1mg/초
2 100C 5의 PSI 6% 0.2mg/초
3 100C 8의 PSI 8% 0.3mg/초
4 150C 2의 PSI 6% 0.3mg/초
5 150C 5의 PSI 8% 0.1mg/초
6 150C 8의 PSI 4% 0.2mg/초
7 200C 2의 PSI 8% 0.2mg/초
8 200C 5의 PSI 4% 0.3mg/초
9 200C 8의 PSI 6% 0.1mg/초

직교 배열 테스트 vs. 쌍별(모든 쌍) 테스트

두 용어는 많은 팀에서 혼용되지만, 엄밀히 말하면 동일하지는 않습니다. 둘 다 특정 값 쌍을 포함하는 것을 목표로 하지만, 결과 표의 제약 조건의 엄격성에서 차이가 있습니다.

아래 직교 배열 테스트 쌍별(모든 쌍) 테스트
기본 구조 실험 설계에서 차용한 직교 배열 검색 알고리즘에 의해 생성된 커버링 배열
적용 범위 규칙 모든 쌍은 동일한 횟수로 나타납니다. 모든 쌍이 적어도 한 번씩 나타납니다.
수준이 불균등한 요인들 혼합 레벨 배열이 필요하지만, 요구되는 형태의 배열이 존재하지 않을 수도 있습니다. 발전기에서 직접 처리합니다.
일반적인 실행 횟수 균형 유지 요건 때문에 동일하거나 약간 더 높습니다. 동일한 입력값에 대해 같거나 더 낮음
값들 사이의 제약 조건 배열 내부에 표현하기 어렵습니다. 대부분의 최신 발전기에서 지원됩니다.

실제로는 요인들의 수준 개수가 같을 때 균형 직교 배열이 더 명확한 교육 모델이자 더 안전한 선택인 반면, 입력값이 불규칙하고 불균등한 실제 프로젝트에서는 대부분의 도구가 커버링 배열을 생성합니다. 둘 다 상호 보완적입니다. 의사결정표 테스트 상태 전환 테스트값의 조합보다는 비즈니스 규칙과 순서를 대상으로 합니다.

직교 배열 테스트 도구

위에서 언급한 작은 예시들처럼 소수의 경우에만 배열을 직접 만드는 것이 실용적입니다. 네다섯 개 이상의 요소를 넘어서면 팀에서는 생성기를 사용하고, 해당 도구가 실행 횟수를 자동으로 결정합니다.

  • 사진: 오픈 소스 명령줄 생성기 Microsoft매개변수와 해당 값은 일반 텍스트 모델 파일에 기록되며, 도구는 조합 집합을 출력합니다. 제약 조건 및 하위 모델이 지원되므로 특정 값 쌍이 유효하지 않을 때 유용합니다. 자세한 내용은 다음을 참조하십시오. PICT 저장소.
  • 행위: NIST에서 개발한 연구 도구로, 2방향부터 6방향까지의 커버리지 어레이를 생성하고, 미리 계산된 어레이 라이브러리도 제공합니다. 해당 도구는 다음 웹사이트에서 이용할 수 있습니다. NIST 조합 테스트 프로젝트.
  • 상업용 조합 플랫폼: 호스팅 도구는 추가 요구 사항을 충족합니다. trac실행 가능성, 예상 결과 및 테스트 관리 시스템으로의 내보내기 기능을 제공하며, 감사 추적이 필요한 대규모 팀에 적합합니다.
  • 게시된 배열 라이브러리: L4, L8, L9, L16, L18과 같은 표준 배열은 표 형식으로 제공되며, 요인과 수준 개수가 일치할 경우 직접 복사할 수 있습니다.

어떤 도구가 테이블을 생성하든, 생성된 행은 실제 데이터와 예상 결과를 포함하는 실행 가능한 테스트 케이스로 변환되어야 하며, 다른 테스트 스위트와 마찬가지로 일정을 예약해야 합니다. 소프트웨어 테스트 기법 이미 프로젝트에서 사용 중입니다.

직교 배열 테스트의 장점

  • 선택된 모든 변수의 쌍별 조합에 대한 테스트를 보장합니다.
  • 테스트 케이스 수를 줄입니다.
  • 변수 쌍 간의 모든 상호 작용을 다루면서도 테스트 케이스 수를 줄입니다.
  • 변수들의 복잡한 조합도 처리할 수 있습니다.
  • 손으로 만든 테스트 세트보다 생성하기가 더 간단하고 오류가 발생할 가능성이 적습니다.
  • 유용합니다 통합 테스팅그리고 에도 똑같이 유용합니다 구성 테스트브라우저, 운영 체제 및 장치 조합이 빠르게 증가하는 환경입니다.
  • 테스트 주기와 테스트 시간이 줄어들어 생산성이 향상됩니다.

저축 화합물은 다음과 같습니다. 회귀 테스트그 이유는 균형 잡힌 소규모 테스트 세트는 비용이 저렴하여 매 주기마다 다시 실행할 수 있는 반면, 모든 조합을 포괄하는 테스트 세트는 일반적으로 한 번 실행된 후에는 조용히 중단되기 때문입니다.

직교 배열 테스트의 단점

  • 데이터 입력량이 증가함에 따라 테스트 케이스 설계의 복잡성이 증가합니다. 결과적으로 수작업량과 소요 시간이 늘어나고 테스터는 더 많은 노력을 기울여야 합니다. 자동화 테스트.
  • 쌍별 커버리지는 전체 커버리지가 아닙니다. 특정 값 세 개가 동시에 나타날 때만 발생하는 결함은 어레이를 통과하여 아무런 문제 없이 발견될 수 있습니다.
  • 레벨 수가 서로 다른 요인들은 표준 배열에 깔끔하게 매핑되지 않으므로, 혼합 레벨 배열 또는 커버링 배열 생성기가 필요합니다.
  • 레벨을 선택하는 것은 판단의 문제입니다. 중요한 값이 입력 모델에서 누락되면 어떤 배열도 해당 값을 복구할 수 없습니다.
  • 특정 국가에서만 유효한 결제 방식과 같이 값 사이에 제약 조건을 두는 것은 표현하기 어렵고, 일반적으로 수동으로 제거해야 하는 유효하지 않은 행이 생성됩니다.

이러한 제한 사항 중 어느 것도 해당 기법을 배제하는 것은 아니며, 단지 그 한계를 설정할 뿐입니다. 직교 배열은 조합 문제를 줄여주고, 위험 분석 및 도메인 테스트 우선 어떤 요소들이 모델에 포함될 자격이 있는지 결정해야 합니다.

OAT 수행 중 실수 또는 오류

  • 애플리케이션의 잘못된 영역에 테스트 노력을 집중하고 있습니다.
  • 잘못된 매개변수를 선택하여 조합했습니다.
  • 입력 데이터셋이 충분히 작아서 모든 데이터를 철저하게 테스트할 수 있는 경우 직교 배열 테스트를 사용합니다.
  • 생성기가 필요할 정도로 큰 모델에 직교 배열 테스트를 수동으로 적용합니다.
  • 더 깊은 수준의 커버리지가 필요한 고위험 애플리케이션에서 직교 배열 테스트에만 의존하는 것은 위험합니다.

마지막 항목은 실제로 가장 큰 피해를 야기하는 부분입니다. 안전에 중요한 요소나 재정적으로 중요한 요소의 경우, 쌍별 비교 집합은 상한선이 아니라 하한선 역할을 하며, 일반적으로 특정 사례들을 추가하여 보완합니다. 시스템 테스트 수준 및 더 넓은 계획에 따라 설명됨 소프트웨어 테스트 유형.

자주 묻는 질문

이는 블랙박스 기법입니다. 배열은 입력 매개변수와 허용된 값만으로 구성되며, 소스 코드, 분기 또는 내부 상태를 참조하지 않으므로 구현이 완료되기 전에 설계할 수 있습니다.

테스터는 입력 모델을 구축하며, 일반적으로 비즈니스 분석가가 어떤 값이 유효한지 확인합니다. 개발자는 캐시 설정과 같이 내부적인 매개변수를 구현하는 데 기여합니다. 테스트 스위트의 가치는 배열 자체가 아니라 모델의 품질에 따라 결정됩니다.

아니요, 그건 그 요소들에 달려 있습니다. 파티셔닝과 경계 분석을 통해 각 필드는 몇 개의 대표 값으로 축소되고, 배열은 그 값들 중 어떤 값을 결합할지 결정합니다. 필터링되지 않은 원시 값에 배열을 실행하면 불필요하게 큰 테이블이 생성됩니다.

혼합 레벨 배열이 필요합니다. 예를 들어 2단계 및 3단계 열이 혼합된 L18 배열이 있습니다. 표준 배열이 적합하지 않은 경우, 커버링 배열 생성기가 배열 형태를 직접 처리하여 모든 요소를 ​​동일한 레벨 수로 강제하는 것보다 더 작은 테이블을 반환합니다.

세 개 이상의 특정 값이 동시에 필요한 모든 오류를 의미합니다. 오류 데이터에 대한 실증 연구에 따르면 대부분의 오류는 하나 또는 두 개의 매개변수에 의해 발생하므로 쌍별 커버리지가 효과적이지만, 중요한 기능의 경우 삼중 커버리지가 권장됩니다.

주로 여러 구성 요소 또는 설정이 상호 작용하는 통합 및 시스템 수준에서 사용됩니다. 또한 브라우저, 운영 체제 및 화면 크기와 같은 환경 매트릭스, 그리고 출시된 조합 수가 사용 가능한 테스트 범위를 초과하는 모든 구성 가능한 제품에도 적합합니다.

머신 러닝은 요구 사항과 생산 로그를 분석하여 중요한 요소와 수준을 제안하고, 결함 이력 모델은 어떤 조합이 삼중 커버리지를 받을 자격이 있는지 순위를 매깁니다. 배열 연산은 결정론적이며, 지능적인 부분은 모델에 어떤 요소를 입력할지 선택하는 것입니다.

이 코드는 제너레이터, 행을 읽는 데이터 기반 루프, 그리고 그 주변의 어설션을 위한 모델 파일을 작성합니다. 언어 모델이 직교하지 않은 그럴듯한 테이블을 생성할 수 있으므로, 제너레이터 자체를 사용하여 코드 커버리지 주장을 검증해야 합니다.

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