화이트박스 & 블랙박스테스트(기술사QA)

화이트박스 & 블랙박스테스트(기술사QA)

1. 구조기반 기법(Structure based techniques = White Box) 개요

– 소프트웨어가 어떻게 구성되었는가에 대한 정보. 즉, 코드와 디자인의 테스트케이스를 유도하는데 사용.

2. 구조기반 테스트 기법 종류 및 제어흐름 테스트 기법

가. 구조기반 테스트 기법 종류

컴포넌트 레벨(단위레벨). 개별적으로 테스트 가능한 소프트웨어(모듈, 프로그램, 객체, 클래스 등)안의 결함을찾고 기능을 검증, 시스템의 나머지 부분과 고립되어 실행. 스텁, 드라이버, 시뮬레이터가 사용 될 수 있음. 구문, 결정, 분기문 테스트
통합레벨. 컴포넌트 사이의 인터페이스, 운영 시스템, 파일 시스템, 하드웨어나 시스템 사이의인터페이스의 상호작용을 테스트. 모듈 간의 호출관계(Call Tree) 테스트
시스템 레벨. 요구사항 명세, 비즈니스 프로세스, 유즈케이스, 시스템 행위의 상위레벨의 묘사,운영시스템과의 상호작용, 시스템 자원이나 위험 기반 테스트 포함. 테스터들은 불완전하거나 문서화 되지 않은 요구사항도 다루어야 함. 메뉴, 비즈니스 프로세스, 웹 페이지 구조 테스트

나.제어흐름 테스트 기법

구문테스트 스위트(테스트 케이스 묶음)에 실행된 구문이 몇 퍼센트인지를 측정커버리지 달성이 쉬운 반면 보장성이 낮은 커버리지
결정(DC)결정포인트 내의 전체 조건식이 최소한 참/거짓 한번의 값을 갖도록 측정개별 조건식과 관계없이 테스트 케이스는 2개(T/F)
조건(CC)전체 조건식의 결과와 관계없이 각 개별 조건식이 참/거짓 한번 모두 갖도 록개별조건식을조합
조건/결정(C/DC)전체 조건식 참/거짓 한번씩 하면서 개별 조건식 참/거짓 모두 한번씩 갖도 록조합
변경조건/결정 (MC/DC)각 개별 조건식이 다른 개별 조건식에 무관하게 전체 조건식의 결과에 무관 하게 영향
다중조건(MCC)결정포인트 내의 모든 개별 조건식의 모든 가능한 논리적 조합 100% 보장

3.구조기반 테스트기법과 명세기반 테스트 기법 차이점

중심. 개발자 및 논리 중심. 사용자 및 기능 중심
분류. 화이트 박스 테스트. 블랙박스 테스트
기법. 제어흐름 및 Loop 테스트. 동등분할, 경계값, 오류예측 등
특징. 커버리지 계산이 중요. 모든 부분을 테스트할 수 있는커버리지 분석. 입력 파라메터 간의 논리적 규칙을통한 파라메터 간의 상태파악(결정테이블, 도메인 테스트)

===================================================

1.경로검증 테스트 whitebox test검증기준 개요

  가.화이트박스 테스트의 정의

     -프로그램 로직 테스트. 모든 경로에 대하여 테스트를 수행하였는지 경로를 확인

  나.검증 목표

     -모들의 기능을 모두 테스트하여 모듈 오류를 최소화

 2.화이트박스 테스트 예제 및 검증기준

문장검증 경로(sentence  coverage) 모든 문장이 한번씩 수행되도록 검증 하는기준 1-2-3-4-5-6-7
 분기 검증 기준(branch coverage) 경로에서 나타나는 모든 분기점 파악 예)1-2-3-4-5-6-7,1-2-4-5-6-1
 경로 검증 기준(path coverage) 모든 경로에 대해 테스트를 수행해야 한다
 조건 검증 기준(condition coverage) if else,or 등 조건문 테스트

3.화이트 박스 테스트 검증 기준의 활용 및 현황
가. 소프트웨어 알고리즘이 복잡한 경우 모든 경로를 분석하여 테스트를 수행
나. 모듈에서 오류가 발생할 경우가 많은 대규모 시스템 및 위험이 높은 소프트웨어 적용
나. 모든 경로를 테스트 하는 경우 많은 비용/시간/인력이 필요함.
다. 전문 테스터 및 테스트 검증 자동화 툴을 활용하여 테스트 정확성과 생산성을 향상 “끝

======================================================================

문)구조기반 테스트
답)
1.구조기반테스트(화이트박스 테스트)의 개요
가.구조기반테스트의 정의
  -개발자 입장에서 프로그램의 내부 논리적 구조및 복잡도 초점에 맞춰
   수행하는 동적 테스트
