728x90

어플리케이션 테스트

- 잠재적 결함 찾는 과정

 

어플리케이션 테스트 원리

- 완전한 테스트는 없음

- 결함 집중 : 20% 코드에 80% 결함 집중(파레토 법칙)

- context 정황 의존

- 살충제 패러독스 : 동일한 테스트 케이스 반복시 에러 안남 -> 테스트 케이스 개선 필요

- 오류 부재의 궤변 : 오류가 없더라도 요구사항 불만족은 좋은 콛 ㅡ아님

 

테스트 실행 여부에 따른 분류

1. 정적 테스트

- 실행 없이 하는 테스트

- 워크 스루 : 개발자 작업 전문가가 검토

- 인스팩션  : 소프트웨어 개발 결과물 개선 방법 제안

2. 동적 테스트

- 소프트웨어 실행을 통한 테스트

- 화이트 박스 테스트, 블랙 박스 테스트

 

테스트 형태에 따른 분류

1. 명세 기반 테스트

- 명세서를 이용한 테스트 케이스로 검사

- 동치 분할 검사, 경계값 검사

2. 구조 기반 테스트

- 논리적 흐름에 따라 테스트 케이스로 검사

- 구문 기반, 조건 기반 등

3. 경험 기반 테스트

- 테스트의 경험 이용

- 체크리스트, 에러 추정

 

시각에 따른 테스트

- 검증 vertification 테스트 : 개발자 관점에서 테스트

- 확인 validation 테스트 :  사용자 시점에서 테스트

 

화이트 박스 테스트

- 소스 코드의 로직을 따라 검사

- 기초 경로 검사 : 논리적 복잡도 측정

- 제어 구조 검사 : 조건 검사, 루프 검사, 데이터 흐름 검사

 

블랙 박스 테스트

- 기능 수행 여부를 확인

- 동치 분할 검사 :  타당한 입력과 잘못된 입력을 동일한 비율로 만들어 검사

- 경계값 분석 : 입력 조건의 경계값  이용

- 원입-효과 그래프 : 입력에 대한 출력을 분석하여 검사

 

개발 단계에 따른 테스트 과정

1. 단위 테스트 : 컴포넌트별 검사

2. 통합 테스트 : 컴포넌트 통합 과정에서의 테스트

3. .시스템 테스트 : 사용 환경에서 점검 테스트

4. 인수 테스트 : 사용자 요구사항 충족 여부 테스트

 - 사용자 인수 테스트 : 사용자가 적절성 테스트

 - 운영상 인수 테스트 : 관리 운영 관련 기능 테스트

 - 계약 인수 테스트 : 계약 잘지켰는지 테스트

 - 알파 테스트 : 사용자가 개발자 앞에서 테스트

 - 베타 테스트 : 일부 사용자 선정하여 테스트

 

테스트 과정

1. 테스트 계획

2. 테스트 분석

3. 테스트 케이스, 시나리오 작성

4. 테스트 수행

5. 결과 평가

6. 결함 추적, 관리

 

테스트 과정 결과물

- 테스트 계획서 : 테스트 계획 관련 문서

- 테스트 케이스 : 테스트 입력값, 예상 출력 값 등 관련 명세

- 테스트 시나리오 : 여러 테스트 케이스 동작 순서 기술

- 테스트 결과서 : 테스트 결과 분석

 

 

테스트 케이스 작성 순서

1. 테스트 계획

2. 우선순위 판단

3. 테스트 요구사항 정의

4. 테스트 구조 설계, 방법 결정

5. 테스트 케이스 정의

6. 테스트 케이스 타당성 확인

 

 

테스트 오라클

- 테스트 결과가 올바른지 확인하기위한 방법

- 참 오라클 : 모든 테스트 케이스 입력값에 대해 결과 제공하여 모든 오류 검출

- 샘플 오라클 : 일부 테스트 케이스 입력값에 대한 결과로 오류 검출

- 추정 오라클 : 일부 테스트 케이스 입력과 나머지 추정 입력을 사용

- 일관성 오라클 : 어플리케이션 변경 후에도 결과 값이 동일한지 확인

 

테스트 자동화 도구

- 정적 분석 도구 : 실행없이 코드 결함 분석

- 테스트 실행 도구 : 스크립트 언어를 이용하여 실행하는 테스트

- 성능 테스트 도구 : 처리량, 응답시간, 자원 사용률 등 성능 테스트

- 테스트 통제 도구 : 테스트 형상, 결함 추적

- 테스트 하네스 도구 : 테스트 환경 시뮬레이션하여모듈 동작

 

 

결함 추적

- 결함 등록

- 결함 검토

- 결함 할당

- 결함 수정

- 결함 조치 보류

- 결함 종료

- 결함 해제

 

성능 지표

- 처리량 : 처리하는 양

- 응답 시간 : 응답 도착할때 시간

- 경과 시간 : 처리 완료까지 시간

- 자원 사용률 : cpu, 메모리 사용량 등

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

네트워크  (0) 2020.05.23
보안  (0) 2020.05.23
데이터모델  (0) 2020.05.22
서버  (0) 2020.05.22
연계  (0) 2020.05.22
728x90

데이터 모델

- 현실 정보를 데이터로 표현한 모델

- 구성 요소 : 개체, 속성, 관계

- 표시할 요소 : 구조, 연산, 제약조건

- 종류 : 개념적 모델, 논리적 모델, 물리적 모델

 

데이터 모델 구성 요소

- 개체 entity : 현실을 나타내는 정보 단위

- 속성 attribute : 데이터를 표현하는 최소한 논리적 단위, 데이터 열

- 관계 relation : 개체 간 연관

 

종류

- 개념적 모델 : 현실을 추상화하여 개념적으로 나타낸 모델

- 논리적 모델 : 개념적 모델을 DBMS에서 사용가능한 논리적 형태로 정의한 모델

