본문 바로가기
IT 자격증/정보처리기사 실기

[정보처리기사 실기] 07. 애플리케이션 테스트 관리 - 애플리케이션 테스트 케이스 설계

by 가든가든 2022. 10. 11.
728x90

애플리케이션 테스트 케이스 작성

소프트웨어 테스트 개념

- 개발된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안전성 등을 만족하는지 확인하고, 노출되지 않은 숨어있는 소프트웨어의 결함을 찾아내는 활동

소프트웨어 테스트 필요성

- 오류 발견 관점 : 프로그램에 잠재된 오류를 발견하고 이를 수정하여 올바른 프로그램을 개발하기 위해 필요

- 오류 예방 관점 : 프로그램 실행 전에 동료 검토, 워크 스루, 인스펙션 등을 통해 오류를 사전에 발견

- 품질 향상 관점 : 사용자의 요구사항 및 기대 수준을 만족하도록 반복적인 테스트를 거쳐 제품의 신뢰도를 향상하는 품질 보증을 위해 필요

소프트웨어 테스트 원리

- 결함 존재 증명 : 결함이 존재함을 밝히는 행동

- 완벽한 테스팅은 불가능 : 완벽하게 테스팅하려는 시도는 불필요한 시간과 자원낭비

- 초기 집중 : 테스팅 기간 단축, 재작업을 줄여 개발 기간 단축 및 결함 예방 / 요르돈의 법칙 적용(Snowball Effect, 눈덩이 법칙) : 개발 초기 체계적인 분석 및 설계가 수행되지 못하면 프로젝트 후반에 비용이 커짐

- 결함 집중 : 적은 수의 모듈에서 대다수의 결함이 발견됨 / 파레토 법칙(Pareto Principle)의 내용인 80 대 20 법칙 적용

- 살충제 패러독스 :  동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못 함

- 정황 의존성 : 소프트웨어의 성격에 맞게 테스트 실시

- 오류-부재의 궤변 : 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼 수 없음

소프트웨어 테스트 프로세스

테스트 계획 ➡ 테스트 분석 및 디자인 ➡ 테스트 케이스 및 시나리오 작성 ➡ 테스트 수행 ➡ 테스트 결과 및 리포팅

소프트웨어 테스트 산출물 (단답형 대비)

- 테스트 계획서 (Test Plan) : 테스트 목적과 범위 정의, 종료 조건 정의, 테스트 수행 절차 등 테스트 수행을 계획한 문서

- 테스트 베이시스 (Test Basis) : 분석, 설계 단계의 논리적인 Case로 테스트 설계를 위한 기준이 되는 문서

- 테스트 케이스 (Test Case) : 설계된 입력값, 실행 조건, 기대 결과로 구성된 테스트 형목의 명세서

- 테스트 슈트 (Test Suites) : 테스트 케이스를 실행환경에 따라 구분해 놓은 테스트 케이스의 집합

- 테스트 시나리오 (Test Scenario) : 테스트가 필요한 상황을 작성한 문서 / 테스트 시나리오가 테스트 케이스와 일 대 다의 관계를 가짐

- 테스트 스크립트 (Test Script) : 테스트 케이스의 실행 순서(절차)를 작성한 문서 / 테스트 스텝, 테스트 절차서라고도 함

- 테스트 결과서 (Test Results) : 테스트 결과를 정리한 문서

소프트웨어 테스트 유형

프로그램 실행 여부에 따른 분류

프로그램 실행 여부에 따라 정적 테스트와 동적 테스트로 나눌 수 있다

- 정적 테스트 : 테스트 대상을 실행하지 않고 구조전 분석하여 논리성을 검증하는 테스트 / 리뷰, 정적 분석

- 동적 테스트 : SW를 실행하는 방식으로 테스트를 수행하여 결함을 검출하는 테스트 / 화이트박스 테스트, 블랙박스 테스트, 경험기반 테스트

테스트 기법에 따른 분류

화이트박스 테스트(White-Box Test)

화이트박스 테스트는 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트이다.

- 코드 분석과 프로그램 구조에 대한 지식을 바탕으로 문제가 발생할 가능성이 있는 모듈 내부를 테스트하는 방법

- 소스코드의 모든 문장을 한 번 이상 수행함으로써 진행, 제어 구조에 따라 논리적 경로를 점검

- 내부소스 코드의 동작을 개발자가 추적할 수 있기 때문에, 동작의 유효성뿐만 아니라 실행 과정 확인 가능

- 구조 기반 테스트, 코드 기반 테스트, 로직 기반 테스트, 글래스(Glass) 박스 테스트라고 부른다

화이트박스 테스트 유형 - 구경조 조반다 기제데

- 구문/문장 커버리지 (Statement Corverage) : 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지

- 결정 커버리지 (Secision Corverage) : 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행하는 테스트 커버리지

- 조건 커버리지 (Condition Corverage) : 결정 포인트 내의 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 테스트

- 조건/결정 커버리지 (Condition/Decision Corverage) : 전체 조건식뿐만 아니라 개별 조건식도 참 한 번, 거짓 한 번 결과가 되도록 수행하는 테스트

