경험 기반 테스팅은 이전에 테스터가 다루었던 유사 어플리케이션이나 기술에서의 경험, 직관, 테스터의 기술 능력으로부터 테스트 케이스를 추출해낸다. 체계적인 기법을 보강하기 위해 특히 공식적인 기법을 적용한 이후에 사용할 때, 공식적인 기법이 다루기 어려운 특별한 테스트 케이스를 찾아내고 실행하는데 유용하다. 일반적으로 사용되는 경험 기반 기법은 오류 추정이다. 대체로 테스터는 경험에 기반하여 결함을 예측한다. 오류 추정 기법은 테스터가 테스트할 시스템에 대해 완전히 이해한다는 전제로 적용되는 기법이며 취약점 식별 작업에 기반한 테스트이다.
탐색적 테스팅 기법
탐색적 테스팅은 테스트 케이스 작성의 시간을 최소화하고 테스트 엔지니어의 발견적인 지적 능력을 최대한 활용하여 테스트를 수행한다. 탐색적 테스팅은 애드혹 테스팅, 게릴라 테스팅, 직관적 테스팅과 유사한 개념이지만 정해진 임무와 목표, 결과물이 존재한다는 측면에서 다르다. 탐색적 테스팅은 테스트 설계, 테스트 수행, 테스트 계획, 테스트 기록 및 학습을 동시에 진행하는 휴리스틱(heuristic) 테스팅 접근법이다. 탐색적 테스팅 접근법은 여러 테스팅 기법과 방법론을 훈련한 테스트 엔지니어가 많은 생각과 지적인 활동을 통해 창조적으로 테스팅하는 것을 강조한다. 탐색적 테스팅의 구성요소에는 1) 테스트 차터와 시간 제한 2) 테스트 노트와 요약 보고가 있다.
테스트 케이스 기반 테스팅과 탐색적 테스팅의 가장 큰 차이점은 테스트 케이스 기반 테스팅은 모든 테스트 케이스의 작성을 마친 후 그것을 절차적으로 실행하지만 탐색적 테스팅은 테스트 대상을 알게 되면서 동시에 테스트를 설계학고 실행한다. 탐색적 테스팅은 발견된 결함의 주변을 탐색하여 보다 더 많은 결함을 발견할 가능성을 높인다. 탐색적으로 테스트할 경우 테스터의 성향(파괴적, 스크립트적, 상용성, 남/여 테스터)에 따라 서로 다른 결과를 산출하게 된다.
완벽한 테스팅은 불가하기 때문에 탐색적 테스팅을 수행할 때에도 리스크 기반 접근법 전략을 사용해야 한다. 테스트 분석/설계 단계에서 리스크 분석 결과 가장 리스크가 큰 곳을 강력하게 테스팅하고 싶을때 탐색적 테스팅을 추가, 보완하여 줄 수 있다. 탐색적 테스팅은 훈련되지 않은 테스터가 사용할 경우 테스트 커버리지를 보장할 수 없고 테스터의 기량에 따라서 리스크가 노출될 수 있다는 단점을 가지고 있다.
분류 트리 기법
분류 트리 기법은 소프트웨어 일부 또는 전체를 트리 구조로 분석 및 표현하고 거기에서 테스트 케이스를 도출하는 기법이다. 블랙박스 형태로 테스팅이 이루어지며 명세가 없을 때에도 사용할 수 있는 비공식적인 기법이다. 테스트 아이디어를 트리 구조로 시각화하여 테스트 케이스를 설계하므로 의도한대로 테스트 케이스를 도출할 수 있다. 시각적으로 보면서 트리 구조 끝단의 조합을 통해 테스트 케이스를 작성하므로 한가지 기능만 테스트하는 경우 불필요한 중복을 호히피할 수 있다. 복잡성을 처리하는 소프트웨어의 시스템이나 어플리케이션의 일부 또는 전체를 테스팅하는데 적합하다. 개발 설계를 체크하는 용도로 사용이 가능하며 조기 테스트 설계에 활용할 수 있다. 테스트 케이스 개수와 트리의 복잡도를 근거로 테스트 비용을 추정하는 것이 가능하다.
체크리스트
체크리스트는 테스트하고 평가해야 할 내용과 경험을 분류하여 나열해 놓은 것을 의미한다. 체크리스트는 체계적으로 도출되기 보다는 테스트 경험과 노하우를 정리하고 목록화하여 다음번 테스팅에서 해당 내용을 누락 없이 재활용하는 것을 목적으로 작성된다. 체크리스트와 테스트 케이스를 구분하는 주요 기준을 테스트 보장성 제공 여부로 본다. 체크리스트는 경험과 노하우의 반영물이어서 테스트는 효과적이고 효율적으로 진행할 수 있지만 효과성은 보장하지 못한다. 테스트 케이스는 기법을 적용하여 도출하는 경우가 대부분이고 기법이 보장하는 범위에서 테스트의 효과성을 보장해준다. 체크리스트는 테스트 베이시스(개발 중간 산출물)에서 결함을 발견하는데 주로 사용되어 정적 테스트 기법의 주요한 도구가 되지만 테스트 케이스는 동적 테스팅의 주요한 도구가 된다.
특성 테스팅
국제 표준인 ISO/IEC 9126 등의 품질 모델에 있는 품질 특성을 염두에 두고 이를 근간으로 경험적으로 테스트 케이스를 도출하는 테스트 기법이다. 특성 테스팅은 기능 테스트도 다루지만 기능 이외의 특성을 다루는 비기능 테스팅을 많은 부분 포함한다.
- 기능성은 요구되는 기능 및 성능을 만족시키는 능력으로 정의되며 제품에 대한 기술 문서, 제품 기능 정의서와 사용자 요구 문서 등에 언급된 모든 기능을 테스트 케이스로 작성한다.
- 신뢰성은 규정된 성능 수준을 유지하고 결함을 방지할 수 있는 소프트웨어의 능력으로 정의된다. 사용성은 사용자가 이해하고 배우기 쉬운 정도로 정의되며, UI나 어떤 기능을 실행하기 위한 순서, 내용 및 처리 메시지가 적절한지 등에 대한 확인 절차를 테스트 케이스로 작성한다.
- 효율성은 자원의 적절한 사용 및 적정한 반응시간 정도로 정의되며, 어떤 기능을 수행하거나 정보를 표시할 때 필요없는 항목이 포함되어 있는지의 여부를 확인하는 내용을 테스트 케이스로 작성한다.
- 유지보수성은 소프트웨어의 수정 및 변경의 용이성으로 정의되며, 소프트웨어 변경 및 기존의 시스템을 다른 시스템으로 교체하는 경우에 작업 절차가 용이한지에 대해 확인하는 과정을 테스트 케이스로 작성한다.
- 이식성은 지원하는 다양한 운영환경에서 운영될 수 있는 소프트웨어의 능력으로 정의된다. 지원하는 모든 시스템 운영 환경에서 제품이 정상적으로 실행되는지를 확인하는 과정과 해당 운영 환경에서 실행되고 있는 다른 프로그램과의 호환성에 대한 내용을 테스트 케이스로 작성한다.
'테스트 이론' 카테고리의 다른 글
QA를 위한 필수 테스트 툴 총정리: 종류, 장단점, 도입 시 주의사항까지 (0) | 2025.06.15 |
---|---|
테스트 관리 - 리스크와 테스팅, 테스트 프로세스 심사 및 평가(TMM, TPI) (2) | 2025.06.08 |
구조 기반 테스트 기법 - 조건, 결정, 다중 조건, 변경 조건/결정 커버리지와 테스팅 (0) | 2025.06.01 |
명세 기반 테스트 설계 기법 - 등가 분할, 경계값 분석, 결정 테이블, 페어와이즈, 유즈케이스 (0) | 2025.05.18 |