자격증 요약/정보처리기사

[24년 1회 2과목] 정보처리기사 필기 문제 풀이

문성 2026. 1. 19. 19:15

제2과목: 소프트웨어 개발 (21~40번)


21. EAI(Enterprise Application Integration)의 구축 유형으로 옳지 않은 것은?

① Point-to-Point

② Hub & Spoke

③ Message Bus

④ Tree

EAI (Enterprise Application Integration)
기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션

EAI 구축 유형
Point-to-Point
 - 가장 기본적인 애플리케이션 통합 방식으로, 애플리케이션을 1:1로 연결함
 - 변경 및 재사용이 어려움

Hub & Spoke
 - 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식
 - 확장 및 유지보수가 용이
 - 허브 장애 발생 시 시스템 전체에 영향을 미침

Message Bus (ESB 방식)
 - 애플리케이션 사이에 미들웨어를 두어 처리하는 방식
 - 확장성이 뛰어나며 대용량 처리가 가능함

Hybrid
 - Hub & Spoke 와 Message Bus의 혼합 방식
 - 그룹 내에서는 Hub & Spoke 방식을, 그룹 간에는 Message Bus 방식을 사용함
 - 필요한 경우 한 가지 방식으로 EAI 구현이 가능함
 - 데이터 병목 현상을 최소화할 수 있음

답: 4번
 

22. 검증 검사 기법 중 개발자의 장소에서 사용자가 개발자 앞에서 행하는 기법이며, 일반적으로 통제된 환경에서 사용자와 개발자가 함께 확인하면서 수행되는 검사는?

① 동치 분할 검사

② 형상 검사

③ 알파 검사

④ 베타 검사


인수 테스트
알파 테스트
 - 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법
 - 테스트는 통제된 환경에서 행해지며, 오류와 사용상의 문제점을 사용자와 개발자가 함께 확인하면서 기록함

베타 테스트
 - 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법으로 필드 테스팅이라고도 불림
 - 실업무를 가지고 사용자가 직접 테스트하는 것으로, 개발자에 의해 제어되지 않은 상태에서 테스트가 행해지며, 발견된 오류와 사용상의 문제점을 기록하고 개발자에게 주기적으로 보고함

시스템 테스트
기능적 요구사항
비기능적 요구사항

통합 테스트
하향식 통합테스트 - 테스트 스텁
상향식 통합테스트 - 드라이버

단위 테스트

※동치 분할 검사 : 블랙박스 테스트 기법
※형상 검사 : 소프트웨어 형상 관리(SCM)항목들이 계획대로 구성되었는지, 기술적 검토가 이루어졌는지 확인하는 검사

답: 3번
 

23. 다음 트리의 차수(degree)는? 

① 2

② 3

③ 4

④ 5

트리
예.
 
노드(Node) : 트리의 기본 요소로서 자료 항목과 다른 항목에 대한 가지를 합친 것
 - 예: A, B, C, D, E, F, G, H, I, J, K, L, M
근 노드(Root Node) : 트리의 맨 위에 있는 노드
 - 예: A
디그리(Degree, 차수) : 각 노드에서 뻗어 나온 가지의 수
 - 예: A=3, B-2, C=1, D=3
단말 노드(Terminal Node, 잎 노드(Leat Node)) : 자식이 하나도 없는 노드
 - 예: K, L, F, G, M, I, J
자식 노드(Son Node) : 어떤 노드에 연결된 다음 레벨의 노드들
 - 예: D의 자식 노드 = H, I, J
부모 노드(Parent Node) : 어떤 노드에 연결된 이전 레벨의 노드들
 - 예: H의 형제 노드 = I, J
형제 노드(Brother Node, Sibling) : 동일한 부모를 갖는 노드들
 - 예: H의 형제 노드 = I, J
트리의 디그리 : 노드들이 디그리 중에서 가장 많은 수
 - 예: 노드 A나 D가 3개의 디그리를 가지므로 앞 트리의 디그리는 3이다.

답: 2번
정보처리기사에서 '트리의 차수'를 물어보면 '노드들 중 자식 노드 수가 가장 많은 노드의 차수'를 의미
문제에서는 B가 해당.
 

24. 인터페이스 구현 시 사용하는 기술 중 다음 내용이 설명하는 것은?