- 물리적 모델 : 제약 관계 등 특정 DBMS에 맞춰 물리적으로 만든 모델

 

데이터 모델 구성 요소

- 구조 structure : 데이터 구조와 정적 성질

- 연산 operation : 데이터 처리 작업 명세

- 제약 조건 constraint : 실제 데이터의 논리적 제약 조건

 

이상 abnomaly

- 데이터 중복성으로 인해 발생하는 이상 현상

- 삽입 이상 : 속성이 부족하여 삽입이 안되는 이상

- 갱신 이상 : 갱신시 무결성 위반되는 이상

- 삭제 이상 : 다른 데이터도 함께 삭제되는 이상

 

함수적 종속 functional dependency

- X에 의해 하나의 Y값이 결정될때 Y는 X에 함수적 종속. X는 결정자 Y는 종속자

- X->Y

- 완전 함수적 종속 : 여러 속성으로 이루어진 기본키에 종속하는 경우

- 부분 함수적 종속 : 여러 속성으로 이루어진 기본키의 일부 속성에만 종속하는 경우

 

이행적 함수적 종속

- X -> Y, Y->Z 와 같은 관계 시 X에 의해 Z가 결정 시 Z는 X에 이행적 함수적 종속 관계 

 

정규화 Normalization

- 종속 관계를 제거하여 중복성을 제거 테이블 무손실 분해과정

- 제 1정규형, 제2정규형, 제 3정규형, BCNF 정규형, 제 4정규형, 제 5 정규형

 

정규화 과정

- 제 1 정규형 1NF: First Normal Form : 속성이 원자값을 갖도록 분해

- 제 2 정규형 2NF : 모든 속성이 기본키에 완전 함수적 종속을 만족하도록 함. 부분적 함수적 종속 제거

- 제 3 정규형 3NF : 이행적 함수적 종속 제거

- BCNF 정규형 boycee-codd normal form : 모든 결정자가 후보키인 정규형 <- 결정자면서 후보키가 아닌것 제거

- 제4 정규형 : 다치 종속

- 제 5 정규형 : 조인 종속성 이용

 

반 정규화 denormalization

- 정규화된 테이블을 통합, 중복 시키는 과정

- 성능, 관리 효율 향상 <-> 일관성 저하

 

개념적 데이터 모델

- 현실을 추상화하여 간략하게 나타낸 데이터 모델

- E-R 모델

 

개념적 데이터모델 관련 용어

- 개체 : 구분 되는 정보

- 개체 인스턴스 : 개체 하나 하나 

- 개체 타입 : 개체를 나타내는 구조

- 속성 : 정보를 나타내는 최소의 논리적 단위, 데이터 열

- 카디널리티 : 개체 대수. (최소, 최대) 범위

- 차수 : 관계와 연관된 개체 타입의 수

- 관계 : 1:1, 1:n, n:m

 

논리적 데이터 모델

- DBMS에 적용가능하도록 개념적 데이터 모델을 논리화 시킨 모델

 

릴레이션과 테이블

- 릴레이션 : 데이터 구조를 표현하는 추상화된 개념

- 테이블 : 릴레이션을 구체화 시킨 형태

 

논리적 데이터 모델 용어

- 튜플 : 하나의 행

- 속성 : 하나의 열

- 도메인 : 속성 값 범위

- 카디널리티 : 튜플 개수

- 차수 : 속성 개수

- 릴레이션 스키마 : 속성 전체

- 릴레이션 인스턴스 : 튜플 전체

- 릴레이션 = 릴레이션 스키마 + 릴레이션 인스턴스

 

 

- 후보키 : 최소성, 유일성을 만족하는 키 집합

- 슈퍼키 : 유일성을 만족하는 키 집합

- 기본키 : 튜플을 식별하기 위한 대표적인 키. not null, unique

- 대체키 : 기본키를 제외한 후보키

- 외래키 : 타 테이블의 기본키를 참조하는 키

 

무결성 제약조건

- 개체 무결성 : 기본키는 null이나 중복되서는 안됨

- 참조 무결성 : 외래키는 null값이나 참조 릴레이션의 기본키여야 함.

- 도메인 무결성 : 속성은 원차값을 가져야 한다.

* 묵시적 정의 : 개체와 참조무결성은 묵시적으로 정의

* not null, unique, check 는 논리적 데이터모델링 단계서 명시적으로 정의

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

보안  (0) 2020.05.23
테스트  (0) 2020.05.23
서버  (0) 2020.05.22
연계  (0) 2020.05.22
요구사항  (0) 2020.05.22
728x90

웹 서버

- 클라이언트에게 텍스트, 이미지 등 정적 데이터 제공하는 서버. apache

 

웹 어플리케이션 서버

- 웹 서버로부터 받은 요청을 처리하여 동적 데이터를 제공하는 서버. tomcat

데이터베이스 서버 : 데이터베이스 관리 서버. oralce, mysql, mssql

파일 서버 : 이미지, 영상 등 파일들 저장

 

모듈

- 시스템 기능 단위

 

모듈 응집도

- 모듈 기능 명확한 정도

- 우논시절통순기

  약한 응집도 -> 강한 응집도

- 우연적 응집도 -> 논리적 응집도 -> 시간적 응집도 -> 절차적 응집도 -> 통신적 응집도 -> 순차적 응집도 -> 기능적 응집도

 

모듈 결합도

- 모듈간 연관 관계 정도

- 자스제외공내

 약한 -> 강한

- 자료 결합도 -> 스템프 결합도 -> 제어 결합도 -> 외부적 결합도 -> 공통 결합도 -> 내용 결합도

 

공통 모듈

- 여러 모듈에서 공통으로 사용

- 공통 모듈은 응집도는 강하고 결합도가 약할수록 좋음

 

팬인-팬아웃

- 팬인 : 모듈 사용시 호출하는 모듈 수

