테스트 시나리오 ID - teseuteu sinalio ID

테스트 설계 및 구현 프로세스(Test design & implementation process)

- 테스트 설계 진행 방식은 테스트 조직 구성, 테스팅과 개발 프로세스의 성숙도, 시간적 제약, 참여 인원등 테스팅 정황에 따라 달라짐

1. 테스트 조건(Test Condition)

- 테스트 분석 과정에서 무엇을 테스트할지 결정하기 위해(테스트 조건을 식별하기 위해) 테스트 베이시스를 분석함

- 테스트 조건은 하나 이상의 테스트 케이스로 확인 가능한 항목 또는 이벤트

- 예: 기능, 트랜잭션, 품질 특성, 구조적 요소 등

2. 테스트 설계 과정

- 테스트 설계 기법을 이용하여 테스트 케이스와 테스트 데이터를 설계하고 명세화 함

1) 테스트 케이스 설계

- 테스트 케이스 목적: 목표하는 보장성을 만족하는 최소한의(최적의) 테스트 케이스로 가능한 많은 결함을 발견하는 것

- 테스트 대상을 가능함 빠짐없이 테스트하여 원하는 수준의 테스트 보장성(Coverage)을 확보할 수 있도록 테스트 케이스를 설계

- 테스트 케이스 구성요소: 입력값의 묶음, 실행 사전 조건, 수행 절차, 기대 결과, 실행 사후 조건으로 구성

(이외에도 테스트 케이스 ID, 테스트 케이스 명, 추적성, 중요도, 결과(합격/불합격) 등 다양한 내용이 포함될 수 있음)

ID(식별번호)

  • 테스트 케이스를 식별하기 위한 번호나 식별자

테스트 케이스명

  • 테스트 내용을 간단 명료하게 표현

사전 조건(Pre-conditions)

  • 테스트 수행에 필요한 사전 조건에 대한 정보(선행 조건)
  • 구동환경, 테스트 데이터에 대한 정의 등

테스트 수행 절차(Test Step)

  • 구체적인 테스트 수행 단계
  • 7단계 이내 권고
  • 테스트 케이스를 실행할 테스터의 스킬, 능력, 해당 시스템에 대한 이해 등을 고려하여 테스트 케이스의 상세함 정도를 조정

기대 결과(필수 항목)

  • 테스트 실행 후 의도한 대로 동작했는지를 판단하는 근거(결과값, 데이터나 상태의 변화, 그밖의 결과 등을 기술)
  • 기대 결과가 정의되지 않으면 테스트 결과가 정상인지 판단하기 어려움
  • 실행 사후 조건이 필요하면 기대 결과에 포함하거나 별도로 기술함

결과(합격/불합격)

  • 테스트 케이스 수행 결과
  • Pass: 의도대로 동작함
  • Fail: 의도대로 동작하지 않았음
  • Not Tested: 아직 테스트를 수행하지 않음
  • Blocked: 사전 조건이 충족되지 않아 테스트가 수행되지 않음, 테스트 결과 확인 불가

추적성

  • 테스트 케이스와 관련된 요구사항 및 적용된 기법 등 기록

중요도

  • 시간적 제약이 있을 경우 테스트 대상을 선택하기 위한 기준
  • 시간이 부족할 경우 테스트하지 않을 것만 표시할 수도 있음

비고

  • 테스트 케이스 작성 의도 등 관련 내용 기술

- 소프트웨어 테스트 문서 표준(IEEE 829)은 테스트 설계 명세(테스트 조건 포함)와 테스트 케이스 표준 양식 제시

3. 테스트 구현 단계

1) 우선순위 선정, 배치

- 테스트 프로시저 명세서(Test procedure specification)를 만듦

- 테스트 프로시저(또는 수동 테스트 스크립트): 효율적인 테스트를 위한 테스트 케이스 실행 순서

- 테스트 실행 도구를 사용하여 테스트를 수행한다면 테스트 프로시저는 테스트 스크립트(또는 자동화된 테스트 프로시저)로 기술

