용어(Keyword)
블랙박스 테스트 기법(black-box test technique), 경계값 분석(boundary value analysis), 체크리스트 기반 테스팅(checklist-based testing), 커버리지(coverage), 결정 커버리지(decision coverage), 결정 테이블 테스팅(decision table testing), 오류 추정(error guessing), 동등 분할(equivalence partitioning), 경험 기반 테스트 기법(experience-based test technique), 탐색적 테스팅(exploratory testing), 상태 전이 테스팅(state transition testing), 구문 커버리지(statement coverage), 테스트 기법(test technique), 유스케이스(use case testing), 화이트박스 테스트 기법(white- box test technique)
4.1 테스트 기법의 종류 Categories of Test Techniques
테스트 기법의 목적은 테스트 컨디션, 테스트 케이스, 테스트 데이터 식별을 지원하는 것이다.
4.1.1 테스트 기법의 종류와 특성 (Categories of Test Techniques and Their Characteristics)
- 블랙박스 테스트 기법 : 블랙박스 기법은 테스트 대상의 내부 구조를 고려하지 않고, 입력과 출력에 집중한다.
- 테스트 컨디션, 테스트 케이스, 테스트 데이터는 소프트웨어 요구사항, 명세서, 유스케이스, 사용자 스토리와 같은 테스트 베이시스로부터 도출한다.
- 테스트 케이스는 요구사항과 요구사항 구현 결과물 간 차이와 편차를 식별하는 데 사용한다.
- 커버리지는 테스트 베이시스에서 테스트된 항목과 테스트 베이시스에 적용한 기법을 기반으로 측정한다.
- 화이트박스 테스트 기법 : 화이트박스 기법은 테스트 대상의 내부 구조와 처리에 집중한다.
- 테스트 컨디션, 테스트 케이스, 테스트 데이터는 코드, 소프트웨어 아키텍처, 상세 설계 또는 소프트웨어 구조와 관련된 기타 정보를 포함한 테스트 베이시스로부터 도출한다.
- 커버리지는 선택한 구조(예: 코드나 인터페이스) 내에서 테스트한 항목과 테스트 베이시스에 적용된 기법을 기준으로 측정한다.
- 경험 기반 테스트 기법 : 이 기법은 블랙박스 및 화이트박스 테스트 기법과 결합해서 사용하는 경우가 많다.
- 테스트 컨디션, 테스트 케이스, 테스트 데이터는 테스터, 개발자, 사용자, 기타 이해관계자의 지식과 경험과 같은 테스트 베이시스로부터 도출한다.
4.2 블랙박스 테스트 기법 Black-box Test Techniques
4.2.1 동등 분할 (Equivalence Partitioning)
동등 분할은 특정 파티션(partitions)의 모든 변수는 동일한 방식으로 처리된다는 가정으로 파티션(‘동등 클래스’라고도 알려져 있음)에 데이터를 분할한다 (Kaner 2013 과 Jorgensen 2014 참조). 유효한 값과 비유효한 값 모두에 대해 동등 분할을 구성할 수 있다.
4.2.2 경계값 분석 (Boundary Value Analysis)
경계값 분석(BVA)은 동등 분할의 확장 형태이지만 각 파티션이 순서화되어 있고, 숫자 또는 연속 데이터로 구성된 경우에만 적용할 수 있다. 분할의 최소값과 최대값(또는 첫 번째값과 마지막값)은 해당 분할의 경계값이 된다 (Beizer 1990 참고).
동등 분할의 경계에서 동작이 잘못될 확률이 동등 분할 중간의 값에서 잘못될 확률에 비해 높다.
4.2.3 결정 테이블 테스팅 (Decision Table Testing)
결정 테이블은 시스템이 구현해야 하는 복잡한 비즈니스 규칙을 기록하기에 좋은 방법이다.

