[정보처리기사] 2024 정보처리기사 필기 2과목 총정리

yurinnn·2024년 2월 14일
1

정보처리기사

목록 보기
4/21

💡 정보처리기사 필기 기출(2020-2022) 2과목 총정리!

소프트웨어 테스트 단계

  • 단위 테스트 (Unit Test) 개발 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트
    • Test Stub 인자를 통해 받은 값으로 기능을 수행한 후, 그 결과를 테스트할 모듈에 넘겨주는 역할 (테스트 대상 모듈이 호출하는 하위 모듈 역할)
    • Test Driver 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈 (시험 대상 모듈을 호출함)
    • 발견할 수 있는 오류 알고리즘 오류에 따른 원치 않은 결과 탈출구 없는 반복문의 사용 틀린 계산 수식에 따른 잘못된 결과
  • 통합 테스트 (Integration Test) 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트하는 것 (모듈 간 상호작용)
    • 상향식 : 하위 모듈 → 상위 모듈 방향으로 통합
      • 최하위 모듈 먼저 구현하고 테스트
      • Test Driver 사용
      • 하위 모듈을 클러스터로 결합 → 상위 모듈에서 드라이버 작성 → 클러스터 단위로 테스트 진행
    • 하향식 : 상위 모듈 → 하위 모듈 방향으로 통합
      • 최상위 모듈 먼저 구현하고 테스트
      • Test Stub 사용
      • 깊이 우선, 넓이 우선 통합법
      • 빨리 파악하고자 할 때 사용
    • 빅뱅 (한꺼번에)
    • 샌드위치 (상향+하향)
  • 시스템 테스트 기능(사용자가 요구한거) / 비기능(보안, 성능)
  • 인수 테스트 알파(사용자+개발자) / 베타(개발자 빠짐)
  • 설치 테스트

프로그램 실행 여부에 따른 분류

  • 정적 테스트 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트
    • 동료 검토, 워크 스루, 인스펙션 → FTR 에도 나옴 (정형)
  • 동적 테스트 프로그램을 실행하여 오류를 찾는 테스트 소프트웨어 개발의 모든 단계에서 테스트를 수행함
    • 화이트 박스 테스트 : 구조 기반 테스트, 모듈 내부 소스 코드를 보면서 수행하는 테스트, 논리적인 모든 경로를 테스트 (동적)
      • 논리 흐름도(Logic-Flow Diagram)를 이용
      • 모든 문장을 한 번 이상 수행
      • 프로그램의 구조를 고려한다.
        테스트 종류
      • 기초 경로 검사(Base Path Testing)
      • 제어 구조 검사(Control Structure Testing) : 조건, 루프, 데이터 흐름 검사
    • 블랙 박스 테스트 : 명세 기반 기능 테스트, 사용자의 요구사항 명세를 보면서 수행하는 테스트 (정적)
      • 프로그램의 구조를 고려하지 않는다.
      • 테스트 과정의 후반부에 적용
      테스트 종류
      • 동치 분할, 경계값, 원인-효과 그래프, 오류 예측, 비교 검사

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

회복(Recovery) 테스트 / 안전(Security) 테스트 / 성능(Performance) 테스트 / 구조(Structure) 테스트 / 회귀(Regression) 테스트 / 병행(Parallel) 테스트 →  중국의 회안성에 사는 구회병씨

  • 회복테스트 - 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트
  • 강도테스트 - stress test 과다한 정보량을 투입
  • 성능테스트 - 실시간 성능 테스트, 응답 속도, 처리량 등을 측정
  • 구조테스트 - 내부 논리 경로, 코드 복잡도 평가
  • 회귀테스트 - 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트
  • 병행테스트 - 변경전과 후의 프로그램에 동일한 데이터를 입력하여 결과를 비교하는 테스트
  • 안전 테스트 - 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인하는 테스트

테스트 시각에 따른 분류

  • 검증 : 소프트웨어 개발 과정 테스트 (요구 명세의 기능, 비기능)
  • 확인 : 소프트웨어 결과 테스트

소프트웨어 테스트의 원리

  • 테스팅은 결함이 존재함을 밝히는 활동이다.
  • 완벽한 테스팅은 불가능하다.
  • 테스팅은 개발 초기 단계에서부터 시작해야 한다
  • 결함 집중
    파레토 법칙이 좌우한다.(오류의 80%는 전체 모듈의 20%에서 발견)
    결함의 대부분은 소수의 특정한 모듈에 집중되어 존재한다.
  • 살충제 패러독스(Pesticide Paradox)
    동일한 테스트 케이스를 반복하면 더 이상 새로운 결함이 발견되지 않는 현상
  • 테스팅은 정황(Context)에 의존
    소프트웨어의 종류나 목표 등에 따라 해당 소프트웨어에 맞는 테스트 방식이 적용되어야 한다.
  • 오류 부재의 궤변
    거의 모든 결함을 확인 후 제거하였다고 해도 사용자의 요구 또는 비즈니스 목적을 충족시키지 못하는 경우 품질이 높다고 할 수 없다.

소프트웨어 형상 관리

(SCM; Software Configuration Management)

버전관리를 포함하여 프로젝트 진행상황, 빌드와 릴리즈 퍼블리싱까지 모두 관리할 수 있는 통합 시스템

  • 형상 감사 : 무결성 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 과정
  • 형상 관리 도구 : GIT, CVS, Subversion 등