- 팬 아웃 : 호풀되는 모듈 수

 

 

DB Connection

- 데이터베이스 접속 기술

- ODBC Open Database Connection : 공개 데이터베이스 접속 API로 다양한 언어 사용하여 접근 가능

- JDBC Java Database Connection : 자바 언어를 이용해 데이터베이스에 접근하는 API

- Mybatis : JDBC 단순화하여 xml을 이용하는 SQL 매핑 프레임워크

- 정적 SQL : 기본 쿼리문. 빠름

- 동적 SQL : sql문에 변수를 담아 동적 사용. 느림

 

서버

-MVC 모델 : 사용자 요청을 컨트롤러가 받아 모델에서 데이터 처리 후 뷰를 반환해주는 모델

- MVC, DAO, DTO/VO로 구성

- DAO Data Access Object : DB에 접속하여 데이터를 가져오는 객체. 모델 역활을 하는 서비스에서 처리

- DTO/VO Data Transfer Object/Value Object : 데이터 정보를 담는 객체

 

 

배치 프로그램

- 여러 작업을 한번에 처리하는 프로그램

 

배치 스케쥴러

- 일정 시간에 배치 처리를 하는 프로그램

- 스프링 배치, 쿼츠

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

테스트  (0) 2020.05.23
데이터모델  (0) 2020.05.22
연계  (0) 2020.05.22
요구사항  (0) 2020.05.22
보안  (0) 2020.05.19
728x90

통합 구현

- 송수신 모듈과 중계 모듈 간의 연계 구현

 

중계 시스템

- 송신 시스템과 수신 시스템 사이 데이터 변환 하여 연계

 

연계 메커니즘

1. 직접 연계

- 송수신 시스템이 직접 연계. 단순, 저렴, 고성능

- DB Link : DB에서 제공하는 DB Link 객체 이용

- DB Connection : WAS와 DB로 연결

- JDBC : 자바를 이용해 DB에 접근

- API : 데이터를 DB에서 읽어오는 인터페이스

2. 간접 연계

- 송수신 시스템 사이 중간 매개를 통해 연계. 다양한 환경 사용가능, 인터페이스 변화에도 사용, 

- EAI Enterprise Application Integration : 송수신 처리 모니터링

- ESB Enterprise Service Bus :  어플리케이션 간 인터페이스 제공

- Socket : 서버는 소켓 생성. 특정 포트를 통해 통신

- 웹 서비스 : WSDL, UDDI, SOAP 프로토콜을 이용한 연계

 

연계 모듈 구현 환경

1. EAI Enterprise Application Integration

- 송수신 데이터 처리 모니터링 및 연계, 통합 솔루션

- Point to Point 형 : 1:1연결.

- Hub 형 : 중앙 집중형

- Message Bus 형 : 어플리케이션 사이 미들웨어로 처리 대용량

2. ESB Enterprise Service Bus

- 어플리케이션 간 인터페이스, 데이터 변환, 웹서비스 등 지원

 

웹서비스 구성

- SOAP Simple Object Access Protocol : http, https로 xml 데이터 전송하는 프로토콜

- uddi universal description discovery and intergration : wsdl을 등록하여 서비스와 서비스 제공자 검색 접근

- wsdl web services description language : 웹 서비스명, 프로토콜 등 웹 서비스 상세정보 제공

 

XML eXtensible Markup Language

- 다목적 마크업 언어

<?xml version="버전" encoding="언어셋" standalone="yes | no" ?>

- version : 버전 명시

- encoding : 디폴트 utf-8

- standalone : 외부 문서 참조 여부 기본은 no(외부문서 참조)

 

soap simple object access protocol

- http, https 등으로 xml 데이터 전송을 위한 프로토콜

- envelop : xml로 soap 메시지로 정의

- header : 웹 서비스 정의

- body : 실제 메시지

 

wsdl web services description language

- 웹 서비스명, 프로토콜 등 웹서비스 상세 정보 제공하기 위한 언어

- 클라이언트는 wsdl 파일을 읽어 서버 기능 파악 가능

- uddi에 등록되어 검색

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

데이터모델  (0) 2020.05.22
서버  (0) 2020.05.22
요구사항  (0) 2020.05.22
보안  (0) 2020.05.19
어플리케이션 테스트 - 2 테스트 프로세스  (0) 2020.05.19
728x90

요구 공학 

- 요구사항을 수정, 분석, 명세화 하는 학문

 

요구 사항 개발 프로세스

1. 도출

2. 분석 : 개념적 모델링

3. 명세 : 시스템 정의서, 시스템/소프트웨어 요구사항 명세서(SRS. Sowftware Requirement Specification)

4. 확인 : 프로토 타이핑, 모델 검증, 인수 테스트

 

요구사항 분류에 따른 추출 방법 

- 기능적 : 기능, 자료, 인터페이스, 사용자

- 비기능적 : 성능, 자원, 보안, 품질

 

요구사항 분석 기법

- 개념 모델링 : 현실을 단순화 하여 개념적으로 표현. UML

- 정형 문석 formal analysis : 구문과 의미를 갖는 정형화 된 언어로 요구사항 수학적 기호로 표현, 분석

- 요구사항 분류

- 요구사항 협상

- 요구사항 할당

 

 

현행 시시스템 파악 절차

- SW, HW, 네트워크 등 인프라 확인하여 어떤 기술요소 적용할지 판단하기 위한 사전 지식 습득 과정

1. 구성/기능/인터페이스 파악

2. 아키텍처 및 소프트웨어 구성 파악

3. 네트워크 및 하드웨어 구성 파악

 

 

UML Unified Modeling Language

- 요구사항을 개념적으로 표현하기 위한 언어

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

 

사물

- 관계가 성립할수 있는 대상

1. 구조 사물 : 개념적, 물리적 요소 표현-  클래스, 유스케이스, 컴포넌트, 노드

