1 애플리케이션 테스트 케이스 설계
1 테스트 케이스
1 개념
특정 요구사항을 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과의 집합
2 작성 절차
- 테스트 계획 검토 및 자료 확보
- 위험 평가 및 우선순위 결정
- 테스트 요구사항 정의
- 테스트 구조 설계 및 테스트 방법 결정
- 테스트 케이스 정의
- 테스트 케이스 타당성 확인 및 유지보수
3 테스트 오라클
1 개념
테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
2 종류
- 참 오라클: 모든 입력값에 대하여 기대하는 결과 생성
- 샘플링 오라클: 특정 입력값에 대해서만 기대하는 결과 제공
- 휴리스틱 오라클: 샘플링 오라클 개선, 나머지 값들에 대해서는 추정하여 처리
- 일관성 검사 오라클: 애플리케이션 변경이 있을 때, 일관성 확인
2 테스트 레벨
1 개념
함께 편성되고 관리되는 테스트 활동의 그룹
각각의 테스트 레벨은 독립적
2 종류
- 단위 테스트
- 통합 테스트
- 시스템 테스트
- 인수 테스트
3 테스트 시나리오
1 개념
테스트 케이스 집합
2 작성 시 유의점
- 테스트 시나리오 분리 작성
- 고객의 요구사항과 설계 문서 등을 토대로 테스트 시나리오 작성
4 테스트 지식 체계
1 소프트웨어 테스트 종류
- 블랙박스 테스트
- 화이트 박스 테스트
- 경험 기반 테스트
2 소프트웨어 테스트 원리
- 테스팅은 결함이 존재함을 밝히는 것
- 완벽한 테스팅은 불가능
- 개발 초기에 테스팅 시작
- 결함 집중
- 살충제 패러독스
- 테스팅은 정황에 의존적
- 오류-부재의 궤변
2 애플리케이션 통합 테스트
1 결함 관리 도구
1 개념
각 단계별 테스트 수행 후 발생한 결함의 재발 방지를 위해 유사 결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 도구
2 결함 관리 프로세스
- 에러 발견
- 에러 등록
- 에러 분석
- 결함 확정
- 결함 할당
- 결함 조치
- 결함 조치 검토 및 승인
3 결함 추이 분석
1 개념
테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 결함을 추정하는 작업
2 유형
- 결함 분포 분석
- 결함 추세 분석
- 결함 에이징 분석
4 테스트 커버리지
1 개념
주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준
2 유형
- 기능 기반 커버리지
- 라인 커버리지
- 코드 커버리지
3 종류
- 구문 커버리지
- 결정 커버리지
- 조건 커버리지
- 변경 조건/결정 커버리지
5 결함 식별
- 기획 시 유입되는 결함
- 설계 시 유입되는 결함
- 코딩 시 유입되는 결함
- 테스트 부족으로 유입되는 결함
단계별 결함 유입별 분류
- 치명적 결함
- 주요 결함
- 보통 결함
- 경미한 결함
- 단순 결함
결함 심각도별 분류
- 치명적 결함
- 주요 결함
- 보통 결함
- 경미한 결함
- 단순 결함
결함 우선순위
- 결정적
- 높음
- 보통
- 낮음
6 결함 관리 항목
- 결함 내용
- 결함 ID
- 결함 유형
- 발견일
- 심각도
- 우선순위
- 시정 조치 예정일
- 수정 담당자
- 재테스트 결화
- 종료일
2 테스트 자동화 도구
1 개념
테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써 테스트 시간 단축과 인력 투입 비용을 최소화하는 한편, 쉽고 효율적인 테스트를 수행할 수 있는 방법
2 장단점
장점
- 반복 작업 자동화
- 사용자 요구 기능의 일관성 검증
- 객관적인 평가 기준
- 테스트 결과의 다양한 표시 형태 제공
- 정밀한 테스트
단점
- 도구 도입 후 도구 사용 방법에 대한 교육 및 학습
- 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력 필요
- 상용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자 필요
3 유형
정적 분석 도구
애플리케이션을 실행하지 않고 분석하는 방법
소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위하여 사용
테스트 실행 도구
테스트를 위해 작성된 스크립트를 실행
- 데이터 주도 접근 방식
- 키워드 주도 접근 방식
성능 테스트 도구
애플리케이션의 가상의 사용자를 생성하여 테스트
테스트 통제 도구
- 테스트 관리 도구: 테스트 계획 및 관리
- 형상 관리 도구: 테스트 수행에 필요한 데이터와 도구를 관리
- 결함 추적 / 관리 도구: 테스트에서 발생한 결함에 대해 관리하거나 협업을 지원
테스트 장치
개념
애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분
구성요소
- 테스트 드라이버: 상향식 테스트에 필요
- 테스트 스텁: 하향식 테스트에 필요
- 테스트 슈트: 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
- 테스트 케이스: 입려값, 실행 조건, 기대 결과 등의 집합
- 테스트 스크립트: 자동화된 테스트 실행 절차
- 목 오브젝트: 사용자의 행위를 조건부로 사전에 입력해 두면, 상황에 예정된 행위를 수행
테스트 단계별 테스트 자동화 도구
- 테스트 계획: 요구사항 관리
- 테스트 분석 / 설계: 테스트 케이스 생성
- 테스트 수행: 테스트 자동화, 정적 분석, 동적 분석, 성능 테스트, 모니터링
- 테스트 관리: 커버리지 측정, 형상 관리, 결함 추적 / 관리
3 통합 테스트
1 개념
소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법
단위 테스트가 끝난 프로그램이 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인
2 수행 방법의 분류
테스트 방안 | 빅뱅 | 상향식 | 하향식 |
---|---|---|---|
테스트 수행 방법 | 모든 모듈을 동시에 통합 후 테스트 수행 | 최하위 모듈부터 점진적으로 테스트 | 최상위 모듈부터 통합하면서 테스트 |
드라이버 / 스텁 | 드라이버 / 스텁 없이 실제 모듈로 테스트 | 테스트 드라이버 필요 | 테스트 스텁 필요 |
장점 | 단시간 테스트 가능, 작은 시스템에 유리 | 장애 위치 파악 쉬움, 모든 모듈 개발 시간 필요 X | 장애 위치 파악 쉬움, 중요 모듈의 선테스트 가능, 이른 프로토 타입 |
단점 | 장애 위치 파악 어려움, 모든 모듈이 개발되어야 가능 | 중요 모듈이 마지막에 테스트, 이른 프로토타입 어려움 | 많은 스텁 가능, 하위 모듈의 불충분한 테스트 |
* 스텁: 모듈 및 하위 컴포넌트를 대신하여 더미 모듈
* 드라이버: 상위 모듈에서 데이터 입출력을 확인하기 위한 더미 모듈
3 애플리케이션 성능 개선
1 알고리즘
1 개념
자료 구조와 함께 프로그램을 구성하는 문제에 대한 답을 찾는 해법
2 특성
- 입력
- 출력
- 명확성
- 유한성
- 유효성
3 기법
- 분할 정복
- 동적계획법
- 탐용법
- 백트래킹
4 시간 복잡도에 따른 알고리즘 분류
- O(1): 해시 함수
- O(logn): 이진 탐색
- O(n): 순차 탐색
- O(nlogn): 퀵 정렬, 병합 정렬
- O(n2): 버블 정렬, 삽입 정렬, 선택 정렬
2 소스 코드 품질 분석
1 개념
2 도구 유형
- 정적 분석 도구
- 동적 분석 도구: 메모리 누수 현황을 발견하고, 발생한 스레드의 결함 등을 분석
3 도구
- 정적 분석 도구: pmd, cppcheck, SonarQube, checkstyle
- 코드 복잡도: ccm, cobertura
- 동적 분석 도구: Avalanche, Valgrind
3 코드 최적화
1 개념
클린 코드를 작성하는 것
2 클린 코드
1 개념
잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드
2 특징
- 중복 코드 제거
- 가독성
- 쉬운 버그 찾기, 빠른 프로그래밍 속도
3 유형
- 의미 있는 이름
- 간결하고 명확한 주석
- 보기 좋은 배치
- 작은 함수
- 읽기 쉬운 제어 흐름
- 오류 처리
3 베드 코드
1. 개념
- 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
- 스파게티 코드, 이름 정의를 알 수 없는 코드, 동일한 처리 로직이 중복되게 작성된 코드
2 유형
- 오염
- 문서 부족
- 의미 없는 이름
- 높은 결합도
- 아키텍처 침식
'자격증 > 정보처리기사' 카테고리의 다른 글
정보처리기사 필기 3. 데이터베이스 구축 - Chapter 2. SQL 활용 (0) | 2020.08.18 |
---|---|
정보처리기사 필기 3. 데이터베이스 구축 - Chapter 1. SQL 응용 (0) | 2020.08.18 |
정보처리기사 필기 2. 소프트웨어 개발 - Chapter 3. 제품 소프트웨어 패키징 (0) | 2020.08.18 |
정보처리기사 필기 2. 소프트웨어 개발 - Chapter 2. 통합 구현 (0) | 2020.08.18 |
정보처리기사 필기 2. 소프트웨어 개발 - Chapter 1. 데이터 입출력 구현 (0) | 2020.08.18 |