나.구조기반테스트의 특징
  -개발자입장:코드내부구조의 효율성,동적테스트(실행)
  -Coverage 제공:오류발견,순환복잡도(테스트 수 상한성)제공
2.구조기반테스트 기법및 검증기준
가.구조기반테스트 기법
  1)기초경로검사
   -제어흐름도:제어흐름을 표현하기 위해 사용되는 그래프
   -순환복잡도:논리적 복잡도 측정을 위한 SW척도,프로그램 독립 경로수 파악


  2)제어구조검사
   -Condition Testing:프로그램 모듈내 논리적 조건 검사|조건검사 범위 측정
   -Loop Testing:반복구조에 초점,검사사례기법(단순,중첩,연결,비구조적 루프)|경계값오류
   -Data Flow Testing:프로그램 변수의 정의와 사용 위치 초점|프로그램 사용변수
나.구조기반 테스트 검증기준
  -문장검증기준:원시코드 각 라인 최소 한번이상 수행
  -선택검증기준:경로에 나타나는 모든 분기점 파악,참/거짓 모두 테스트
  -경로검증기준:수행가능한 모든경로 검사
  -조건검증기준:if문장,while문장 안 모든 조건 검사
3.구조기반 테스트의 활용방안및 고려사항
가.테스트 설계:초기 고객 요구사항으로부터 설계 어려움
나.테스트 커버리지 측정:목표 커버리지 달성위한 케이스 도출
다.SW구현정보(코드,설계)기반:분석 장시간 소요우려
라.컴포넌트레벨(구문/결정/분기문테스트),통합레벨(모듈간 호출관계 테스트),
  시스템레벨(메뉴,비즈니스프로세스,웹페이지 구조 테스트)

========================================================

75회 Whitebox test

84회 블랙박스테스트(Balckbox Test)와 화이트박스테스트(Whtiebox Test)를 비교 설명하시오

86회 Testcase

White Box/Black Box Test 설명

가.White Box Test

  • program source code의 논리적인 구조를 cover하도록 test case를 설계하는 방법(구조 test)
  • program 내부 구조에 존재하는 모든 경로를 실행
  1. 문 cover 범위(statement coverage) : program내의 모든 문장들을 한번 이상 실행하도록 요구하는 기준
  2. 결정 cover 범위(decision coverage) = 분기 cover 범위 : 각 결정의 참과 거짓을 적어도 한번 이상 실행시키는 것을 기준으로 하는 test 방법
  3. 조건 cover 범위(condition coverage) : 결정내에 존재하는 각 조건들의 참과 거짓을 한번 이상 실행하도록 test case를 작성
  4. 결정-조건 cover 범위(decision/condition coverage) : 결정내에 존재하는 조건들의 참과 거짓을 모두 cover하고 각 결정의 참과 거짓에 해당하는 모든 분기들이 모두 cover 될 수 있도록 충분히 test case를 만들어 나가는 방법

나.Black Box Test

-.원시 코드는 보이지 않고 목적코드를 실행시켜 테스트하는 입출력 위주의 방법

-.사용자 중심의 테스트 유형

테스트유형내용Example
동등분할기법프로그램의 입력 도메인을 테스트 케이스가 산출될 수 있는 데이터의 클래스로 분류하는 방법x값이 0 -100 사이(X<0,(0<X<50),(50<X<100),(X>100)
경계값 분석기법입력 조건의 중간값에서 보다 경계값에서 에러가 발생될 확률이 높다는 점을 이용하여 이를 실행하는 테스트 케이스르 만드는 방법x값이 0-100 사이여야 한다면 시험사례를 (x=0),(x=100),(x=-0.01),(x=100.1)
원인결과 그래프 기법program의 외부 명세에 의해 원인에 해당되는 입력 조건과 그 원인으로부터 발생되는 출력 결과를 논리적으로 연결시킨 graph로 표현
오류예측기법각 시험 기법들이 놓치기 쉬운 오류들을 감각 및 경험으로 찾아보는 것입력값 없이 Return 친다,문법에 어긋난 입력을 시헙한다.
시스템에서 제공하는 기능 및 메뉴 등 명세를 기반으로 테스트 케이스를 설계하는 기법이다.


동등 분할(또는 등가 분할)(Equivalence Partitioning)

SW나 시스템의 입력값이 여러가지 중, 입력의 결과로 나타날 결과 값이 동일한 경우는 하나의 그룹으로 간주될 수 있다. 그리고 이러한 그룹 내의 입력값은 내부적으로 같은 방식으로 처리됨을 가정한다.

동등 분할은 이러한 원리를 이용하여, 입/출력값 영역을 유한개의 상호 독립적인 집합으로 나누어 수학적인 등가 집합을 만든 후, 각 등가집합의 원소 중 대푯값 하나를 선택하여 테스트 케이스를 선정하는 방식이다.

이 기법은 가능한 모든 경우의 수에서 테스트 개수를 줄여준다.


[예제]

A라는 학교에서 학생들의 성적에 따른 등급을 자동으로 계산해 주는 프로그램을 만들고자 한다.

100~90점은 A, 89~70점은 B, 69~50점은 C, 49~0점은 D로 산정하고자 한다.

이때 등가분할에 의거한 데이터는

구간등급동등 분할 테스트를 위한 데이터 선택 예)
90<=점수<=100A95
70<=점수<=89B80
50<=점수<=69C60
0<=점수<=49D30