- JavaScript를 사용한 비동기 통신기술로, 클라이언트와 서버간에 XML 데이터를 주고받는 기술

① Procedure

② Greedy

③ Trigger

④ AJAX

AJAX
 - 자바 스크립트(JavaScript) 등을 이용하여 클라이언트와 서버 간에 XML 데이터를 교환 및 제어함으로써 이용자가 웹 페이지와 자유롭게 상호 작용할 수 있도록 하는 비동기 통신 기술

JSON (JavaScript Object Notation)
 - 속성-값 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
 - 비동기 처리에 사용되는 AJAX에서 XML을 대체하여 사용되고 있다.

XML (eXtensible Markup Language)
 - XML은 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
 - 웹 페이지의 기본 형식인 HTML의 문법이 각 웹 브라우저에서 상호 호환적이지 못하다는 문제와 SGML의 복잡함을 해결하기 위해 개발

※Procedure (프로시저): 특정 작업을 수행하기 위해 미리 컴파일되어 저장된 SQL 쿼리의 집합입니다. 데이터베이스에서 주로 사용됩니다.
※Greedy (탐욕 알고리즘): 알고리즘 설계 기법 중 하나로, 매 순간 최적이라고 생각되는 결정을 내려서 최종 해답에 도달하는 방식입니다.
※Trigger (트리거): 데이터베이스에서 특정 이벤트(Insert, Update, Delete 등)가 발생할 때마다 자동으로 실행되도록 설정된 프로시저입니다.

답: 4번
 

25. 해싱 함수 중 레코드 키를 여러 부분으로 나누고, 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈 주소로 사용하는 방식은?

① 계산법

② 폴딩법

③ 기수 변환법

④ 숫자 분석법

해싱 함수 (Hashing Function)
 - 제산법 : 레코드 키를 해시표의 크기보다 큰 수 중에서 가장 작은 소수로 나눈 나머지를 홈 주소로 삼는 방식
 - 제곱법 : 레코드 키 값을 제곱한 후 그 중간 부분의 값을 홈 주소로 삼는 방식
 - 폴딩법 : 레코드 키 값을 여러 부분으로 나눈 후 각 부분의 값을 더하거나 XOR한 값을 홈 주소로 삼는 방식
 - 기수변환법 : 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초과한 높은 자릿수는 절단하고, 이를 다시 주소 범위에 맞게 조정하는 방법
 - 대수적 코딩법 : 키 값을 이루고 있는 각 자리의 비트 수를 한 다항식의 계수로 간주하고, 이 다항식을 해시표의 크기에 의해 정의된 다항식으로 나누어 얻은 나머지 다항식의 계수를 홈 주소로 삼는 방식
 - 숫자 분석법 : 키 값을 이루는 숫자의 분포를 분석하여 비교적 고른 자리를 필요한 만큼 택해서 홈 주소로 삼는 방식
 - 무작위법 : 난수를 발생시켜 나온 값을 홈 주소로 삼는 방식

답: 2번
 

26. 다음 자료에 대하여 선택(Selection) 정렬을 이용하여 오름차순으로 정렬하고자 한다. 3회전 후의 결과로 옳은 것은?

초기 데이터: 37, 14, 17, 40, 35

 

① 14, 17, 37, 40, 35

② 14, 37, 17, 40, 35

③ 17, 14, 37, 35, 40

④ 14, 17, 35, 40, 37

37, 14, 17, 40, 35
(1회전) 37, 14, 17, 40, 35 → 14, 37, 17, 40, 35
(2회전) 14, 37, 17, 40, 35 → 14, 17, 37, 40, 35
(3회전) 14, 17, 37, 40, 35 → 14, 17, 35, 40, 37

