상 | 구조기반테스트 | 화이트박스 테스트 = 구조기반 테스트 |
토픽 이름 (상) | 구조기반 테스트(Structure-based techniques) |
분류 | SW > Test > 구조기반 테스트 |
키워드(암기) | 제어구조시험, 루프시험, Coverage, MC/DC |
암기법(해당경우) | 화제루 |
기출문제
번호 | 문제 | 회차 |
1 | 소프트웨어 품질의 테스트 방법인 화이트박스 및 블랙박스 테스트의 4가지 검증기준(coverage)을 예를 들어 설명하고, 테스트 자동화 도구의 유형에 대하여 설명하시오. | 114.관리.3 |
2 | 블랙박스 테스트 (Black Box Test) 와 화이트박스 테스트 (White Box Test) 를 비교 설명하시오. | 84.관리.1 |
3 | 소프트웨어의 명세 기반 기법 (Specification Based Technique) 테스트와 구조 기반 기법 (Structure Based Technique) 테스트 방법을 나열하고 설명하시오 | 83.관리.2 |
4 | 소프트웨어 Testing 과 관련하여 다음 사항을 설명하시오 1)검증(verification)과 확인(Validation)의 비교 설명 2)블랙박스 시험과 화이트박스 시험의 비교 설명 3)화이트박스 시험의 필요성 |
72.응용.2 |
Ⅰ. 프로그램 내부 로직 분석을 통한 테스트 기법, 구조기반 테스트의 개요
- 구조기반 테스트(Structure-based Test)의 정의
- 테스트 프로그램 내부 구조를 기반으로 특정 커버리지(Coverage)를 달성하기 위한 테스트 설계 및
케이스를 도출하기 위한 테스트 기법
나. 구조기반 테스트의 특징
특징 | 설명 |
White Box Test | 프로그램 내부 구조 및 복잡도를 검증, 테스트 |
Logic Driven | 코드 구조의 효율성 및 오류사항 발견 |
II. 구조기반 테스트의 개념도 및 기법
가. 구조기반 테스트의 개념도
- 내부 구조 및 복잡도를 검증하고 테스트하기 위한 White Box Test
나. 구조기반 테스트의 기법
기법 | 설명 | 사례 |
제어구조 시험 (Control Structure Testing) |
- McCabe에 의해 제안된 대표적 White Box Test 기법 - 프로그램의 처리 흐름을 제어하는 방법 및 수행 제어를 위해 사용되는 문장의 구조 |
- 순차형(순차 구조, Sequence형) - 선택형(분기구조, If Then Else형) - 반복형(반복구조, Do While형) |
루프 시험 (Loop Testing) |
- 프로그램 루프 구조에 국한해서 실시하는 기법 - 루프 시험의 대상 결함 : 초기화 결함, 인덱싱 및 증가의 결함, 루프의 경계선에서 나타나는 경계 오류 - 루프의 유형 : 단순루프, 중첩루프, 연결루프, 비구조적 루프 |
- for, while 등 - go to 등 |
III. 구조기반 테스트와 명세기반 테스트의 비교
구분 | 구조기반 테스트 | 명세기반 테스트 |
개념도 | ![]() |
![]() |
정의 | 프로그램 내부 로직을 참조하며 모든 경로를 테스트 |
외부 명세로부터 직접 테스트 Data, I/O 위주 테스트 |
특징 | - 구조테스트 - Logic Driven 테스트 - 모듈 테스트 |
- 기능테스트 - Data Driven 테스트 - I/O 테스트 |
적용 | 단위테스트 위주 | 대부분의 테스트에 적용 |
V&V | 하위 레벨 테스트 (시험 환경) | 상위 레벨 테스트 (사용자 환경) |
점검대상 | Loop, Decision 결함, 비수행 구문 | 시작/종료/인터페이스 결함 |
기법 | Loop, 제어구조 테스트 | 동등 분할, 경계 값 분석, Cause Effect 그래프, 오류 예측 기법 |
활용분야 | 알파 테스트 | 베타 테스트 |
IV. 테스트 커버리지 관계도 및 유형
가. 테스트 커버리지 관계도
- 구문, 결정, 조건, 조건/결정, 변경 조건/결정, 다중 조건 커버리지 관계도 설명
나. 테스트 커버리지 유형
테스트 유형 | 설명 | 사례 |
구문 커버리지 (Statement Coverage) |
- 프로그램을 구성하는 모든 구문들이 최소한 한번은 실행될 수 있는 입력 데이터를 데스트 데이터로 선정 - 프로그램 내 모든 구문의 테스트를 보장 |
- 소스코드 If(a>0 or b>0) call join - 테스트케이스 a = 3, b = 4 |
결정 커버리지 (Decision Coverage) |
- 프로그램 내의 전체 결정문이 적어도 한번은 참과 거짓의 결과를 수행하는 테스트 케이스 생성 - 모든 분기문을 테스트 하는 방법 |
![]() |
조건 커버리지 (Condition Coverage) |
- 결정 명령문 내의 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 테스트 케이스 - 모든 조건을 커버하는 방법 |
![]() |
조건/결정 커버리지 (Condition/Decision Coverage) |
- 전체 조건식 뿐만 아니라 개별 조건식도 참 한번, 거짓 한번 결과가 되도록 수행하는 테스트 케이스 | ![]() |
변경조건/결정 커버리지 (MC/DC) |
- 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 하는 테스트 케이스 |
![]() |
다중조건/결정 커버리지(Multiple Condition Coverage) | - 결정 포인트 내에 있는 모든 개별식 조건의 모든 조합을 고려한 커버리지 | ![]() |
반응형
'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글
Embedded System Test (1) | 2024.04.09 |
---|---|
경험기반 기법 (0) | 2024.04.08 |
Usecase diagram (0) | 2024.04.06 |
Class diagram (0) | 2024.04.05 |
UML의 관계(Relationship) (0) | 2024.04.04 |