총 4개의 데이터가 산출될 수 있다. 이것은 최소한 결과의 값을 선택하여 테스트를 수행한다는 것까지 보장한다.

성적이 나올 수 있는 가짓수가 0~100 사이라면

모든 가능한 테스트 케이스는 0,1,2….100 까지 총 101가지가 된다

동등 분할 기법을 사용한 경우는 4개로 단축 할 수 있다

그러나 4개의 케이스가 모든 전체를 만족한다고 보기는 어렵다


경계값 분석(Boundary Value Analysis)

Partitioning을 이용하여 입출력 도메인을 equivalence class로 나누었을 때, 각 범위의 경계 값에서 결함이 발생하는 경우가 많다는 사실에 착안하여, 결함 검출 가능성을 높일 수 있도록 테스트 케이스를 설계하는 기법이다.

즉, equivalence class 안에서 테스트 케이스를 선정할 때, 임의의 데이터를 이용하는 것 대신에 class의 경계에 있는 데이터를 이용한다.

또 복잡한 계산을 요구하는 문제의 경우 equivalence class의 범위를 정의하는 것이 어려우므로 가능한 한 상세한 요구명세가 필요하다는 제한이 있다.

분할영역의 최댓값과 최솟값은 그 영역의 경곗값이 됨

[예제]

윗 예제 이어서..

방법1)

two-value : Boundary value & invalid Value 를 선택한다.

three-value (or full boundary value) : 경곗값을 기준으로 양쪽 모두 선택한 값을 추가해준다. 예)  경계값이 0인 경우 -1, 0, 1 을 선택

구간등급two-value 적용three-value 적용
90<=점수<=100A경계값 : 90, 100invalid : 89, 10189,90,9199,100,101
70<=점수<=89B경계값 : 70, 89invalid : 69, 9069,70,7188,89,90
50<=점수<=69C경계값 : 50, 69invalid : 49, 7049,50,5168,69,70
0<=점수<=49D경계값 : 0, 49invalid : -1,50-1,0,148,49,50
최종 테스트할 value(중복제거)-1, 0, 49, 50, 69, 70, 89, 90, 100, 101-1, 0, 1, 48, 49, 50, 51, 68, 69, 70, 71, 88, 89, 90, 91, 99, 100, 101

위에서도 말 했듯이 범위의 경계 값에서 결함의 발생하는 경우가 연구결과 많다고 한다.

실제로도 요구사항 명세 관점에서는 70~90점 B, 90점 이상 A 이렇게 90점이 모호하게 기술되는 경우가 많으며 (91점이  A인지, 90점이 A인지 이럴때 헷갈리게 된다),

구현 관점에서는 90<=점수<=100 으로 할 수도 있지만 89<점수<101 로도 할 수 있으며 이때 실수로 부등호를 누락한다던지 숫자를 하나 더하거나 빼는 실수 가능성이 있다.

인덱스나 반복문 사용시 예를들어 Index를 0부터 시작한다던지, 1부터 시작한다던지, 카운트를 1~100으로 한다던지, 0~99로 한다든지 (따라서 루프가 한번 빠지거나 더해지거나) 등에 따라 발생 가능성이 있다고 한다.

동등분할과 경곗값 분석 비교

동등분할은 테스터가 선택하는 값이 달라질 수 있으며, 특성상 테스트 결과가 달라 질 수 있다. (테스터의 오류가 아니며, 기법에서 제한적인 테스트를 하기 때문임)

경곗값 분석의 데이터 선택은 같은 방식(파티션의 최대/최소) 값을 선택 하는 경우 누가 선택해도 같은 값이 나오게 된다.

주의사항: 동등분할 / 경곗값 분석으로 테스트 데이터를 선정 시 위에 표에나온 것처럼 유효 값 외에 무효값도 선택 하는 것이 중요하다. 예) 무효값으로 -1, 101을 선택하는 경우

물론 input제한으로 입력조차 안되게 막을 수 있지만, 이또한 막혔는지 확인하는 테스트가 필요하여 Invalid Value 체크가 중요함

Start typing and press Enter to search

Shopping Cart