티스토리 뷰

정처기 실기

2권 요약

Howu 2024. 4. 5. 16:42

7. SQL 응용

1) 데이터베이스 기본

* 트랜잭션 특성

- 원자성 (Atomicity): 트랜잭션 연산 전체가 성공 또는 실패되어야 하는 성질(All or Nothing)

- 일관성 (Consistency): 트랜잭션 수행 전과 완료 후 상태가 같아야 하는 성질

- 격리성(Isolcation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 하는 성질

- 영속성(Durability): 성공 완료인 트랜잭션은 영속적으로 DB에 저장되어야 하는 성질

 

* 트랜잭션 상태

- 활동: 초기, 트랜잭션 실행 중

- 부분 완료: 마지막 명령문 실행 후

- 완료: 트랜잭션 완료

- 실패: 정상 실행이 될 수 없는

- 철회: 트랜잭션 취소 및 시작 전 상태로 환원

 

* 병행 제어 미보장 시 문제점

- 갱신 손실: 먼저 실행된 트랜잭션을 나중에 실행된 것에 덮어쓸 때 발생하는 오류

- 현황 파악오류: 트랜잭션 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류

- 모순성: 두 트랜잭션이 동시에 실행되어 DB의 일관성이 결여되는 오류

- 연쇄복귀: 특정 트랜잭션 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류

 

* 병행 제어 기법 종류

- 로킹: DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법

=> 로킹 단위가 작아지면 데이터베이스 공유도, 로킹 오버헤드 증가

- 낙관적 검증: 트랜잭션이 검증을 하지 않고 일단 수행하고 종료 시 검증을 수행해 DB에 반영하는 기법

- 타임스탬프 순서: 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법

- 다중버전 동시성 제어(MVCC): 타임스탬프를 비교하여 직렬가능성 보장의 버전을 선택하여 접근하도록 하는 기법

 

* 데이터베이스 고립화 수준

- Read Uncommited: 트랜잭션에 연산 중인 데이터를 불허

- Read Commited: 연산이 완료된 커밋된 데이터는 다른 트랜잭션이 있는 것을 허용

- Repeatable Read: 선형 트랜잭션이 특정 데이터를 트랜잭션 종료 시까지 해당 데이터 갱신/삭제 제한

- Serializable Read: 선형 트랜잭션이 특정 데이터를 순차적으로 읽을 때 해당 데이터 영역 전체에 접근 제한

 

* 회복 기법

- 로그 기반 회복 기법

=> 지연 갱신: 트랜잭션 완료전까지 DB에 기록하지 않음

=> 즉각 갱신: 트랜잭션 수행 중 갱신 결과 바로 DB에 반영

- 체크포인트 회복 기법: 검사점 이후 처리된 트랜잭션에 대해서만 복구

- 그림자 페이징 회복 기법: DB 트랜잭션 수행 시 복제본 생성해 복구

 

* DDL 대상

- 도메인: 하나의 속성이 가질 수 있는 원자값들의 집합

- 스키마: DB의 구조, 제약조건의 정보를 담고 있는 기본적인 구조

=> 외부 스키마: 사용자 개발자 관점, = 서브 스키마

=> 내부 스키마: 물리적 저장장치 관점의 DB 구조

=> 개념 스키마: DB의 전체적인 논리적 구조

- 테이블

=> 튜플/행/카디널리티, 속성/열/차수

- 뷰

- 인덱스

 

* 인덱스 종류

- 순서: 정렬된 순서로 생성

- 해시: 해시 함수에 의해 직접 데이터에  접근

- 비트맵: 각 컬럼에 적은 개수 값 저장된 경우 선택, 수정변경 적은 경우 사용

- 함수

- 단일

- 결합

- 클러스터드: PK를 기준으로 레코드를 묶어 저장하는 인덱스

 

* 기본 SQL 명령어

- ALTER TABLE 테이블명 ADD COLUMN VARCHAR(10) [제약조건];

- ALTER TABLE 테이블명 MODIFY COLUMN VARCHAR(20) [제약조건];

- ALTER TABLE 테이블명 DROP COLUMN;

- CASCADE: 참조하는 테이블까지 연쇄적으로 제거하는 옵션

- RESTRICT: 다른 테이블이 삭제할 테이블을 참조 중이면 제거하는 옵션

- INSERT INTO TABLE (COL1, COL2, COL3) VALUES(VAL1, VAL2, VAL3);

- DELETE FROM TABLE WHERE 조건;

- GRANT 권한 ON 테이블 TO 사용자;

- REVOKE 권한 ON 테이블 FROM 사용자;

 

 

* 집합 연삱

- UNION: 중복 행이 제거된 쿼리 결과를 반환

- UNION ALL: 중복 행이 제거되지 않은 쿼리 결과 반환

- INTERSECT: 두 쿼리 결과에 공통으로 존재하는 결과를 반환

- MINUS: 첫 쿼리에만 있고 두 번째에는 없는 결과 반환

2) 응용 SQL

