본문 바로가기
ISTQB 공부/CTFL

4. 테스트 설계 기법

by Testengineer 2020. 11. 26.
반응형

 

1. 테스트 설계 및 구현 프로세스

테스트 조건(Text condition)을 식별하기 위해 테스트 베이시스(Test basis)를 분석한다. 테스트 조건은 하나 이상의 테스트 케이스로 확인 가능한 항목 또는 이벤트이다. 테스트 조건의 예로는 기능, 트랜잭션, 품질 특성 또는 구조적 요소 등이 있다.

테스트 조건과 명세 및 요구사항 사이에 추적성을 유지함으로써, 요구사항이 변경되었을때의 영향도 분석과 테스팅에 의한 요구사항 커버리지를 확인할 수 있게 한다.

테스트 설계과정에서 설계기법을 이용하여 테스트 케이스와 테스트 데이터를 설계하고 명세화한다.

테스트 케이스 구성 요소 : ID, 테스트 케이스명, 사전 조건, 테스트 수행절차, 기대결과, 결과, 추적성, 중요도, 비고

테스트 설계 및 구현 단계에서 테스트 케이스를 설계하고 작성한 후, 우선순위를 선정하고 배치하여 테스트 프로시저 명세서를 만든다. 테스트 프로시저 명세서는 효율적인 테스트를 위한 테스트 케이스 실행 순서이다. 테스트 실행 도구를 사용해서 테스트 수행시, 테스트 프로시저는 테스트 스크립트로 기술할 수 있다.

테스트 케이스의 목적은 목표하는 보장성을 만족하는 최소한의(최적의) 테스트 케이스로 가능한 많은 결함을 발견하는 것이다. 이때 테스트 대상을 가능한 빠짐없이 테스트하여 원하는 수준의 테스트 보장성(coverage)을 확보할 수 있도록 테스트 케이스를 설계해야 한다. 테스트 케이스는 공식적인 기법으로 먼저 작성한 후 반드시 경험기반의 비공식적인 기법으로 보완하는 것이 바람직하다. 그 이유는 두 기법이 발견할 수 있는 결함의 종류가 다르기 때문이다.

 

2. 테스트 설계 기법의 종류

블랙박스 기법(명세기반 기법과 경험기반 기법을 포함함) : 테스트 대상의 내부구조(코드)를 참조하지 않고 테스트 베이시스, 개발자와 사용자들의 결험을 바탕으로 기능적 혹은 비기능적 테스트 케이스를 도출하고 선택하는 방법이다.

화이트박스 기법(구조기반 기법) : 컴포넌트(단위) 또는 소프트웨어(시스템)의 구조(코드)를 중심으로 테스트 케이스를 도출하는 방법이다.

 

명세 기반 기법의 일반적인 특징 :

- 해결할 문제를 명세하기 위해 공식적이거나 비공식적인 모델을 사용한다.

- 이러한 모델에서 테스트 케이스를 시스템적으로 도출하는 것이 가능하다.

- 커버리지를 측정할 수 있으나 그 의미가 구조기반 기법의 커버리지에 비해 제한적이다. (상태전이 커버리지, 결정 테이블 커버리지, 요구사항 커버리지 등)

 

기본 설계 기법 - 명세기반기법

 

 

구조 기반 기법의 일반적인 특징 : 

- 코드와 개발 설계 등의 소프트웨어 구현 정보를 기반으로 테스트 케이스를 도출한다.

- 수행된 테스트 케이스를 바탕으로 테스트 커버리지를 측정할 수 있으며, 커버리지를 높이기 위해 테스트 케이스를 시스템적으로 도출해 추가할 수 있다.

컴포넌트 레벨의 구조는 구문, 결정 또는 분기문 등 코드 그 자체이다. 통합 레벨의 구조는 한 모듈이 다른 모듈을 호출하는 관계를 도식화한 콜 트리(call tree) 등이다. 시스템 레벨의 구조는 메뉴구조, 비즈니스 프로세스 혹은 웹페이지 구조 등이다.

커버리지(coverage) : 시스템 또는 소프트웨어의 구조가 테스트 스위트에 의해 테스트 된 정도

 

기본 설계 기법 - 구조기반기법

 

