정보관리기술/소프트웨어공학

소프트웨어 시험

아이티신비 2024. 1. 12. 08:00

문제6) 소프트웨어의 시험(Test)에 사용되는 다음의 기법에 대해 설명하시오.

가. 블랙박스(Black Box) 시험

나. 화이트박스(White Box) 시험

 

답)

 

 

1. 잠재적 결함 및 오류의 발견과 예방, SW 테스트의 중요성

  • 최근 SW의 범위, 영향 증가로 과거 단순 테스트에서 안전성 확보를 위한 위험 제거 및 예방 테스트 중요성 증가

 

2. 블랙박스 시험(Black Test) 시험 상세 설명

가. 블랙박스 시험 개념

개념

정의
컴포넌트나 시스템의 내부구조를 참조하지 않고, 요구 명세에 맞게 기능과 비기능의 동작 여부를 테스팅하는 기법
특징
  • 이용자 관점에서 데이터를 입력하며 모니터링하여 그 결과와 예측을 비교
  • 명세에 기반하여 I/O, Data Driven 테스트 수행
  • 테스트 커버리지(Coverage) 설정에 어려움이 존재
  • 시스템에 대한 테스트의 전문 지식이 없는 경우 수행 불가

 

나. 블랙박스 시험 종류

구분
설명
비고
동등 분할
  • Equivalence Partitioning
  • 입력값/출력값을 유한개 상호 독립적 집합으로 나누어 수학적 등가 집합으로 만든 후, 각 등가 집합 원소 중 대표값을 선택하여 테스트 케이스 도출
  • 약한 동등 분할 : 테스트시 등가 집합에서 각 대표값만 선정
  • 강한 동등 분할 : 세분화된 등가집합 간의 조합 모두 고려
경계값 분석
  • Boundary Value Analysis
  • 동등 분할 경계에서 결함 발견 확률 높아 예방하기 위한 테스트 기법
  • 유효 경계값 : 유효환 분할 영역 경계값
  • 비 유혀 경계 값
결정 테이블
  • Decision Table Testing
  • 논리적 조건이나 상황 구현하는 시스템에서 요구사항 도출하거나 내부 시스템 설계 문서화 하는데 유용한 기법
  • 원인-결과 그래프 이용
  • 결정 테이블에 논리적 주석을 추가하여 도식화
상태 전이
  • State Transition Testing
  • 시스템의 현재와 이력을 반영하는 상태 및 그 변화에 따라 다르게 동작하는 측면을 표현하고 테이블 형태로 전환하여 테스트 수행 기법
  • 상태 전이 다이어그램
  • 상테 테이블(상태-이벤트 테이블)
유즈케이스
  • Usecase Testing
  • 시스템이 실제 사용되는 방식에 기반하며 ' 프로세스 흐름'을 기술하고 그 흐름에서 결함을 발견하는 기법
  • 유즈케이스 각각 테스팅
  • 유즈케이스 사이 상호작용과 활동 테스팅
  • SW 수행 부분을 블랙박스로 명세서로 입력 값과 결과 값으로 테스트 수행

 

 

3. 화이트박스 시험(White Test) 시험 상세 설명

가. 화이트박스 시험 개념

개념

정의
요구 명세서와 프로그램의 내부 구조(코드)에 대한 지식을 이용하여 수행 결과 및 내부 동작까지도 테스트를 수행하는 기법
특징
  • 내부 코드에 대한 분석이 가능하여 넓은 테스트 커버리지 범위 수행
  • 기능 단위 뿐만 아니라 기능을 구성하는 모듈 단위까지 테스트 가능
  • 소스코드 분석 자동화 도구의 불완전성 및 결과에 대한 전문가 분석 재 수행 필요 - 코드 확보에 대한 어려움 존재

 

나. 화이트박스 시험 종류

테스트 유형
설명
사례
제어구조 테스트
(Control Structure Test)
  • McCabe 가 제안한 대표적 화이트박스 테스트 기법
  • 소프트웨어의 논리적 복잡도를 측정
  • 복잡도에 따라 수행할 기법 경로의 집합을 정의
  • 처리 흐름을 제어하는 방법 또는 문장의 구조
  • McCabe 회전 복잡도
  • M=E-n+2
  • 순차구조(Sequence형)
  • 분기구조(If Then Else 형)
  • 반복구조(Do While 형)
루프 테스트
  • 루프 구조에 한정하여 테스트를 수행
  • 루프 초기화 결함
  • 인덱싱 및 증가의 결함
  • 루프의 경계선에서 발생하는 경계오류
  • 루프유형 : 단순, 중첩, 연결, 비구조적
  • for, while
  • go to
구문 커버리지
(Statement Coverage)
  • 프로그램을 구성하는 모든 구문들이 최소한 한 번은 실행될 수 있는 입력 데이터를 테스트 데이터로 선정
  • 프로그램 내 모든 구문의 테스트를 보장
결정 커버리지
(Decision Coverage)
  • 프로그램 내의 전체 결정문이 적어도 한 번은 참과 거짓의 결과를 수행하는 테스트 케이스 생성
  • 모든 분기문을 테스트 하는 방법
조건 커버리지
(Condition Coverage)
  • 결정 명령문 내의 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 테스트 케이스
  • 모든 조건을 커버하는 방법
조건/결정 커버리지
(Condition/Decision Coverage)
  • 전체 조건식 뿐만 아니라 개별 조건식도 참 한번, 거짓 한 번 결과가 되도록 수행하는 테스트 케이스
변경조건/결정 커버리지
(MC/DC)
  • 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 하는 테스트 케이스
다중조건/결정 커버리지
(Multiple Condition Coverage)
  • 결정 포인트 내에 있는 모든 개별식 조건의 모든 조합을 고려한 커버리지

  • 테스트의 커버리지 기반하여 수행 품질을 측정하며 대표적 화이트 박스 테스팅 기법으로 분류

 

4. 블랙박스 시험과 화이트박스 시험 비교

구분
블랙박스 시험(기능)
화이트박스 시험(논리 테스트)
정의
  • 모듈사양서를 기초로 입력조건, 출력조건, 예외처리, 오류처리 등 모든 기능명의 테스트
  • 모듈 사양서, 소스 코드를 기초로 모듈의 논리 테스트
관점
  • 사용자 관점
  • 개발자 관점
기준
  • 프로그램 외부명세근거
  • 인터페이스 및 성능 오류
  • 프로그램 내부명세근거
  • 논리상 오류
V&V
  • 상위 레벨 케스트
  • (사용자 환경)
  • 하위 레벨 테스트
  • (시험 환경)
점검대상
  • 시작/종료/인터페이스 결함
  • Loop, Decision 결함, 비 수행 구문
기법
  • 동등 분할, 경계 값 분석
  • Cause Effect 그래프, 오류예측 기법
  • Loop, 제어구조 테스트
활용분야
  • 베타 테스트
  • 알파 테스트
  • SW 안정성 확보에 있어 테스트 표준 확보와 반복, 개선 테스팅 필수적