* 그룹 함수

- GROUP BY ROLLUP(DEPT, JOB): 중간 집계 값을 산출

- GROUP BY CUBE(DEPT, JOB) : 다차원 집계를 생성

- GROUPING SETS(DEPT, JOB, ()) : 다양한 소계 집합

 

* 윈도 함수(OLAP)

- RANK: 특정 컬럼의 순위를 구하는 함수 1 2 2 2 5

- DENSE_RANK: 1 2 2 2 3

- ROW_NUMBER: 1 2 3 4 5

- SELECT NAME, SALARY,

RANK() OVER (ORDER BY SALARY DESC) A,

DENSE_RANK() OVER (ORDER BY SALARY DESC) B,

ROW_NUMBER() OVER (ORDER BY SALARY DESC) C

FROM TEMP;

3) 절차형 SQL

* 종류

- 프로시저: 일련의 쿼리들을 마치 하나의 함수처럼 실행

- 사용자 정의 함수: 일련의 sql을 수행하고 수행 결과를 단일 값으로 반환

- 트리거: 삽입/삭제/갱신 이벤트가 발생할 때마다 관련 작업이 자동으로 수행

 

8. 서버 프로그램 구현

1) 개발환경 구축

* 소프트웨어 개발환경

- 운영체제: 사용자 관점에서 편리하게 사용하기 위한 SW

- 미들웨어: 컴퓨터와 컴퓨터 사이 연결을 안전하게 해주고 관리를 도와주는 SW

- DBMS: 사용자와 DB 사이에서 사용자 요구에 따라 정보 생성, 관리

 

* 형상 관리 절차

- 식별: ID와 관리번호로 추적

- 통제: 베이스라인 관리 및 통제

- 감사: 베이스라인 무결성 평가

- 기록

 

* 형상 관리 도구 유형

- RCS, SCCS: 공유 폴더 방식

- CVS, SVN: 클라이언트/서버 방식

- GIT: 분산 저장소 방식

 

2) 공통 모듈 구현

* 응집도

우연적 : 각 구성요소가 연관이 없을 경우

논리적 : 유사한 성격, 특정형태로 분류되는 처리요소들이 한 모듈에서 처리

시간적 : 특정 시간에 처리

절차적 : 모듈이 다수 관련 기능을 가질 때 순차적으로 수행

통신적 : 동일한 입력과 출력을 사용해 다른 기능을 수행

순차적 : 한 활동의 출력값을 다른 활동이 사용할 경우

기능적 : 단일한 목적을 위해 수행되는 경우

 

* 결합도

내용 : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우

공통 : 파라미터가 아닌 모듈 밖 선언되어 있는 전역변수를 참조하고 갱신하는 식으로 상호작용

외부 : 외부에서 도입된 인터페이스를 공유

제어 : 제어 신호 이용

스탬프 : 배열, 객체, 자료구조

자료 : 파라미터를 통해서만 모듈 간 상호작용이 일어나는 경우

 

3) 서버 프로그램 구현

* 서버 프로그램

- DTO/VO: 프로세스 사이에서 데이터를 전송하는 객체 / 고정 클래스

=> 화면에서 전달받은 정보로 DB에 저장하는 객체를 구현

- DAO: DB에 추상 인터페이스 제공

 

4) 배치 프로그램 구현

* 배치 프로그램 유형

- 이벤트: 사전 조건 충족 시 자동 실행

- 온디맨드: 명시적 요구가 있을 때마다 실행

- 정기: 정해진 시점에 정기적으로 실행

9. 소프트웨어 개발 보안 구축

1) 소프트웨어 개발 보안 설계

* SW 개발 보안 요소