정렬
삽입 정렬 (Insert Sort) : 이미 정렬된 부분과 비교하여 자기 위치를 찾아 삽입 (2번째 요소부터 시작)
예. 8,5,6,2,4
(1회전) 8,5,6,2,4 → 5,8,6,2,4 : 두 번째 값을 첫 번째 값과 비교하여 5를 첫 번째 자리에 삽입하고 8을 한 칸 뒤로 이동
(2회전) 5,8,6,2,4 → 5,6,8,2,4 : 세 번째 값을 첫 번째, 두 번째 값과 비교하여 6을 8자리에 삽입하고 8을 한칸 뒤로 이동
(3회전) 5,6,8,2,4 → 2,5,6,8,4 : 네 번째 값 2를 처음부터 비교하여 맨 처음에 삽입하고 나머지를 한 칸씩 뒤로 이동
(4회전) 2,5,6,8,4 → 2,4,5,6,8 : 다섯 번째 값 4를 처음부터 비교하여 5자리에 삽입하고 나머지를 한 칸씩 뒤로 이동

선택 정렬 (Selection Sort) : 최솟값을 찾아 맨 앞으로 보냄
예. 8,5,6,2,4
(1회전) 8,5,6,2,4 → 8,5,6,2,4 → 2,5,6,8,4 : 첫 번째부터 마지막 값 중 최소값 2를 찾아 첫 번째 값 8과 위치를 교환
(2회전) 2,5,6,8,4 → 2,5,6,8,4 → 2,4,6,8,5 : 두 번째부터 마지막 값 중 최소값 4를 찾아 두 번째 값 5와 위치를 교환
(3회전) 2,4,6,8,5 → 2,4,6,8,5 → 2,4,5,8,6 : 세 번째부터 마지막 값 중 최소값 5를 찾아 세 번째 값 6과 위치를 교환
(4회전) 2,4,5,8,6 → 2,4,5,8,6 → 2,4,5,6,8 : 네 번째부터 마지막 값 중 최소값 6을 찾아 네 번째 값 8과 위치를 교환

버블 정렬 (Bubble Sort) : 인접한 두 원소를 비교하여 교환. (가장 큰 값이 맨 뒤로 밀려남)
예. 8,5,6,2,4
(1회전) 8,5,6,2,4 → 5,6,8,2,4 → 5,6,2,8,4 → 5,6,2,4,8
(2회전) 5,6,2,4,8 → 5,2,6,4,8 → 5,2,4,6,8
(3회전) 2,5,4,6,8 → 2,4,5,6,8
(4회전) 2,4,5,6,8

답: 4번
 

27. 소스 코드 품질 분석 도구 중 정적 분석 도구가 아닌 것은?

① pmd

② checkstyle 

③ valance

④ cppcheck

테스트 자동화 도구의 분류
정적 분석 도구 : pmd, checkstyle, cppcheck, SonarQube
동적 분석 도구 : xUnit, valance
성능 테스트 도구 : JMeter, LoadRunner

답: 3번
 

28. 다음 트리에 대한 중위 순회(Inorder Traversal) 운행 결과는?

① ABDCEF

② ABCDEF

③ DBECFA

④ DBAECF


1 A 2
DB A ECF

트리 순회(★)

※ 서브 트리를 하나의 노드로 생각할 수 있도록 그림과 같이 서브트리 단위로 묶는다.
※ A = Root
전위 (Pre-order): Root → 왼쪽 → 오른쪽
 - 1단계 : A 1 3
 - 2단계 : A B2E 3
 - 3단계 : A B DHI E 3
 - 4단계 : A B DHI E CFG (최종)

중위 (In-order): 왼쪽 → Root → 오른쪽
 - 1단계 : 1 A 3
 - 2단계 : 2BE A 3
 - 3단계 : HDI BE A 3
 - 4단계 : HDI BE A FCG

후위 (Post-order): 왼쪽 → 오른쪽 → Root
 - 1단계 : 1 3 A
 - 2단계 : 2EB 3 A
 - 3단계 : HID EB 3 A
 - 4단계 : HID EB FGC A

답: 4번
 

29. 소프트웨어 테스트와 관련한 설명으로 틀린 것은?

① 화이트박스 테스트는 모듈의 논리적인 구조를 체계적으로 점검할 수 있다.

② 블랙박스 테스트는 프로그램의 구조를 고려하지 않는다.

③ 테스트 케이스에는 일반적으로 시험 조건, 테스트 데이터, 예상 결과가 포함되어야 한다.

④ 화이트박스 테스트에서 기본 경로(Basis Path)란 흐름 그래프의 시작 노드에서 종료 노드까지의 서로 독립된 경로로 싸이클을 허용하지 않는 경로를 말한다.

