Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- reivew
- 정보처리기사
- 웹해킹
- 자격증공부
- 리눅스마스터2급
- 보안용어
- 리눅스
- Shell
- 워게임
- 기록
- 케이쉴드주니어
- 클라우드
- wargame
- study
- Linux
- 정리
- Review
- 드림핵
- it자격증
- 위험관리
- 복습
- 보안
- DreamHack
- 공부
- webhacking
- keyword
- IT
- Security
- 취약점진단
- 자격증
Archives
- Today
- Total
IT Memory Note
[정보처리기사] 애플리케이션 테스트 관리 : 애플리케이션 테스트 케이스 설계(1) 본문
1️⃣ 애플리케이션 테스트 케이스 작성
☆☆☆
(1) 소프트웨어 테스트의 이해
1. 소프트웨어 테스트의 개념
- 개발된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고, 노출되지 않은 숨어있는 소프트웨어의 결함을 찾아내는 활동
2. 소프트웨어 테스트 필요성
구분 | 설명 |
오류 발견 관점 | 프로그램에 잠재도니 오류를 발견하고 이를 수정하여 올바른 프로그램을 개발하기 위해 필요 |
오류 예방 관점 | 프로그램 실행 전에 동료 검토, 워크스루, 인스펙션 등을 통해 오류를 사전에 발견하는 예방 차원의 필요 |
품질 향상 관점 | 사용자의 요구사항 밒 기대 수준을 만족하도록 반복적인 테스트를 거쳐 제품의 신뢰도를 향상하는 품질 보등을 위해 필요 |
3. 소프트웨어 테스트의 기본 원칙
⓵ 소프트웨어 테스트 원리
원리 | 설명 |
결함 존재 증명 | • 테스트는 결함이 존재함을 밝히는 활동 • 결함이 없다는 것을 증명할 수 없음 |
완벽 테스팅은 불가능 | 무한 경로(한 프로그램 내의 내부 조건은 무수히 많을 수 있음), 무한 입력값(입력이 가질 수 있는 모든 값의 조합이 무수히 많음)으로 인한 완벽한 테스트가 어렵다는 원리 |
초기 집중 | • 개발 초기에 체계적인 분석 및 설계가 수행되면 테스팅 기간 단축, 재작업을 줄여 개발 기간을 단축 및 결함을 예방할 수 있는 원리 • SW 개발 초기 체계적인 분석 및 설계가 수행되지 못하면 그 결과가 프로젝트 후반에 영향을 미치게 되어 비용이 커진다는 요르돈 법칙 적용(Snowball Effect, 눈덩이 법칙) |
결함 집중 | • 적은 수의 모듈(20% 모듈)에서 대다수 결함(80% 결함)이 발견된다는 원리 • 파레토 법칙(Pareto Principle)의 내용인 80 대 20 법칙 적용 |
살충제 패러독스 | 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못한다는 원리 |
정황 의존성 | 소프트웨어의 성격에 맞게 테스트를 수행해야 한다는 원리 |
오류-부재의 궤변 | 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼 수 없다는 원리 |
⓶ 소프트웨어 테스트 산출물
산출물 | 설명 |
테스트 계획서 (Test Plan) |
테스트 목적과 범위 정의, 대상 시스템 구조 파악, 테스트 수행 절차, 테스트 일정, 조직의 역할 및 책임 정의, 종료 조건 정의 등 테스트 수행을 계획한 문서 |
테스트 베이시스 (Test Basis) |
분석, 설계 단계의 논리적인 케이스로 테스트 설계를 위한 기준이 되는 문서(요구사항 명세서, 관련 기준 또는 표준 등 |
테스트 케이스 (Test Case) |
테스트를 위한 설계 산출물로, 응용 소프트웨어가 사용자의 요구사항을 준수하는지 확인하기 위해 설계된 입력값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서 |
테스트 슈트 (Test Suites) |
• 테스트 케이스를 실행 환경에 따라 구분해 놓은 테스트 케이스의 집합 • 시나리오가 포함되지 않은 단순한 테스트 케이스들의 모음 |
테스트 시나리오 (Test Scenario) |
• 애플리케이션의 테스트가 되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서 • 하나의 단일 테스트 시나리오가 하나 또는 여러 개의 테스트 케이스들을 포함할 수 있음 • 테스트 시나리오가 테스트 케이스와 일대다의 관계를 가짐 |
테스트 스크립트 (Test Script) |
• 테스트 케이스의 실행 순서(절차)를 작성한 문서 • 테스트 스텝(Test Step), 테스트 절차서(Test Procedure)라고도 함 |
테스트 결과서 (Test Results) |
테스트 결과를 정리한 문서로 테스트 프로세스를 리뷰하고, 테스트 결과를 평가하고 리포팅하는 문서 |
■ 테스트 스크립트와 테스트 시나리오의 차이점
- 테스트 스크립트는 특정 기능에 대한 상세 절차이고, 테스트 시나리오는 사용자가 시스템을 사용하면서 만나게 되는 상황을 개략적으로 구성한 거라고 볼 수 있음
- 조금 더 상세하게 설명하면, 테스트 스크립트(=프로시저)는 테스트 아이템을 효율적으로 수행하기 위해 순차적으로 나열한 것이라고 이해하면 됨
- 온라인 쇼핑몰을 예로 들면 사용자가 특정 상품을 검색해서 결제까지 실행하는 테스트 아이템을 작성한다고 할 때 추출할 수 있는 테스트 아이템으로 '로그인', '상품검색', '장바구니 담', '주문', '결제'와 같은 것들이 있음
- 로그인부터 걸제까지 순차적으로 테스트가 진행되기 때문에 테스트를 수행하기 위해 테스트 스크립트가 중복되는 걸 최소화할 수 있어서 효율적인 테스트가 가능함
- 테스트 아이템을 확인하기 위해 유효한 또는 비유효한 테스트 케이스를 사용자가 조작 가능한 순서대로 구성한 것임
(2) 소프트웨어 테스크 유형
1. 프로그램 실행 여부에 따른 분류
분류 | 설명 | 유형 |
정적 테스트 | 테스트 대상을 실행하지 않고 구조를 분석하여 논리성을 검증하는 테스트 | 리뷰, 정적 분석 |
동적 테스트 | 소프트웨어를 실행하는 방식으로 테스트를 수행하여 결함을 검출하는 테스트 | 화이트박스 테스트, 블랙박스 테스트, 경험 기반 테스트 |
2. 테스트 기법에 따른 분류
⓵ 화이트박스 테스트(White-Box Test) : 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트
- 코드 분석과 프로그램 구조에 대한 지식을 바탕으로 문제가 발생할 가능성이 있는 모듈 내부를 테스트하는 방법
- 소스 코드의 모든 문장을 1번 이상 수행함으로써 진행되고, 산출물의 기능별로 적절한 프로그램의 제어 구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검함
- 내부 소스 코드의 동작을 개발자가 추적할 수 있기 때문에, 동작의 유효성뿐만 아니라 실행되는 과정을 확인할 수 있음
- 구조 기반 테스트, 코드 기반 테스트, 로직 기반 테스트, 글래스(Glass) 박스 테스트라고 부름
< 화이트박스 테스트 유형 >
유형 | 내용 |
구문 커버리지 = 문장 커버리지 (Statement Coverage) |
• 프로그램 내의 모든 명령문을 적어도 1번 수행하는 커버리지 • 조건문 결과와 관계없이 구문 실행 개수로 계산 |
결정 커버리지 = 선택 커버리지 (Decision Coverage) = 분기 커버리지(Branch Coverage) |
• 각 분기의 결정 포인트 내의 전체 조건식이 적어도 1번은 참(T)과 거짓(F)의 결과를 수행하는 테스트 커버리지 • 구문 커버리지를 포함 |
조건 커버리지 (Condition Coverage) |
• 각 분기의 결정 포인트 내의 각 개별 조건식이 적어도 1번은 참과 거짓의 결과가 되도록 수행하는 테스트 커버리지 • 구문 커버리지를 포함 |
조건/결정 커버리지 (Condition/Decision Coverage) |
전체 조건식뿐만 아니라 개별 조건식도 참 1번, 거짓 1번 결과가 되도록 수행하는 테스트 커버리지 |
변경 조건/결정 커버리지 (Modified Condition/ Decision Coverage) |
개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지 |
다중 조건 커버리지 (Multiple Condition Coverage) |
결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지 |
기본 경로 커버리지 = 경로 커버리지 (Base Path Coverage) |
• 수행 가능한 모든 경로를 테스트하는 기법 • 맥케이브의 순환 복잡도를 기반으로 커버리지를 계산함 |
제어 흐름 테스트 (Control Flow Testing) |
프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직을 테스트하는 기법 |
데이터 흐름 테스트 (Data Flow Testing) |
제어 흐름 그래프에 데이터 사용 현황을 추가한 그래프를 통해 테스트하는 기법 |
루프 테스트 (Loop Testing) |
프로그램의 반복(Loop) 구조에 초점ㅇ르 맞춰 실시하는 테스트 기법 |
■ 맥케이브(McCabe)의 순환 복잡도
㉮ 맥케이브의 순환 복잡도의 개념
- 제어 흐름의 복잡한 정보를 정량적으로 표시하는 기법
- 해당 제어 흐름 그래프에서 선형적으로 독립적인 경로의 수를 나타냄
㉯ 맥케이브의 순환 복잡도의 측정 방법
- 제어 흐름에 의한 그래프를 통하여 원시 코드의 회전 수를 구하여 복잡도를 계산함
구분 | 항목 | 설명 |
계산식 | V(G) = E - N + 2 | 복잡도 V(G)는 노드(N) 수와 간선(E) 수로 계산 |
V(G) = P + 1 | 복잡도 V(G)는 조건 분기문(P)의 수로 계산 | |
그래프 구성 |
Node |
프로세싱 태스크 표현 |
Edge |
태스크 간의 제어 흐름 표현 | |
그래프 표현 |
Sequence |
분기, 반복 없는 태스크 표현 |
White |
사전 조건에 의한 반복 제어 흐름 표현 | |
Until |
사후 조건에 의한 반복 제어 흐름 표현 | |
if-else |
조건 분기문에 의한 제어 흐름 표현 |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 애플리케이션 테스트 관리 : 애플리케이션 테스트 케이스 설계(3) (0) | 2024.09.01 |
---|---|
[정보처리기사] 애플리케이션 테스트 관리 : 애플리케이션 테스트 케이스 설계(2) (2) | 2024.09.01 |
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 구현(3) (2) | 2024.08.29 |
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 구현(2) (0) | 2024.08.29 |
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 구현(1) (0) | 2024.08.29 |