- 기밀성

- 무결성

- 가용성

 

* 보안 공격 기법

- DoS: 시스템을 악의적으로 공격해 해당 시스템 자원을 부족하게 함

SYN 플러딩: tcp 프로토콜의 구조적인 문제를 이용한 공격

UDP 플러딩: 응답메시지를 생성하게 하여 지속하여 자원을 고갈시키는 공격

Smurf: 출발지 주소를 공격대상 ip로 설정

Pod: ping을 아주 크게 만들어 전송해서 ip 단편화 발생시킴

Land Attack: 출발지 주소와 목적지 주소를 같게 하여

Tear Drop: IP 패킷 재조합 과정에서 잘못된 fragment offset 정보로 인해 수신시스템 문제를 발생하도록 만드는 공격

Bonk / Boink: 프로토콜의 오류 제어를 이용한 공격기법

 

- DDos: 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법

- DRDos: 출발지 ip를 공격대상 ip로 위조하여 다수의 반사 서버로 요청 정보를 전송

 

* 세션 하이재킹: tcp 세션 관리 취약점을 이용한 공격기법

 

* 애플리케이션 공격기법

- HTTP GET 플러딩: 과도한 get 메시지를 이용해 웹 서버 과부하를 유발시키는 공격

- Slowloris Header: http get 메서드를 사용해 헤더의 최종 끝 개행문자열을 전송하지 않고 연결 자원을 모두 소진시키는 서비스 거부 공격

- RUDY: 요청 헤더의 content-length를 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결상태 유지

 

* 네트워크 공격

- 스니핑: 데이터만 몰래 들여다보는 수동적 공격 기법

- 스니퍼: 취약점을 탐색하는 공격 도구

- 패스워드 크래킹: 사전/무차별/패스워드 하이브리드/레인보우 테이블

- IP 스푸핑: 침입자의 패킷 헤더를 인증된 호스트의 ip로 위조하여 전송하는 공격

- ARP 스푸핑: MAC 주소를 희생자에게 지속적으로 전송

- ICMP Redirect: ICMP Redirect 메시지를 공격자가 원하는 형태로 만들어 스니핑

- 트로이 목마: 겉보기에는 정상 프로그램이나 실행하면 악성 코드를 실행하는 프로그램

 

* 백도어: 어떤 제품이나 알고리즘에서 정상적인 인증 절차를 우회하는 기법

 

* 주요 시스템 보안 공격기법

- 포맷 스트링 공격

- 레이스 컨디션 공격: 임시파일을 심볼릭 링크하여 악의적인 행위를 수행하게 하는 공격기법

- 키로거 공격

- 루트킷: 차후 침입을 위한 불법적인 해킹 기능을 제공하는 프로그램 모음

 

* 보안 관련 용어

- 스피어피싱: 일반적인 이메일로 위장한 메일을 지속적으로 발송

- 스미싱: sms로 신뢰할만하게 보내서 개인정보 탈취

- 큐싱: 스마트폰 업무 처리 사용자 인증 시 qr코드로 악성 앱으로 금융 정보 탈취

- 봇넷: 악성 프로그램 감염되어 악의적인 의도로 사용될 수 있는 컴퓨터들이 연결된 상태

- APT 공격: 특정 타깃을 목표로 다양한 수단을 통해 지속적이고 지능적인 맞춤형 공격

- 공급망 공격: 개발사 네트워크에 침투해 소스코드 수정, 악의적인 코드 삽입으로 사용자가 설치 시 자동으로 감염

- 제로데이 공격: 취약점이 발견되었으나 널리 공표되기 전 악용

- 웜: 스스로를 복제하여 네트워크 연결을 통해 전파하는 악성 프로그램

- 악성봇: 스스로 실행되지 못하고 해커의 명령에 의해 원격에서 제어 또는 실행 가능한 프로그램, 코드

- 사이버 킬체인: 록히드 마틴의 공격형 방위시스템

- 랜섬웨어: 암호화된 파일을 인질 삼아 몸값을 요구

- 이블트윈: 무선 wifi 피싱 기법

 

* 인증 기술 유형

- 지식: id, pw

- 소지: otp

- 생체: 홍채, 지문

- 특징: 서명, 발걸음, 몸짓

 

* 서버 접근 통제 유형