테스트 케이스 : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서로, 명세 기반 테스트의 설계 산출물에 해당한다.
 → 입력 값(테스트 데이터), 실행 조건(테스트 조건), 기대 결과(예상 결과)

블랙박스 테스트 : 소프트웨어의 내부 구조나 코드를 보지 않고, 사용자 요구사항 명세서를 보면서 기능이 정확히 수행되는지 테스트하는 기법

블랙박스 테스트 종류
동치(동등) 분할 검사 (Equivalence Partitioning Testing)
경계값 분석 (Boundary Value Analysis)
원인-효과 그래프 검사 (Cause-Effect Graphing Testing)
오류 예측 검사 (Error Guessing)
비교 검사 (Comparison Testing)

화이트박스 테스트 : 프로그램의 내부 로직(소스 코드) 직접 보면서 모든 논리적 경로를 테스트합니다

화이트박스 테스트 종류
기초 경로 검사 (Base Path Testing) : 제어 흐름 그래프에서 시작부터 끝까지 가는 독립적인 경로, 싸이클(반복)이 포함될 수 밖에 없음
제어 구조 검사 
 - 조건 검사 (Condition Testing)
 - 루프 검사 (Loop Testing)
 - 데이터 흐림 검사 (Data Flow Testing)

화이트박스 테스트의 검증 기준
문장 (Statement) 검증 기준
 - 소스 코드의 모든 구문이 한 번 이상 수행되도록 테스트 케이스 설꼐

분기
 (Branch) 검증 기준(결정 (Decision) 검증 기준)
 - 소스 코드의 모든 조건문에 대해 조건이 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계

조건
 (Condition) 검증 기준
 - 소스 코드의 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계

분기
/조건 (Branch/Condition) 기준
 - 분기 검증 기준과 조건 검증 기준을 모두 만족하는 설계로, 조건문 True인 경우와 False인 경우에 따라 조건 검증 기준의 입력 데이터를 구분하는 테스트 케이스 설계


답: 4번
 

30. 소프트웨어 형상 관리에 대한 설명으로 거리가 먼 것은?

① 소프트웨어에 가해지는 변경을 제어하고 관리한다.

② 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트 케이스 모두 관리 대상이다.

③ 대표적인 형상 관리 도구로 Ant, Maven, Gradle 등이 있다.

④ 유지 보수 단계뿐만 아니라 개발 단계에도 적용할 수 있다.

형상 관리 (SCM) : 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
 - 소프트웨어 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보한다.
 - 형상 관리는 소프트웨어 개발의 전 단계에 적용되는 활동이며, 유지보수 단계에서도 수행된다.
 - 형상 관리는 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 한다.
 - 관리 항목에는 소스 코드뿐만 아니라 각종 정의서, 지침서, 분석서 등이 포함된다.
 - 형상 관리를 통해 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.
 - 대표적인 형상 관리 도구 : Git, CVS, Subversion

형상 관리의 중요성
 - 지속적인 소프트웨어의 변경 사항을 체계적으로 추적하고 통제할 수 있다.
 - 제품 소프트웨어에 대한 무절제한 변경을 방지할 수 있다. (불필요한 사용자의 소스 수정 제한)
 - 제품 소프트웨어에서 발견된 버그나 수정 사항을 추적할 수 있다.
 - 소프트웨어는 형태가 없어 가시성이 결핍되므로 진행 정도를 확인하기 위한 기준으로 사용될 수 있다.
 - 소프트웨어의 배포본을 효율적으로 관리할 수 있다.
 - 소프트웨어를 여러 명의 개발자가 동시에 개발할 수 있다.

형상 관리 기능
형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여(식별)하고, 계층(Tree) 구조로 구분하여 수정 및 추적이 용이하도록 제어하는 작업
버전 제어 : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구를 결합시키는 작업
형상 통제(변경 관리) : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업
 - 변경 요구를 '즉시' 수용하는 것이 아니라, 형상 통제 위원회의 심의를 거쳐 변경의 타당성을 검토한 후 승인된 변경 사항만 반영
형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
형상 기록(상태 보고) : 형상의 식별, 통제, 감사 작업의 결과를 기록, 관리하고 보고서를 작성하는 작업

