Certificate/정보처리기사

정보처리기사 실기 키워드 정리(10장)

마닐라 2021. 9. 5. 15:51

*블랙박스 테스트 및 화이트 박스 테스트는 4회차 연속 출제됨

 

1.소프트웨어 테스트 산출물 종류

테스트 계획서, 베이시스, 케이스, 슈트, 시나리오, 스크립트, 결과서

테스트 계획서 - 테스트 수행을 계획한 문서

테스트 베이시스 - 테스트 설계를 위한 기준이 되는 문서

테스트 케이스 - 테스트를 위한 설계 산출물로 조건, 입력/기대값으로 구성된 테스트 항목 명세서

테스트 슈트 - 테스트 케이스를 실행환경에 따라 구분해 놓은 테스트 케이스의 집합

테스트 시나리오 - 테스트 되어야할 기능 및 특징, 테스트 필요 상황을 작성한 문서

테스트 스크립트 - 테스트 케이스의 실행 순서를 작성한 문서

테스트 결과서 - 테스트 프로세스를 리뷰하고 테스트 결과를 평가하고 리포팅하는 문서

 

2.프로그램 실행 여부에 따른 테스트 유형

- 정적 테스트, 동적 테스트

정적 테스트 - 구조를 분석하여 논리성을 검증하는 테스트(리뷰, 정적 분석)

동적 테스트 - 실행시키는 방식으로 테스트를 수행하여 결함을 검출하는 테스트(화이트박스, 블랙박스, 경험기반)

 

3.각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트(구결조 조변다 기제데)

- 화이트박스 테스트

구문 커버리지 - 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지

결정 커버리지 - 전체 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지

조건 커버리지 - 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지

조건/결정 커버리지 - 전체 조건식 뿐만 아니라 개별 조건식이 적어도 한 번은 참과 거짓의 결과~

변경 조건/결정 커버리지 - 조건/결정 커버리지를 향상시킨 커버리지

다중 조건 커버리지 - 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지->위의 커버리지들을 순차대로 포함한다. 결정 커버리지와 조건 커버리지 제외

기본 경로 커버리지 - 수행 가능한 모든 경로를 테스트하는 커버리지

제어 흐름 테스트 - 프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직을 테스트하는 기법

데이터 흐름 테스트 - 제어 흐름 그래프에 데이터 사용현황을 추가한 기법

 

4.프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트(동경결상 유분페원비)

- 블랙박스 테스트

동등분할 테스트 - 입력 데이터 영역을 유사한 도메인별로 그룹핑하여 대푯값 테스트 케이스 도출

경곗값 분할 테스트 - 등가 분할 후 경곗값을 포함하여 테스트 케이스를 설계하여 테스트

결정 테이블 테스트 - 요구사항의 논리와 발생조건 테이블 형태로 나열하여 조건/행위 조합 테스트

상태 전이 테스트 - 이벤트에 의해 현상태서 다른 상태로 전이되는 경우의 수를 수행하는 테스트

유스케이스 테스트 - 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 테스트

분류 트리 테스트 - SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트

페어와이즈 테스트 - 테스트 데이터값들 간에 최소한 한번 씩 조합하여 테스트

원인-결과 그래프 테스트 - 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하는 테스트

비교 테스트 - 여러 버전의 프로그램에 같은 입력값을 넣어 테스트

 

5.테스트 목적에 따른 분류(회안성 구회병)

- 회복 테스트, 안전 테스트, 성능 테스트, 구조 테스트, 회귀 테스트, 병행 테스트

회복 테스트 - 시스템에 고의로 실패를 유도하고 정상 복귀 여부를 테스트

안전 테스트 - 보안적인 결함을 미리 점검하는 테스트

성능 테스트 - 이벤트에 시스템이 응답하는 시간, 반응하는 속도 등을 측정하는 테스트

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

회귀 테스트 - 오류를 제거하거나 수정한 시스템에서 오류가 없는지 확인하는 반복 테스트

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

 

