자격증/정보처리기사 필기

[정보처리기사 필기] SW 개발 : 애플리케이션 테스트의 유형

Yuco 2023. 1. 30. 19:25

 

정보처리기사 필기 2과목 - 소프트웨어 개발 : 애플리케이션 테스트의 유형 (= 소프트웨어 테스트의 유형)

 

[1] 시각에 따른 테스트

1. 검증(Verification) 

- 제품의 생산 과정을 테스트 ▶올바른 제품을 생산하고 있는지를 검증하는 것

- 단위 테스트, 통합 테스트, 시스템 테스트

2. 확인(Validation)

- 생산된 제품의 결과를 테스트 ▶ 생산된 제품이 정상적으로 동작하는지 확인하는 것을 의미

- 인수 테스트(알파 테스트, 베타 테스트)  ⭐

 

[2] 프로그램 실행 여부에 따른 테스트

1. 정적 테스트

- 프로그램 실행 없이 명세서나 소스코드의 구조를 분석하여 논리적으로 검증하는 테스트

- 인스펙션, 코드 검사, 워크스루 등

 

2. 동적 테스트

- 프로그램의 실행을 요구하는 테스트

- 화이트박스 테스트, 블랙박스 테스트

 

[3] 기법에 따른 테스트  ⭐⭐⭐

- 화이트박스 테스트, 블랙박스 테스트는 코드의 실행이 요구되는 동적 테스트

1. 화이트박스 테스트 

- 프로그램의 내부 로직(수행 경로 구조, 루프 등)을 보면서 테스트를 수행 (모듈 안의 내용(작동)을 직접 볼 수 있음)

- 내부의 논리적인 모든 경로를 테스트 해 테스트 케이스를 설계

- 소스 코드(Source Code)의 모든 문장을 한 번 이상 수행함으로써 진행됨

- 선택, 반복 등의 부분들을 수행함으로써 논리적 경로 점검 가능

 

구조적 기법(Structual Test)
- 프로그램의 논리적인 복잡도를 측정하여 평가
루프 기법(Loop Test) - 프로그램의 루프 구조에 국한하여 실시하는 기법

- 초기화 값, 인덱스와 증가분, 루프의 경계값 등의 오류 검출

 

기초 경로 검사
(Base Path Testing)
- 대표적인 화이트박스 테스트 기법

- 테스트 측정 결과는 실행 경로의 기초를 정의하는 지침으로 사용
제어 구조 검사 * 조건 검사 (Condition Testing) : 논리적 조건을 테스트하는 기법
* 루프 검사 (Loop Testing) : 반복(Loop) 구조에 맞춰 테스트하는 기법
* 데이터 흐름 검사 (Data Flow Testing) : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 테스트하는 기법

 

2. 블랙박스 테스트

- 프로그램의 외부 사용자 요구사항 명세를 보면서 테스트를 수행하며, 주로 구현된 기능을 테스트

- 모듈 안에서 어떤 일(작동)이 일어나는지 알 수 없음

- 소프트웨어가 수행할 특정 기능을 알기 위해 각 기능이 완전히 작동되는 것을 입증하는 테스트로 기능 테스트라고도 함

- 소프트웨어 인터페이스에서 실시되는 테스트

 

동등 분할 기법 (동치 분할 검사) - 다양한 입력 조건의 테스트 사례들을 선정하여 테스트

- 프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 해 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법
경계값 분석 기법 - 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용해 경계값을 테스트 케이스로 선정해 결과의 정확성을 테스트 
원인 결과 그래프 기법 - 입력값이 출력값에 미치는 영향을 그래프로 표현하여 오류 검출
오류 예측 기법 - 간과할 수 있는 오류들을 감각과 경험으로 검출

- 다른 블랙박스 테스트 기법으로 찾아낼 수 없는 오류를 찾아내는 일련의 보충적 검사 기법
비교 검사 - 여러 버전의 프로그램에 동일한 테스트 자료를 제공동일한 결과가 출력되는지 테스트하는 기법

 

[4] 목적에 따른 테스트

1. 회복(Recovery) 테스트 

- 시스템에 고의로 실패를 유도하고 시스템이 정상적으로 복귀하는지 테스트

 

2. 안전(Security) 테스트

- 불법적인 소프트웨어가 접근하여 시스템을 파괴하지 못하도록 소스코드 내의 보안적인 결함을 미리 점검하는 테스트 

- 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인하는 테스트

 

3. 강도(Stress) 테스트

- 시스템에 과다 정보량을 부과하여 과부하 시에도 시스템이 정상적으로 작동되는지를 검증하는 테스트

 

4. 성능(Performance) 테스트

- 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 테스트 (실시간 성능이나 전체적인 효율성 진단 테스트)

 

5. 구조(Structure) 테스트

- 시스템의 내부 논리 경로, 소스코드의 복잡도를 평가하는 테스트

 

6. 회귀(Regression) 테스트  ⭐

- 변경 또는 수정된 코드에 대하여 새로운 결함 발견 여부를 평가하는 테스트

 

7. 병행(Parallel) 테스트

- 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트

 

[5] 종류에 따른 테스트

1. 명세 기반 테스트

- 사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 구현하고 있는지 확인하는 테스트

- 동등 분할, 경계값 분석 (블랙박스 테스트)

 

2. 구조 기반 테스트

- 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트

- 구문 기반, 결정 기반, 조건 기반 (화이트박스 테스트)

 

3. 경험 기반 테스트

- 유사 소프트웨어나 유사 기술 평가에서 테스터의 경험을 토대로 한 직관과 기술 능력을 기반으로 수행하는 테스트

- 에러 추정, 체크 리스트, 탐색적 테스팅 

 

[6] 테스트 커버리지 유형

1. 구문 커버리지

- 프로그램 내 모든 문장을 적어도 한 번 이상 실행하는 것을 기준으로 수행하는 테스트 커버리지

 

2. 결정 커버리지

- 결정 조건 내 전체 조건식이 최소한 참/거짓 한 번의 값을 가지도록 측정하는 테스트 커버리지

 

3. 조건 커버리지

- 전체 조건식 결과와 관계없이 각 개별 조건식이 참/거짓 한 번 모두 갖도록 개별 조건식을 조합하는 테스트 커버리지

 

4. 조건/결정 커버리지

- 전체 조건식이 참/거짓을 한 번씩 가지면서, 개별 조건식이 참/거짓을 모두 한 번씩 갖도록 조합하는 테스트 커버리지

 

5. 변경/조건/결정 커버리지

- 각 개별 조건식이 다른 개별 조건식의 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 테스트 커버리지

 

6. 다중 조건 커버리지

- 결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 테스트 커버리지