📌 테스트 종류
- 인수 테스트 : 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 방법
- 단위 테스트 : 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 하는 테스트
- 단위 테스트를 통해 발견할 수 있는 오류
- 알고리즘 오류에 따른 원치않는 결과
- 탈출구가 없는 반복문의 사용
- 틀린 계산 수식에 의한 잘못된 결과
- 단위 테스트의 종류
- 구조 기반 테스트(주로 사용) : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 시행
- 명세 기반 테스트 : 목적 및 실행 코드 기반의 블랙박스 테스트 시행
- 단위 테스트를 통해 발견할 수 있는 오류
- 시스템 테스트 : 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트
- 통합 테스트 : 단위테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트
📌 통합테스트
- 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트
- 하향식 통합 테스트
- 넓이 우선, 깊이 우선
- 스텁(Stub) 사용
- 초기부터 사용자에게 시스템 구조를 보여줌
- 상항식 통합 테스트
- 하위 모듈에서 상위 모듈 방향으로 통합
- 클러스터와 테스트 드라이버 사용
- 모듈 간의 인터페이스와 시스템의 동작이 정상적으로 잘되고 있는지를 빠르게 파악하고자 할 때는 하향식 사용 → 초기부터 구조를 보여줄 수 있음
📌 소스코드 정적 분석
- 소스코드를 실행시키지 않고 분석
- 코드에 있는 오류나 잠재적인 오류를 찾아내기 위한 활동
- 자료 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾을 수 있음
- 하드웨어적인 방법으로만 분석하지는 X
📌 해싱함수 방식
- 제산법 : 레코드키를 해시표로 나눈 나머지를 홈 주소로 사용
- 폴딩법 : 해싱함수 중 레코드 키를 여러 부분으로 나누고 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈 주소로 사용
- 기수 변환법 : 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초과한 높은 자릿수를 절단, 다시 주소 범위에 맞게 조정
- 숫자분석법 : 키 값을 이루는 숫자의 분포를 분석하여 비교적 고른 자리를 필요한 만큼 선택
📌 베타 검사(베타 테스트)
- 필드 테스트라고도 불림
- 개발자가 없는 상태에서 고객의 사용 환경에 소프트웨어를 설치하여 검사 수행
📌 알고리즘
- 이진 검색 : 검색을 수행하기 전에 반드시 데이터의 집합이 정렬되어 있어야 함
- 선형 검색 : 처음부터 끝까지 하나씩 순서대로 비교하며 원하는 값을 찾아내는 검색
📌 인스펙션
- 과정 : 계획 → 사전교육 → 준비 → 인스펙션 회의 → 수정 → 후속조치
📌 코드 인스펙션
- 결함 뿐만 아니라 코딩 표준 준수 여부, 효율성 등의 다른 품질 이슈 검사도 함
- 코드 품질 향상 기법 중 하나
- 정적 테스트에 가까움
- 표준이나 명세서에 서술한 내용과 비교하여 편차와 에러를 식별하기 위해 산출물을 근거로 수행하는 검사
📌 코드 검사 수행 시 발견되는 오류
- 데이터 오류(DA) : 데이터 유형 정의, 변수 선언, 매개 변수 등에서 나타나는 오류
- 기능 오류(FN) : 서브루틴이나 블록이 잘못된 것(What)을 수행하는 오류
- 논리 오류(LO) : 서브루틴이나 블록이 수행하는 방법(How)을 수행하는 오류
- 성능 오류(PF) : 프로그램을 수행하며 요구되는 성능을 만족시키지 못하는 오류
- 문서 오류(DC) : 프로그램 구성 요소인 선언 부분, 잘못되거나 불필요한 주석 등을 의미
📌 Reverse Engineering(재공학)
- 기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어내는 과정
📌 Restructuring(재구성)
- 기존 소프트웨어 구조를 향상시키기 위하여 코드를 재구성하는 활동, 소프트웨어의 기능과 외적인 동작은 바뀌지 않음
- 재공학에 비해 안정성이 높음
📌 인터페이스 구현 검증 도구
- STAF : 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
- watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크
- xUnit : NUnit, JUnit 등 다양한 언어를 지원하는 단위 테스트 프레임워크
- FitNesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
- selenium : 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크
- NTAF : FitNesse(협업 기능) + STAF(재사용 및 확장성), NHN(Naver)의 테스트 자동화 프레임워크
📌 자료구조
- 데크 : 삽입과 삭제가 리스트의 양쪽 끝에서 발생할 수 있는 형태
- 큐 : 리스트의 한쪽에서는 삽입, 다른 한쪽에서는 삭제가 이루어짐, FIFO
- 스택 : 리스트의 한쪽 끝으로만 삽입과 삭제 모두 이루어짐, LIFO
📌 정렬 알고리즘 시간복잡도(소요시간)
- 버블, 선택, 삽입 정렬 : O(n2)
- 합병 정렬 : O(Nlog2N)
📌 Collision(충돌현상) 해결 방법⭐⭐⭐
- 체이닝(Chaining) : 충돌현상이 발생하면 버킷에 할당된 연결 리스트(Linked List)에 데이터를 저장하는 방법
- 개방 주소법(Open Addressing) : 충돌현상이 발생하면 순차적으로 그 다음 빈 버킷을 찾아 데이터를 저장하는 방법
- 재해싱(Rehashing) : 충돌현상이 발생하면 새로운 해싱 함수로 새로운 홈 주소를 구하는 방법
📌 명세 기반 테스트⭐⭐⭐
- 동치 분할 검사(Equivalence Partitioning Testing) : 프로그램의 입력 조건에 중점을 두고, 어느 하나의 입력 조건에 대하여 타당한 값과 그렇지 못한 값을 설정하여 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 테스트 기법
- 원인-효과 그래프 검사(Cause-Effect Graphing Testing) : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
- 경계값 분석(Boundary Value Analysis) : 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법으로, 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사
- 비교 검사(Comparison Testing) : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
📌 인터페이스 표준
- 내 외부 모듈 간 데이터 표준을 확인하는 방법 → 인터페이스 기능 / 데이터 인터페이스 2가지로 확인 가능!
📌 자료 구성 단위
- 비트 : 자료(정보) 표현의 최소 단위 / 두 가지 상태(0과 1)을 표시하는 2진수 1자리
- 니블 : 4개의 비트가 모여 1개의 니블 구성 / 16진수 1자리를 표현하기에 적합
- 바이트 : 문자를 표현하는 최소 단위 / 8개의 비트가 모여 1바이트를 구성
- 워드 : CPU가 한 번에 처리할 수 있는 명령 단위
- 필드 : 파일 구성의 최소 단위 / 의미 있는 정보를 표현하는 최소 단위
- 레코드 : 하나 이상의 관련된 필드가 모여서 구성됨
- 블록 : 하나 이상의 논리 레코드가 모여서 구성됨
- 파일 : 프로그램 구성의 기본 단위로, 여러 레코드가 모여서 구성됨
- 데이터베이스 : 여러 개의 관련된 파일의 집합
📌 ISO/IEC 25000
- 소프트웨어 품질 평가를 위한 소프트웨어 품질평가 통합 모델 표준
- 줄여서 SQuaRE라고도 함
- ISO/IEC 2501n → 소프트웨어의 내부 및 외부 품질과 사용 품질에 대한 모델 등 품질 모델
- ISO/IEC 2502n → 소프트웨어의 내부 측정, 외부 측정, 사용 품질 측정, 품질 측정 요소 등 품질 측정
- 기존 소프트웨어 품질 평가 모델과 소프트웨어 평가 절차 모델인 ISO/IEC 9126과 14598 통합
📌 테스트 케이스 (자동) 생성 도구
- 자료흐름도
- 기능 테스트
- 랜덤 테스트
- 입력 도메인 분석
📌 테스트 오라클
- 참 오라클 : 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클 → 발생한 모든 오류를 검출할 수 있음
- 샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력값들에 대해서만 기대하는 결과를 제공하는 오라클
- 추정(휴리스틱) 오라클 : 샘플링 오라클을 개선한 오라클 → 특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공, 나머지 입력 값들에 대해서는 추정으로 처리
- 일관성 검사(Consistent) 오라클 : 애플리케이션의 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과값이 동일한지를 확인하는 오라클
📌 IPSec(IP Security)
- 암호화 & 복호화가 모두 가능한 양방향 암호 방식
- ESP는 발신지 인증, 데이터 무결성, 기밀성 모두를 보장
- 운영 모드는 Tunnel 모드와 Transport 모드로 분류됨
- AH는 발신지 호스트를 인증, IP 패킷의 무결성을 보장
📌 연결 리스트(Linked List)
- 자료들을 반드시 연속적으로 배열시키지는 않고 임의의 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료 구조
- 노드의 삽입이나 삭제가 쉬움
- 노드들이 포인터로 연결됨 → 노드를 찾아가는 시간이 필요 → 선형 리스트에 비해 검색 속도 느림
- 연결을 해주는 포인터를 위한 추가 공간이 필요
- 연결 리스트 중에서 중간 노드 연결이 끊어지면 그 다음 노드를 찾기 힘듦
📌 N-S 차트(Nassi-Schneiderman Chart, 박스 차트, Chapin Chart)
- 논리의 기술에 중점을 두고 도형을 이용한 표현 방법(프로그램 설계도)
- 이해하기 쉽고 코드 변환이 용이
- GOTO나 화살표 사용 X
- 연속, 선택, 반복 등의 제어 논리 구조를 표현
- 읽기는 쉽지만 작성하기가 어려우며, 임의로 제어를 전이하는 것이 불가능
- 총체적인 구조 표현과 인터페이스를 나타내기 어려움
- 단일 입구와 단일 출구로 표현
📌 애플리케이션 테스트 관련 용어
- 살충제 패러독스
- 살충제를 지속적으로 뿌리면 벌레가 내성이 생겨서 죽지 않는 현상을 의미
- 애플리케이션 테스트에서는 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상
- 파레토 법칙
- 테스트로 발견된 80%의 오류는 20%의 모듈에서 발견된다는 법칙 → 결함 집중
- 오류-부재의 궤변
- 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할 수 없음
📌 EAI(Eneterprise Application Integration) 구축 유형
- Point-to-Point : 가장 기본적인 애플리케이션 통합 방식, 애플리케이션을 1:1로 연결 → 변경 및 재사용이 어려움
- Hub & Spoke : 단일 접점인 허브 시스템(중앙시스템인 허브가 미들웨어의 역할을 함)을 통해 데이터를 전송, 중앙 집중형 방식, 확장 및 유지보수가 용이 → 허브 장애 발생 시 시스템 전체에 영향을 미침
- Message Bus(ESB 방식) : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식 → 확장성이 뛰어나며 대용량 처리가 가능
- Hybrid : Hub & Spoke 와 Message Bus의 혼합 방식
📌 소프트웨어 품질 표준
- ISO/IEC 9126 : 소프트웨어 품질 특성과 평가를 위한 표준 지침
- ISO/IEC 12119 : ISO/IEC 9126을 준수한 품질 표준 + 테스트 절차도 규정
- ISO/IEC 14598 : 소프트웨어 품질의 측정, 평가에 필요한 절차를 규정한 표준 + 개발자, 구매자, 평가자 별로 제품 평가 활동 등을 규정
- ISO/IEC 25000 : ISO/IEC 9126을 개정 → 소프트웨어 제품에 대한 국제 표준, 호환성과 보안성 강화
📌 알고리즘 설계 기법
- 분할 정복/분할 통치(Divide and Conquer) : 큰 문제를 보다 작은 문제로 분할하여 해결하는 전략
- 동적 계획법(Dynamic Programming) : 아래 단계의 간단한 문제부터 해결하면서 점차 상위로 나아가는 상향식 접근 방식
- 탐욕 알고리즘(Greedy Algorithm) : 완벽한 해결책 보다는 차선책을 목표로 하며, 상황에 맞지 않는 해결책을 즉석에서 모색하는 방식
- 백트래킹(Backtracking) : 깊이 우선 탐색 알고리즘을 이용한 기법, 문제 해결을 위한 모든 가능성을 트리로 구축하는 방식
📌 트리 운행법
- Preorder(전위) : root- left - right
- Inorder(중위) : left - root - right
- Postorder(후위) : left - right - root
'자격증 > 정보처리기사' 카테고리의 다른 글
정보처리기사 실기 | 2024년 수제비 FINAL 모의고사 개념 정리(484개) (2) | 2024.07.24 |
---|---|
정보처리기사 필기 요약 정리 | 5과목 정보시스템 구축관리 (0) | 2024.06.17 |
정보처리기사 필기 요약 정리 | 4과목 프로그래밍 언어 활용 (0) | 2024.05.27 |
정보처리기사 필기 요약 정리 | 3과목 데이터베이스 구축 (0) | 2024.05.27 |
정보처리기사 필기 요약 정리 | 1과목 소프트웨어 설계 (0) | 2024.05.21 |