6.성능 테스트의 상세 유형

- 부하 테스트, 스트레스 테스트, 스파이크 테스트, 내구성 테스트

부하 테스트 - 부하를 증가시키면서 시스템의 임계점을 찾는 테스트

스트레스 테스트 - 임계점 이상의 부하를 가하여 비정상적인 상황에서의 처리를 테스트

스파이크 테스트 - 짧은 시간에 사용자가 몰릴 때 시스템의 반응 측정 테스트

내구성 테스트 - 오랜 시간 동안 시스템에 높은 부하를 가하여 시스템 반응 테스트

 

7.일방향 해시 함수에서 다이제스트를 생성할 때 추가되는 바이트 단위의 임의의 문자열

- 솔트

 

8.어떤 특정한 시작 숫자를 정해주면 컴퓨터가 정해진 알고리즘에 의해 난수 생성의 시작 숫자

- 시드

 

9.메모리가 공유되는 하나의 객체에 두개 이상의 스레드가 동시에 값을 변경하려고 할 때 발생

- 경쟁조건

 

10.경쟁조건의 대응 방안

- 동기화 구문, mutex

 

10.사용자 정보를 유지하기 위한 질의 및 디렉터리 서비스를 수정하기 위한 프로토콜

- LDAP

 

12.경험에 기반하여 문제를 해결하거나 학습거나 발견해내는 방법

- 휴리스틱

 

13.수행될 각 테스트 세션에 대해 명확한 임무를 설정해 놓음 명령자

- 테스트 차터

 

14.테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법

- 테스트 오라클

 

15.테스트 오라클의 종류

- 참 오라클, 샘플링 오라클, 휴리스틱 오라클, 일관성 검사 오라클

참 오라클 - 모든 입력값에 대하여 기대하는 결과를 생섬함으로써 모든 오류를 검출하는 오라클

샘플링 오라클 - 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공하는 오라클

휴리스틱 오라클 - 샘플링 오라클을 개선한 오라클로 나머지 값들에 대해서는 휴리스틱으로 처리

일관성 검사 오라클 - 변경이 있을 때 수행 전과 후의 결괏값이 동일한지 확인하는 오라클

 

16.테스트 레벨의 종류

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

단위 테스트 - 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계

통합 테스트 - 단위 테스트를 통과한 인터페이스, 컴포넌트 간의 상호작용을 검증하는 단계

시스템 테스트 - 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지 검증하는 단계

인수 테스트 - 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트

알파 테스트 - 선택된 사용자가 개발자 환경에서 개발자와 함께 수행하는 인수 테스트

베타 테스트 - 실제 환경에서 일정 수의 사용자에게 사용하게 하고 피드백 받는 인수 테스트

 

17.생명주기 각 단계별로 개발자와 사용자 관점에서의 최종 산출물에 대한 확인을 지원하기위한 테스트 모델

- V모델

 

18.스위치 네트워크나 LAN 스위치 또는 ATM 스위치를 사용해서 패킷 범위를 임의로 나누는 기술

- VLAN

 

19.적은 수의 모듈에서 대다수의 결함된다는 원리로 오류의 80%는 전체 모듈의 20% 내에 발견된다는 법칙

- 파레토 법칙

 

20.독립적인 컴포넌트 테스트를 위해서는 스텁의 객체지향 버전인 ( ) 가 필요하다.

- 목 객체

 

21.목 객체 유형

더미 객체 - 테스트할 때 객체만 필요하고 객체의 기능까지는 필요하지 않을 때 사용

테스트 스텁 - 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구

테스트 드라이버 - 테스트 대상 하위 모듈을 호출하고 수행 후의 결과를 도출

테스트 스파이 - 테스트 대상 클래스와 협력하는 클래스로 가는 출력을 검증하는데 사용

가짜 객체 - 실제 협력 클래스의 기능을 대체해야 할 경우에 사용

 

