테스트케이스(Test Case)

개념
- 특정한 프로그램 경로를 실행 해 보거나, 특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력 값, 실행 조건, 그리고 예상된 결과의 집합 - 테스트하려는 시스템이 수행해야 하는 액션들로 구성되는 일련의 단계를 의미, 이러한 단계를 테스트 프로시저 또는 테스트 스크립트라고 함.

Ⅰ. SW 품질향상을 위한 테스트 도구 테스트 케이스의 개요

  1. 테스트 케이스 (Test Case)의 정의
  • 특정한 프로그램 경로를 실행 해 보거나, 특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력 값, 실행 조건, 그리고 예상된 결과의 집합
  • 테스트하려는 시스템이 수행해야 하는 액션들로 구성되는 일련의 단계를 의미, 이러한 단계를 테스트 프로시저 또는 테스트 스크립트라고 함.

나 . 테스트 케이스 설계의 중요성

  • 테스트 오류 방지 : 테스트 수행의 많은 문제들은 테스트 케이스 설계의 미흡함에서 발생.
  • 경제성 : 직관적으로 테스트를 수행 인력, 시간의 낭비 초래.

 

Ⅱ. 소프트웨어 테스트 케이스의 구성

  1. 소프트웨어 테스트 케이스의 구성 요소

항목

설명

식별자 (Identifier)

항목 식별자, 일련 번호

테스트 항목 (Test Item)

테스트할 모듈 또는 기능

입력 명세 (Input Specification)

입력 값 또는 조건

출력 명세 (Output Specification)

테스트 케이스 실행 시 기대되는 출력 값 결과

환경설정(Environmental Needs)

테스트 수행할 때 필요한 하드웨어나 소프트웨어 환경

특수절차 요구(Special Procedure requirement)

테스트 케이스 수행 시 특별히 요구되는 절차

의존성 기술 (Inter-case

Dependencies)

테스트 케이스간의 의존성

 

2. 소프트웨어 테스트 중 테스트 케이스의 위치

  • 테스트 계획 à 테스트 설계 명세 à 테스트 케이스 명세

 

Ⅲ. 테스트 케이스 설계 유형 및 테스트 케이스 작성 방법

  1. 테스트 케이스 설계 유형

테스트 구분

테스트 기법

내용

블랙 박스 테스트

동등분할

- 여러 테스트 케이스 중 실제로 수행할 대표적인 테스트 케이스를 선택하는 방법

- 각 시험 사례 유형마다 최소의 시험 사례 작성

경계 값

분석

- 입력 값의 경계 값에서 오류 발생 가능성이 높다는 통계에 의한 케이스 작성

원인 결과

그래프

- 입력 데이터 간의 관계가 출력에 영향을 미치는 상황을 체계적으로 분석하여 효용성 높은 시험 사례를 발견

- 동등 분할과 경계 값 분석의 단점인 입력환경의 복잡성을 완전하게 고려할 수 없는 점 보완

오류 예측

- 각 시험 기법이 놓치기 쉬운 오류들을 감각 및 경험으로 찾아보는 것

Pairwise

테스팅

- 가능한 모든 입력 값을 테스트하는 것은 비현실적

- 모든 입력 값들의 조합대신 모든 짝의 조합을 테스트

- 모든 입력 값을 테스트 하는 것과 비슷한 효과

화이트 박스

테스트

제어 구조 시험

- 프로그램의 논리적 복잡도를 측정한 후 이 척도에 따라 수행시킬 기본 경로들의 집합을 정의

- 시험영역을 최대화 시키며 독립 경로들의 자동 발견

 

루프 시험

- 프로그램 루프 구조에 국한해서 실시하는 시험

- 초기화 결함, 인덱싱 및 증가 결함, 루프의 경계에서 나타나는 경계 오류 발견

 

2. 테스트 케이스 작성 절차

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

 

3. 블랙박스 테스트와 화이트 박스 테스트의 비교

  • 공통점

동적 테스트 기법

- 원시코드를 수행시켜 오류를 찾는 방법,

 프로그램을 통한 테스트 수행

품질 향상

- 원시 코드의 품질 향상

- 원시 코드 시스템 내부 논리(화이트 박스), 성능 및 IF (블랙 박스) 중심 체크

상호보완

- 내부 로직의 정확성은 화이트 박스, IF 정확성은 블랙박스로 동시병행 수행을 통해 상호보완

 
  • 차이점

비교항목

화이트 박스 테스트

블랙 박스 테스트

분류관점

개발자 중심

내부 논리경로 위주,

알고리즘 위주

구현 기반

사용자 중심

데이터 위주

입출력 위주

명세 기반

주요 테스트

구조, 모듈 테스트

기능테스트, IO 테스트

테스트 기법

제어구조, 루프제어, 경로 시험, 결정조건

동등 분할, 경계값 분석, 원인결과 그래프, 오류 예측

테스트 포인트

프로그램 문장 및 라인 영역,

분기영역, 조건 영역 확인

테스트 오라클 (입출력에 대한 올바른 예상 출력) 필요

결함 형태

초기화 결함

런타임 메모리 Leak

인덱싱 및 증가 결함

부정확하거나 누락기능

성능결함, IF 오류

자료구조나 외부 DB 접근 오류

 

 

Ⅳ. 코드에 대한 테스트 케이스

  1. 제어 흐름도

 

2. 테스트 경로

가. Path1 : 1 → A → 2 → B → A → 3 → B → 5

나. Path2 : 1 → A → 2 → B → A → 4 → B → 5

다. Path3 : 1→ A → 3 → B → 5

라. Path4 : 1 → A → 4 → B → 5

 

3. 테스트 경로에 의한 테스트 케이스

가. Path1

단 계

입력

예상결과

1: SelectPlayIndex

Index = 3

-

A: Switch(CheckFileType)

-

Index != end

2: PlayMusic

-

-

B: index!=end&&

stopOption != YES

-

(Index != end

stopOption != YES) = TRUE

index++

A: Switch(CheckFileType)

-

Index = end

3: PlayMusic

stopPlay=YES

-

-

B: index!=end&&

stopOption != YES

-

(index != end &&

stopOption != YES) = FALSE

5: StopPlay

-

종료

 

나. Path2

단 계

입력

예상결과

1: SelectPlayIndex

Index = 1 or 2

-

A: Switch(CheckFileType)

-

Index != end

2: PlayMusic

-

-

B: index!=end&&

stopOption != YES

-

(Index != end

stopOption != YES) = TRUE

index++

A: Switch(CheckFileType)

Index = 0

-

4: DisplayErr

-

DisplayErr

stopOption = YES

B: index!=end&&

stopOption != YES

-

(index != end &&

stopOption != YES) = FALSE

5: StopPlay`

-

종료

 

다. Path3

단 계

입력

예상결과

1: SelectPlayIndex

Index=4

-

A: Switch(CheckFileType)

-

Index = end

3: PlayMusic

stopPlay=YES

-

Index = end

stopOption = YES

index++

B: index!=end&&

stopOption != YES

-

(index != end &&

stopOption != YES) = FALSE

5: StopPlay

-

종료

 

라. Path4

단 계

입력

예상결과

1: SelectPlayIndex

Index = 0

-

A: Switch(CheckFileType)

-

Index = 0

4: DisplayErr

-

DisplayErr

stopOption = YES

B: index!=end&&

stopOption != YES

-

index != end &&

stopOption != YES) = FALSE

5: StopPlay

-

종료

 

 

 

댓글