2. 행동 사물 : 요소들의 행위 표현 - 상호작용 , 상태

3. 그룹 사물 : 요소들을 그룹으로 묶어 표현 - 패키지

4. 주해 사물 : 부가적 설명, 제약조건 - 노트

 

관계

- 사물과 사물간의 연관

1. 연관 관계 : 개수 표현. 양방향 직선, 단방향시 화살선

2. 집합 관계 : 서로 있어도 되고 없어도되는 관계. 텅빈 마름모

3. 포함 관계 : 한 쪽에 반드시 필요로 하는 관계. 검은 마름모

4. 일반화 관계 : 더 넓은 개념으로 묶이는 관계. 상위 사물에 화살선 합침

5. 의존 관계 : 다른 사물에 영향 받는 관계. 실 화살선

6. 실체화 관계 : 사물들의 기능을 표현하는 관계. 상위 사물에 실 화산선 합침

 

다이어그램

- 구조

1. 클래스 : 클래스간 관계 표현

2. 객체 : 객체 인스턴스간 관계 표현

3. 컴포넌트 : 컴포넌트 간 관계 표현

4. 배치 다이어그램 deployment : 컴포넌트, 결과 물 등 물리적 배치 표현

5. 패키지 다이어그램 : 모델 요소 그룹화한 패키지 표현

- 행위

1. 유스 케이스 : 사용자 관점 요구사항 표현

2. 활동 다이어그램 : 기능 처리 흐름 표현

3. 시퀀스 다이어그램 : 객체 간 메시지 전달 과정 표현

4. 상호작용 다이어그램 : 시퀀스 다이어그램에 객체 간 연관 관계 표현

5. 타이밍 다이어그램 : 객체 상태 변화 표현

 

 

유스 케이스 다이어그램

- 사용자 관점 요구사항 표현

 

유스케이스 다이어그램 구성요소

- 구성요소 : 액터, 시스템, 유스케이스, 관계

1. 액터 : 사람, 외부 시스탬 - 주액터 : 사용자. 사람 표현, 부액터 : 서비스 제공 외부 시스템. <<부액터명>> 

2. 유스 케이스 : 시스템이 액터에게 제공하는 기능

3. 시스템 : 액터가 사용하는 시스템 범위

4. 관계 : 액터-유스케이스, 유스케이스-유스케이스 간 관계

 

유스케이스 다이어그램 관계

1. 일반화 관계 :그룹으로 묶음. 상위에 삼각선 묶임

2. 포함 관계 : 공통 기능. 실화살선. <<include>>

3. 확장 관계 : 기능 확장. 실화살선 <<extend>>

 

 

 

클래스 다이어그램

- 클래스간 관계 표현

- 클래스, 속성, 연산, 제약조건 {}, 관계

- 속성 예시 : 접근제어자 속성명 : 자료형[=초기값]

- 연산 예시 : 접근제어자 함수명(파라미터:변수타입, ...) : 반환타입

 

클래스 다이어그램 접근 제어자

- private : 해당 클래스 내에서만

# protected : 동일 패키지, 상속 받는 범위까지

~ default : 동일 패키지 내부

+ public : 외부

 

클래스 다이어그램 관계

- 집합 관계 : 빈 마름모. 상위가 하위 매개변수로 받아 사용

- 포함 관계 : 검은 마름모. 상위서 하위 객체 생성하여 사용

- 일반화 관계 : 모임 삼각선. 하위가 상위 상속 받음

- 연관 관계 : 단방향 시 상위서 하위 변수 선언, 양방향 시 서로 변수 선언

 

 

시퀀스 다이어그램

- 객체 간 메시지 전달 흐름 표현

- 액터, 객체, 라이프라인, 활성상자, 메시지

- 액터 : 사용자

- 객체 : 기능 주체. 객체명:클래스명. 사각형

- 라이프라인 : 전제 기간. 객체 아래 점선

- 활성상자 : 객체 아래 사각형. 메시지 전달 표현

- 메시지 : 객체가 주고받는 메시지

 

메시지

- 동기 : 검삼각선. 보낸후 반환까지 기다림

- 비동기 : 화살선. 보내고 반환안기다림

- 생성 : 실화살선. 메시지 받는 객체 생성

- 응답 : 실검삼각선. 동기 메시지 응답

 

활동 다이어그램

- 사용자 관점 기능 처리 흐름 표현

- 액션, 액티비티, 노드, 스웜 레인

- 액션 : 분할할수 없는 기능 단위

- 액티비티 : 액션 모음

- 노드 : 푝. 원(시작), 선 원(종료), 마름모(조건 노드, 단일 입력 다중출력), 마름모(병합 노드, 다중 입력 단일출력), 굵은가로선(포크 노드, 단일 입력 다중출력), 굵은 가로선(조인 노드, 다중 입력 단일 출력)

- 스웜레인 : 세로실선, 액티비티 수행 주체

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

서버  (0) 2020.05.22
연계  (0) 2020.05.22
보안  (0) 2020.05.19
어플리케이션 테스트 - 2 테스트 프로세스  (0) 2020.05.19
어플리케이션 테스트 - 1 어플리케이션 테스트  (0) 2020.05.19
728x90

Secure SDLC

- SDLC에 보안 프로세스 추가한 것

 

보안 활동

- 요구사항 분석 단계 보안 활동 : 보안 항목에 해당하는 요구사항 식별

- 설계 단계 보안 활동 : 보안 설계서 작성

- 구현 단계 보안 활동 : 보안 요구사항 구현, 보안 취약점을 최소화화는 시큐어 코딩

- 테스트 단계 보안 활동 : 보안 사항들이 동작하는지 점검

- 유지 보수 단계 : 보안 사고 식별, 발생 시 보안 패치 

 

 

1) 세션 통제

- 서버와 클라이언트 연결인 세션 연결로 발생하는 정보 관리하는 것으로 요구사항 분석 단계 보안점검 항목

 

