본문 바로가기

정보처리기사

정보처리기사3

데이터베이스 암호화 알고리즘
  -대칭키 암호화 알고리즘 : 암호화, 복호화에 같은 암호키를 쓰는 알고리즘
  -비대칭 암호화 알고리즘 : 공개키는 누구나 알수있지만 비밀키는 키 소유자만 알 수 있게 사용하는 알고리즘
  -해시 암호화 알고리즘 : 해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성을 갖고있는 알고리즘

중요 인터페이스 데이터의 암호화 전송을 위한 보안기술
  - IPSec(IP security) : IP계층에서 무결성과 인증을 보장하는 인증헤더(AH)와 기밀성을 보장하는 암호화(ESP)를

                                   이용하여 양 종단 구간에 보안서비스를 제공하는 터널링 프로토콜
  - SSL/TLS : 전송계층(4계층)과 응용계층(7계층)사이에서 클라이언트와 서버간의 웹데이터 암호화(기밀성) 상호 인증 및

                     전송 시 데이터무결성을 보장하는 보안 프로토콜
  - S-HTTP : 웹상에서 네트워크 트래픽을 암호화하는 주요 방법. 클라이언트와 서버간에 전송되는 모든 메세지를

                    암호화하여 전송

보안의 3대 요소
기밀성 : 인가된 사용자에게만 접근이 허용
무결성 : 오직 인가된 사용자만 수정할 수 있다
가용성 : 인가받은 사용자는 언제라도 사용할 수 있어야한다.

시큐어코딩가이드 : 보안에 안전 할 수 있는 프로그램 코드를 적용해 프로그램을 코딩하는 것

  시큐어코딩이란? 설계 및 구현 단계에서 해킹 등 공격을 유발할 가능성이 있는 보안취약점을 사전에 제거하고

                               안전한 소프트웨어를 만드는 코딩 기법 

  -입력데이터 검증 및 표현 : 프로그램에 입력되는 데이터로 인해 여러 보안 약점 발생 가능
     1)SQL삽입(sql injection) : DB 연동된 웹에서 데이터에 대한 유효성 검증을 하지 않을 경우 URL 입력란에 SQL로 DB열람이나 조작가능
     2)크로스사이트스크립트(XSS) : 사용자 브러우저에서 악의적인 스크립트가 실행될 수 있는 보안 약점
     3)경로조작 및 자원삽입 : 시스템 자원 접근 경로를 조작하거나 시스템자원에 삽입되어 공격할 수 있는 보안약점
     4)신뢰되지 않은 URL주소로 자동접속 연결 : URI주소로 사용되어 악의적인 사이트에 자동으로 접속될 수 있는 보안약점
  -보안기능 : 인증(반복된 인증 시도 제한기능 부재, 취약 패스워드 허용), 권한관리(부적절한 인가, 주요 자원에 대한 잘못된 권한설정), 
     암호화(충분하지 않은 키길이, 하드코딩된 비밀번호, 취약암호화알고리즘)
  -시간및상태 : 종료되지 않은 반복문, 재귀함수, 메모리 공유되는 하나의 객체에 두개이상의 스레드가 동시 처리되는 상황
  -에러처리 : 오류상황대응부재(try-catch문), 부적잘한 예외처리
  -코드오류 : 해제된 자원 사용, 널포인터 역참조, 초기화하지 않은 변수 사용
  -캡슐화 : 잘못된 세션에 의한 정보 노출 -> 싱글톤 패턴(전역변수를 사용하지 않고 하나의 객체를 만들어 어디서든지 참조할 수 있도록 하는 패턴)
  -API오용 : 의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API를 사용시 발생

             *API란? 프로그램에서 사용할수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할수있게 만든 인터페이스

 

인터페이스 구현 검증 도구

   - xUnit, STAF, FitNesse, NTAF(STAF와 FitNesse를 통합한것), selenium, watir(루비기반)

인터페이스 감시도구

   - 스카우터, 제니퍼(전단계 동안에 성능을 모니터링함)


화면설계

요구사항 확인하기

 

UI(user interface) : 사용자와 시스템 사이에서 의사소통을 할 수 있도록 고안된 물리적, 가상의 매개체

 