2) 테스트 실행 스케줄 구성

- 작성된 테스트 프로시저와 자동화된 테스트 스크립트를 언제 누가 수행할 것인지에 대해 구성

- 리그레션 테스트 여부, 우선순위, 기술적/논리적 종속 관계 등을 고려하여 결정

3) 테스트 케이스 작성

- 테스트 수행 절차를 얼마나 상세하게 작성할지를 결정해야 함

- 테스트 케이스를 실행할 테스터의 스킬, 능력, 해당 시스템에 대한 이해 등을 고려하여 테스트 케이스의 상세함 정도를 조정함

- 공식적인 기법으로 먼저 작성 후 경험 기반의 비공식적인 기법으로 보완함(두 기법이 발견할 수 있는 결함의 종류가 다르기 때문)

테스트 전략

- 소프트웨어가 요구사항을 기반으로 구현되었는지 여부에 따라 테스트 전략이 달라짐

1. 요구사항에 명시되어 있으나 구현되지 않은 경우

- 요구사항을 기반으로 테스트 케이스를 작성해 실행해야 함

2. 요구사항대로 구현되었으나 때에 따라 정상동작하지 않는 경우

- 요구사항을 기반으로 테스트 케이스를 작성해 실행하고 추가적인 테스트 케이스를 수행(네거티브 테스트 포함)

3. 요구사항에 명시되어 있지 않지만 구현된 경우

- 요구사항 기반의 테스트로 해당 결함을 발견하기 어려우므로 비공식적인 테스트(탐색적 테스팅을 사용할 수 있음)를 추가적으로 실행

- 결함을 발견하기 위해 실제 구현된 부분을 반영하여 요구사항을 변경해야 함

4. 요구사항에 명시되어 있지 않지만 구현되었으며, 정상동작하지 않는 경우

- 요구사항 기반의 테스트로 결함을 발견하기 어려우므로 비공식적인 테스트(탐색적 테스팅을 사용할 수 있음)를 추가적으로 실행

- 기대결과를 알기 어려우므로 요구사항을 기반으로 보다 체계적이고 강도 높게 비공식적인 테스트를 설계, 실행함

목 차

1. 테스트 프로세스

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

3. 테스트 케이스 구성요소

4. 테스트 케이스 작성 시 장점/주의점

5. 테스트 케이스 정렬 방법

1. 테스트 프로세스

테스트 프로세스는 테스팅과 관련된 다양한 활동이 체계적으로 진행되어 의도된 테스트 목적과

목표를 달성할 수 있도록 테스팅의 모든 구성 요소를 엮어주는 역할을 한다.

1) 테스트 프로세스 5단계

테스트 프로세스는 계획/제어, 분석/설계, 구현/실행, 완료/리포팅과 마감의 5단계로 구성.

테스트 시나리오 ID - teseuteu sinalio ID

1-1) 계획과 제어

테스트 계획 수립은 테스트 목표와 임무를 달성하기 위해 이를 확인하고 필요한 활동을 정의하며, 테스트 제어는 게획 대비 실제 진행 상활을 비교하는 지속적인 활동

1-2) 분석과 설계

테스트 분석과 설계는 일반적이고 추상적인 테스트 목적을 실제적이고 구체적인 테스트

상황과 테스트 케이스로 변환하는 활동.

1-3) 구현과 실행

테스트 구현과 실행은 가장 효율적이고 효과적으로 테스트를 실행하기 위하여 테스트 케이스를 조합하고 테스트 실행에 필요한 다른 정보를 포함하는 테스트 프로시저를 명세화하는 활동

1-4) 완료조건과 리포팅

초기에 정의된 테스트 목표에 비해 어느 정도 실제 테스트가 수행되었는지를 평가하는 활동

1-5) 테스트 마감

완료된 테스트 활동에서 데이트를 수집하여, 테스트에서 발견된 사실 및 데이터, 경험을 종합하고 축적하는 활동

