정보처리기사
Clean Code 작성 원칙
: 가독성, 단순성, 의존성, 중복성, 추상성
Alien Code: 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램
Spaghetti Code: 소스 코드가 복잡하게 얽힌 프로그램
Legacy Code: 더 이상 쓰기 힘들고 난해한 코드
테스트 하네스(Test Harness)의 구성 요소
- 테스트 드라이버: 상향식 테스트에서 사용, 가상의 서버 역할
- 테스트 스텁: 하향식 테스트에서 사용, 가상의 클라이언트 역할
- 테스트 슈트: 테스트 케이스의 집합
- 테스트 케이스: 사용자의 요구사항을 정확하게 준수했는지 확인하기 위한 입력 값, 실행 조건, 기대 결과 등으로 만들어진 테스트 항목의 명세서
- 테스트 스크립트: 자동화된 테스트 실행 절차에 대한 명세서
- 목 오브젝트: 사전에 사용자의 행위를 조건부로 입력해 두면, 그 상황에 맞는 예정된 행위를 수행하는 객체
테스트 레벨
- 단위(Unit) 테스트
: 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트- 정적: 소스코드의 실행없이 내부 확인
- 동적: 입력값에 대한 출력값 확인
- 통합(Integration) 테스트
: 단위 테스트를 통과한 컴포넌트 간의 인터페이스를 테스트- 빅뱅 테스트: 프로그램 전체를 대상으로 테스트
- 상향식 테스트: 테스트 드라이버 사용
- 하향식 테스트: 깊이 우선 통합법, 넓이 우선 통합법 사용, 테스트 스텁 사용
- 백본(BackBone) 테스트: : 하위 수준에서는 상향식 통합, 상위수준에서는 하향식 통합 사용하여 최적의 테스트를 지원, 샌드위치(Sandwich)식 통합 테스트 방법
- 회귀(Regression) 테스팅: 통합 테스트가 완료된 후 변경된 모듈이나 컴포넌트가 있을 경우, 다른 부분에 영향을 미치는지 테스트하여 새로운 오류 여부를 확인
- 시스템(System) 테스트
: 전체 시스템 또는 제품의 동작에 대해 테스트- 기능 요구사항 테스트
- 비기능 요구사항 테스트
- 인수(Acceptance) 테스트
: 계약상의 요구사항이 만족되었는지 확인- 알파 테스트: 개발자 + 사용자
- 베타 테스트: 사용자
자료 구조
- 비선형: 데이터를 비연속적으로 연결한 자료 구조
- Tree: 노드와 노드를 연결하는 Link 로 구성, 사이클을 이루지 않도록 구성한 그래프의 특수한 형태
- Graph: 노드와 노드를 연결하는 간선을 하나로 모아 놓은 자료 구조
- 선형: 데이터를 연속적으로 연결한 자료 구조
- Stack: LIFO, 깊이우선탐색
- Queue: FIFO, 넓이우선탐색
- List
- 선형 리스트: 배열과 같이 연속된 기억 장소에 저장되는 리스트
- 연결 리스트: 노드의 포인터 부분으로 서로 연결시킨 리스트
- Deque(Double Ended Queue): 큐의 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료 구조
- Scroll: 한 쪽 끝에서의 삽입 작업에 제한을 둔 입력 제한 덱
- Shelf: 한 쪽 끝에서의 제거 작업에 제한을 둔 출력 제한 덱
소프트웨어 3R
- 역공학(Reverse-Engineering)
: 기존 개발된 시스템의 코드나 데이터로부터 설계 명세서나 요구 분석서 등을 도출하는 작업 - 재공학(Re-Engineering)
: 소프트웨어의 위기를 유지 보수의 생산성으로 해결하려는 방법- Migration: 기존 SW 시스템을 새로운 환경에서 사용할 수 있도록 변환하는 작업
- 재사용(Re-Use)
시간복잡도에 따른 정렬 분류
- 선택(n^2)
- 가장 적은 값을 맨 앞으로 이동 후, 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교체
- 삽입(n^2)
- 자료 배열의 모든 요소를 앞에서부터 차례대로 비교하면서 자리를 교환
- 버블(n^2)
- 서로 인접한 두 원소의 크기를 비교하여 정렬
- Quick(nlog2n) - 분할정복(Divide & Conquer) 알고리즘, 피벗 사용 - pivot 의 좌측에는 pivot 보다 작은값을 두고 우측에는 pivot 보다 큰 값을 두는 방식
- Heap(nlog2n)
- 병합(nlog2n)
- 분할 정복(Divide and Conquer) 알고리즘
화이트/블랙박스 테스트
- 화이트 박스 테스트: 모듈 내부 소스 코드를 보면서 수행하는 테스트
- 종류
- 기본 경로 커버리지(Base Path Coverage): 수행 가능한 모든 경로 테스트
- 데이터 흐름 테스트(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞추어 검사
- 조건 커버리지(Condition Coverage): 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행
- 루프 테스트
- 종류
- 블랙 박스 테스트: 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트
- 동등(동치, 균등) 분할 테스트(Equivalence Partitioning Testing): 입력값의 범위를 유사한 특징을 갖는 동등그룹으로 나누고 각 그룹마다 대표값을 선정하는 테스트 기법
- 경곗값 분석 테스트(Boundary Value Analysis Testing): 경계값을 테스트 케이스로 선정하여 검사
- 원인-결과 그래프 테스트(Cause-Effect Graphing Testing)
- 오류 예측 테스트
- 의사 결정 테이블 테스트
- 상태 전이 테스트
ISO/IEC 9126 모델 품질 요구 사항 6가지
: 기능, 신뢰, 사용, 효율, 유지보수, 이식
소스코드 품질 분석 → Refactoring
- Peer Review
- WalkThrough
- Inspection
- 계획 → 사전교육 → 준비 → 회의 → 수정(재작업) → 후속조치
- 정적 테스트
참고 자료
'Certificate > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 2022년 1회차 (4)프로그래밍 언어 활용 (0) | 2023.07.09 |
---|---|
[정보처리기사] 2022년 1회차 (3)데이터베이스 설계 (0) | 2023.07.09 |
[정보처리기사] 2022년 1회차 (1)소프트웨어 설계 (0) | 2023.07.08 |
[정보처리기사] 2022년 2회차 (5)정보시스템 구축관리 (0) | 2023.07.07 |
[정보처리기사] 2022년 2회차 (4)프로그래밍 언어 활용 (0) | 2023.07.07 |