UI유형

  - CLI : 명령어를 텍스트로 입력하여 조작하는 사용자 인터페이스

  - GUI : 그래픽 환경을 기반으로한 마우스나 전자펜을 이용한 사용자 인터페이스

  - NUI : 신체부위를 이용하는 사용자 인터페이스

  - OUI : 현실에 존재하는 모든 사물이 입출력장치로 변화할 수 있는 사용자 인터페이스

 

UI설계원칙

  - 직관성 : 누구나 쉽게 이해하고 사용할수 있어야함

  - 유효성 : 사용자의 목표가 정확하고 완벽하게 완료되함

  - 학습성 : 누구든지 쉽게배우고 익힐 수 있어야함

  - 유연성 : 유저의 요구사항을 최대한 수용하고 실수를 최소화 해야함

 

UI설계 지침 : 사용자 중심, 일관성, 단순성, 결과예측가능, 가시성, 표준화, 접근성, 명확성, 오류발생해결

 

UI표준 : 디자인 철학과 원칙 기반하에 전체 시스템에 공통으로 적용되는 화면간 이동, 화면 구성에 관한 규약

 

UI개발을 위한 주요기법

  - 3C분석 : 고객(customer),자사(company),경쟁사(competitor)를 비교,분석하여 자사를 어떻게 차별화해서 경쟁에서

                   이길것인가를 분석하는 기법

  - SWOT분석 : 기업의 내/외부 환경을 분석하여 강점, 약점, 기회, 위협 요인을 규정하고 이를 토대로 경영전략을 수립하는

                         방법

  - 워크숍 : 특정문제나 과제에 대한 새로운 기술, 지식, 아이디어들을 서로 교환하고 검토하는 세미나

 

UI화면 설계 구분

  -와이어프레임 : 화면단위의 레이아웃을 설계하는 작업

  -스토리보드 : 서비스 구축을 위한 모든 정보(정책, 프로세스, 기능정의)가 담겨 있는 설계 산출물

  -프로토타입 : 정적인 화면에 동적 효과를 적용하여 실제 구현된 것처럼 시뮬레이션 할 수 있는 모형.

                        전체적인 기능을 간략한 형태로 구현한 시제품

UI설계

  -UML : 객체지향소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을

             통합해서 만든 표준화된 범용 모델링 언어

       UML 특징 : 가시화언어, 구축언어 ,명세화언어, 문서화언어

       UML 구성요소 : 사물,관계,다이어그램

 

UI설계도구의 유형

  - 화면설계 도구 : 파워목업, 발시믹 목업, 오븐

  - 프로토타이핑 도구 : 액슈어, 네이버 프로토나우

 

UI스케치 도구 : 어도비XD

 

UI 디자인 산출물로 작업하는 프로토타이핑 도구 : 프레이머, 픽사에이트

 

정적/구조적다이어그램

  - 클래스 : 클래스의 속성 및 연산과 클래스간 정적인 관계를 표현

  - 객체 : 클래스에 속한 사물을 특정시점의 객체와 객체사이의 관계로 표현

  - 컴포넌트 : 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존관계 표현

  - 배치 : 컴포넌트 사이의 종속성을 표현하고 물리적 요소들의 위치를 표현

  - 복합체구조 : 클래스나 컴포넌트가 복합구조를 갖는 경우 그 내부 구조를 표현

  - 패키지 : 유스케이스, 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계

 

행위적/동적다이어그램

  - 유스케이스 : 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현

  - 시퀀스 : 객체간 동적 상호작용을 시간적 개념을 중심으로 메시지 흐름으로 표현

  - 커뮤니케이션 : 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 객체간의 연관까지 표현

  - 상태 : 자신이 속한 클래스의 상태변화 혹은 다른 객체와의 상호작용에 따라 상태가 어떻게 변화하는지 표현

  - 활동 : 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현

  - 타이밍 : 객체 상태 변화와 시간제약을 명시적으로 표현

 


애플리케이션 테스트 관리

 

애플리케이션 테스트 : 애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차

 