DAC, 임의적 접근 통제: 신원에 근거하여 객체에 대한 접근을 제한하는 방법

MAC, 강제적 접근 통제: 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법

RBAC, 역할기반 접근 통제: 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한하는 방법

 

* 3A

- Authentication인증: 사용자의 신원을 검증

- Authorization인가: 사용자에게 권한 부여

- Accounting계정: 리소스 사용에 대한 정보 수집

 

* 접근 통제 보호 모델

- 벨-라파둘라 모델: 기밀성 보장

No Read Up

No Write Down

- 비바 모델: 벨-라파둘라 보완, 무결성 보장

No Read Down

No Write up

 

* 암호 알고리즘

- 양방향: 암/복호화에 같은 암호키를 사용

[대칭키 암호화 알고리즘]

DES: 1975 IBM 미국 연방 표준국 발표, 블록 암호화 알고리즘, 64bit

SEED: 1999 한국인터넷진흥원 발표, 128bit

AES: DES 성능 보완, 2001 미국 표준 기술 연구소 발표, 128bit

ARIA: 2004 국가정보원, 산학연구협회가 개발한 블록 암호화 알고리즘

IDEA: DES를 대체하기 위해 스위스 연방기술기관에서 개발한 블록 암호화 알고리즘

LFSR

 

[비대칭키 암호화 알고리즘]

디피-헬만: 최초의 공개키 알고리즘으로 유한 필드 내 이산대수 계산이 어려운 문제를 기본 원리로 한다.

RSA: 소인수분해하는 공개키 암호화 알고리즘

ECC: 타원곡선암호, 유한체 위에서 정의된 타원곡선군에서 이산대수 문제에 기초한 공개키 암호화 알고리즘

ElGamal: 1984 공개키 알고리즘, 전자서명과 데이터 암/복호화에 함께 사용 가능

 

- 단방향

[해시 암호화 알고리즘]

MD5: MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용

SHA-1: 1993 NSA에서 미 정부 표준 지정, DSA에서 사용

SHA-256: SHA 알고리즘의 한 종류, 256비트 해시값을 생성하는 해시함수

HAS-160: 국내 표준 서명 알고리즘을 위하여 개발된 해시함수, MD5와 SHA1의 장점을 취해 개발된 해시 알고리즘

HAVAL: 메시지 다이제스트를 출력하는 해시 알고리즘

 

* 데이터 암호화 전송

- IPSec: ip 계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 ip 보안 프로토콜

=> AH 프로토콜: MAC를 이용해 인증과 송신처 인증을 제공해주는 프로토콜

=> ESP 프로토콜: MAC과 암호화를 이용, 인증과 송신처 인증과 기밀성을 제공하는 프로토콜

=> IKE 프로토콜: key를 주고받는 알고리즘

- SSL/TLS: 전송계층과 응용계층 사이에 클-서 간의 암호화, 인증 및 전송 시 데이터 무결성을 보장하는 프로토콜

- S-HTTP: 네트워크 트래픽을 암호화하는 주요 방법 중 하나로 클라이언트-서버 간 전송되는 모든 메시지를 각각 암호화하여 전송하는 기술

 

* SW 개발 보안 적용 사례

- Secure SDLC 모델 및 방법론

BSIMM: 미국 안보국의 지원을 받아 수행된 소프트웨어 보증 프로젝트 결과물 중 하

Open SAMM: 개방을 원칙으로 점진적인 확대가 가능한 융통성 있는 프레임워크

Seven TouchPoints: 실무적으로 검증된 개발 보안 방법론, sw 보안의 모범 사례를 SDLC에 통합한 생명주기 방법론

MS SDL: 2004년 이후 MS가 자사 sw 개발에 의무적으로 적용하도록 고안한 보안강화 프레임워크

CLASP: 프로그램 설계나 코딩 오류를 찾아내어 개선하기 위해 개발팀에 취약점 목록을 제공

 

* 입력 데이터 검증 및 표현 취약점

XSS(Cross Site Script): 웹 페이지를 열람할 때 부적절한 스크립트가 실행되는 공격

CSRF(사이트간 요청 위조): 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격

SQL Injection: 프로그램의 보안 취약점을 이용해 악의적인 SQL 구문 삽입

 

* 네트워크 보안 솔루션

