티스토리 뷰
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 메뉴얼 작성 및 버전 등록
'정처기 실기' 카테고리의 다른 글
수제비 마지막 모의고사 (3) | 2023.07.22 |
---|---|
정처기 수제비 예상문제2 (1) | 2023.07.20 |
정처기 수제비 예상문제1 (0) | 2023.07.20 |
정처기 실기 약술형 정리 (0) | 2023.07.18 |
정처기 실기 단답식 정리 (커서 잡으면 답 나옴) (0) | 2023.07.17 |