본문 바로가기

테스트이론/소프트웨어 테스팅

등가 파티션

분기문

if, else, else if, switch case 프로그램 작성시 다양한 기능을 각각의 부분에서 구현

특정 조건을 만족하는 입력은 항상 같은 방향으로 프로그램 내에 분기 → 프로그램 같은 동작을 하도록 하게 함

 

Equivalence Partitioning

해당 입력이 프로그램에 적용되었을 때 같은 행동을 하게 하는 기준(조건)을 바탕으로 구별

각 구획에 있는 입력은 프로그램에 실행되었을 때 같은 동작을 하게 됨

 

프로그램의 기능

Equivalence Partition이 1:1의 대응 관계를 가짐

 

프로그램 처리 불가능한 입력

방어적 프로그래밍. 즉 프로그램이 받아서는 압되는 입력이 들어왔을 때 이상 행동 대신 적절한 안내와 정상적인 종료를 하는 메커니즘

 

Expected or Leagal Input: 기능적 구획. 기대하는 인풋을 받아 각각 어떻게 작동해야 하는지에 따라Unexpected or Illegal inputs: 입력이 잘못된 이유. 프로그램 사용 입력 변수 중 특정 변수가 어떻게 잘못 됐는가에 따라

 

실제 사례

입력받은 사용자 정보를 바탕으로 적절한 보험 상품 추천 시스템

변수 int i(나이)

E = {0 <=  i  <= 120}U = { i< 0, i> 120}  →  U1 = i < 0, 에러 메세지 내줌 / U2 = i > 120, 별도의 안내

 

나이 변수 i가 어떻게 구간에 속하는지에 따라 프로그램의 행동이 다름

E1 = {0<= i <= 20} = {i < 0}

E2 = {20< i <= 70} = {i > 120}

E3 = {70 < i <= 120}

 

총 5개의 경우를 테스트 입력으로 한다

 

Equivalence Partitioning의 특징

인풀 도메인 파티션 방법은 다양

하나의 파티션에서 다양한 값이 존재하므으로 최종적으로 구성된 테스트입력의 집합은 사람마다 다를 수 있다

실제로 올바른 행동을 제대로 반영한 것인지 불분명

누가 어떤 파티션에서 어떤 값을 샘플 했냐에 따라 달라짐


대부분의 프로그램은 기능이 올바로 구현돼 있는지를 테스트하기 위해서 확인해야 하는 여러 개의 속성이 있다

Category Partition Method

프로그램의 기능적인 속성과 관련된 사용자 입력, 실행 환경 및 설정 상황 체계적 도출

각각에 대해 파티션을 찾고 블랙박스 기반으로 테스트 입력을 체계적으로 도출

 

Category Partition Method

1. 프로그램 스펙 분석

2. 명시적으로 전달할 parameter, 간접적으로 영향을 줄 환경 요소 도출

3. 각각의 parameter와 environmental object에 대해 카테고리(속성)을 판별

카테고리? 프로그램 실행에 영향을 줄 수 있는 특정한 성질

4. 카테고리 파티션

5. 제약조건 도출

6. 테스트 케이스 생성

 

파인드 유틸리티의 테스팅 예

파인드 유틸리티? 해당 패턴이 파일에서 한 번 혹은 그 이상 등장할 경우 이를 화면에 표시

한 줄에 패턴이 몇 번 등장하더라도 화면에는 한 번만 해당 줄을 표시

패턴의 길이는 파일 안에 있는 가장 긴 줄보다 길지 않아야

 

예제입니다.

find john myfile

→ myfile이라는 텍스트 파일 내에서 john이라는 문자열이 등장하는 모든 줄 화면에 표시

find "john smith" myfile

myfile 내에서 빈칸을 포함한 주어진 패턴을 모두 찾아서 화면에 표시

find "john\" smith" myfile

myfile이라는 텍스트 파일 내에서 john이라는 문자열이 등장하는 모든 줄 화면에 표시

 

기능적 요소

패턴에 해당하는 문자열이 파일 안에 등장하는지

해당 문자열을 찾았을 경우, 그 문자열을 포함하는 줄을 출력

 

파인드 유틸리티를 테스트하기 위해 우리가 바꿀 수 있는 파라미터와 환경 요소

패턴

파일 네임

입력으로 사용하는 실제 파일

 

테스트에 영향을 줄 수 있는 속성

파인드 유틸리티의 기능과 연계해 생각

파라미터 - 패턴의 크기, 길이, 패턴에 따옴표가 쌓여있는지, 패턴 내부에 빈칸 또는 따옴표가 포함되어 있는지

파일이름 - 이름이 적정한지

파일 - 실제로 패턴이 등장하는지, 몇번 등장하는지, 한 줄에 패턴이 몇번까지 등장하는지

 

카테고리 파티션 (카테고리 구획하기)

파라미터 패턴의 카테고리 경우,

size - empty, single character, many characters, longer than any line in the file

quoting - pattern is quoted, pattern is not quoted, pattern is improperly quoted

embedded blanks - none, one embedded quote, several embedded quotes

embedded quotes - pattern is quoted, pattern is not quoted, pattern is improperly quoted

파일 이름의 카테고리의 경우,

validity - file exists, file doesn's exist, omitted

파일의 카테고리의 경우,

Number of occurrence of pattern - none, exactly one, more than one

Pattern occurrences on target line - once, more than one

 

위의 나눈 모든 카테고리에 대한 파티션에서 각각의 파티션에 해당하는 입력을 하나씩 고른 다음 이것을 모두 조합하며 카테고리 파티션 메소드를 통해 파인드 유틸리티의 스펙을 테스트하는 블랙박스 테스팅 테스트 스윗을 생성할 수 있다.