방화벽: 기업 내부, 외부 간 트래픽을 모니터링하여 시스템 접근을 허용하거나 차단하는 시스템

웹방화벽(WAF): 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안장비

네트워크 접근 제어(NAC): 단말기가 내부 네트워크에 접속할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션

침입 탐지 시스템(IDS): 네트워크에서 발생하는 이벤트를 모니터링, 비인가 사용자의 침입을 실시간 탐지

침입 방지 시스템(IPS): 네트워크에 대한 공격이나 침입을 실시간으로 차단하고 유해트래픽에 대한 조치를 능동적으로 처리하는 시스템

무선 침입 방지 시스템(WIPS): 무선 공유기를 탐지하는 시스템

통합 보안 시스템(UTM): 다양한 보안 장비 기능을 하나의 장비로 통합하여 제공하는 시스템

가상사설망(VPN): 인터넷과 같은 공중망에 마지 전용망을 사용하는 효과를 가지는 보안 솔루션

 

* 시스템 보안 솔루션

스팸 차단 솔루션: 메일 서버 앞단에 위치해 프록시 메일 서버로 동작

Secure OS: 컴퓨터 운영체제 커널에 보안 기능을 추가한 솔루션

 

* 콘텐츠 유출 방지 솔루션

데이터 유출 방지(DLP): 조직 내부 중요 자료가 외부로 빠져나가는 것을 탐지하고 차단

디지털 저작권 관리(DRM): 디지털 저작물에 대한 보호와 관리를 위한 솔루션

 

* 비즈니스 연속성 계획

BIA: 비즈니스 영향 분석

RTO: 업무 중단 시점부터 업무가 복구되어 다시 가동될 때까지의 시간

RPO: 업무 중단 시점부터 업무가 복구되어 정상 가동되는 데이터 손실 허용 시점 

DRP: 재난으로 장기간의 시설 운영 불가능의 경우 대비한 재난 복구 계

DRS: 평상시에 확보해 둔 자원, 관리체계가 통합된 복구센터

- Mirror Site: 실시간 동시 서비스가 가능한 재해복구센터

- Hot Site: 재해 발생 시 복구까지 4시간 이내

- Warm Site: 재해 발생 시 복구까지 수일~수주

- Cold Site: 재해 발생 시 복구까지 수주~수개월, 비용은 저렴하나 신뢰성이 낮음

 

* 보안 공격 용어

부 채널 공격: 암호 키 등 내부 지밀 정보를 부 채널에 획득하는 공격기법

드라이브 바이 다운로드: 악성 스크립트를 설치하고 사용자 동의 없이 실행되어 의도된 서버로 연결해 감염

워터링홀: 특정인에 대한 표적 공격을 목적으로 웹 사이트에 악성코드를 심고 악성 URL로 유인

스캠 공격: 기업 이메일 계정 도용하여 무역 거래 대금을 가로채는 사이버 범죄

하트 블리드: 데이터 길이에 대한 검증을 수행하지 않는 취약점을 이용

크라임웨어: 중요 금융/인증 정보를 탈취 또는 유도하여 금전적인 범죄행위 목적

토르 네트워크: 익명으로 인터넷을 사용할 수 있는 가상 네트워크

MITM 공격: 통신 내용을 도청 및 조작하는 공격 기법

DNS 스푸핑 공격: 공격 대상에게 전달되는 DNS 응답을 조작하거나 DNS 캐시 정보를 조작

포트 스캐닝 공격: 침입 전 취약점을 분석하기 위한 사전 작업

디렉토리 리스팅 취약점: 

리버스 쉘: 

익스플로잇:

스턱스넷: 

크리덴셜 스터핑: 

 

* 보안 공격 대응

허니팟: 비정상적인 접근 탐지를 위해 의도적으로 설치해 둔 시스템을 일부러 허술하게 하여 해커를 유인

OWASp Top 10: 보안상 큰 영향을 줄 수 있는 10가지 취약점에 대한 대응 방안 제공

핑거프린팅: 콘텐츠에 사용자 정보를 삽입하여 불법 배포자에 대한 위치 추적이 가능한 기술

워터마킹: 콘텐츠에 저작권자 정보를 삽입하여 불법 복제 시 워타마크를 추출, 원소유자를 증명할 수 있는 콘텐츠 보호

이상금융거래탐지시스템(FDS)

CC

C-TAS

PAM