세션 통제 보안 약점

1. 불충분한 세션관리

- 일정 규칙이 존재하는 세션 ID를 발급하거나 타입아웃이 너무 긴 경우->세션 하이재킹으로 획득한 세션ID로 접근가능

2. 잘못된 세션에 의한 정보 노출

- 다중 스레드 환경에서 멤버변수 사용시 발생 -> 싱글턴 패턴의 레이스컨디션으로 동기화 오류 발생 or 맴버변수 노출

 * 레이스 컨디션 : 두 개 이상의 프로세스가 공용 자원 획득을 위해 경쟁 

=> 맴버변수를 지역변수로 바꿔 변수의 범위를 제한

3. 세셜 설계시 고려 사항

- 로그아웃시 세션 완전 제거되도록. 이전 세션 종료 안될 시 새 세션 생성 막음

 

 

 

 

 

2) 입력 데이터 검증 및 표현

- 입력 데이터로 인한 문제 방지를 위해 구현 단계 보안점검항목

 

입력 데이터 검증 및 표현 보안 약점

1.  SQL 삽입

 - 입력란에 SQL 삽입하여 무단 DB 조작 -> 입력 데이터에 예약어/특수문자 입력안되도록 필터링

2. 경로 조작 및 자원 삽입

 - 데이터 입출력 경로 조작하여 서버 자원 수정/삭제 -> 경로 순회 공격 막는 필터 사용

3. 크로스사이트 필터링(XSS)

 - 웹페이지에 악성 스크립트 삽입으로 방문자 정보 탈취, 비정상적기능 유발 -> HTML 태그 사용 제한

4. 운영체제 명령어 삽입

 - 외부 입력을 통해 시스템 명령 실행 유도로 권한 탈취, 장애 유발 -> 웹 인터페이스로 명령어 전달 방지.

5. 위험한 형식 파일  업로드 

 - 악의적 스크립트 파일 업로드하여 시스템 손상 -> 파일 확장자 제한, 웹/파일 서버 경로 분리, 실행 속성 제거

6. 신뢰되지 않는 URL 연결

 - 입력 값으로 사이트 주소 받는 경우 이를 조작하여 피싱 사이트 유도 -> 외부 사이트를 화이트 리스트로 관리

 

 

 

3) 보안 기능

- 인증, 접근제어, 암호화 등을 올바르게 구현하기 위한 구현 단계 보안점검 항목

 

보안 기능 보안 약점

1. 적절한 인가없이 중요기능 허용

 - 보안 검사 우회하여 인증 없이 중요 정보/기능에 접근 -> 중요 정보/기능 수행 페이지에 재인증 수행

2. 부적절한 인가

 - 접근 제어 없는 실행결로로 정보, 권한 탈취 ->모든 실행경로에 접근 제어 검사 수행

3. 중요 자원에 대한 잘못된 권한 설정

 - 권한 설정이 잘못된 자원에 접근하요 임의 사용 -> 관리자만 자원접근하도록 설정

4. 취약한 암호화 알고리즘 사용

 - 암호화 환경 파일 해독하여 정보 탈취 -> 개선된 암호화 알고리즘 사용

5. 중요 정보 평문 저장, 전송

 - 평문 탈취해 중요 정보 획득 -> 중요 정보 저장, 전송시 암호화, 보안 채널 이용

6. 하드 코드된 비밀번호

 - 소스 유출시 내부에 하드코드된 패스워드 이용 -> 패스워드 암호화하여 별도 파일에 저장

 

 

 

4) 시간 및 상태

- 병렬 시스템이나 멀티 프로세싱 환경에서 시간과 실행 상태를 원할히 동작하게하기 위한 보안 검증 항목

 

시간 및 상태 보안 약점

1. TOCTOU 경쟁 조건

 - 검사 시점과 사용 시점 고려하지 않아 발생

2. 종료되지 않는 반복문/재귀함수

 - 종료하지 못해 자원을 끊임없이 사용하여 고갈

 

 

 

5) 에러 처리

- 실행 중 발생 가능 오류들을 사전 정의하고 예외처리로 문제 예방을 위한 보안 점검항목

 

에러 처리 보안 약점

1. 오류 메시지를 통한 정보 노출

 - 실행 환경, 사용자 정보 등 중요 정보 메시지가 외부로 노출 -> 메시지를 최소한으로 출력

2. 오류 상황 대응 부제

 - 에러처리 하지 않거나 미비 -> 해당 에러에 대한 예외구문 작성

3. 부적절한 예외 처리

 - 함수 반환, 오류들을 세분화 하지 않고 광범위하게 묶어 한번에 되거나 누락된 예외가 발생 -> 세분화하여 예외처리

 

 

6) 코드 오류

- 형 변환, 자워 반환 등 코딩 오류 예방을 위한 보안점검항목

 

코드 오류 보안 약점

1. 널포인터 역참조

 - 함수가 널 포인터를 반환하고, 거기에 값 저장 -> 사용 전 널 검사

2. 부적절한 자원 해제

 - 자원 반환 코드 누락하거나 오류로 자원 반환이 안될 시 자원 부족 발생 -> 예외없이 자원 반환

3. 해제된 자원 사용

 - 반환된 메모리 참조 -> 반환된 자원의 포인터 변수 초기화

4. 초기화 되지 않은 변수 사용 

 - 초기화 안한 경우 -> 변수 선언시 초기화

 

 

 

 

7) 캡슐화

- 중요한 데이터와 기능을 불충분하게 은닉화하여 발생하는 문제 예방을 위한 보안 점검 항목

 

캡슐화 보안 약점

1. 제거되지 않은 디버그 코드

 - 남은 코드로 발생하는 보안 약점 -> 디버그 코드 삭제

2. 시스템 데이터 정보 노출

 - 내부 정보를 시스템 메시지로 외부 출력 -> 외부 노출 메시지는 최소한 정보만 제공