어떠한 프로젝트 수행시 대부분 테스트 프로세스 3단계 ‘구현/실행’, 과 4단계 ‘완료/리포팅’

단계를 집중적으로 반복 수행하게 된다. 3, 4 단계에서는 테스트 케이스 실행, 개선,

결과 검토 등을 수행한다.

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

테스트 시나리오 ID - teseuteu sinalio ID

2-1) 참조 문서 수집

테스트 계획서에 명시된 테스트 케이스 작성지침과 수준을 고려하여 테스트 설계에 필요

한 분석 및 설계문서를 수집한다.

2-2) 테스트 케이스 작성

테스트 설계 기법을 이용하여 테스트케이스 작성한다.

2-3) 내부 검토

PM, 아키텍처, 디자이너, 기획자, 개발자와 테스트 담당자가 작성된 테스트케이스의

적정성을 검토한다.(상황에 따라 내부 검토자는 변경될 수 있음)

2-4) 요구사항 대비 커버리지 분석

테스트 케이스가 어느 정도 요구사항을 반영하는가에 대한 분석. 기본적으로 테스트

가능한 요구사항은 모두 테스트케이스에 반영이 되었는지 확인한다.

2-5) 승인

작성된 테스트 케이스를 고객(현업), 기획자 및 PM에게 승인을 획득한다.

3. 테스트 케이스 구성요소

테스트 시나리오 ID - teseuteu sinalio ID

테스트 케이스는 조직에 따라 변경되거나 추가/삭제 될 수 있다.

4. 테스트 케이스 작성 시 장점/주의점

4-1 테스트 케이스 작성시 실수

테스트 구성요소가 있어도 테스트 케이스 작성시 아래와 같은 실수를 많이 하게 된다.

▶ 절차의 누락

급하게 테스트케이스 작성 시 테스트 절차를 정확하게 입력하지 않아서 테스트를 수행하

는데 어려움이 생김

▶ 너무 장황한 설명

테스트 케이스 작성 시 상세하고 충분한 정보를 제공하여야 하지만, 너무 많은 단어와

불필요한 설명으로 인하여 테스트를 수행하는데 어려움이 생길 수 있음

▶ 많은 전문용어 사용

테스트 케이스 작성 시 약어나, 코드이름, 줄임말 등을 많이 사용하면, 다른 사람이 수행

을 하는데 어려움이 있을 수 있음

▶ 분명하지 않은 Pass/Fail 기준

테스트 수행 후 테스트 결과가 통과인지 실패인지 예상결과에 정확히 기입하지 않아,

Pass/Fail을 기입 할 수 없음.

4-2 테스트 케이스 작성시 장점

▶ 이력참조

테스트 케이스는 웹 애플리케이션 런칭 후에도 사용, 유지보수 팀과 나중에 웹 애플리케

이션 버전을 담당하는 담당자가 무슨 내용의 테스트를 어떻게 수행 했는지 확인 가능

▶ 테스트 진행 상황 추적

테스트 케이스를 문서화 하면 수행한 테스트 케이스 수, 통과와 실패 테스트 케이스 수,

특정 범위 별 테스트 케이스 수, 수행한 테스트 커버리지 등의 추가적인 정보를 추적

및 확인 가능

▶ 반복성

잘 작성된 테스트 케이스는 누구나 반복적으로 수행할 수 있음

4-3 테스트 케이스 작성시 단점

▶ 작성기간

테스트 케이스 작성 시간이 수행시간 보다 오래 걸릴 수 있음, 하나의 환경에서 몇 번만

수행되고 말 테스트라면 테스트 케이스를 문서화할 필요가 없을 수도 있음, 그러나 외부

업체 경우에는 작성 시간이 오래 걸리더라도 꼭 작성해야 함.

▶ 기능 변경에 따른 테스트 케이스 변경

기능을 자주 변경한다면 테스트 케이스를 작성하는 시간이 점점 늘어나서 나중에는 통제

할 수 없게 됨, 웹 애플리케이션에서 자주 일어나는 상황이며, 기능 변경이 자주 되는 경