CVE

CWE

 

2) 소프트웨어 개발 보안 구현

10. 애플리케이션 테스트 관리

1) 애플리케이션 테스트 케이스 설계

SW 테스트 원리

- 결함 존재 증명

- 완벽 테스팅은 불가능

- 초기 집중

- 결함 집중: 오류의 80%는 전체 모듈 20%에서 발견

- 살충제 패러독스: 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함

- 정황 의존성

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

 

* 화이트박스 테스트: 프로그램 내부 구조와 동작을 검사하는 소프트웨어 테스트(구결조 조변다 기제데)

- 구문(문장) 커버리지: 모든 명령문은 적어도 한 번 수행하는 커버리지

- 결정(선택/분기) 커버리지: [전체 조건식이 적어도 한번은 참과 거짓의 결과]를 수행하는 커버리지

- 조건 커버리지: [각 개별 조건식이 적어도 한 번은 참과 거짓의 결과]가 되도록 수행하는 커버리지

- 조건/결정 커버리지: 전체 조건식 뿐만 아니라 개별 조건식도 참, 거짓 수행

- 변경 조건/결정 커버리지: 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록

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

- 기본 경로 커버리지: 수행 가능한 모든 경로를 테스트하는 기법

- 제어 흐름 테스트: 프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직을 테스트하는 기법

- 데이터 흐름 테스트: 제어 흐름 그래프에 데이터 사용현황을 추가하 그래프를 통해 테스트하는 기법

 

* 블랙박스 테스트: 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트 (동경결상 유분페원비)

- 동등분할 테스트: 입력 데이터 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트

- 경계(한계)값 분석 테스트: 경곗값을 포함하여 테스트 케이스를 설계하여 테스트

- 결정 테이블 테스트: 요구사항의 논리와 발생조건을 테이블 형태로 나열한 후 조합하는 테스트

- 상태 전이 테스트: 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트

- 유스케이스 테스트: 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름 기반으로 테스트

- 분류 트리 테스트: sw 일부 또는 전체를 트리 구조로 분석 및 표현

- 페어와이즈 테스트: 테스트 데이터값들 간에 최소한 한 번씩 조합

- 원인-결과 그래프 테스트: 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스

- 비교 테스트: 여러 버전의 프로그램에 같은 입력값을 넣어 동일한 결과 데이터가 나오는지를 비교해보는 테스트

 

* 검증과 확인

- 검증(Verification): 과정 테스트, 올바른 제품을 생산하고 있는지 검증

- 확인(Validation): 결과 테스트, 만들어진 제품이 제대로 동작하는지 확인

 

* 테스트 목적에 따른 분류

회복 테스트: 고의로 실패를 유도하고 시스템 정상 복귀 여부를 테스트

안전 테스트: 불법적인 sw가 접근해 시스템을 파괴하지 못하도록 소스 코드 내 보안적인 결함 점검

성능 테스트: 사용자 이벤트에 시스템이 응답하는 시간, 속도 등을 측정하는 테스트 기법 

구조 테스트: 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가하는 테스트 기법

회귀 테스트: 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법

병행 테스트: 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법

 

* 성능 테스트

부하 테스트: 시스템에 부하를 증가시키며 임계점을 찾는 테스트

강도 테스트: 임계점 이상의 부하를 가하여 비정상적인 상황에서 처리를 테스트

스파이크 테스트: 짧은 시간에 사용자가 몰릴 때 시스템의 반응 측정 테스트

내구성 테스트: 오랜 시간 동안 시스템에 높은 부하를 가하여 시스템 반응 테스트

 

* 테스트 종류에 따른 분류

명세 기반 테스트: 명세서를 기반으로 테스트 케이스를 선정하여 테스트하는 기법

구조 기반 테스트: 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트 기법

 

* 리뷰 유형

동료검토: 이해관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행하는 검토 기법

워크스루: 검토자료를 [회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 회의]를 진행하는 형태

인스펙션: 전문가 팀이 검사하여 문제를 식별하고 검토하는 기법

 

* 테스트 커버리지 유형

기능 기반 커버리지: 애플리케이션 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법

라인 커버리지: 애플리케이션 전체 소스 코드 라인 수를 모수로 테스트 시나리오가 수행한 소스 코드 라인 수를 측정