3. public 메소드로 반환된 private 배열

 - 배열의 주소가 외부로 공개되어 접근 가능 ->private 배열을 별도 메소드로 조작, 값만 복사하여 사용

4. private 배열에 public 데이터 할당

 - private 배열을 외부에서 접근 가능 -> public 데이터를 private 배열에 저장시 래퍼런스가 아닌 값 저장

5. 잘못된 세션에 의한 정보 노출

 - 다중 스레드 환경에서 멤버 변수에 정보 저장으로 발생. 싱글톤 패턴의 레이스 커디션으로 동기화 오류나 맴버 변수 노출 -> 지역 변수를 사용하여 범위 제한

 

 

 

8) API 오용

- API를 잘못 쓰거나 보안에 취약한 API 사용 방지를 위한 보안 점검 항목

 

API 보안 약점

1. DNS Lookup에 의존한 보안 결정

- 도메인명에 의존 하여 보안 결정 시 DNS를 속임으로서 발생 -> IP 주소를 직접 입력하여 방지

2. 취약한 PAI

 - 보안 문제로 금지된 API 사용하거나 잘못된 방식으로 사용 -> 안전한 API 사용

 

 

 

 

 

암호 알고리즘

- 평문화를 암호화 문으로 만드는 방법

- 단방향 암호화 방식(해시)과 양방향 암호화 방식(개인키 및 공개키)

 

1. 해시 hash

- 임의의 길이의 입력 데이터나 메시지를 고정 길이 값이나 키로 변환

- SHA, md

 

2. 개인키 암호화 기법

- 하나의 키로 암호화 하고 복호화 -> 대칭 암호 기법, 단일키 암호기법 이라고 하며 스트림 기법과 블록기법

- 스트림 기법 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위 암호화 -> RC4, LFSR

- 블록 기법 : 한번에 하나의 데이터 블록을 암호화 -> DES, SEED, AES

 

3. 공개키 암호화 기법

- 암호화 하는 공개키는 사용자에게 공개, 복호화 하는 비밀키는 관리자만 사용. 비대칭 암호화기법

- RSA : 1979년 MIT. 공개키와 비밀키 사용. 키 : 메시지를 열고 잠그는 상수

 

양방향 암호화 알고리즘 종류

1. DES Data Encryption Standard 

 - 1975. 개인키 암호화 알고리즘. 블록 크기 64비트, 키 길이 56비트

2. AES Advanced Encryption Standard

 - 2001 NIST. 개인키 암호화 알고리즘. 블록크기 128비트, 키 길이에 따라 128, 192, 256

3. SEED

 - 1999. KISA 블록 암호화 알고리즘. 블록 크기 128비트, 키 길이에 따라 128, 256

4. ARIA : 블록 크기 128, 키 길이 128, 192, 256 분류

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

연계  (0) 2020.05.22
요구사항  (0) 2020.05.22
어플리케이션 테스트 - 2 테스트 프로세스  (0) 2020.05.19
어플리케이션 테스트 - 1 어플리케이션 테스트  (0) 2020.05.19
소프트웨어 공학 활용 - 9 UML  (0) 2020.05.19
728x90

테스트 프로세스

1. 테스트 계획

2. 테스트 분석 및 디자인

3. 테스트 케이스 및 시나리오 작성

4. 테스트 수행

5. 테스트 결과 평가 및 보고

6. 결함 추적 및 리뷰

 

테스트 프로세스 결과물

- 테스트 계획서 : 테스트 목적, 범위, 절차, 수행 계획

- 테스트 케이스 : 요구사항 준수 여부 확인을 위헤 입력값, 실행 조건, 예상 결과 등으로 구성한 명세서

- 테스트 시나리오 : 여러 테스트 케이스 동작 순서 정리한 문서

- 테스트 결과서 : 테스트 결과 보고

 

 

테스트 케이스 작성 순서

1. 테스트 계획 검토, 자료 확보

2. 위험 평가, 우선순위 결정

3. 테스트 요구사항 정의

4. 테스트 구조 설계, 방법 결정

5. 테스트 케이스 정의

6. 테스트 케이스 타당성 확인

 

 

결함 관리 프로세스

1. 에러 발견

2. 에러 등록

3. 에러 분석

4. 결함 확정

5. 결함 할당

6. .결함 조치

7.  결함 조치 검토

 

 

테스트 오라클

- 테스트 결과가 올바른지 정의된 값을 이용하여 확인하는 방법.

- 샘플링 오라클 : 특정 테스트 케이스 입력 값에 대한 기대 결과만 구함

- 추정 오라클 : 특정 테스트 케이스 입력 값에 대한 기대 결과 구하고, 나머지 입력은 추정값 사용.

- 참 오라클 : 모든 테스트 케이스 입력에 대해 기대 결과 제공.

- 일관성 검사 오라클 : 어플리케이션 변경시 테스트 케이스 수행 전후 결과과 일관된지 검사

 

 

테스트 자동화

- 테스트 절차를 스크립트 자동화 도구로 수행하는 것

 

테스트 자동화 도구 유형

- 정적 분석 도구 : 코드 실행없이 분석

- 테스트 실행 도구

- 성능 테스크 도구

- 테스크 통제 도구 : 테스트 계획, 관리, 결함 관리 등 수행

- 테스트 하네스 : 어플리케이션 컴포넌트, 모듈을 테스트하는 환경

 

 

 

개발 단계에 대한 어플리케이션 테스트

1. 단위 테스트

 - 모듈이나 컴포넌트 초점에 맞춰 테스트 ex) 구조기반 테스트, 명세기반 테스트

2. 통합 테스트

 - 모듈을 통합시킨 시스템 완성 중 테스트

3. 시스템 테스트

 - 사용 환경 시스템에서 기능적(블랙박스) 요구사항, 비기능적(화이트박스) 요구사항 충족 여부 확인