애플리케이션 테스트 원리

  - 완벽한 테스팅은 불가능 : 결함을 줄일 수는 있지만 결함이 없다고 증명할 수 없음.

  - 테스팅은 결함이 존재함을 밝히는 활동이다.

  - 결함집중(파레토법칙) : 결함 대부분이 특정한 모듈에 집중되어 발생

       *파레토법칙이란? 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙

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

  - 테스팅은 정황 의존적이다 : 애플리케이션 테스트는 테스트환경, 테스터 역량 등 정황에 따라 테스트 결과가 달라질 수

                                                 있으므로 정황에 따라 다르게 테스트를 수행해야함

  - 오류-부재의 궤변 : 사용자의 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼 수 없음

 

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

  - 정적테스트 : 테스트 대상을 실행하지 않고 구조를 분석하여 논리성을 검증하는 테스트(리뷰, 정적분석)

  - 동적테스트 : 소프트웨어를 실행하는 방식으로 테스트를 수행하여 결함을 검출하는 테스트(화이트박스 테스트,

                         블랙박스 테스트, 경험기반 테스트)

 

화이트 박스 테스트 : 코드의 논리적인 모든 경로를 테스트하여 테스트케이스를 설계하는 방법(구조검사)

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

결정(선택,분기) 커버리지 : 결정 포인트 내의 전체 조건식이 적어도 한번은 참과거짓의 결과가 되도록 수행하는 커버리지

조건커버리지 : 결정 포인트 내의 각 개별 조건식이 적어도 한번은 참과 거짓의 결과가 되도록 수행하는 커버리지

다중조건커버리지 : 결정조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지

 

**검증 : 소프트웨어 과정을 테스트(개발자관점) / 확인 : 소프트웨어 결과를 테스트(사용자관점)**

 

요구사항 검토 종류 3가지

  - 동료검토 : 작성자가 내용을 직접 설명. 동료들이 이를 들으면서 결함 발견

  - 워크스루 : 요구사항 명세서를 미리 배포하여 사전검토외의를 통해 결함 발견

  - 인스펙션 : 작성자를 제외한 다른 검토 전문가들이 결함 발견

 

블랙박스테스트 : 소프트웨어의 내부구조나 작동원리를 모르는 상태에서 동작을 검사하는 방식

  - 동치분할 검사 : 입력자료에 초점을 맞추어 테스트케이스를 만들고 검사하는 방법

  - 경계값분석 : 입력조건의 경계값을 테스트케이스로 선정하여 검사하는 기법

  - 원인-결과 그래프 검사 : 그래프를 활용해 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이

                                          높은 케이스를 선정하여 테스트

  - 오류예측검사 : 과거의 경험이나 확인자의 감각으로 테스트하는 기법

  - 비교검사 : 여러 버전의 프로그램에 동일한 테스트케이스를 넣어서 동일한 결과가 출력되는지 확인

 

단위테스트 > 통합테스트 > 시스템테스트 > 인수테스트

 

목적에 따른 테스트

  - 회복테스트 : 시스템에 여러가지 결함을 주어 올바르게 복구되는지 확인하는 테스트

  - 회귀테스트 : 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트

  - 안전테스트 : 불법침입으로부터 시스템을 보호할 수 있는지 테스트

  - 강도테스트 : 과부하에 정상저긍로 실행되는지 확인하는 테스트

  - 구조테스트 : 소스코드의 복잡도를 평가하는 테스트

  - 병행테스트 : 변경된 SW와 기존SW에 동일한 데이터를 입력하여 결과를 비교하는 테스트

  - 성능테스트 : 시스템이 응답하는 시간, 특정시간내에 처리하는 업무량 등을 측정하는 테스트 기법

 

성능테스트의 상세 유형

  - 강도테스트 : 과부하에 정상적으로 실행되는지 확인하는 테스트(임계점 이상의 부하)

  - 부하테스트 : 시스템에 부하를 계속 증가시켜 시스템의 임계점을 찾는 테스트
  - 스파이크 테스트 : 짧은 시간에 사용자가 몰릴때 시스템의 반응 측정 테스트

 

테스트 종류에 따른 분류

  - 명세기반테스트(블랙박스테스트) : 프로그램 요구사항 명세서를 기반으로 테스트 케이스를 선정하여 테스트하는 기법

  - 구조기반테스트(화이트박스테스트) : 소프트웨어 내부 논리흐름에 따라 테스트케이스를 작성하고 확인하는 테스트기법

  - 경험기반테스트(블랙박스테스트) : 유사소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트기법

 

*테스트 케이스란? 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 테스트항목에 대한 명세서

 