- 변경 조건/결정 커버리지 (Modified Condition/Decision Corverage) : 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지

- 다중 조건 커버리지 (Multiple Corverage) : 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지

- 기본 경로 커버리지 (Base Path Corverage) : 수행 가능한 모든 경로를 테스트하는 기법

- 제어 흐름 테스트 (Control Flow Testing) : 프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직을 테스트하는 기법

- 데이터 흐름 테스트 (Data Flow Testing) : 제어 흐름 그래프에 데이터 사용현황을 추가한 그래프를 통해 테스트하는 기법

블랙박스 테스트 (Black-Box Test)

프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트(기능 테스트)

블랙박스 테스트 유형 - 동경결상 유분페원비

- 동등분할 테스트 (Equivalence Partitioning Testing) : 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법

- 경곗값 분석 테스트 (Boundary Value Analysis Testing) : 최솟값 바로 위, 최대치 바로 아래 등 입력값의 극한 한계를 테스트 하는 기법 / 등가 분할 후 경곗값 부분에서 오류 발생 확률이 높기 떄문에 경곗값을 포함하여 테스트 케이스를 테스트하는 기법

- 결정 테이블 테스트 (Decision Table Testing) : 요구사항의 논리와 발생조건을 테이블 형태로 나열하여, 조건과 행위를 모두 조합하여 테스트하는 기법

- 상태 전이 테스트 (State Transtion Testing) : 테스트 대상/시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법

- 유스케이스 테스트 (Use Case Testing) : 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법

- 분류 트리 테스트 (Classfication Tree Method Testing) : SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트하는 기법

- 페어와이즈 테스트 (Pairwise Testing) : 테스트 데이터값들 간에 최소한 한 번씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법

- 원인-결과 그래프 테스트 (Cause-Effect Graph Testing) : 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정하여 테스트하는 기법

- 비교 테스트 (Comparsion Testing) : 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 결과 데이터가 나오는지 비교해 보는 테스트 기법

경험 기반 테스트 유형

- 탐색적 테스트, 오류 추정, 체크리스트, 특성 테스트

테스트 시각에 따른 분류

- 검증(Verification) : 소프트웨어 개발 과정 테스트, 가발자 혹은 시험자 시각

- 확인(Validation) : 소프트웨어 결과 테스트, 사용자 시각

테스트 목적에 따른 분류

- 회복 테스트(Recovery Testing) : 시스템에 고의로 실패를 유도하고, 시스템의 정상적 복귀 여부를 테스트

- 안전 테스트(Security Testing) : 소스 내 보안적인 결함을 미리 점검하는 테스트

- 성능 테스트(Performance Testing) : 응답 시간, 반응 속도, 처리량 등을 측정하는 테스트

- 구조 테스트(Structure Testing) : 시스템의 내부 논리 경로, 소스 코드의 복잡도를 테스트

- 회귀 테스트(Regression Testing) : 오류 제거와 수정에 의해 새로 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법

- 병행 테스트 (Parallel Testing) : 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법

성능 테스트의 상세 유형

- 부하 테스트(Load Testing) : 시스템에 부하를 계속 증가시키면서 시스템의 임계점을 찾음

- 스트레스 테스트 : 임계점 이상의 부하를 가해 비정상적인 상황에서의 처리를 테스트

- 스파이크 테스트 : 짧은 시간에 사용자가 몰릴 때 시스템의 반응 측정 테스트

- 내구성 테스트 (Endurance Testing) : 오랜 시간 동안 시스템에 높은 부하를 가해 테스트

임계점(Threshold) : 처리량이 더는 증가하지 않거나 CPU 이용률이나 메모리 사용량이 비정상적으로 증가하는 시점

테스트 오라클

- 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법

테스트 오라클 종류

- 참(True) 오라클 : 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클

- 샘플링 오라클 : 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클

- 휴리스틱(Heuristic) 오라클 : 샘플링 오라클을 개선한 오라클로, 특정 입력값에 대해 올바른 결과를 제공하고, 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클

- 일관성 검사(Consistent) 오라클 : 애플리케이션 변경이 있을 때, 수행 전과 후의 결괏값이 동일한지를 확인하는 오라클

테스트 레벨

- 테스트 레벨은 함계 편성되고 관리되는 테스트 활동의 그룹이다

- 테스트 레벨은 프로젝트에서 책임과 연관되어 있고, 각각의 테스트 레벨은 서로 독립적이다

테스트 레벨의 종류

- 단위 테스트 : 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계

// 자료 구조 테스트, 실행 경로 테스트, 오류 처리 테스트, 인터페이스 테스트

- 통합 테스트 : 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호 작용을 검증하는 테스트

// 빅뱅 테스트, 샌드위치 테스트, 상향식 테스트, 하향식 테스트

- 시스템 테스트 : 통함된 단위 시스템의 기능이 시스ㅡ템에서 정상적으로 수행되는지를 검증하는 테스트

// 기능·비기능 요구사항 테스트

- 인수 테스트 : 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트

// 계약 인수, 규정 인수, 사용자 인수, 운영상의 인수, 알파 · 베타 테스트

728x90