22.통합 테스트 수행 방법 종류(하스 상드)

- 빅뱅 테스트, 상향식 테스트, 하향식 테스트, 샌드위치 테스트

빅뱅 테스트 - 모든 모듈을 동시에 통합 후 테스트 수행 드라이버/스텁 없이 실제 모듈로 테스트

상향식 테스트 - 최하위 모듈부터 상위 모듈과 함께 테스트 드라이버로 테스트

하향식 테스트 - 최상위 모듈부터 하위 모듈들을 통합하면서 테스트 스텁으로 테스트

샌드위치 테스트 - 상위는 하향식 하위는 상향식 테스트 / 테스트 스텁 + 드라이버로 테스트

 

23.테스트 자동화 도구 유형(정실성통)

- 정적 분석 도구, 테스트 실행 도구, 성능 테스트 도구, 테스트 통제 도구

 

24.애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로 개발자가 작성

- 테스트 하네스

 

25.테스트 하네스 구성요소

- 테스트 드라이버, 테스트 스텁, 테스트 슈트, 테스트 케이스, 테스트 스크립트, 목 오브젝트

테스트 드라이버 - 테스트 대상 하위 모듈을 호출하고 결과를 도출하는 등 상향식 테스트에 필요

테스트 스텁 - 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 하향식 테스트 도구

테스트 슈트 - 테스트 대상 컴포넌트나 모듈 시스템에 사용되는 케이스의 집합

테스트 케이스 - 입력값, 실행조건, 기대 결과 등의 집합

테스트 스크립트 - 자동화된 테스트 실행 절차에 대한 명세

목 오브젝트 - 사용자의 행위를 조건부로 사전에 입력해두면 그 상황에 행위를 수행하는 객체

 

26.테스트 커버리지 유형

- 기능 기반 커버리지, 라인 커버리지, 코드 커버리지

기능 기반 커버리지 - 테스트 대상 어플의 전체 기능을 모수로 설정하고 수행된 기능 수를 측정

라인 커버리지 - 전체 소스 코드의 라인 수를 모수로 테스트 시나리오가 수행한 코드 라인 수 측정

코드 커버리지 - 소프트웨어 테스트 충분성 지표중 하나로 코드가 얼마나 테스트 되었는지 측정

 

27.애플리케이션 성능 측정 지표

- 처리량, 응답 시간, 경과 시간, 자원 사용률

처리량 - 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수

응답 시간 - 사용자 입력이 끝난 후 응답 출력이 개시될 때 까지의 시간

경과 시간 - 사용자가 입력한 시점부터 트랜잭션 처리 후 결과 출력까지의 시간

자원 사용률 - 트랜잭션을 처리하는 동안의 CPU, 메모리, 네트워크 사용량

 

28.초당 처리건수를 의미하며 초당 몇 개의 트랜잭션을 처리할 수 있는지 나타내는 성능 지표

- TPS

 

29.컴파일하지 않고도 실행할 수 있는 프로그램

- 스크립트

 

30.다른 개발자가 로직을 이해하기 어렵게 작성된 코드

- 베드 코드(외계인 코드, 스파게티 코드, ...)

외계인 코드 - 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드

스파게티 코드 - 소스코드가 복잡하게 얽힌 모습처럼 구현되어 있는 코드

 

31.정적 분석 도구의 유형

- pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura

 

32.제어 흐름의 복잡한 정보를 정량적으로 표시하는 기법

- 순환복잡도

 

33.맥케이브의 순환 복잡도 측정방식에 따른 복잡도 계산식

- 복잡도 V(G)=E(간선 수)-N(노드 수)+2=6-5+2=3

 

34.주어진 테스트 케이스의 의해 수행되는 테스트 품질 측정 기준

- 테스트 커버리지

 

35.테스트의 원리 중 동일한 케이스 테스트에 의한 반복 테스트는 새로운 버그를 찾지 못한다는 원리

- 살충제 패러독스