답: 3번
Ant, Maven, Gradle는 빌드 자동화
 

31. 다음 중 최악의 경우 검색 효율이 가장 나쁜 트리 구조는?

① 이진 탐색 트리

② AVL 트리

③ 2-3 트리

④ 레드-블랙 트리

이진 검색(이분 검색, Binary Search) : 전체 파일을 두 개의 서브파일로 분리해가면서 Key 레코드를 검색하는 방식
(전제조건) 반드시 데이터가 정렬되어 있어야함.
(작동원리) 중간값을 선택 → 찾는 값과 중간 값을 비교 → 찾는 값이 중간값보다 작으면 왼쪽 절반을, 크면 오른쪽 절반을 다시 검색
(성능) 한 번 비교할 때마다 검색 대상이 1/2로 줄어들기 때문에 속도가 매우 빠름
 - 최악의 경우 검색 효율이 가장 나쁨

자가 균형 이진 탐색 트리 : 데이터가 삽입되거나 삭제될 때 스스로 트리의 높이를 제한하여 균형을 맞춤
 → 최악의 경우에도 검색효율이 항상 O(log n)을 유지하도록 설계되어 있음
 - AVL
 - 2-3트리
 - 레드-블랙 트리

답: 1번
 

32. 다음 중 선형 구조로만 묶인 것은?

① 스택, 트리

② 큐, 데크

③ 큐, 그래프

④ 리스트, 그래프

선형 구조 : 데이터가 연속적으로, 직선 모양으로 연결된 구조. 데이터 간의 관계가 '1:1'
 - 리스트 (List) : 순서가 있는 데이터의 집합 (선형 리스트, 연결 리스트)
 - 스택 (Stack) : 한쪽 끝에서만 삽입/삭제가 일어나는 LIFO(후입선출) 구조
 -  (Queue) : 한쪽에서 삽입, 반대쪽에서 삭제가 일어나는 FIFO(선입선출) 구조
 - 데크 (Deque) : 양쪽 끝에서 모두 삽입과 삭제가 가능한 구조

