본문 바로가기
CS/SW공학

[SW공학] 화이트박스 테스트, 블랙박스 테스트의 개념과 종류

by jangThang 2023. 4. 28.
반응형

 소프트웨어 공학의 테스트 기법에는 크게 화이트박스 테스트와 블랙박스 테스트가 있습니다. 해당 테스트 기법의 개념과 종류에 대해서 알아보겠습니다.

 

[ Contents ]

     

     

    1. 화이트박스 (White Box) 테스트

    소스코드를 통해 소프트웨어 내부 구조나 동작을 세밀하게 검사하는 기법

     

     '화이트박스'는 속이 훤히 보이는 투명상자를 뜻합니다. 소스코드를 직접 뜯어보면서 테스트하는 기법으로, 프로그램 내부 구조나 동작을 꼼꼼히 검사할 수 있습니다.

     테스트 종류에는 '제어흐름(조건문, 반복문)', '데이터 흐름(변수, 자료구조)', '분기', '경로' 테스트가 있습니다.

     

     

    - 테스트 검증기준 (커버리지, Coverage)

    1) 문장 검증: 모든 문장이 한 번씩은 수행하는지 (안 쓰는 코드가 있는지)
    2) 조건 검증: 조건 분기별 동작 검증
    3) 선택(분기) 검증: 모든 선택 분기점 파악 후 검증
    4) 경로 검증: 모든 가능한 경로 검증

     

     검증기준은 위와 같으며, 일반적으로 개발하며 하는 디버깅과 유사합니다.

     


     

     

    2. 블랙 박스 (Black Box) 테스트

    소스코드 없이, 직접 실행하고 작동시켜보면서 검사하는 방법

     

     '블랙 박스'는 안이 보이지 않는 상자를 의미합니다. 화이트 박스가 개발자 관점이었다면, 블랙 박스는 사용자 관점의 테스트 기법입니다. 코딩과 관련된 지식이 없더라도, 충분히 테스트를 진행할 수 있습니다.

     보통 QA 직군이나 알파/베타 테스터가 진행하는 테스트 종류로, 외부자도 별도의 보안절차 필요없이 할 수 있다는 이점이 있습니다.

     

     

    1) 동등분할

    같은 결과가 예상되는 입력 범위로 분할하고(동등 클래스), 각 범위의 대표값으로 테스트하는 방식

     

    if x <= 4:
    	return "1등급"
    elif x <= 11:
    	return "2등급"
    elif x <= 23:
    	return "3등급"
    elif x <= 40:
    	return "4등급"
    elif x <= 60:
    	return "5등급"
    else:
    	return "진학 불가"

     예를 들어, 위와 같은 내신/수능 등급 판정기가 있다고 합시다.

     누적 4% 이내는 1등급, 누적 11% 이내는 2등급.. 이런 식이죠. 이를 입력 범위로 나누면 아래 표와 같습니다.

     

    입력 범위 등급 대표값
    x <= 4 1 2
    4 < x <= 11 2 7
    11 < x <= 23 3 13
    23 < x <= 40 4 25
    40 < x <= 60 5 50
    60 < x 진학불가 70

     

     대표값은 보통 입력범위의 중간값을 사용하긴 하지만, 범위 안에만 있으면 상관없습니다. 그저 조건별로 해당하는 결과가 나오는지만 테스트하면 되니까요.

     

     

     

    2) 경계값 분석

    각 조건별 입력범위의 경계값을 테스트하는 방식

     

     동등분할에서 대표값으로 보통 중간값을 사용한다고 했습니다. 하지만, 대부분의 오류는 경계값에서 일어나는 경우가 많습니다. 특히 '이상'과 '초과', '이하'와 '미만'에서 착오로 인한 오류가 많죠.

     

    입력 범위 등급
    x <= 4 1
    4 < x <= 11 2
    11 < x <= 23 3
    23 < x <= 40 4
    40 < x <= 60 5
    60 < x 진학불가

     

     위와 같은 입력범위에서는 4, 11, 23, 40, 60 과 같은 경계값과 그 주변 값(4.1, 12 등)을 테스트케이스로 사용합니다.

     

     

     

    3) 원인-결과 그래프

    입력조건과 출력조건 간의 논리적 관계를 표현하고, 이를 기반으로 테스트하는 방식

     

     단순 if문이나 switch문보다 복잡한 입출력 조건을 가진 경우도 있습니다. 이런 경우, 입력과 결과값을 매칭한 그래프를 그려서 경우의 수를 조사하고 테스트하는 과정을 거칩니다.

     

    공인외국어성적 23개월 이내인지를 판별하는 경우의 수

     실제로 업무를 하다보면, 복잡한 입력범위를 가진 판별식을 만나게 됩니다. 기존 부서에서 엑셀로 운영하던 조건식을 업무시스템으로 전산화할 때 보통 문제가 됩니다.

     

     위 엑셀식의 조건을 대략 입력-결과 그래프로 그리면 위와 같은데, 솔직히 그래프보다는 if-else문으로 정리하는 게 더 빠르지 않을까 싶긴 합니다.

     

     

     

    4) 오류 예측

    기존의 노하우와 경험으로 오류를 예측하고 테스트하는 방식

     

     일명 '짬'에서 나오는 테스트케이스입니다. 개발을 하다보면 자주 접하는 오류 케이스가 있는데, 이를 테스트케이스로 만든 거라고 보시면 되겠습니다.

     

    입력 범위 등급
    x <= 4 1
    4 < x <= 11 2
    11 < x <= 23 3
    23 < x <= 40 4
    40 < x <= 60 5
    60 < x 진학불가

     

     예를 들어, 위 케이스는 석차 누적비율(%)을 입력 조건을 받고 있습니다. 성적 분위가 100%를 초과하거나, 음수가 나올수는 없죠. 또, 무조건 입력은 '숫자'만 들어가야 합니다.

     이러한 예외 케이스를 경험에서 생각해내는 방식입니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글