Post

소프트웨어 개발 - 애플리케이션 테스트

#애플리케이션 테스트 케이스 설계

테스트 케이스 (Test Case)

특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과의 집합

정확성, 재사용성, 간경성 보장

■ 테스트 케이스 작성 절차

테스트 계획 검토 및 자료 확보 → 위험 평가 및 우선순위 결정 → 테스트 요구사항 정의 → 테스트 구조 설계 및 테스트 방법 결정 → 테스트 케이스 정의 및 작성 → 테스트 케이스 타당성 확인 및 유지보수

■ 테스트 케이스 구성요소

  • 식별자 (Identifier)
  • 테스트 항목 (Test Item)
  • 입력명세 (Input Specification)
  • 출력명세 (Output Specification)
  • 환경설정 (Environmental Needs)
  • 특수절차요구 (Special Procedure Requirement)
  • 의존성 기술 (Inter-case Dependencies)

테스트 오라클 (Test Oracle)

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

@참샘휴일

■ 참 오라클

모든 입력값에 대하여 기대하는 결과 생성, 발생된 오류를 모두 검출

■ 샘플링 오라클

특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공

■ 휴리스틱 오라클

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

■ 일관성 오라클

애플리케이션 변경이 있을 때 수행 전과 후의 결괏값이 동일한지 확인

테스트 레벨 (Test Level)

  • 소프트웨어의 개발 단계에 따라 분류한 것
  • 함께 편성되고 관리되는 테스트 활동의 그룹
  • 프로젝트에서 책임과 연관됨
  • 각각 테스트 레벨은 서로 독립적

소프트웨어 생명주기의 V 모델

(소프트웨어 아키텍처)
요구사항 → 분석 → 검증 / 디자인 → 구현

(테스트 매니저)
단위 테스트 → 통합테스트 / 확인 → 시스템 테스트 → 인수 테스트

테스트 레벨 종류

■ 단위 테스트

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

  • 자료 구조, 인터페이스, 외부적 I/O, 독립적 기초 경로, 오류 처리 경로, 결계 조건 등을 검사
  • 명세기반 테스트 (블랙박스 테스트), 구조 기반 테스트(화이트박스 테스트)로 나뉨

■ 통합 테스트

  • 단위 테스트를 통과한 컴포넌트 간의 인터페이스를 테스트하는 단계

■ 시스템 테스트

  • 개발 프로젝트 차원에서 정의된 전체 시스템 또는 제품의 동작에 대해 테스트하는 단계
  • 기능적 요구사항 테스트 (블랙박스 테스트)
  • 비기능적 요구사항 (화이트박스 테스트)

■ 인수 테스트

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

  • 알파 테스트: 개발자 환경에서 통제된 상태로 개발자와 함께 수행하는 인수 테스트
  • 베타 테스트: 실제 환경에서 일정 수의 사용자에게 대상 소프트웨어를 사용하게 하고 피드백을 받는 인수 테스트

테스트 시나리오 (Test Scenario)

애플리케이션의 테스트되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서

■ 테스트 시나리오 작성 시 유의점

  • 테스트 시나리오 분리 작성 (시스템별, 모듈별, 항목별)
  • 고객의 요구사항과 설계 문서 등을 토대로 테스트 시나리오를 작성
  • 식별자 번호, 순서 번호, 테스트 데이터, 테스트 케이스, 예상 결과, 확인 등의 항목을 포함하여 작성

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

  • 정적 테스트 : 리뷰, 정적 분류
  • 동적 테스트 : 화이트박스 / 블랙박스 / 경험기반 테스트

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

  • 프로그램 외부 사용자의 요구사항 명세를 보며 수행하는 테스트
  • 소프트웨어의 특징, 요구사항, 설계 명세서 등에 초점을 맞춰 테스트가 이루어짐
  • 기능 및 동작 위주의 테스트를 진행하기 때문에 내부 구조나 작동 원리를 알지 못해도 가능
  • = 명세 테스트

■ 블랙박스 테스트 유형

@동경결상 유분페원비오

  • 동등 분할 테스트
  • 경곗값 분석 테스트
  • 결정 테이블 테스트
  • 상태전이 테스트
  • 유스케이스 테스트
  • 분류 트리 테스트
  • 페어와이즈 테스트
  • 원인-결과 그래프 테스트
  • 비교 테스트
  • 오류 추정 테스트

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

  • 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트
  • 코드 분석과 프로그램 구조에 대한 지식을 바탕으로 문제가 발생할 가능성이 있는 모듈 내부를 직접 관찰하고, 테스트하는 방법
  • 소스 코드의 모든 문장을 한 번 이상 수행함으로써 진행
  • = 구조 기반 테스트, 코드 기반 테스트, 로직 기반 테스트, 글래스박스 테스트

■ 화이트박스 테스트 유형

@구결조 조변다 기제데루

  • 구문 커버리지 (=문장 커버리지)
  • 결정 커버리지 (=선택 커버리지)
  • 조건 커버리지
  • 조건-결정 커버리지
  • 변경 조건-결정 커버리지
  • 다중 조건 커버리지
  • 기본 경로 커버리지 (= 경로 커버리지)
  • 제어 흐름 테스트
  • 루프 테스트

테스트 시각에 따른 분류

■ 검증

  • 소프트웨어 개발 과정을 테스트
  • 올바른 제품을 생산하고 있는지 검증
  • 개발자 혹은 시험자의 시각

■ 확인

  • 소프트웨어 결과를 테스트
  • 만들어진 제품이 제대로 동작하는지 확인
  • 최종 사용자 요구 또는 소프트웨어 요구에 적합한지 판단
  • 사용자 시각

테스트 목적에 따른 분류

  • 회복 테스트
  • 안전 테스트
  • 성능 테스트
  • 강도 테스트
  • 구조 테스트
  • 회귀 테스트
  • 병행 테스트

소프트웨어 테스트의 원리

  • 결함 존재 증명
  • 완벽 테스팅은 불가능
  • 초기 집중
  • 결함 집중
  • 살충제 패러독스
  • 정황 의존성
  • 오류-부재의 궤변
This post is licensed under CC BY 4.0 by the author.