비선형 구조 : 데이터가 계층적이거나 그물망처럼 연결된 구조. 데이터 간의 관계가 '1:다' 또는 '다:다'
 - 트리 (Tree) : 부모-자식 관계가 있는 계층적 구조 (예: 조직도, 디렉토리 구조)
 - 그래프 (Graph) : 노드와 노드를 잇는 간선으로 이루어진 그물망 구조 (예: 지도, SNS 인맥 관계

답: 2번
 

33. 화이트박스 검사 기법에 해당하는 것으로만 짝지어진 것은?

① 데이터 흐름 검사, 루프 검사

② 동등 분할 검사, 경계값 분석

③ 원인 결과 그래프 기법, 오류예측 기법

④ 데이터 흐름 검사, 경계값 분석

블랙박스 테스트 : 소프트웨어의 내부 구조나 코드를 보지 않고, 사용자 요구사항 명세서를 보면서 기능이 정확히 수행되는지 테스트하는 기법

블랙박스 테스트 종류
동치(동등) 분할 검사 (Equivalence Partitioning Testing)
경계값 분석 (Boundary Value Analysis)
원인-효과 그래프 검사 (Cause-Effect Graphing Testing)
오류 예측 검사 (Error Guessing)
비교 검사 (Comparison Testing)

화이트박스 테스트 : 프로그램의 내부 로직(소스 코드) 직접 보면서 모든 논리적 경로를 테스트합니다

화이트박스 테스트 종류 (기조루데)
기초 경로 검사 (Base Path Testing) : 제어 흐름 그래프에서 시작부터 끝까지 가는 독립적인 경로, 싸이클(반복)이 포함될 수 밖에 없음
제어 구조 검사 
 - 조건 검사 (Condition Testing)
 - 루프 검사 (Loop Testing)
 - 데이터 흐름 검사 (Data Flow Testing)

화이트박스 테스트의 검증 기준
문장 (Statement) 검증 기준
 - 소스 코드의 모든 구문이 한 번 이상 수행되도록 테스트 케이스 설꼐

분기
 (Branch) 검증 기준(결정 (Decision) 검증 기준)
 - 소스 코드의 모든 조건문에 대해 조건이 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계

조건
 (Condition) 검증 기준
 - 소스 코드의 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계

분기
/조건 (Branch/Condition) 기준
 - 분기 검증 기준과 조건 검증 기준을 모두 만족하는 설계로, 조건문 True인 경우와 False인 경우에 따라 조건 검증 기준의 입력 데이터를 구분하는 테스트 케이스 설계

답: 1번
 

34. 단위 테스트에서 테스트의 대상이 되는 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈로 상향식 테스트에 필요한 것은?

① 테스트 스텁(Test Stub)

② 테스트 드라이버(Test Driver)

③ 테스트 슈트(Test Suites)

④ 테스트 케이스(Test Case)

하향식 통합 테스트 : 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법
 - 주요 제어 모듈을 기준으로 하여 아래 단계로 이동하면서 통합하는데, 깊이 우선 통합법이나 넓이 우선 통합법을 사용
 - 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있음
 - 상위 모듈에서는 테스트 케이스를 사용하기 어려움.
 - 스텁(Stub) : 일시적으로 필요한 조건만을 가지고 임시로 제공되는 가짜 모듈의 역할, 드라이버(Driver)보다 작성하기 쉬움

상향식 통합 테스트 : 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법
 - 가장 하위 단계의 모듈부터 통합 및 테스트가 수행되므로 스텁(Stub)은 필요하지 않음
 - 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터(Cluster)가 필요
 - 드라이버(Driver) : 이미 존재하는 하위 모듈과 존재하지 않는 상위 모듈 간의 인터페이스 역할을 함

※테스트 슈트(Test Suites) : 테스트 케이스들의 집합. 특성 시나리오를 테스트하기 위해 묶어놓은 꾸러미
※테스트 케이스(Test Case) : 특정 요구사항을 준수하는지 확인하기 위한 입력 값, 실행 조건, 예상 결과의 집합

답: 2번
향식 → 라이버 (상드)
향식 → 텁 (하스)
 

35. 인터페이스 구현 시 사용하는 기술로 속성값 쌍(Attribute-Value Pairs)으로 이루어진 데이터 오브젝트를 전달하기 위해 사용하는 개방형 표준 포맷은?

① JSON

② AVPN

③ HTML

④ DOF

AJAX
 - 자바 스크립트(JavaScript) 등을 이용하여 클라이언트와 서버 간에 XML 데이터를 교환 및 제어함으로써 이용자가 웹 페이지와 자유롭게 상호 작용할 수 있도록 하는 비동기 통신 기술

JSON (JavaScript Object Notation)
 - 속성-값 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
 - 비동기 처리에 사용되는 AJAX에서 XML을 대체하여 사용되고 있다.

XML (eXtensible Markup Language)
 - XML은 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
 - 웹 페이지의 기본 형식인 HTML의 문법이 각 웹 브라우저에서 상호 호환적이지 못하다는 문제와 SGML의 복잡함을 해결하기 위해 개발

※AVPN : 일반적으로 정보처리기사 용어에 해당하지 않음
※HTML : 웹 페이지의 구조와 내용을 기술하는 언어. 웹 문서를 만드는 언어
※DOF : 데이터 객체와 관련된 오래된 기술 명칭 중 하나. 표준 포맷으로 통용되는 용어 아님

답: 1번
 

36. DRM(Digital Rights Management)과 관련한 설명으로 틀린 것은?

① 디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 하드웨어 제조업자, 저작권자, 출판업자 등이 사용할 수 있는 접근 제어 기술을 의미한다.

② 디지털 미디어의 생명 주기 동안 발생하는 사용 권한 관리, 과금, 유통 단계를 관리하는 기술로도 볼 수 있다.

③ 클리어링 하우스(Clearing House)는 사용자에게 콘텐츠 라이선스를 발급하고 권한을 부여해주는 시스템을 말한다.

④ 원본을 안전하게 유통하기 위한 전자적 보안은 고려하지 않기 때문에 불법 유통과 복제의 방지는 불가능하다.

디지털 저작권 관리(DRM, Digital Right Management) :저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술
 - 원본 콘텐츠가 아날로그인 경우에는 디지털로 변환한 후 패키저(Packager)에 의해 DRM 패키징을 수행한다.
 - 콘텐츠의 크기에 따라 음원이나 문서와 같이 크기가 작은 경우에는 사용자가 콘텐츠를 요청하는 시점에서 실시간으로 패키징을 수행하고, 크기가 큰 경우에는 미리 패키징을 수행한 후 배포한다.
 - 패키징을 수행하면 콘텐츠에는 암호화된 저작권자의 전자서명이 포함되고 저작권자가 설정한 라이선스 정보가 클리어링 하우스에 등록된다.
 - 사용자가 콘텐츠를 사용하기 위해서는 클리어링 하우스에 등록된 라이선스 정보를 통해 사용자 인증과 콘텐츠 사용 권한 소유 여부를 확인받아야 한다.
 - 종량제 방식을 적용한 소프트웨어의 경우 클리어링 하우스를 통해 서비스의 실제 사용량을 측정하여 이용한 만큼의 요금을 부과한다.

디지털 저작권 관리(DRM) 구성요소
 - 클리어링 하우스 (Clearing House) : 저작권에 대한 사용 권한, 라이선스 발급, 암호화된 키 관리, 사용량에 따른 결제 관리 등을 수행
 - 콘텐츠 제공자 (Contents Provider) : 콘텐츠를 제공하는 저작권자
 - 패키저 (Packager) : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
 - 콘텐츠 분배자 (Contents Distributor) : 암호화된 콘텐츠를 유통하는 곳이나 사람
 - 콘텐츠 소비자 (Customer) : 콘텐츠를 구매해서 사용하는 주체
 - DRM 컨트롤러 (DRM Controller) : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
 - 보안 컨테이너 (Security Container) : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치

디지털 저작권 관리(DRM)의 기술 요소
 - 암호화 (Encryption) : 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
 - 키 관리 (Key Management) : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
 - 암호화 파일 생성 (Packager) : 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
 - 식별 기술 (Identification) : 콘텐츠에 대한 식별 체계 표현 기술
 - 저작권 표현 (Right Expression) : 라이선스의 내용 표현 기술
 - 정책 관리 (Policy Management) : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
 - 크랙 방지 (Tamper Resistance) : 크랙에 의한 콘텐츠 사용 방지 기술
 - 인증 (Authentication) : 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

답: 4번
DRM의 존재 이유 자체가 '불법 유통과 복제를 방지'하여 저작권자의 권익을 보호하는 것
 

37. 다음 중 테스트 오라클에 대한 설명으로 옳지 않은 것은?

① 샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클이다.

② 토탈 오라클 : 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클이다.

③ 휴리스틱 오라클 : 특정 테스트 케이스의 입력 값에 대해 결과를 제공하고, 나머지는 추정으로 처리한다.

④ 일관성 검사 오라클 : 애플리케이션의 변경 전과 후의 결과 값이 동일한지를 확인하는 오라클이다.

테스트 오라클 (Test Oracle) : 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법 및 활동을 말함
 - 테스트 오라클은 결과를 판단하기 위해 테스트 케이스에 대한 예상 결과를 계산하거나 확인한다.
 - 모든 입력값에 대해 일일이 정답을 만들어 두는 것은 비효율적이기 때문에 상황에 맞는 오라클을 선택적으로 사용해야 함
  → 모든 테스트 케이스에 대해 기대 결과를 생성하는 것이 현실적으로 불가능
 - 테스트 자동화 도구와 결합하여 실행 결과 비교 및 분석을 자동화하는 데 핵심적인 역할을 함.

테스트 오라클의 종류
(True) 오라클
 - 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클로, 발생된 모든 오류를 검출할 수 있음
 - 수학적 기법를 이용하여 결과값을 산출해 낼 수 있음

샘플링
(Sampling) 오라클
 - 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클

추정
(휴리스틱, Heuristic) 오라클
 -샘플링 오라클을 개선한 오라클로, 특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리하는 오라클

일관성
 검사(Consistent) 오라클
 - 애플리케이션의 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클

답: 2번
 

38. 인터페이스 구현 검증 도구가 아닌 것은?

① ESB

② STAF

③ xUnit

④ NTAF

인터페이스 구현 검증 도구
xUnit : 단위 테스트, 자바, C++, NET(NUnit).
 - 다양한 프로그래밍 언어에서 함수나 클래스 같은 최소 단위(모듈)를 검증하기 위한 도구

STAF
 : 서비스 중심, 분산 환경, 재사용성, 유연함
 - 서비스 호출, 프로그램 실행 등 다양한 환경에서 테스트를 수행할 수 있도록 지원하는 프레임워크입니다. 여러 대의 컴퓨터(분산 환경)에 설치된 테스트 도구들을 통합 관리할 때 유용

FitNesse
 : 인수 테스트(Acceptance Test), 위키(Wiki) 기반
 - 웹 브라우저를 통해 테스트 케이스를 직접 작성하고 실행 결과를 확인할 수 있는 도구입니다. 사용자가 이해하기 쉬운 위키(Wiki) 형태의 인터페이스를 제공하는 것이 가장 큰 특징

NTAF
 : STAF + FitNesse, 네이버(Naver) 개발
 - 위에서 설명한 STAF의 분산 환경 기능과 FitNesse의 협업 기능을 결합하여 네이버에서 만든 테스트 자동화 프레임워크입니다. (시험에는 '두 도구의 결합'이라는 키워드로 자주 등장합니다.)

Selenium
 : 웹 애플리케이션(Web), 브라우저 자동화, 다양한 언어 지원
 - 웹 브라우저를 직접 제어하여 웹 사이트의 기능을 테스트하는 도구입니다. 자바스크립트 클릭, 폼 입력 등을 자동으로 수행하며 다양한 브라우저(크롬, 파이어폭스 등)를 지원

watir
 : Ruby(루비) 기반, 웹 애플리케이션 테스트
 - Selenium과 비슷하게 웹 애플리케이션을 테스트하는 도구이지만, Ruby 프로그래밍 언어를 기반으로 만들어진 것이 특징

※ 인터페이스 통합 기술
EAI : 기업 내 각종 애플리케이션을 통합하는 기술
ESB : EAI의 확장판 개념, 버스 혀애의 통로를 통해서비스 중심으로 통합하는 기술

※ 테스트 자동화 도구의 분류
정적 분석 도구 : pmd, checkstyle, cppcheck, SonarQube
동적 분석 도구 : xUnit, valance
성능 테스트 도구 : JMeter, LoadRunner

답: 1번
ESB는 테스트 도구가 아니라 서로 다른 애플리케이션들을 통합하여 상호작용할 수 있게 해주는 미들웨어
 

39. 정점이 5개인 방향 그래프가 가질 수 있는 최대 간선 수는? (단, 자기 간선과 중복 간선은 배제한다.)

① 7개

② 10개

③ 20개

④ 27개

방향/무방향 그래프의 최대 간선 수
무방향 그래프 최대 간선 수 : n(n-1)/2
방향 그래프 최대 간선 수 : n(n-1)

※ 5(5-1) = 20

답: 3번
 

40. 물리데이터 저장소의 파티션 설계에서 파티션 유형으로 옳지 않은 것은?

① 범위 분할(Range Partitioning)

② 해시 분할(Hash Partitioning)

③ 조합 분할(Composite Partitioning)

④ 유닛 분할(Unit Partitioning)

파티션 : 데이터베이스에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말한다.

파티션의 종류
범위 분할 (Range Partitioning)
 - 지정한 열외 값을 기준으로 범위를 지정하여 분할함
 - 예. 일별, 월별, 분기별 등

해시 분할 (Hash Partitioning)
 - 해시 함수를 적용한 결과 값에 따라 데이터를 분할함
 - 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터를 고르게 분산할 때 유용함
 - 특정 데이터가 어디에 있는지 판단할 수 없음
 - 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적임

조합 분할 (Compostie Partitioning)
 - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
 - 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용함

목록 분할 (List Partitioning)
 - 지정한 열 값에 대한 목록을 만들어 이를 기준으로 분할함
 - '국가'라는 열에 '한국', '미국', '일본'이 있는 경우 '미국'을 제외할 목적으로 '아시아'라는 목록을 만들어 분할함

라운드 로빈 분할 (Round Robin Partitioning)
 - 레코드를 균일하게 분배하는 방식
 - 각 레코드가 순차적으로 분배되며, 기본키가 필요 없음

답: 4번