우에는 PM, 기획자 등과 협의가 필요함.

▶ 배경 지식 판단의 어려움

테스트 케이스를 작성하는 사람은 테스트하는 기능을 잘 알고 있으므로 전문용어를 사용

하지만, 실제 수행자는 전문 용어를 이해하지 못해, 테스트 수행 시간이 길어지거나 수행

에 어려움이 있을 수 있음.

5. 테스트 케이스 정렬 방법

5-1 흐름이 이어지는 테스트케이스 정렬

테스트 케이스를 기능과 스펙 위주로 구현 하는 것에만 치중 하다 보면 놓치는 것 중의 하나가 테스트의 흐름이 없이 기능 테스트의 나열에 그치기 쉽다는 것이다. 하지만 간단한 테스트 케이스 정렬 만으로도 테스트 케이스에 뚜렷한 흐름이 생겨서 테스트의 진행을 쉽게 할 수 있다.

테스트 시나리오 ID - teseuteu sinalio ID

▶ SRS나 기획 문서, 디자인 문서가 TCL의 기초가 되는데 이러한 기본 문서의 내용을 하나

하나 구현한 것이 왼쪽의 리스트이며, 흐름에 맞도록 정렬한 것이 오른쪽의 리스트이다.

실행 – 동작 – 기능 – 결과의 흐름으로 테스트가 이어지도록한다.

▶ 흐름이 이어지는 케이스 정렬의 효과는 테스트가 자연스럽게 이어지며 테스트 세팅을

바꾸거나 이것 했다가 저것 했다가 하지 않고 일관적인 페이스로 나갈 수 있어서 테스트

가 수월 하게 진행 됨. 하지만 상황에 따라서는 이전 테스트의 환경을 이어받는지

이어받지 않는지 확실하게 구분 해야 함

5-2 테스트 환경이 비슷한 것끼리 정렬

테스트를 할 때 고유의 환경이 필요한 경우가 있다. SRS의 구현 위주로 테스트 케이스를

작성 하다 보면 이 세팅으로 테스트 하다가 다른 세팅으로 바꿔서 테스트 하는 테스트 환

경 세팅의 변경이 잦을 수 있는데 테스트 환경이 비슷한 것을 모을 경우 테스트 환경세팅

변경의 시간이 줄어들므로 전체적인 테스트 완료시간이 줄어든다.

테스트 시나리오 ID - teseuteu sinalio ID

▶ 위에서 보면 왼쪽의 테스트 케이스를 테스트 하려면 관리자(Root)유저로 테스트 했다가

사용자(User)계정으로 테스트하고 로그아웃 후 로그인 등의 쓸모 없이 낭비되는 환경 설

정 변경의 시간이 소모된다. 이러한 잘못된 설정의 변경 상태는 기능 위주로 스펙을 테

스트 케이스로 옮길 때 자주 발생 하며, 환경위주로 테스트 케이스을 조절 하면

테스트 진행에 많은 시간을 감소 할 수 있다.

▶ 테스트를 위해서 테스트 세팅이 오래 걸리는 제품일수록 테스트 환경이 비슷한 것끼리

의 정렬은 매우 중요함. 테스트를 진행 하는 것 보다 테스트 세팅에 시간이 매우 오래

걸린다면 테스터가 집중하기 힘들고 시간의 소모가 많기 때문이다.

▶ 단, 경우에 따라 왼쪽 리스트 자체가 로그인, 로그아웃 반복 테스트가 될 수 있음

이론적인 부분만 작성하여 딱딱했으리라 생각이 듭니다. 차후 리포트에서는 실제 SDET에서 작성하고 있는 TestCase 토대로 리포트 작성하도록 하겠습니다.

인용 자료 및 참고 문헌

- Test Basic Knowledge Book.

- TCL 재조정으로 인한 테스트 속도향상 기법(최철호)

- 개발자도 알아야할 소프트웨어 테스팅 실무

테스트 시나리오 ID - teseuteu sinalio ID