4. 인수 테스트

 - 사용자 요구사항 충족 여부 확인

 - 사용자 인스 테스트 : 사용자가 확인

 - 운영상 인수 테스트 : 인수 시 백업/복원, 사용자 관리 등 확인

 - 알파 테스트 : 사용자가 개발자 앞에서 하는 테스트

 - 베타 테스트 : 여러 사용자가 하는 테스트

 

 

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

요구사항  (0) 2020.05.22
보안  (0) 2020.05.19
어플리케이션 테스트 - 1 어플리케이션 테스트  (0) 2020.05.19
소프트웨어 공학 활용 - 9 UML  (0) 2020.05.19
소프트웨어 공학 활용 - 8 데이터 모델  (0) 2020.05.19
728x90

어플리케이션 테스트

- 테스트 케이스에 따라 요구사항을 만족하는지 검증 vertification, 확인 validation

 

 

 

테스트 구성요소

- 테스트 프로세스 : 정착, 전략, 관리 프로세스

- 테스트 기법 : 분석, 설계, 실행, 자동화 기법

- 테스트 조직 : 관리자, 설계자, 개발자 

- 테스트 문서화 : 계획서, 결과서, 보고서, 결합목록

 

 

 

테스트 원칙

- 결함이 존재함을 밝히는 활동

1. 완벽한 테스트 불가능 : 모든 테스트 케이스를 테스트 할수 없음

2. 결함 집중 : 전체 모듈 중 20%에 80%결함 발생(파레토 법칙)

3. 정황 의존 : 주변 환경, 데이터로 발생

4. 오류 부재 궤변 : 오류가 안생겨도 요구사항 불만족 시 좋은 소프트웨어가 아님

5. 살충제 패러독스 : 동일한 모듈에 동일한 테스트 케이스 시 내성이 생겨 새로운 결함 발견 힘듬 ->테스트 케이스 개선

 

 

 

테스트 종류

1. 테스트 시각에 따른 분류

- 확인 validation 테스트 : 사용자 관점에서 요구사항 충족 확인

- 검증 vertification 테스트 : 개발자 관점에서 명세서 충족 확인

 

2. 실행 유무에 따른 분류

2.1 정적 테스트

 - 실행 없이 코드나 명세서를 분석하는 테스트, 초기 단계서 결함 발견 가능

 - 워크 스루 : 개발자 작업 내용을 절차대로 검사

 - 인스펙션 : 개발된 결과물 평가

2.2 동적 테스트

 - 실행하여 오류 찾는 테스트

 - 화이트 박스 테스트 : 소스 코드 흐름 테스트. 논리적 복잡성 측정하는 기초 경로 검사와 제어구조 검사

  * 제어 구조 검사 : 조건 검사, 루프 검사, 데이터 흐름 검사

 - 블랙박스 테스트 : 기능 동작 여부 확인. 경계값 분석, 동치 분할 검사, 원인효과 그래프 검사, 오류 예측 검사

  * 동치 분할 검사 : 올바른 입력과 잘못된 입력에 대한 테스트 케이스를 균등하게 사용하는 검사

 

3. 테스트에 따른 분류

3.1 명세 기반 테스트

 - 명세를 이용해 테스트 케이스 작성

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

3.2 구조 기반 테스트

 - 소프트웨어 논리 흐름에 따라 테스트 케이스 작성

 - 구문 기반, 조건 기반

3.3 경험 기반 테스트

 - 테스터 경험에 의존하는 테스트

 - 체크 리스트, 에러 추정

300x250
728x90

UML Unified Modeling Language 

- 업무, 어플리케이션, 아키텍처 모델링에 사용하는 모델링 언어로 다양한 언어 코드 생성에 사용

 

UML 구성

- 사물, 관계, 다이어그램으로 구성

 

1. 사물 things

1.1 구조사물 structual 

 - UML 모델의 정적인 부분, 개념적/물리적 요소 표현. 클래스 class, 유스캐이스 use case, 컴포넌트 component, 노드

1.2 행동 사물

 - 시스템 행위. 상호작용 interaction, 상태 state

1.3 그룹 사물

 - 개념을 그룹화하는 사물. 패키지 package

1.4 어노테이션 사물

 - 부가적 개념 설명. 노트 note

 

2. 관계 

2.1 연관 관계 association : 다른 사물과 연관 있음

2.2 집합 관계 aggregation : 전체와 부분간 관계

2.3 포함 관계 coposition : 큰 부분이 소멸시 포함 부분도 함께 소멸됨

2.4 일반화 관계 generalization : 부모/자식 관계로 상속을 나타냄

2.5 실체화 관계 realization : 인터페이스 구현 관계

2.6 의존 관계 dependency : 한사물 변화가 타사물에 영향주는 관계

 

 

3. 다이어그램

3.1 구조적 다이어그램

- 클래스 다이어그램 : 비슷한 객체들의 그룹

- 객체 다이어그램 : 객체의 인스턴스 사이 관계

- 컴포넌트 다이어그램 : 소프트웨어 물리적 단위(exe, dll 등)의 구성과 연결상태 표현

- 배치 다이어그램 deployment diagram : 결과물, 프로세서, 하드웨어 등 물리적연결 표현

- 패키지 다이어그램 package diagram : 유스케이스나 클래스 등 모델 요소들을 그룹화한 패키지들의 관계 표현

 

3.2 행동 다이어그램

- 유스케이스 다이어그램 usecase : 사용자 입장에서 본 시스템

- 시퀀스 다이어그램 sequence : 객체간 메시지 시간 흐름에 따른 표현

- 상태 다이어그램 state : 객체의 상태 변화를 나타냄

- 활동 다이어그램 activity : 유스캐이스 내부나 객체 동작 중 발생활동 표현

- 커뮤니케이션 다이어그램 communication : 객체간 메시지 표현

 

 

 