소프트웨어 버전 관리 (Version Management)

  • 가져오기(Import) : 버전 관리가 되지 않은 아무것도 없는 저장소에 처음으로 파일을 복사함
  • 인출(Check-Out) : 프로그램 수정을 하기 위해 저장소에서 파일을 받아옴, 버전 관리를 위한 파일도 받아옴
  • 체크인(Check-in) : 체크아웃한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신
  • 예치(Commit) : 인출한 파일을 수정한 후 설명을 붙여 저장소에 예치 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신 완료
  • 동기화(Update) : 커밋 후 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화
  • 차이(Diff) : 새로운 개발자가 추가된 파일의 수정 기록을 확인하면서 이전 개발자가 처음 추가한 파일과 이후 변경된 파일의 차이를 확인

소프트웨어 버전 등록 과정

가져오기(import) → 인출(Check-Out) → 예치(Commit) → 동기화(Update) → 차이(Diff)

소프트웨어 버전 관리 도구

  • RCS (Revision Control System)
    • 소스 파일 수정을 한 사람으로 제한
    • 파일 잠금 방식으로 버전을 관리
    • 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있다.
  • CVS (Concurrent Versions System)
    • RCS 기반의 버전 관리 시스템
    • Eclipse 에 통합된 소스 컨트롤 툴

소스 코드 분석 도구

  • 정적 분석 도구 작성한 소스 코드를 실행하지 않고 코딩 표준이나, 코딩 스타일, 결함, 오류 등을 확인하는 코드 분석 도구
    • PMD, Cppcheck, SonarQube, ccm, Checkstyle 등
  • 동적 분석 도구 작성한 소스 코드를 실행해 코드에 존재하는 메모리 누수, 스레드 결함 등 분석
    • Avalanche, Valgrind 등

코드 인스펙션

  • 정적 테스트에 활용
  • 결함을 포함해 모든 것이 표준대로 되어있는지 확인하기 위함

인스펙션 과정

계획 → 사전 교육 → 준비 → 인스펙션 회의 → 수정(수정 사항 있을시 → 계획) → 후속 조치

결함(Fault)의 정의

오류 발생, 작동 실패 등과 같이 소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것을 의미

소프트웨어 품질 목표

목표설명
정확성(Correctness)사용자의 요구 기능을 충족시키는 정도
신뢰성(Reliability)정확하고 일관된 결과를 얻기 위해 요구된 기능을 오류 없이 수행하는 정도
효율성(Efficiency)요구되는 기능을 수행하기 위해 필요한 자원의 소요 정도, 자원의 낭비정도
무결성(Integrity)허용되지 않는 사용이나 자료의 변경을 제어하는 정도
사용용이성(Usability)사용에 필요한 노력을 최소화하고 쉽게 사용할 수 있는 정도 / 적절한 사용자 인터페이스와 문서를 가지고 있는정도
유지보수성(Maintainability)사용자의 기능 변경의 필요성을 만족하기 위하여 소프트웨어를 진화하는 것이 가능한 정도
유연성(Flexibility)소프트웨어를 얼마만큼 쉽게 수정할 수 있는가 하는 정도
시험역량(Testability)의도된 기능을 수행하도록 보장하기 위해 프로그램을 시험 할 수 있는 정도
이식성(Portability)다양한 하드웨어 환경에서도 운용 가능하도록 쉽게 수정 될 수 있는 정도
재사용성(Reusability)전체나 일부 소프트웨어를 다른 목적으로 사용 할 수 있는가 하는 정도
상호운용성(Interoperability)다른 소프트웨어와 정보를 교환할수 있는 정도

디지털 저작권 관리 (DRM, Digital Right Management)

구성요소

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

기술 요소

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

자료구조

  • 선형 구조 : 큐, 스택, 리스트, 데크
    • 데크 : 양 쪽 끝에서 삽입, 삭제를 모두 허용
  • 비선형 구조 : 트리, 그래프

이진 트리 순회

  • 너비 우선 탐색 (BFS, Breadth First Search) queue 데이터 구조 사용
  • 깊이 우선 탐색 (DFS, Depth First Search) stack 데이터 구조 사용
    • 전위 순회(preorder) Root - Left - Right
    • 중위 순회(inorder) Left - Root - Right
    • 후위 순회(postorder) Left - Right - Root

알고리즘 개발 단계

문제 정의 -> 모델 고안 -> 명세 작성 -> 설계 -> 검증 -> 분석(복잡도 등) -> 구현 -> 테스트 -> 문서화

알고리즘 - 정렬

  • 삽입 정렬 (Insertion Sort) O(N^2) 최상 : O(N) 2번 째 값부터 앞의 값들과 비교해서 정렬시킨다 (한 번 삽입하면 pass 1)
  • 선택 정렬 (Selection Sort) O(N^2) 1번 째 값부터 뒤에 값들과 비교해서 정렬시킨다 (마지막 값까지 비교 완료되면 pass 1)
  • 버블 정렬 (Bubble Sort) O(N^2)
  • 힙 정렬 (Heap Sort) O(nlog2n)
    • 완전이진트리(complete binary tree)
  • 2-WAY 합병 정렬(Merge Sort) O(nlog2n)
  • 퀵 정렬 (Quick Sort) O(nlog2n) 최악 : O(n^2)
profile
슬기로운 개발 생활

0개의 댓글

관련 채용 정보