화이트박스 테스트

반응형
SMALL

기초 경로 검사 (Basic Path Testing)

  • 기초 경로 검사는 절차적 설계의 논리적 복잡성을 측정하여, 코드의 모든 경로를 테스트할 수 있도록 하는 기법입니다. 이 기법을 통해 설계자는 프로그램의 흐름을 분석하여 최소한의 테스트 경로를 결정할 수 있습니다.
  • 예시: 어떤 프로그램이 특정 입력 값에 따라 다른 계산 경로를 선택한다면, 기초 경로 검사는 각 경로마다 적어도 한 번씩 실행해보는 테스트 케이스를 설계합니다. 이를 통해 논리적 결함이 있는 경로가 있는지 확인할 수 있습니다.

제어 구조 검사 (Control Structure Testing)

1. 조건 검사 (Condition Testing)

  • 조건 검사는 프로그램의 논리적 조건을 테스트하는 기법입니다. 조건문이 참이 될 때와 거짓이 될 때 각각의 경우를 테스트하여 모든 조건이 정확하게 동작하는지 확인합니다.
  • 예시: if (x > 5)라는 조건문이 있을 때, x = 6인 경우와 x = 4인 경우 모두를 테스트하여 조건문이 올바르게 작동하는지 확인합니다.

2. 루프 검사 (Loop Testing)

  • 루프 검사는 프로그램의 반복 구조에 초점을 맞춰 테스트하는 기법입니다. 루프가 정상적으로 반복을 수행하는지, 종료 조건이 올바르게 작동하는지를 확인합니다.
  • 예시: for (int i = 0; i < 10; i++)라는 루프에서 i = 0에서 시작해 i < 10 동안 루프가 잘 실행되는지, 그리고 루프가 10번 후 종료되는지 테스트합니다. 또한, 예외적으로 i = 10인 상태에서 루프가 실행되지 않는지도 확인해야 합니다.

3. 데이터 흐름 검사 (Data Flow Testing)

  • 데이터 흐름 검사는 변수의 정의(변수가 값이 할당되는 부분)와 사용(값이 참조되는 부분)에 초점을 맞춰 테스트하는 기법입니다. 변수가 올바르게 정의되고, 잘못된 값이 참조되지 않도록 설계되어 있는지 확인합니다.
  • 예시: 프로그램에서 변수가 정의된 후 바로 사용되지 않고 중간에 값이 변경되거나 무효화될 위험이 있는지 확인합니다. 예를 들어, int x = 5;에서 x가 정의된 후 사용되기 전에 또 다른 변수나 함수에 의해 x가 의도치 않게 변경되는 상황을 방지하기 위해 검사를 수행합니다.
 
 

화이트 박스 테스트의 검증 기준

1. 문장 검증 기준 (Statement Coverage)

  • 문장 검증 기준은 소스 코드의 모든 문장이 최소 한 번 이상 실행되도록 테스트 케이스를 설계하는 기법입니다. 즉, 코드에 포함된 각 문장이 적어도 한 번 실행되었는지 확인하는 것이 목표입니다.
  • 예시 
  • 문장 검증 기준에 따르면, System.out.println("a is greater than 3"); 구문이 실행되도록 a > 3인 경우만 테스트할 수도 있습니다. 예를 들어, a = 5로 설정한 후 테스트를 수행하여 이 문장이 실행되도록 합니다.
int a = 5;
if (a > 3) {
    System.out.println("a is greater than 3");
}

2. 분기 검증 기준 (Branch Coverage)

  • 분기 검증 기준은 소스 코드의 모든 조건문에서 조건식의 결과가 true인 경우와 false인 경우를 각각 한 번 이상 실행되도록 테스트하는 기법입니다. 이 기준은 결정 검증 기준이라고도 합니다.
  • 예시:분기 검증 기준에 따르면, a > 3이 true일 때와 false일 때 두 가지 경우 모두 테스트해야 합니다. 예를 들어, a = 5로 설정해 true인 경우와 a = 2로 설정해 false인 경우를 테스트해야 합니다.
     
int a = 5;
if (a > 3) {
    System.out.println("a is greater than 3");
} else {
    System.out.println("a is less than or equal to 3");
}

3. 조건 검증 기준 (Condition Coverage)

  • 조건 검증 기준은 조건문에 포함된 개별 조건식의 결과가 true인 경우와 false인 경우를 각각 한 번 이상 수행하도록 테스트 케이스를 설계하는 기법입니다.
  • 예시:조건 검증 기준에 따르면, a > 3과 b < 4의 각각의 조건에 대해 truefalse를 모두 테스트해야 합니다. 예를 들어, a = 5, b = 2인 경우에는 두 조건이 모두 true이므로, a = 2, b = 5로 설정하여 각각의 조건이 false인 경우도 테스트해야 합니다.
     
     
int a = 5;
int b = 2;
if (a > 3 && b < 4) {
    System.out.println("Both conditions are true");
}

4. 분기/조건 기준 (Branch/Condition Coverage)

  • 분기/조건 기준은 분기 검증 기준과 조건 검증 기준을 모두 만족하는 설계로, 각 조건문의 truefalse에 대한 모든 경우를 테스트하는 것입니다. 조건문이 true일 때와 false일 때 각각의 조건식이 어떻게 평가되는지 테스트해야 합니다.
  • 예시:분기/조건 기준에 따르면, a > 3과 b < 4의 모든 조합에 대해 테스트해야 합니다:
    • a = 5, b = 2 (true OR true) - 첫 조건문이 참인 경우
    • a = 5, b = 5 (true OR false) - 하나는 참, 하나는 거짓인 경우
    • a = 2, b = 2 (false OR true) - 하나는 참, 하나는 거짓인 경우
    • a = 2, b = 5 (false OR false) - 두 조건이 모두 거짓인 경우
int a = 5;
int b = 2;
if (a > 3 || b < 4) {
    System.out.println("At least one condition is true");
} else {
    System.out.println("Both conditions are false");
}

이러한 방식으로, 모든 가능한 경우의 조건문을 테스트하는 것이 목표입니다.

반응형
LIST