728x90

첫번째

1. 시스템 테스트의 종류 및 개념 정리.

 ① 회복(Recovery) : 시스템에 고의로 실패를 유도한 후 정상적으로 복귀하는지 확인

 ② 강도(Stress)  : 시스템에 과다 정보량을 부과한 후 과부하 시 시스템이 정상적으로 작동되는지 확인.

 ③ 성능 : 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 확인.

 ④ 안전(Security) : 불법적인 침입을 시도하여 보안시스템이 불법적 침투를 잘 막아내는지 확인.

 

2. 버블정렬.

 - 가장 가까운 수와 비교해서 처음부터 끝까지 정렬.

 ex) 54321

  1pass : 43215

  2pass : 32145

  3pass : 21345

  4pass : 12345

 

3. 깊이우선탐색(DFS. Depth First Search) 의 개념 정리.

 - 트리 그래프에서 루트노드에서 왼쪽부터 자식노드의 제일 끝 자식노드까지의 순으로 조회

   ( 단, 이때 이미 순회한 노드는 Stack에 포함되어있기 때문에 다시 담지 않음)

* 너비우선탐색(BFS, Breadth First Sarch).

 - 루트 노드에서 바로 밑 자식노드들을 먼저 순회하고 다음 자식노드들 을 모두 순회하는 방식

   ( 단, 이때 이미 순회한 노드는 Queue에 포함되어있기 때문에 다시 담지 않음)

 

4. 모듈의 개념 정리.

 - S/W 구조를 이루어 다른 것들과 구별 될 수 있는 독립적인 기능을 갖는 단위.

 - 하나 또는 몇 개의 논리적인 기능을 수행하기 위한 명령어들의 집합.

 - 서로 모여 하나의 완전한 프로그램으로 만들어 질 수 있다.

 

5. 테스트 드라이버(Test Driver)

 - 시험대상 모듈을 호출하는 간이 소프트웨어

 - 필요에 따라 매개 변수를 전달하고 모듈을 수행한 후의 결과를 보여줌.

 - 상향식 통합 테스트에서 사용.

 - 테스트 대상 하위 모듈을 호출하고, 파라미터 전달, 모듈 테스트 수행 후의 결과 도출.

* 테스트 스텁(Stub)

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

 - 하향식 테스트에 사용.

 - 시험용 모듈.

 

6. 선형 구조, 비선형 구조의 종류

 - 선형 구조 : 리스트, 스택, 큐, 데크

 - 비선형 구조 : 트리, 그래프

  ① 트리 : 정점(Node)와 선분(Branch)를 이용해 사이클을 이루지 않게 구성한 그래프(Graph)의 특수 형태.

 * 파일구조 : 순차파일, 색인파일, 직접파일

 