커버리지를 달성하는 테스팅 기법은 컴포넌트 테스트 이외의 다른 테스트 레벨에서도 활용가능하다. 통합 테스팅에서는 모듈, 컴포넌트, 클래스가 특정 "조건"에 따른 인터페이스를 가지고 있을 경우, 시스템/인수 테스팅에서는 기능 또는 비즈니스 로직이  특정 "조건"에 따라 동작할때 동일한 기법을 응용하여 적용할 수 있다.

 

커버리지 포함관계

 

 

경험 기반 기법의 일반적인 특징 :

- 테스트 관련 인력의 지식이나 경험으로 테스트 케이스를 도출한다.

 

기본/고급 설계 기법 - 경험기반기법

 

 

3. 고급 설계 기법

[명세기반기법]

분류 트리 기법 (Classification Tree Method = CTM)

소프트웨어 일부 또는 전체를 트리 구조로 분석 및 표현하고 이를 바탕으로 테스트 케이스를 도출하는 기법이다.

장점 : 테스트 아이디어를 트리 구조로 시각화하여 테스트 케이스를 설계하므로 의도한대로 테스트케이스를 도출할 수 있다. 시각적으로 보면서 트리 구조의 끝단의 조합을 통해 테스트 케이스를 작성하므로 일부분만 테스트하거나 중복 테스트 수행을 피할 수 있다. 복잡한 시스템, 애플리케이션의 일부 또는 전체 테스팅에 적합하다. 개발 설계를 체크하는 용도로 사용이 가능하여, 조기 테스트 설계에 활용 가능하다. 테스트 케이스 개수와 트리의 복잡도를 근거로 테스트 비용 추정이 가능하다.

 

페어와이즈 조합 테스팅 (Pairwise testing)

커버해야 할 기능적 범위에 비해 상대적으로 적은 량의 테스트 세트를 구성하여 소프트웨어의 결함을 찾고 테스트에 대한 자신감을 얻을 수 있는 방법이다. 대부분의 결함이 2개 요소의 상호작용에 기인한다는 것에 착안하여 2개 요소의 모든 조합을 다룬다.

도구 : Allpairs, PICT 등

 

직교 배열 테스팅 (Orthogonal array testing)

직교 배열의 원리를 소프트웨어 테스트 설계에 적용하여 조합의 수를 줄임으로써 테스트 케이스의 수를 합리적으로 줄일 수 있다. 직교 배열 테스팅의 페어와이즈 조합 테스팅과 유사한 테스트 기법이며, 차이점은 직교 배열의 각 행과 열이 페어와이즈 하다는 것(=어느 행의 조합도 서로 다른 행의 조합과 다르고 어느 열의 조합도 서로다른 열의 조합과 다름)이다.

 

[구조기반기법]

분할(Splitting)방법으로 접근한 조건/결정 커버리지

- 분할(Splitting) : 논리적 테스트 컬럼의 각각을 선택한 커버리지로 생성한 모든 논리적 조합으로 분할하여 테스트 케이스를 작성하는 방식. 모든 조합을 분할해서 나열하기 때문에 테스트 케이스 수가 크게 증가함

- 포함(Including) : 논리적 테스트 컬럼의 각각을 선택한 커버리지로 생성한 조합 중에서 단 하나만을 선택하여 하나의 논리적 테스트 케이스로 작성하는 1:1 전환 방식. 어느 정도 커버리지를 만족하면서 테스트 케이스 수를 줄일 수 있는 방법

 

* 고급 설계 기법에 해당하는 기법들은 어렵기 때문에, 여기서는 간단히 정리하고 나중에 모아서 더 디테일하게 공부할 예정입니다 *

 

4. 소프트웨어 특성에 따른 테스팅

ISO/IEC 9126 품질모델에서 제시하는 품질 특성을 기준으로 테스트 케이스를 도출하는 것도 유용하게 테스트 설계할 수 있는 방법이다. (=특성 테스팅) 특성테스팅은 방법론적 접근법에 속하며, ISO/IEC 9126-2에 명기된 품질 특성을 테스트 케이스 도출 기준으로 사용한다.

 

기능성은 요구되는 기능 및 성능을 만족시키는 능력을 의미하며, 제품에 대한 기술 문서에 언급된 모든 기능을 테스트 케이스로 작성한다.

기능성에 해당하는 품질 부특성

- 적합성 : 사용자 요구 기능을 제공하는 능력