코드 커버리지: 소프트웨어 테스트 충분성 지표 중 하나

 

* 테스트 오라클

참 오라클: [모든 입력값]에 대해 기대하는 결과를 생성함으로 발생된 오류를 모두 검출할 수 있는 오라클

샘플링 오라클: [특정한 몇 개 입력값]에 대해서만 기대한 결과를 제공해 주는 오라클

휴리스틱 오라클: 특정 입력값에 대해 올바른 결과를 제공하고 [나머지 값들에 대해서 휴리스틱]으로 처리하는 오라클

일관성 검사: 수행 전과 후의 [결괏값이 동일한지] 확인하는 오라클

 

* 테스트 레벨 종류

단위: 사용자 요구사항에 대한 테스트

통합: 단위 테스트를 통과한 모듈 사이의 상호 작용을 검증하는 테스트

시스템: 통합된 단위 시스템 기능이 정상적으로 수행되는지를 검증하는 테스트

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

 

2) 애플리케이션 통합 테스트

* 목 객체 유형

더미 객체

테스트 스텁: 하향식 통합(Top Down)

테스트 드라이버: 상향식 통합(Bottom up)

테스트 스파이

가짜 객체

 

* 빅뱅 테스트: 모든 모듈을 동시에 통합한 후 테스트를 수행하고, 드라이버/스텁 없이 실제 모듈로 테스트

* 샌드위치 통합 테스트: 상향식 통합 테스트와 하향식 통합 테스트 방식을 결합한 테스트 방식

* 테스트 하네스 구성요소(드스슈 케시스목)

테스트 드라이버: 테스트 대상 하위 모듈 호출, 파라미터를 전달하고 모듈 테스트 수행 후의 결과를 도출

테스트 스텁: 하향식 테스트에 필요

테스트 슈트: 테스트 대상 시스템에 사용되는 테스트 케이스의 집합

테스트 케이스: 입력값, 실행 조건, 기대 결과 등의 집합

테스트 시나리오: 애플리케이션 테스트가 되어야 할 상황을 작성한 문서

테스트 스크립트: 자동화된 테스트 실행 절차에 대한 명세

목 오브젝트: 사용자 행위를 조건부로 사전에 입력해두면 그 상황에 예정된 행위를 수행하는 객체

 

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

- 결함 심각도별 분류

치명적 결함: 기능이나 제품 테스트를 완전히 방해하거나 못하게 하는 결함

주요 결함: 기능이 해야 하는 것을 못하는 결함

보통 결함: 특정 기준을 충족하지 못하거나 전체에 영향을 주지 않는 일부 기능이 부자연스러운 결함

경미한 결함: 사용상의 불편함을 유발하는 결함

단순 결함: 사소한 버그로 기능에는 영향이 없으나 수정되어야 하는 결함

 

3) 애플리케이션 성능 개선

* 애플리케이션 성능 측정 지표

처리량: 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션 수

응답시간: 사용자 입력 끝난 후, 애플리케이션 응답 출력이 개시될 때까지의 시간

경과시간: 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과 출력이 완료될 때까지 걸리는 시간

자원 사용률: 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 사용량

 

* 성능 분석 도구 유형

- 시스템 모니터링 도구

Scouter: 실시간 모니터링, 튜닝에 최적화된 인프라 통합 모니터링 도구

Zabbix: 웹기반 서버, 서비스, 애플리케이션 모니터링 도구

 

* 데이터베이스 관련 성능 저하 원인 (락페릭사커)

- DB Lock: 대량 데이터 조회, 과도한 업데이트 시 발생하는 현상

- DB Fetch: 실제 필요 데이터보다 많은 대량의 데이터 요청이 들어올 경우 응답 시간 저하 현상 발생

- Connection Leak: jdbc 객체를 사용 후 종료하지 않을 경우 발생

- Connection Pool Size: 너무 작거나 크게 설정할 경우 성능 저하 현상 발생 가능성 존재

- Commit: 트랜잭션이 commit 되지 않고 커넥션 풀에 반환될 때 성능 저하 발생

11. 응용 SW 기초 기술 활용

1) 운영체제의 특징

2) 네트워크 기초 활용하기

3) 기본 개발환경 구축하기

12. 제품 SW 패키징

1) 제품 sw 패키징하기

2) 제품 sw 메뉴얼 작성 및 버전 등록

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함