7. 스택의 자료 삭제 알고리즘(Top : 스택포인터, S : 스택의 이름

if Top = 0 Then 

  Underflow // 스택 공간에 데이터가 없을 때(Top 값이 0) 데이터를 거내려고하면 발생하는 오류

Else {

  remove S(Top)

  Top = Top -1

}

* Overflow : 스택 공간이 가득찼을 때 하나를 더 넣으려고 하는 경우 발생하는 오류.

 

8. 사용자 메뉴얼 작성(준비) 절차

 - 작성 지침 정의 → 사용자 메뉴얼 구성 요소 정의 → 구성 요소별 내용 작성 → 사용자 메뉴얼 검토

 

9. 스택 문제인데 쉬우니 패스..

 

10. 검증과 확인에 대한 설명 쉬우니 패스..

 

11. 목적별 테스트 종류 및 개념 정리.

 ① 단위 테스트 :  모듈이 정확하게 구현되었는지, 예정한 기능이 제대로 수행되는지를 점검.

 ② 통합 테스트 : 모듈을 통합하는 과정에서 "모듈 간의" 호환성을 확인하기 위해 수행되는 테스트.

 ③ 시스템 테스트 : "완전한 시스템"에 대해 수행하는 테스트. 기능적, 비기능적 요구사항을 만족하는지 확인.

 ④ 인수 테스트 : 실제 환경에서 "사용자"가 참여하는 테스트. 요구 분석 명세서에 나타난 사항을 모두 충족하는지, 사용자 관점에서 확인.

 

12. 소프트웨어 형상 관리(Software Configuration Management) 의미.

  - 변경 사항을 체계적으로 추적하고 통제하는 것(단순 버전 관리보다 더 포괄적인 개념)

12-1 형상 관리 절차 : 형상 식별 → 형상 통제 → 형상 감사 → 형상 기록/보고

 

13. 소스코드 정적 분석(Static Analysis) 정리

  - 소스 코드를 실행 시키지 않고 분석하는 방법.

  - 코드에 있는 잠재적 오류를 찾아내는 활동.

  - 자료 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾음.

 

14. 결함(Fault) 의미

 - 개발하면서 시스템이 고장을 일으키게 해서 오류(Error)가 있는 경우 발생하게 하는 것.

 

15. 쉬워서 패스

 

16. 용어 정리.

 - 이식성(Portability) : 다양한 하드웨어에서 운용 가능하게 함.

 - 효율성(Efficiency) : 최소의 작업으로 요구되는 기능을 수행

 - 사용 용이성(Usability) : 쉽게 사용할 수 있는 정도.

 - 정확성(Correctness) : 사용자의 요구사항을 충족

* 품직 목표 항목 : 정확, 신뢰, 효율, 무결, 유지보수, 사용용이, 검사 용이, 이식, 상호 운용, 유연

 

17. 트리별 bigO 표기

 - 이진 탐색트리 : O(n)

 - AVL트리 : O(log n)

 - 2-3트리 : O(log 3n)

 - 레드 블랙 트리 : O(log n)

 

18. 트리 순회

 - 전위 : root - left - right

 - 중위 : left - root - right

 - 후위 : left - right - root

 

19. 테스트 수행 도구의 종류

  - ①자료 흐름도(DFD), ②기능 테스트, ③입력 도메인 분석, ④랜덤 테스트

 

20. 디지털 저작권 관리(DRM) 구성요소.

 ① 패키저(Packager)  : 콘텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶는 기능.

 ② 콘텐츠 제공자 : 콘텐츠를 제공하는 저작권자

 ③ 콘텐츠 분배자(Contents Distributor) : 암호화된 콘텐츠 제공

 ④ 보안 컨테이너 : 원본을 안전하게 유통하기 위한 전자적 보안장치

 ⑤ DRM 컨트롤러 : 배포된 콘텐츠의 이용 권한을 통제

 ⑥ 클리어링 하우스 : 소비자와 유통업자 사이에 발생하는 거래에 대해 디지털 저작권 라이선싱을 중개학 라이센스 발급을 수행.

 


두번째

1. 힙 정렬(Heap Sort) - Java에서는 PriorityQueue를 활용.

 ① 정렬할 입력 레코드들로 힙을 구성하고 가장 큰 키 값을 갖는 루트 노드를 제거하는 과정을 반복해 정렬.

 ② 평균 수행시간은 O(nlog2n)이다.

 ③ 완전 이진트리(complete binary tree)로 입력자료의 레코드를 구성.

 

2. 단위 테스트의 발견 오류 종류.

 ① 알고리즘 오류에 따른 원치 않는 결과.

 ② 탈출구가 없는 반복문의 사용

 ③ 틀린 계산 수식에 의한 잘못된 결과.

* 통합테스트 : 모듈 간의 비정상적인 상호작용으로 인한 원치 않는 결과

 

3. 소프트웨어 테스트 종류 및 개념 정리.

 - 살충제 패러독스 : 동일한 케이스로 반복 실행하면 더 이상 새로운 결함을 발견할 수 없기 때문에 케이스를 개선.

 - 결함 집중 : 파레토 법칙이 좌우, 결함이 소수의 특정 모듈에 집중, 이미 발생했던 모듈에서 계속 추가로 발생할 가능성이 높다.

 - 오류 부재의 궤변 : 사용자의 요구사항을 만족하지 못한다면 오류를 발견하고 제거해도 품질이 높다고 할 수 없음.

 

4. 버전 관리 항목 종류 및 개념 정리.

 - 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인.

 - 쉬우니 패스..

 

5. 박스 테스트 종류

 - 화이트 박스 테스트 : 내부 로직과 동작을 검사하는 테스트.

  * 기본 경로는 싸이클을 최대 한번만 지나야함.

 - 블랙 박스 테스트 : 입력에 따른 출력 결과를 테스트.

5-1. 검사 기법 종류

 - 화이트 박스 : 기초 경로 검사(Base Path Test), 조건 검사, 루프 검사, 데이터 흐름검사(기조루흐)

 - 블랙 박스 : 동치분할검사, 경계값 분석(Boundary value analysis), 원인-효과 그래프 검사, 오류 예측 검사, 비교 검사

 

6. 성능 테스트 도구 : 처리량, 응답시간, 경과시간, 자원 사용률에 대해 가상의 사용자를 생성 테스트 수행

명세 기반 테스트 도구 : 주어진 명세를 빠짐없이 테스트 케이스로 구현

 

7. 형상 관리는 프로젝트 계획, 분석, 설계, 프로그램, 테스트 케이스 모두 대상.

* Ant, Maven, Gradle은 빌드자동화 도구.

 

8. 첫번째(20번)

 

9. 버전 관리도구 방식 종류 및 정의

 ① 분산 저장소 방식 : Git, 원격과 로컬 두가지 저장소로 관리됌.

 ② 공유 폴더 방식 : 로컬 컴퓨터의 공유 폴더에 저장되어 관리

 ③ 클라이언트ㆍ서버 방식 : 중앙 시스템(서버)에 저장되어 관리 방식

 

10. 두번째(5번)

 

11. 버블정렬 쉬워서 패스..

 

12. 자료구조별 bigO 

 - 합병 정렬(병합 정렬) : O(Nlog2N)

 - 버블 정렬, 삽입 정렬, 선택 정렬 : O(N2)

 - 정렬이 된 경우 버블과 삽입은 O(N)이 됌.

 

13. postfix 표현 [  3 4 * 5 6 * + ]  =  (3*4) + (5*6)

  - 전의 표기법(prefix)

  - 중위 표기법(infix)

  - 후위 표기법(postfix)

 

14. EAI(Enterprise Application Integration) 구축유형 종류 및 정의

 - EAI는 기업 내 상호 연동이 가능하게 해주는 솔루션.

 ① Point-to-Point : 앱을 1:1로 연결, 변경 및 재사용 어려움.

 ② Hub & Spoke : 허브를 통해 데이터를 전송, 중앙 집중형 방식, 확장 및 유지보수 용이.

 ③ Message Bus (ESB 방식) : 미들웨어 두어 처리하는 방식, 확장성이 뛰어나 대용량 처리 가능.

 ④ Hybrid : 그룹내 Hub & Spoke 사용, 그룹 간 Message 방식 사용, 데이터 병목 최소화

 

15. 인터페이스 구현 검증 도구의 종류

 ① xUnit : Java, C++ 등 다양한 언어 지원

 ② STAF : 서비스 호출 및 컴포넌트 재사용 등 환경 지원

 ③ NTAF : FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합(네이버)

 ④ Watir : Rudy를 사용

 ⑤ Fitnesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원

 ⑥ Selenium : 다양한 브라우저 및 개발 언어 지원

 

16. 쉬워서 패스..

 

17. 패키징 정의

 - 모듈별로 생성한 실행 파일들을 하나로 합쳐서 설치 파일을 만드는 것.( 사용자 중심으로 패키징 )

 

18. 공학적으로 잘된 소프트웨어(Well Engineered Software)의 특징.

 - End User가 최종 소비자이기 때문에 End User 수준에 맞게 직관적으로 사용하기 쉽게 설계 및 개발.

 

19. Coding 처리과정

 - Testing → Error 발생( Bug 발견) → Error 수정 ( Debugging ) → Retesting

 

20. 스택을 이용한 연산

  - 재귀호출 , 후위표현(Post-fix expression)의 연산, 깊이우선탐색(DFS)

 * 큐를 이용한 연산

  - 선택정렬, BFS(너비우선탐색)

 


세번째

1. 쉬우니 패스

 

2. 선택정렬 - 가장 작은 단위에 숫자를 선택해서 정렬.

   버블정렬 - 왼쪽부터 2개씩 짝으로 정렬

 

3. Stub - 하향식 통합시험 시 일시적 필요 조건만을 가지고 임시로 제공되는 시험용 모듈.

   Driver - 상향식

 

4. 중위식을 전위식(prefix), 후위식(postfix)으로 변환 계산법.

 - 중위식 :  ((A*(B+C))/D)-E

 - 전위식 : - / * A + B C D E

 - 후위식 : A B * C + D / E -

 

5. 첫번째(6번)

 

6. 스택(LIFO)과 큐(FIFO) 설명 정리.

 ※ 스택

  - 입출력이 한쪽 끝으로만 제한된 리스트

  - Top과 Bottom 2개로 이루어져 있음.

  - 더 이상 삭제할 데이터가 없을 때 삭제하면 언더플로우 발생.

 ※ 큐

  - 한쪽에서는 삽입이 다른 한쪽은 삭제가 이루어짐.

 

7. 디지털 저작권 관리(DRM)에서 사용되는 기술요소.

  - 암호화, 키관리, 암호화 파일생성, 식별기술, 저작권 표현, 정책관리, 크랙방지, 인증

 

8. 쉬워서 패스

 * 토글 버튼 : on / off 둘중하나 선택.

 

9. 쉬워서 패스

 

10. 쉬워서 패스

 

11. 첫번째(5-1)

 

12. 이진 검색(Binary Search)

 - 비교횟수를 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어듬.

 - 탐색 효율이 좋고 탐색 시간이 적게 소요

 - 검색할 데이터가 정렬되어 있어야 함.

 

13. 정확성(Correctness), 유용성(Usability), 효율성(Efficiency), 신뢰성(Reliability), 무결성(Integrity)

     적응성(Adaptablility), 정밀성(Accuracy), 견고성(Robustness)

 

14. 테스트 케이스 구성요소.

 - 식별자(항목 식별자, 일련번호)

 - 테스트 항목(테스트 대상-모듈 또는 기능)

 - 입력 명세(입력 데이터 또는 테스트 조건)

 - 출력 명세(케이스 수행 시 예상되는 출력 결과)

 - 환경 설정(하드웨어나 소프트웨어 환경)

 - 특수 절차(케이스 수행 시 특별히 요구되는 절차)

 - 의존성 기술(케이스 간의 의존성)

 

15. 쉬워서 패스

 

16. chief programmer team : 효율성을 제고하기 위한 능력과 경험이 풍부한 책임 프로그램 작성자를 중심으로 구성한 개발 팀.

 

17. 자료구조 ( 정렬 ) 종류 및 정의.

 ① 퀵 정렬 : 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분저그로 나누어 정렬.

 ② 삽입정렬 : 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬.

 ③ 쉘 정렬 : 삽입정렬 확장 개념. 입력파일을 매개변수값으로 서브파일 구성, 각 서브파일을 삽입정렬 방식으로 순서 배열하는 과정을 반복해서 정렬.

 ④ 선택정렬 : n개의 레코드 중 최소값을 찾아 첫번째 레코드와 비교

 ⑤ 버블정렬 : 주어진 파일 인접한 두 개의 레코드 키 값을 비교

 ⑥ 힙 정렬 : 이진 트리를 이용한 정렬

 ⑦ 2-Way 합병 정렬 : 이미 정렬되어 있는 두 개의 파일을 한 개의 파일로 합병.

 

18. 해싱 함수(Hashing Function)의 종류

 ① 제산법(division) : 레코드키를 해시표롤 나눈 나머지를 홈 주소로 사용

 ② 제곱법(mid-square)

 ③ 중첩법(폴딩법) : 레코드 키를 여러 부분으로 나누고 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈주소로 사용.

 ④ 숫자분석법(digit analysis) : 키 값을 이루는 숫자의 분포를 분석하여 비교적 고른 자리를 필요한 만큼 선택.

 ⑤ 기수 변환법 : 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초과한 높은 자릿수 절단.

                      다시 주소 범위에 맞게 조정.

 ⑥ 무작위 방법

 

19. 인수검사 기법

 - 베타 검사 : 필드 테스팅(field testing) 이라고도 하며 개발자 없이 고객의 사용환경에 소프트웨어를 설치하여 검사 수행.

 - 알파 검사 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트

 - 계약 인수 테스트, 규정 인수 테스트

 

20. 트리 순회 패스..


※ 소스코드 품질분석 도구

 ① 정적 분석 도구 :

   - pmd : 소스 코드에 대한 미사용 변수 최적화안된 코드 등 결함유발 코드 검사.

   - cppcheck : C/C++ 코드에 대한 메모리 누수 오버플로우 등 분석

   - SonarQube : 중복 코드 복잡도 코딩 설계 등을 분석하는 소스 분석 통합 플랫폼

   - ccm : 다양한 언어의 코드 복잡도 분석

   - checkstyle : java 코드 표준 준수 검사

   - cobertura : 자바 언어의 소스코드 복잡도 분석 및 테스트 커버리지 측정.

 ② 동저 분석 도구

   - valance : 

   - Avalanche : valgrind 프레임워크 및 STP기반 / 프로그램 결함 및 취약점 분석

   - valgrind : 프로그램 내에 존재하는 메모리 및 쓰레드 결함 분석

 

※ n 개의 노드로 구성된 무방향 그래프의 최대 간선수 : n(n-1) / 2 개

   정점이 n개인 그래프에서 최대 간선수는 n(n-1) 개

 

※ 테스트 용어

 ① 테스트 케이스 : s/w에서 사용자의 요구사항을 정확하게 준수했는지 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서

 ② 테스트 시나리오 : 테스트 케이스를 적용하는 순서에 따라 여러개의 테스트 케이스들을 묶은 집합

 ③ 테스트 오라클 : 테스트의 결과가 참인지 거짓인지를 판단하기 위해 사전에 정의된 참값을 입력하여 비교하는 기법 및 활동 / 종류는 참, 샘플링, 휴리스틱, 일관성 검사가  있다.

 

※ 빌드 자동화 도구 종류 및 개념 정리. 

 - 빌드, 테스트, 배포 자동화하는 도구

 - Ant, Make, Maven, Gradle, Jenkins 등이 있음.

 ① Jenkins

   - Java 기반의 오픈소스 형태

   - 서블릿 컨테이너에서 실행되는 서버 기반 도구

   - 친숙한 Web GUi 제공

   - 분산 빌드나 테스트 가능

 ② Gradle

   - Groovy를 기반으로 한 오픈 소스 형태.

   - 안드로이드 앱 개발 환경에서 사용.

   - 행할 처리 명령들을 모아 태스트(Task)로 만든 후 태스크 단위로 실행.

 

※ 국제 표준 정리.

 ① ISO/IEC 9126 : s/w 품질 특성 및 척도에 대한 표준화

 ② ISO/IEC 14598 : s/w 제품 평가. ISO/IEC 9126 사용을 위한 절차와 기본상황 및 s/w 평가 프로세스에 대한 표준 규정.

 ③ ISO/IEC 12119 : 패키지 s/w 제품 품질 요구사항 및 테스트.

* 현재 ISO/IEC 12119 → ISO/IEC 25010이 국제표준임.

 

※ 제어흐름 그래프 McCabe와 Cyclomatic수 계산 공식.

 - 공식 : Edge - Node + 2

 - Edge(화살표) = 6

 - Node(동그라미) = 4

 - 6-4+2

 - McCabe와 Cyclomatic수 : 4

 

※ 알고리즘 설계 기법 종류

 ① 분할 정복 알고리즘(Divide and Conquer)

   - 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결

 ② 탐욕 알고리즘(Greedy) 

   - 현재 시점에서 가장 최적의 방법을 찾음.

 ③ 백트래킹(Backtracking)

   - 모든 경우의 수를 시도하여 문제의 답을 찾음.

 

※ 물리데이터 저상소 파티션 유형의 종류 및 정의

 ① 범위 분할(Range Partitioning)

   - 지정한 열의 값을 기준으로 분할

 ② 해시 분할(Hash Partitioning)

   - 해시 함수를 적용한 결과 값에 따라 데이터 분할

 ③ 조합 분할(Composite Partitioning)

   - 범위 분할 후 해시 함수를 적용하여 분할

 ④ 목록 분할(List Partitioning)

 

※ 반정규화(Denormalization) 유형 중 중복테이블 추가 방법 3가지.

  ① 진행 테이블 추가 ② 집계 테이블 추가 ③ 특정 부분만을 포함하는 테이블 추가

728x90
TOP