요구사항의 누락된 부분을 찾는 데 도움이 된다.
4.2.4 상태 전이 테스팅 (State Transition Testing)
상태 전이 다이어그램은 소프트웨어의 가능한 상태뿐만 아니라 소프트웨어가 상태 간에 어떻게 진입하고 빠져나오는지에 대한 전이 방법을 보여준다. 전이는 이벤트에 의해 시작된다.
상태 전이 테이블은 상태 간의 모든 유효 전이와 잠재적인 비유효 전이뿐만 아니라, 유효 전이와 관련된 이벤트, 결과 조치를 보여준다. 상태 전이 다이어그램은 일반적으로 유효한 전이만 보여주며, 비유효 전이는 표시하지 않는다.
4.2.5 유스케이스 테스팅 (Use Case Testing)
유스케이스에서 테스트를 도출할 수 있으며, 이것은 소프트웨어 항목 간의 상호작용을 설계하는 특정 방법이다. 유스케이스는 소프트웨어 기능에 대한 요구사항을 통합한다. 유스케이스는 액터(actor, 즉 사용자, 외부 하드웨어, 기타 컴포넌트나 시스템)와 대상(유스케이스를 적용하는 컴포넌트나 시스템) 간의 관계이다.
유스케이스에는 예외 동작 및 오류 처리(시스템 응답과 프로그래밍, 애플리케이션 및 통신 오류로부터의 복구, 예를 들어, 오류 메시지 발생)를 포함한 기본 동작의 가능한 변형이 포함된다. 테스트는 정의한 동작(기본, 예외 또는 대안, 오류 처리)을 실행하도록 설계된다.
4.3 화이트박스 테스트 기법 White-box Test Techniques
화이트박스 테스팅은 테스트 대상의 내부 구조를 기반으로 한다.
4.3.1 구문 테스팅과 커버리지 (Statement Testing and Coverage)
구문 테스팅은 코드의 잠재적으로 실행 가능한 구문을 실행한다.
4.3.2 결정 테스팅과 커버리지 (Decision Testing and Coverage)
결정 테스팅은 코드에 존재하는 결정문을 실행하고 결정문의 결과에 따라 실행되는 코드를 테스트한다. 이것을 달성하기 위해 테스트 케이스는 결정문에서 시작되는 제어 흐름을 따라 실행된다 (예를 들어, IF 문에서 결과가 참인 경우와 거짓인 경우; CASE 문에서 기본 결과를 포함한 가능한 모든 결과를 필요로 하는 테스트 케이스).
4.3.3 구문 및 결정 테스팅의 가치 (The Value of Statement and Decision Testing)
100% 구문 커버리지를 달성하면 코드에 존재하는 모든 실행 가능한 구문을 최소한 한 번씩은 테스트했다는 것을 의미하지만, 모든 결정 로직을 테스트했다는 것을 보장하지는 않는다. 이 실러버스에서 다루고 있는 두 가지 화이트박스 기법 중 구문 테스팅은 결정 테스팅보다 커버리지가 낮다.
100% 결정 커버리지는 100% 구문 커버리지를 보장하지만, 반대의 경우는 성립하지 않는다.
4.4 경험 기반 테스트 기법 Experience-based Test Techniques
경험 기반 테스트 기법을 적용할 경우 테스트 케이스는 테스터의 기술 역량과 직관 그리고 유사한 애플리케이션과 기술에 대한 경험을 기반으로 도출한다.
4.4.1 오류 추정 (Error Guessing)
- 애플리케이션의 과거 동작
- 발생하기 쉬운 오류의 유형
- 다른 애플리케이션에서 발생한 장애
오류 추정 기법에 대한 체계적인 접근법은 발생 가능한 오류, 결함, 장애 목록을 작성하고 이런 장애와 그것의 원인이 되는 결함을 노출하는 테스트를 설계하는 것이다
4.4.2 탐색적 테스팅 (Exploratory Testing)
탐색적 테스팅에서는 비공식(사전에 정의되지 않은) 테스트를 테스트 실행 중에 동적으로 설계, 실행, 기록하고 평가한다.
탐색적 테스팅은 때로 세션 기반 테스팅을 사용하여 활동을 구성한다. 세션 기반 테스팅에서는 탐색적 테스팅을 정해진 시한(time-box)동안 수행하며, 테스터는 테스트 목적이 포함된 테스트 차터(test charter)를 활용해 테스팅 방향을 설정한다. 테스터는 테스트 세션 시트에 수행 단계와 발견 사항을 기록한다.
탐색적 테스팅은 명세가 충분하지 않거나 적은 경우 또는 테스팅에 상당한 시간적 압박이 있을 때 가장유용하다.
4.4.3 체크리스트 기반 테스팅 (Checklist-based Testing)
체크리스트 기반 테스팅에서는 체크리스트에 기록된 테스트 컨디션을 커버하기 위해 테스터가 테스트를 설계, 구현, 실행한다.
체크리스트는 경험, 사용자에게 무엇이 중요한지에 대한 지식 또는 소프트웨어가 실패하는 이유와 방법에 대한 이해를 기반으로 작성할 수 있다.
체크리스트는 기능 및 비기능 테스팅을 포함한 다양한 테스트 유형을 지원하기 위해 작성할 수 있다.
'소프트웨어 공학 > SW 테스팅' 카테고리의 다른 글
| [6장] 테스트 지원 도구 Tool Support for Testing (0) | 2023.03.28 |
|---|---|
| [5장] 테스트 관리 Test Management (0) | 2023.03.28 |
| [3장] 정적 테스팅 Static Testing (0) | 2023.03.07 |
| [2장] 소프트웨어 개발 수명주기와 테스팅 (1) | 2023.02.16 |
| [1장] 테스팅의 기초 Fundamentals of Testing (0) | 2023.02.09 |