유스케이스 

- 타원으로 표시하고 안에 유스케이스명 작성

클래스 

- 클래스 : 공통의 속성, 오퍼레이션 및 관계를 갖는 객체들의 집합

1. 클래스 정의

- 클래스 이름은 대문자로 시작, 속성과 오퍼레이션은 소문자로 시작

- 패키지와 함께 표현시 패키지명::클래스이름 -> Dog::Bulldog

2; 속성 정의

- 속성이름:속성타입[=초기값]

- 가시성 visibility : +(public), #(protected), -(private)

- 밑줄 : 해당 클래스에 유일한속성

 

3. 기능 정의

- 오퍼레이션이름(파라미터 리스트):리턴타입

- visibility name(parameter-list):return-type-expression

4. 가시성 visibility

- +(public) : 외부 클래스에서도 사용 가능

- #(protected) : 하위 클래스와 해당 클래스 내에서만 가능

- -(private) : 해당 클래스에서만 가능

- ~(package, default) : 패키지 내에서만 사용 가능

 

5. 추상 클래스 abstract class

- 추상메소드가 1개 이상 존재하는 클래스

*이탤릭체로 표기하여 추상 메소드임을 알림

 

객체 

- 클래스의 인스턴스

- 특정한 속성 값 가짐

- 객체 이름은 밑줄로 표현 ex) 클래스이름:객체이름

 

협력 collaboration

- 목적 달성하기 위한 일련의 행위

- 타원을 점선 표기, 안에 역활 내용 기입

 

상태

- 객체 상태를 순서로 명시

- 이벤트에 대한 객체의 반응

 

 

액티브 클래스

- 하나 이상의 프로세스나 스레드 같는 객체를 파생하는 클래스 기술

- 클래스 표기와 비슷하지만, 양옆에 세로라인 추가

 

 

컴포넌트

- 시스템을 구성하는 물리적인 단위로 독립적인 실행단위 혹은 배포단위

- 배치 컴포넌트 deployment compoenent : dll, exe 같이 실행가능한 구성요소

- 작업 결과물 컴포넌트 word product compoenent : 실행에 쓰이지않으나 개발 작업에 만들어지며, 실행 시스템 생성

  -> ex) 분석/설계 문서, 소스코드 파일, 데이터 파일

- 실행 컴포넌트 executable component : 실행 결과로 생성되는 컴포넌트로 객체, DB레코드, 파일

 

노드

- 물리적인 요소로 시스템 실행때 존제

- 메모리와 처리능력을 가진 자원

- 육면체로 표현하여 필요시 컴포넌트 표기

300x250
728x90

데이터 모델 Data model

- 정보들을 나타내기 위해 단순화, 추상화한 모델

- 데이터 모델 요소 : 구조, 연산, 제약조건

- 구조 : 데이터 정적 성질로 엔티티 타입과 이들 간의 관계를 명세

- 연산 : 데이터 동적 성질로 엔티티 인스턴스에 적용가능한 연산에 대한 명세

- 제약 조건 : 데이터 베이스에 저장하는 데이터가 이상이 발생하지않도록(무결) 하기 위해  사용

 

데이터 모델 구조

- 개체 entity : 구분, 표현하려는 정보 단위

- 속성 attribute : 데이터의 최소 단위로 열에 해당  

- 관계 relation: 개체 간 관계나 속성 간 논리적 연결

 

 

 

데이터 모델 제약조건

- 개체 무결성 제약조건 : 개체의 기본키에 null이 들어가선 안되며 유일해야함 

- 참조 무결성 제약조건 : 외래키는 null이나 타 개체 타입의 기본키를 참조해야함

- 도메인 무결성 제약조건 : 도메인은 범위 내 원자값을 사용해야함

 

 

데이터 모델 종류

- 개념적 데이터 모델 : 현실 세계를 반영하여 개념적으로 나타낸 모델로 대표적으로 개체-관계 모델이 있음.

- 논리적 데이터 모델 : 개념적 모델을 DBMS에서 사용하기 위한 논리적 데이터 모델로 변경한 것(파악)

- 물리적 데이터 모델 : DBMS의 특성을 고려하여 구체화한 모델로 물리적인 구조(스키마)와 제약조건 작성(세분화)

 

개념적 데이터 모델 요소

- 개체 : 구분, 표현하려는 정보 단위

- 개체 타입 : 정보의 형태

- 개체 인스턴스 : 하나의 정보

- 속성 : 데이터의 최소 단위로 열

- 관계 : 개체 타입이나 속성 간 관계

- 카디널리티 cardinality : 개체의 최소, 최대 범위로 대수(옵션)

- 차수 degree : 하나의 관계에 연결된 개체타입 개수

 

 

논리적 데이터 모델 요소

- 튜플 : 릴레이션의 행

- 속성 : 릴레이션의 열

- 카디널리티 : 튜플 개수

- 차수 : 속성의 개수

- 릴레이션 인스턴스 : 릴레이션이 가지는 튜플들의 집합

- 릴레이션 스키마 : 릴레이션이 가지는 속성들의 집합

- 릴레이션 = 릴레이션 인스턴스 + 릴레이션 스키마

 

테이블과 릴레이션의 차이

- 릴레이션 : 개체들을 나타내기위한 추상적인 개념(논리적 데이터 모델)

- 테이블 : 구체적인 표현 방법(물리적 데이터 모델)

 

- 후보키 candidate key : 유일성과 최소성을 가지는 속성 또는 속성 집합

- 슈퍼키 candidate key : 유일성을 가지는 속성 또는 속성 집합

- 기본키 primary key : 후보 키중 릴레이션을 대표하는 속성 또는 속성 집합

- 대체키 : 기본키가 아닌 후보키

- 외래키 foreign key : 타 테이블의 기본키를 참조하는 속성

 

300x250

+ Recent posts