AngelPlayer`s Diary


해당 포스트는 제가 정보처리기사를 준비하면서 공부한 내용을 요약한 문서입니다.

요약한 내용은 대체적으로 이전 기출문제를 풀기 위해서 알아야 할 중요한 개념 중심으로 정리하였습니다.

일부 임의로 요약한 내용이나 암기를 쉽게 하기 위해서 개념이 조금 틀리지만 수정한 내용이 있을 수 있습니다.

각 개인마다 공부 방식이 다르니 해당 포스트의 내용을 무조건 맹신하기보다는 참고하시는 방법을 권장 드립니다. 

오늘도 공부하시느라 애쓰시는 모든 분들에게 좋은 결과가 있으시길 바랍니다.


(해당 포스트는 시나공, 수제비 정보처리기사 실기 책을 참고하여 작성하였습니다.)

(포스트 내용을 개인 공부를 위해서 로컬 저장소에 저장하는 것은 가능하나,

내용을 그대로 복사하여 다른 곳에 재업로드하는 것은 자제해주시면 감사하겠습니다.)

 

 

 

SOLID : 단일 책임, 개발-폐쇄, 리스코드, 인터페이스, 의존 역전

 

단일 책임 원칙 : 한 클래스는 하나의 책임만을 가짐

개방 폐쇄 원칙 : 확장에는 열려있으나, 변경에는 닫혀 있어야 함

리스코프 치환 원칙 : 하위 클래스는 상위 클래스 인터페이스로 바꿀 수 있어야 함

인터페이스 분리 원칙 : 자신이 사용하지 않는 메소드에 의존하지 말아야 함

의존 역전 원칙 : 상위모듈은 하위 모듈에 의존해서는 안됨

 

완벽한 테스트 불가능 : 어플리케이션 테스트로 소프트웨어에 결함이 없다고 증명할 수 없음

파레토 법칙 : 20%에 해당하는 코드에서 전체 80%의 결함이 발견

살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상

테스팅은 정황 의존 : 정황에 따라 결과가 다를 수 있으므로, 정황에 따라 테스트를 다르게 수행해야 함

오류 부재의 궤변 : 오류를 모두 제거하더라도 사용자의 요구사항을 충족시키지 못한다면 품질이 높은 소프트웨어라고 할 수 없다.


정적 테스트 : 실행 없이 명세서나 소스코드로 분석 (워크스루, 인스펙션)

동적 테스트 : 실행

 

검증 테스트 : 개발자 시각, 명세서대로 만들어졌는지 테스트

확인 테스트 : 사용자 시각, 정상적으로 동작하는지 테스트

 

강도 테스트 : 과부하 발생 시에도 시스템이 정상적으로 작동하는지 검증

성능 테스트 : 실시간 성능, 효율성을 테스트, 모든 단계에서 수행

회귀 테스트 : 변경된 코드에 새로운 결함이 없는지 확인

병행 테스트 : 변경과 기존에 테스트를 하여 결과를 비교

 

화이트박스 테스트 : 논리적인 경로 테스트 (구조 기반 테스트) (문장 분기 조건)

문장 검증 기준 : 모든 구문이 수행되도록 하는 테스트

분기 검증 기준 : 조건식이 참 거짓일 때 수행

조건 검증 기준 : 개별 조건이 참 거짓일 때 수행

 

블랙박스 테스트 (명세 기반 테스트)

동치 분할 검사 : 올바른 입력 자료와 틀린 자료의 개수를 균등하게 하여 테스트를 확인

경계값 분석 : 경계값을 테스트 케이스로 선정하여 검사

원인-효과 그래프 검사 (Cause-Effect Graph) : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석하여 효용성이 높은 테스트 케이스를 선정하여 검사

 

단위 테스트 : 모듈이나 컴포넌트에 맞춰 테스트

통합 테스트 : 모듈을 통합하여 하나로 만들 때마다 테스트를 진행

시스템 테스트 : 개발된 소프트웨어가 시스템에서 완벽하게 수행되는가를 점검

인수 테스트 : 사용자 요구사항을 충족하는지를 중점을 두고 테스트

 

하향식 통합 테스트 : 상위에서 하위 모듈 방향

스텁 : 더미 모듈

 

상향식 통합 테스트 : 하위에서 상위 방향 (클러스터 - 드라이버 작성 - 테스트 - 드라이버 대체)

드라이버 : 더미 모듈

클러스터 : 종속 모듈 그룹

 

테스트 시나리오 : 테스트 케이스를 묶은 집합


테스트 오라클 : 테스트 결과가 올바른지 판단하기 위해 참값을 대입하여 비교

참 오라클 : 모든 테스트 케이스에 기대 결과를 제공

샘플링 오라클 : 특정 테스트 케이스의 입력값에 기대 결과를 제공

추정 오라클 : 특정 테스트 케이스는 기대 결과를, 나머지는 추정 값 제공

일관성 검사 : 어플리케이션 변경 시 결과값이 이전과 동일한지 확인

 

어플리케이션 성능 측정 지표

처리량 : 일정 시간 내에 어플리케이션이 처리하는 양

응답 시간 : 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간

경과 시간 : 작업을 의뢰한 시간부터 처리가 완료될 때까지의 시간

 

순환 복잡도 : 화살표_- 노드_+ 2

 

기밀성 : 인가된 사용자만 시스템의 정보와 자원에 접근 가능

무결성 : 인가된 사용자만 시스템의 정보를 수정 가능

가용성 : 인가된 사용자는 언제든지 시스템의 정보와 자원을 사용할 수 있음

 

SQL 삽입 : 웹 응용 프로그램에 SQL 삽입

XSS : 웹 페이지에 스크립트를 삽입

메모리 버퍼 오버플로 : 메모리 범위를 벗어난 읽기

운영체제 명령어 삽입 : 시스템 명령어 실행을 유도

하드코드된 암호화 키

 

스텍 가드 : 복귀 주소와 변수 사이의 값을 저장하였다가 바뀌면 오버플로 상태로 가정

 

seed는 한국이 만들고 des는 미국이 만들고, aesdes를 개선한 것이다. aria는 국가정보원이 만들었다.

RSA : 소인수 분해

 

해시 : 임의의 길이의 입력 데이터를 일정한 길이의 값이나 키로 변환

SHA : NSA가 설계

MD5 : MD4 개선

N-NASH : 일본의 암호화 해시 함수

 

스머핑 : 많은 양의 데이터를 한 사이트에 집중적으로 보냄

TearDrop : offset값을 변경 시켜 패킷 재조립 시 과부화 발생

LAND Attack : 자신에 대해 무한히 공격시킴

세션 하이제킹 : 3way handshake 과정에 끼어듦

ARP 스푸핑 : MAC 주소 변조

스미싱 : SNS

스피어 피싱 : 일반적인 이메일로 위장

스니핑 : 네트워크 중간에서 남의 패킷 정보를 도청

APT : 기업이나 조직의 네트워크에 침투해 공격

 

제로 데이 공격 : 취약점 존재가 널리 알려지기 전에 해당 취약점을 통해 공격

키로거 공격 : 키보드 움직임을 탐지


랜섬웨어 : 문서파일 암호화

큐싱 : QR코드

 

지식 기반 인증 : 비밀번호

소유 기반 인증 : 신분증, 토큰, OTP

생체 기반 인증 : 홍채, 지문

 

방화벽 : 나가는 패킷은 통과, 들어오는 패킷은 체크

침입 탐지 시스템(IDS) : 시스템의 비정상적인 사용, 오용, 남용을 탐지

침입 방지 시스템(IPS) : 비정상적인 트래픽을 차단하고 격리 (방화벽 + 침입 탐지)

VPN : 사용자가 자신의 전용회선을 사용하는 것과 같은 효과

ESM : 이벤트 통합

NAC : 맥주소를 등록

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band