- 정확성 : 올바른 또는 정확한 결과를 제공하는 능력

- 상호운용성 : 다른 시스템과의 상호 작동 능력

- 보안성 : 정보 및 데이터를 보호하는 능력

- 준수성 : 기능겅 관련 표준, 규정, 관례 등을 따르는 능력

 

신뢰성은 규정된 시스템 환경에서 결함없이 의도한 기능 및 작업을 수행하는 소프트웨어의 능력으로 정의된다. 여러상황의 조합 또는 예외 사항의 처리 능력을 확인하는 절차를 테스트 케이스로 작성한다.

신뢰성에 해당하는 품질 부특성

- 성숙성 : 사용자의 오류를 피하는 능력

- 오류 허용성 : 내재된 결함으로부터 성능을 유지하는 능력

- 회복성 : 장애발생시 기능 및 데이터를 복구하는 능력

- 준수성 : 신뢰성 관련 표준, 규정, 관례 등을 따르는 능력

 

사용성은 사용자가 이해하고 배우기 쉬운 정도를 의미하며, UI나 어떤 기능을 실행하기 위한 순서, 내용 및 처리 메시지가 적절한지 등을 확인하기 위해 테스트 케이스를 작성한다.

사용성에 해당하는 품질 부특성

- 이해성: 사용자가 운용 방법이나 조건 등을 쉽게 파악하게 하는 능력

- 학습성 : 소프트웨어 운용법을 쉽게 배울 수 있게 하는 능력

- 운용성 : 소프트웨어를 쉽게 운영하고 제어할 수 있게 하는 능력

- 친밀성 : 사용자에게 호감을 주는 능력

- 준수성 : 사용성 관련 표준, 규정, 관례 등을 따르는 능력

 

효율성은 자원의 적절한 사용 및 적정한 반응시간 정도로 정의되며, 어떤 기능을 수행하거나 정보를 출력할때 처리 시간과 자원 사용량이 적절한지를 확인하는 내용을 테스트 케이스로 작성한다.

- 시간효율성 : 기능 수행시 적절한 응답시간, 처리시간, 처리율을 제공하는 능력

- 자원효율성 : 기능 수행시 적절히 자원을 사용하는 능력

- 준수성 : 효율성 관련 표준, 규정, 관례 등을 따르는 능력

 

유지보수성은 소프트웨어의 수정 및 변경의 용이성으로 정의되며, 소프트웨어상에서 변경이 발생하거나 기존의 시스템을 다른 시스템으로 교체하는 경우에 작업 절차가 용이한지에 대해 확인하는 과정을 테스트 케이스로 작성한다.

유지보수성에 해당하는 품질 부특성

- 분석성: 장애 원인을 진단할 수 있게 하는 능력(로그 생성 및 확인)

- 변경성 : 변경 요청 사항을 쉽게 구현할 수 있게 하는 능력

- 안정성 : 변경에 따른 예상 밖의 결과를 최소화 하는 능력

- 시험성 : 변경된 결과를 검증할 수 있게 하는 능력

- 준수성 : 유지보수성 관련 표준, 규정, 관례 등을 따르는 능력

 

이식성은 지원하는 다양한 운영환경에서 운영될 수 있는 소프트웨어의 능력으로 정의된다.

이식성에 해당하는 품질 부특성

- 적응성 : 최소한의 조치만으로 이식될 수 있는 능력

- 설치성 : 사용자가 지정한 환경으로 설치될 수 있는 능력

- 대체성 : 공동 운영환경에서 다른 소프트웨어를 대체할 수 있는 능력

- 공존성 : 동일 환경에서 다른 소프트웨어와 충돌없이 구동할 수 있는 능력

- 준수성 : 이식성 관련 표준, 규정, 관례 등을 따르는 능력

 

 

 

출처 : 개발자도 알아야 할 소프트웨어 테스팅 실무 제3판

반응형

'ISTQB 공부 > CTFL' 카테고리의 다른 글

6. 테스트 관리  (0) 2020.12.11
5. 테스트 설계기법 - 상태전이 테스팅  (2) 2020.11.29
3. 정적 기법  (0) 2020.11.19
2. 소프트웨어 수명주기와 테스팅  (0) 2020.11.16
1. 소프트웨어 테스팅의 기초  (0) 2020.11.15

댓글