1. 애플리케이션 테스트 케이스 설계
< 테스트 케이스 >
- 테스트 케이스 : 특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과의 집합
- 테스트 케이스 구성요소 : 식별자 / 테스트 항목 / 입력명세 / 출력명세 / 환경설정 / 특수절차요구 / 의존성 기술
- 테스트 오라클 : 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
- 테스트 오라클 종류 :
참 오라클 | 발생된 오류를 모두 검출할 수 있는 오라클 |
샘플링 오라클 | 특정한 몇 개의 입력값에 대해서만 기대한느 결과를 제공해주는 오라클 |
휴리스틱 오라클 | 특정 입력값에 대해 올바른 결과를 제공하고, 나머지 값들에 대해서는 휴리스틱으로 처리한느 올아클 |
일관성 검사 오라클 | 애플리케이션 변경이 있을 때, 수행 전과 후의 결괏값이 동일한지 확인하는 오라클 |
- 테스트 레벨 : 함께 편셩되고 관리되는 테스트 활동의 그룹
- 테스트 레벨 종류 : 단위 테스트 / 통합 테스트 / 시스템 테스트 / 인수 테스트
- 테스트 시나리오 : 애플리케이션의 테스트되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서
< 테스트 지식 체계 >
- 소프트웨어 테스트 종류 :
프로그램 실행 여부에 따른 분류 | - 정적 테스트 : 동료 검토 / 워크 스루 / 인스펙션 - 동적 테스트 : 화이트박스 테스트, 블랙박스 테스트, 경험기반 테스트 |
테스트 기법에 따른 분류 | - 화이트박스 테스트 : 구문 커버리지 / 결정 커버리지 / 조건 커버리지 / 조건,결정 커버리지 / 변경 조건,결정 커버리지 / 다중 조건 커버리지 / 기본 경로 커버리지 / 제어 흐름 테스트 / 데이터 흐름 테스트 - 블랙박스 테스트 : 동등 분할 테스트 / 경곗값 분석 테스트 / 결정 테이블 테스트 / 상태전이 테스트 / 유스케이스 테스브 / 분류 트리 테스트 / 페어와이즈 테스트 / 원인,결과 그래프 테스트 / 비교 테스트 |
테스트 시각에 따른 분류 | - 검증 - 확인 |
테스트 목적에 따른 분류 | 회복 / 안전 / 성능(부하, 스트레스, 스파이크, 내구성) / 구조 / 회귀 / 병행 |
테스트 종류에 따른 분류 | 명세 기반 테스트 / 구조 기반 테스트 / 경험 기반 테스트 |
- 소프트웨어 테스트의 원리 : 결함이 존재 / 완벽한 테스팅 불가능 / 초기에 테스팅 시작 / 결함 집중 / 살충제 패러독스 / 정황에 의존 / 오류 부재의 궤변
2. 애플리케이션 통합 테스트
< 결함 관리 도구 >
- 결함 관리 도구 : 단계별 테스트 수행 수 발생한 결함의 재발 방지를 위해, 유사 결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 도구
- 결함 관리 프로세스 : 에러 발견 / 에러 등록 / 에러 분석 / 결함 확정 / 결함 할당 / 결함 조치 / 결함 조치 검토 및 승인
- 결함 추이 분석 : 테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 어떤 모듈 또는 컴포넌트에서 결함이 발생할지를 추정하는 작업
- 결함 추이 유형 : 결함 분포 분석 / 결함 추이 분석 / 결함 에이징 분석
- 테스트 커버리지 : 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준
- 테스트 커버리지 유형 : 기능 기반 커버리지 / 라인 커버리지 / 코드 커버리지(구문 / 결정 / 조건 / 조건,결정 / 변경 조건,결정 / 다중 조건)
- 결함의 식별 : 에러, 오류 / 결함, 결점, 버그 / 실패, 문제
- 결함 심각도별 분류 : 치명적 결함 -> 주요 결함 -> 보통 결함 -> 경미한 결함 -> 단순 결함
- 결함 우선순위 : 결정적 -> 높음 -> 보통 -> 낮음
< 테스트 자동화 도구 >
- 테스트 자동화 도구 : 테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써 테스트 시간 단축과 인력 투입 비용을 최소화하며, 쉽고 효율적인 테스트를 수행할 수 있는 방법
- 테스트 자동화 도구 유형 :
- 정적 분석 도구 : PMD, Checkstyle, Splint, Cppcheck, SonarQube
- 테스트 실행 도구 : 스크립트를 실행하는 도구. 데이터 주도 접근 방식과 키워드 주도 접근 방식으로 나뉨. JMeter, OpenSTA,
- 성능 테스트 도구 : Cobertura, Clover
- 테스트 통제 도구 : Hudson, Ant, xUnit
- 테스트 장치 : 애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말함
- 테스트 장치 구성요소 : 테스트 드라이버 / 테스트 스텁 / 테스트 슈트 / 테스트 케이스 / 테스트 시나리오 / 테스트 스크립트 / 목 오브젝트
< 통합 테스트 >
- 통합 테스트 : 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트
- 수행 방법의 분류 : 하향식 통합 테스트 / 상향식 통합 테스트 / 샌드위치 통합 테스트 / 빅뱅
하향식 통합 테스트 | - 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하는 테스트 - 깊이-우선, 너비-우선 - 스텁 |
상향식 통합 테스트 | - 최하위 레벨의 모듈 또는 컴포넌트로부터 점진적으로 상위 모듈과 함께 테스트하는 기법 - 드라이버 |
3. 애플리케이션 성능 개선
< 알고리즘 >
- 알고리즘 : 어떠한 문제를 해결하기 위한 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 기법
- 특성 : 입력, 출력, 명확성, 유한성, 유효성
- 기법 : 분할과 정복 / 동적 계획법 / 탐욕법 / 백트랙킹
해싱함수 | 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 |
거품 정렬 | 두 인접한 원소를 검사하여 정렬하는 방법 |
삽입 정렬 | 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하며, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘 |
선택 정렬 | 가장 작은 데이터를 찾아 정렬되지 않은 부분의 가장 앞의 데이터와 교환해나가는 알고리즘 |
< 소스 코드 품질 분석 >
- 소스 코드 품질 분석 : 소스 코드에 대한 코딩 스타일, 설정된 코딩 표준, 코드의 복잡도 등을 발견하기 위한 활동
- 유형 : 정적 분석 도구(pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura) / 동적 분석 도구(Avalanche, Valgrind)
- 소스 코드 복잡도 분석 : 맥케이브 회전 복잡도
< 코드 최적화 >
- 코드 최적화 : 읽기 쉽고 변경 및 추가가 쉬운 클린 코드를 작성하는 것
- 클린 코드 작성 원칙 : 가독성 / 단순성 / 의존성 최소 / 중복성 제거 / 추상화
'8. 자격증 > 8-1. 정보처리기사' 카테고리의 다른 글
정처기 3-1. SQL 응용 / 3-2. SQL 활용 (0) | 2021.08.09 |
---|---|
정처기 2-5. 인터페이스 구현 (0) | 2021.08.05 |
정처기 2-3. 제품 소프트웨어 패키징 (0) | 2021.08.03 |
정처기 2-2. 통합 구현 (0) | 2021.08.01 |
정처기 2-1. 데이터 입출력 구현 (0) | 2021.08.01 |