테스트 오라클 : 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법

  - 참오라클 : 모든 입력값에 대하여 기대하는 결과를 제공하는 오라클

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

  - 휴리스틱(heuristic)오라클 : 특정 입력값에 대해 올바른결과를 제공하고, 나머지값들에 대해서는

                                                추정으로 처리하는 오라클

  - 일관성 검사 오라클 : 애플리케이션 변셩이 있을때 수행 전과 후의 결과값이 동일한지 확인하는 오라클

 

통합테스트 : 소프트웨어 각 모듈간의 인터페이스 관련 오류와 결함을 찾아내는 테스트

  - 하향식테스트(스텁) : 상위모듈 > 하위모듈순으로 테스트

  - 상향식테스트(드라이버) : 하위모듈 > 상위모듈순으로 테스트

  - 샌드위치테스트 : 상위는 하향식 + 하위는 상향식 테스트

 

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

  - 알파테스트 : 개발자의 장소에서 사용자가 개발자와 함께 행하는 테스트 기법

  - 베타테스트 : 실제 사용자에게 대상 소프트웨어를 사용하게 하고 피드백을 받는 테스트

 

테스트 시나리오 : 테스트케이스의 동작순서를 기술한 문서이며, 테스트를 위한 절차를 명세한 문서

 

테스트 자동화 도구 : 반복적인 테스트 작업을 스크립트 형태로 구현함으로써, 테스트 시간 단축과 인력 투입비용을

                                  최소화하는 한편 쉽고 효율적인 테스트를 수행할 수 있는 방법

  - 테스트 하네스 도구 : 테스트가 실행될 환경을 시뮬레이션하여 컴포넌트 및 모듈이 정상적으로 테스트되도록하는 도구

  - 테스트 통제 도구 : 테스트 계획 및 관리, 테스트 수행, 결함관리 등을 수행하는 도구

  - 정적분석 도구 : 만들어진 애플리케이션을 실행하지 않고 분석하는 도구

 

테스트 하네스 구성요소 : 테스트 드라이버, 테스트스텁, 테스트 슈트, 테스트케이스, 테스트 시나리오, 테스트 스크립트,

                                         목 오브젝트

 

테스트 드라이버 : 상향식테스트시 하위모듈 구동시 자료 입출력을 제어하기 위한 제어모듈

테스트 스텁 : 하향식 테스트시 임시제공되는 모듈. 더미라는 단어가 있다면 이것!

테스트슈트 : 일정한 순서에 의해 수행될 개별 테스트 집합 혹은 패키지

테스트케이스 : 요구에 맞게 개발되었는지 확인하기 위해입력과 예상 결과를 정의 한 것

테스트스크립트 : 테스트케이스 수행결과를 보고할 목적으로 명령어, 이벤트 중심의 스크립트 언어로 작성한 파일

목오브젝트 : 테스트를 위해 사용자 행위를 미리 조건부로 입력하고 그 상황에 맞는 행위를 수행하는 객체

 

결함분석방법

  - 구체화 : 결함의 원인을 찾기 위해 결함을 발생시킨 입력값, 테스트 절차, 테스트 환경을 명확히 파악하는 방법

  - 고립화 : 입력값, 테스트절차, 테스트 환경 중 어떤 요소가 결함발생에 영행을 미치는지 분석하는 방법

  - 일반화 : 결함 발생에 영향을 주는 요소를 최대한 일반화 시키는 방법

 

테스트 커버리지 : 주어진 테스트 케이스에 의해 수행되는 소프트웨어 테스트 범위를 측정하는 테스트 품질 측정 기준

 

테스트 커버리지 유형

  - 기능 기반커버리지 : 실제 테스트가 수행된 기능의 수를 측정하는 방법

  - 라인 커버리지 : 테스트 시나리오가 수행한 소스코드의 라인수를 측정하는 방법

  - 코드 커버리지 : 소스코드의 구문, 조건, 결정 등의 구조코드 자체가 얼마나 테스트 되었는지를 측정하는 방법

 

결함 심각도별 분류 : 단순결함 > 경미한 결함 > 보통결함 > 주요 결함 > 치명적결함

'정보처리기사' 카테고리의 다른 글

정보처리기사6  (0) 2022.07.09
정보처리기사5  (0) 2022.07.03
정보처리기사 4  (0) 2022.07.02
정보처리기사2  (0) 2022.06.25
정보처리기사1  (0) 2022.06.19