7-6. 테스트 케이스 / 테스트 시나리오 / 테스트 오라클
• 테스트 케이스 (Test Case)
사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 테스트 항목에 대한 명세서
‣ 개발한 소프트웨어가 제대로 작동하는지를 확인하기 위한 데이터나 실행 조건 등의 집합
‣ 입력 값, 실행 조건, 기대 결과 등
• 테스트 시나리오 (Test Scenario)
테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스를 묶은 집합
‣ 테스트 케이스를 적용하는 구체적인 절차 명세
‣ 순서에 대한 구체적인 절차, 사전 조건, 입력 데이터 등
• 테스트 오라클 (Test Oracle)
테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법
‣ 예상 결과를 계산하거나 확인
- 테스트 오라클의 특징
| 제한된 검증 | 테스트 오라클은 모든 테스트 케이스에 적용할 수 없음 |
| 수학적 기법 | 테스트 오라클의 값을 수학적 기법을 이용해 구할 수 있음 |
| 자동화 기능 | 테스트 대상 프로그램의 실행, 결과 비교, 커버리지 측정 등을 자동화 할 수 있음 |
- 테스트 오라클의 종류
| 참(True) 오라클 | 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클 |
| 발생된 모든 오류를 검출할 수 있음 | |
| 샘플링(Sampling) 오라클 | 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클로 전수 테스트가 불가능한 경우에 사용 |
| 추정(Heuristic) 오라클 | 특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리하는 오라클 |
| 일관성 검사(Consistent) 오라클 | 애플리케이션에 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과값이 동일한지 확인하는 오라클 |
7-7. 테스트 자동화 도구
• 테스트 자동화
쉽고 효율적으로 테스트를 수행할 수 있도록 한 것
- 테스트 유형에 따른 테스트 자동화 도구의 종류
| 정적 분석 도구 (Static Analysis Tool) |
프로그램을 실행하지 않고 분석하는 도구 | |
| 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함 등 발견 | ||
| 테스트 실행 도구 (Test Excution Tools) |
스크립트 언어를 사용해 테스트를 실행하는 도구 | |
| 테스트 데이터와 테스트 수행 방법 등이 포함된 스크립트를 작성한 후 실행 | ||
| 데이터 주도 접근 방식 | 스프레드 시트에 테스트 데이터를 저장하고, 이를 읽어 실행하는 방식 | |
| 키워드 주도 접근 방식 | 스프레드 시트에 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 저장하여 실행하는 방식 |
|
| 성능 테스트 도구 (Performance Test Tools) |
가상의 사용자를 만들어 테스트를 수행함으로써, 성능의 목표 달성 여부를 확인 | |
| 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률 등 | ||
| 테스트 통제 도구 (Test Control Tools) |
테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구 | |
| 종류 : 형상 관리 도구, 결함 추적/관리 도구 등 | ||
• 테스트 하네스 도구 (Test Harness Tools)
테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트되도록 하는 도구
✓ 테스트 하네스 (Test Harness)
애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분
테스트를 지원하기 위해 생성된 코드와 데이터를 의미
- 테스트 하네스의 구성 요소
| 테스트 드라이버 (Test Driver) |
테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출하는 도구 |
| 테스트 스텁 (Test Stub) |
제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈 |
| 테스트 슈트 (Test Suites) |
테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합 |
| 테스트 케이스 (Test Case) |
사용자의 요구사항을 정확하게 준수했는지 확인하기 위한 입력 값, 실행 조건, 기대 결과 등으로 만들어진 테스트 항목의 명세서 |
| 테스트 스크립트 (Test Script) |
자동화된 테스트 실행 절차에 대한 명세서 |
| 목 오프젝트 (Mock Object) |
사전에 사용자의 행위를 조건부로 입력해 두면, 그 상황에 맞는 예정된 행위를 수행하는 객체 |
✓ 테스트 슈트와 테스트 시나리오의 차이
둘 다 테스트 케이스의 묶음이지만,
테스트 슈트가 여러 개의 테스트 케이스의 단순한 묶음이라면
테스트 시나리오는 테스트 케이스의 동작 순서에 따른 묶음이다.
• 테스트 수행 단계별 테스트 자동화 도구
| 테스트 단계 | 자동화 도구 | 설명 |
| 테스트 계획 | 요구사항 관리 | 사용자의 요구사항 정의 및 변경 사항 등을 관리하는 도구 |
| 테스트 분석/설계 | 테스트 케이스 생성 | 테스트 기법에 따른 테스트 데이터 및 테스트 케이스 작성을 지원하는 도구 |
| 테스트 수행 | 테스트 자동화 | 테스트의 자동화를 도와주는 도구로 테스트의 효율성을 높임 |
| 정적 분석 | 코딩 표준, 런타임 오류 등을 검증하는 도구 | |
| 동적 분석 | 대상 시스템의 시뮬레이션을 통해 오류를 검출하는 도구 | |
| 성능 테스트 | 가상의 사용자를 생성하여 시스템의 처리 능력을 측정하는 도구 | |
| 모니터링 | CPU, Memory 등과 같은 시스템 자원의 상태 확인 및 분석을 지원하는 도구 | |
| 테스트 관리 | 커버리지 분석 | 테스트 완료 후 테스트의 충분성 여부 검증을 지원하는 도구 |
| 형상 관리 | 테스트 수행에 필요한 다양한 도구 및 데이터를 관리하는 도구 | |
| 결함 추적/관리 | 테스트 시 발생한 결함 추적 및 관리 활동을 지원하는 도구 |
7-8. 결함 관리
• 결함 (Fault)
소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것을 의미
• 결함 관리 프로세스
발생한 결함의 처리 과정
| 결함 관리 계획 | 전체 프로세스에 대한 결함 관리 일정, 인력, 업무 프로세스 등을 확보해 계획을 수립 |
| ↓ | |
| 결함 기록 | 테스터는 발견된 결함을 결함 관리 DB에 등록 |
| ↓ | |
| 결함 검토 | 테스터, 프로그램 리더, 품질 관리 담당자 등은 등록된 결함을 검토하고 결함을 수정할 개발자에게 전달 |
| ↓ | |
| 결함 수정 | 개발자는 전달받은 결함을 수정 |
| ↓ | |
| 결함 재확인 | 테스터는 개발자가 수정한 내용을 확인하고 다시 테스트를 수행 |
| ↓ | |
| 결함 상태 추적 및 모니터링 활동 | 결함 관리 DB를 이용해 프로젝트별 결함 유형, 발생률 등을 한 눈에 볼 수 있는 대시보드 또는 게시판 형태의 서비스를 제공 |
| ↓ | |
| 최종 결함 분석 및 보고서 작성 | 발견된 결함에 대한 정보와 이해 관계자들의 의견이 반영된 보고서를 작성하고 결함 관리를 종료 |
• 결함 상태 추적
- 결함 관리 측정 지표
| 결함 분포 | 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함 수 측정 |
| 결함 추세 | 테스트 진행 시간에 따른 결함 수의 추이 분석 |
| 결함 에이징 | 특정 결함 상태로 지속되는 시간 측정 |
• 결함 추적 순서
| 결함 등록 (Open) | 테스터와 품질 관리 담당자에 의해 발견된 결함이 등록된 상태 |
| ↓ | |
| 결함 검토 (Reviewed) | 등록된 결함이 테스터, 품질 관리 담당자, 프로그램 리더, 담당 모듈 개발자에 의해 검토된 상태 |
| ↓ | |
| 결함 할당 (Assigned) | 결함을 수정하기 위해 개발자와 문제 해결 담당자에게 결함이 할당된 상태 |
| ↓ | |
| 결함 수정 (Resolved) | 개발자가 수정을 완료한 상태 |
| ↓ | |
| 결함 조치 보류 (Deferred) | 결함의 수정이 불가능해 연기된 상태로, 우선순위∙일정 등에 따라 재오픈을 준비중인 상태 |
| ↓ | |
| 결함 종료 (Closed) | 결함이 해결되어 테스터와 품질 관리 담당자가 종료를 승인한 상태 |
| ↓ | |
| 결함 해제 (Clarified) | 테스터, 프로그램 리더, 품질 관리 담당자가 종료 승인한 결함을 검토해 결함이 아니라고 판명한 상태 |
• 결함 분류
| 시스템 결함 | 애플리케이션 환경이나 데이터 베이스 처리에서 발생된 결함 |
| 기능 결함 | 애플리케이션의 기획, 설계, 업무 시나리오 등의 단계에서 유입된 결함 |
| GUI 결함 | 사용자 화면 설계에서 발생된 결함 |
| 문서 결함 | 기획자, 사용자, 개발자 간의 의사소통 및 기록이 원활하지 않아 발생된 결함 |
• 결함 심각도
애플리케이션에 발생한 결함이 전체 시스템에 미치는 치명도를 나타내는 척도
‣ High - Medium - Low
‣ 치명적(Critical) - 주요(Major) - 보통(Normal) - 경미(Minor) - 단순(Simple) 등
• 결함 우선순위
발견된 결함 처리에 신속성을 나타내는 척도
‣ 결함의 중요도와 심각도에 따라 설정되고 수정 여부가 결정됨
‣ 즉시 해결, 주의 요망, 대기, 개선 권고 등
• 결함 관리 도구
| Mantis | 결함 및 이슈 관리 도구로, 소프트웨어 설계 시 단위별 작업 내용을 기록할 수 있어 결함 추적도 가능한 도구 |
| Trac | 결함 추적뿐만 아니라 결함을 통합해 관리할 수 있는 도구 |
| Redimine | 프로젝트 관리 및 결함 추적이 가능한 도구 |
| Bugzilla | 결함 신고, 확인, 처리 등 결함을 지속적으로 관리할 수 있는 도구 |
| 결함의 심각도와 우선 순위를 지정할 수 있음 |
7-9. 애플리케이션 성능 분석
• 애플리케이션 성능
최소한의 자원을 사용해 최대한 많은 기능을 신속하게 처리하는 정도
- 애플리케이션 성능 측정 지표
| 처리량 (Throughput) |
일정 시간 내에 애플리케이션이 처리하는 일의 양 |
| 응답 시간 (Response Time) |
애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때 까지 걸린 시간 |
| 경과 시간 (Turn Around Time) |
애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때 까지 걸린 시간 |
| 자원 사용률 (Resource Usage) |
애플리케이션이 의뢰한 작업을 처리하는 동안의 CPU 사용량, 메모리 사용량, 네트워크 사용량 등 자원 사용률 |
• 성능 테스트 도구
애플리케이션에 부하나 스트레스를 가하면서 애플리케이션의 성능 측정 지표를 점검하는 도구
- 성능 테스트 도구의 종류
| 도구명 | 도구 설명 | 지원 환경 |
| JMeter | HTTP, FTP 등 다양한 프로토콜을 지원하는 부하 테스트 도구 | Cross-Platform |
| LoadUI | 서버 모니터링, Drag&Drop 등 사용자의 편리성이 강화된 부하 테스트 도구 | Corss-Platform |
| HTTP, JDBC 등 다양한 프로토콜 지원 | ||
| OpenSTA | HTTP, HTTPS 프로토콜에 대한 부하 테스트 및 생산품 모니터링 도구 | Windows |
• 시스템 모니터링 (Monitoring) 도구
애플리케이션이 실행되었을 때 시스템 자원의 사용량을 확인하고 분석하는 도구
- 시스템 모니터링 도구의 종류
| 도구명 | 도구 설명 | 지원 환경 |
| Scouter | 단일 뷰 통합/실시간 모니터링, 튜닝에 최적화된 인프라 통합 모니터링 도구 | Closs-Platform |
| 애플리케이션의 성능을 모니터링/통제하는 도구 | ||
| Zabbix | 웹기반 서버, 서비스, 애플리케이션 등의 모니터링 도구 | Closs-Platform |
'Study > 정보처리기사' 카테고리의 다른 글
| 정보처리기사 실기 7장. 애플리케이션 테스트 관리_4 (0) | 2023.09.26 |
|---|---|
| 정보처리기사 실기 7장. 애플리케이션 테스트 관리_2 (0) | 2023.09.26 |
| 정보처리기사 실기 7장. 애플리케이션 테스트 관리_1 (0) | 2023.09.26 |
| 정보처리기사 실기 4장. 서버 프로그램 구현_5 (2) | 2023.09.25 |
| 정보처리기사 실기 4장. 서버 프로그램 구현_4 (1) | 2023.09.25 |