탐색적 테스팅
태그 :
- 개념
- - 이전 테스트 결과등 테스터의 경험에 기반해 다음 테스트를 설계하는 테스트 설계와 실행이 동시에 이루어지는 경험기반 테스팅 - 학습과 테스트 디자인 그리고 테스트 수행을 동시에 하는 테스팅 - 테스터가 테스트를 수행하는 동안 능동적으로 테스트 디자인을 컨트롤하고 테스트로부터 도출된 정보를 사용해 더 새롭고 발전된 테스트를 디자인함.
I. 탐색적 테스팅(Exploratory Testing) 개요
가. 탐색적 테스팅 (Exploratory Testing)의 정의
- 이전 테스트 결과등 테스터의 경험에 기반해 다음 테스트를 설계하는 테스트 설계와 실행이 동시에 이루어지는 경험기반 테스팅
- 학습과 테스트 디자인 그리고 테스트 수행을 동시에 하는 테스팅
- 테스터가 테스트를 수행하는 동안 능동적으로 테스트 디자인을 컨트롤하고 테스트로부터 도출된 정보를 사용해 더 새롭고 발전된 테스트를 디자인함.
나. 탐색적 테스팅 (Exploratory Testing)의 특징
특징 |
상세내용 |
반복적 개선 |
반복을 통해서 테스트 프로세스를 지속적으로 개선 |
집중 유도 |
테스터가 테스트 작업 자체에 더 집중하도록 유도 |
높은 효율성 |
적은 투자비용으로 높은 효율성을 보임 |
다. 탐색적 테스팅 (Exploratory Testing) 의 필요성
- 공식적 테스트 기법과 경험 기반 테스트 기법으로 구현된 테스트 케이스는 찾아낼 수 있는 결함의 종류가 상이함.
- 테스트 설계를 향상시키는데 중점을 두는 경우
- 테스트 케이스를 작성(문서화)하는데 들이는 노력을 최소화 하는 경우 (능숙한 상태에서 머릿속에서 테스트를 설계)
- 테스트 설계 분량과 실행 분량을 최대화 (케이스 작성에 절약된 시간 활용)
II. 탐색적 테스팅의 테스트 절차와 구성 요소
가. 탐색적 테스팅의 테스트 절차
“스무고개를 할 때 미리 스무개의 질문을 모두 정해놓고 답을 듣는 것이 아니고, 하나의 질문을 묻고 거기에 대한 답을 들은 다음, 거기에 기반해 다음 질문을 생각해 내고 하면서 피드백의 순환고리를 돌며 진행하는 것이죠.”
- 제임스 바크(James Bach) 가 주창한 경험 기반 테스팅 기법 중 한가지로 테스트 케이스를 먼저 작성하지 않고, 테스트 대상 제품을 실행하면서 익숙해지는 것과 동시에 테스트를 설계하고 테스트를 계획하는 기법. 그러므로써 테스트 케이스 작성의 시간을 최소화하고 테스트 엔지니어의 발견적인(Heuristic) 지적 능력을 최대한 활용하여 테스트를 수행하는 것입니다.
- 각각의 절차는 최대의 효과를 위해 테스트 절차와 지침에 따라 테스팅
나. 탐색적 테스팅의 구성요소
구 분 |
설 명 |
테스트 차터 (Test Charter) |
- 각 세션에 대해 명확한 임무를 설정해 놓은 것 - 리스크가 높을 경우 강력한 테스팅을 위해 테스트 차터를 많이 수행 |
시간 제한 (Time Box) |
- 테스트 차터를 정할 때 먼저 수행할 각 세션당 시간을 정해놓는 것 - 테스터는 정해진 시간 내에 테스트 차터를 수행 |
테스트 노트 (Test Note) |
- 테스트 실행과 동시에 머릿속으로 계획, 설계하고 테스트케이스를 작성하여 간단하게 노트에 기록한 것 - 테스트 케이스의 역할을 대체하며 검토 가능한 결과물로 활용 |
요약 보고 (Debriefing) |
- 테스팅 한 셰션이 종료된 후 발견된 결함과 이슈를 보고 - 어떤 식으로 테스트가 수행 되었는지 경험을 팀원과 공유 |
III. 테스트 케이스 기반 테스팅과의 비교
탐색적 테스팅 |
테스트 케이스 기반 테스팅 |
테스트가 설계됨과 동시에 수행. 테스트 기록은 필수 사항은 아님 |
테스트가 먼저 설계되고 기록. 나중에 다른 테스터가 이를 수행 |
테스트는 아이디어를 반영하고 생각을 발전시키는 방향으로 수행 |
테스트는 미리 착안된 생각에 따라 수행 |
테스트 설계를 향상시킴 |
테스트의 실행을 관리 |
프로젝트 기간 내내 테스트 계획/설계와 실행을 반복 |
테스트 실행을 시작하기 전에 테스트 케이스를 작성 |
테스트 문서 작성, 검토에 대한 필요성을 최소화 (복잡한 테스트에 상대적으로 많은 노력투자 가능) |
테스트 문서 작성, 검토에 많은 공수가 소요되어 테스트의 효율성이 감소하는 경우 발생 |
테스터간의 (특성, 능력) 차이를 최대한 활용하는 노력 |
테스터간의 (특성, 능력) 차이를 제거하는 노력 |
테스트 설계자 일수 있는 테스터가 테스트 설계 |
테스터가 아닐 수 있는 테스트 설계자가 테스트를 설계 |
점진적, 주기적인 테스팅 수행 |
완벽하게 한번에 테스팅을 수행 |
IV. 탐색적 테스팅 적용시의 고려 사항 및 기대 효과
가. 탐색적 테스팅 적용시의 고려 사항
- 공식적 테스팅을 보완하는 측면에서 활용하거나 병행하는 것이 효과적임
- 페어와이즈 기법, 등가분할, 경계값 분석, 결정 테이블 테스팅 등 대부분의 기법을 활용할 수 있으나 최소한의 기법만을 사용하는 것을 권장함.
나. 탐색적 테스팅 수행시의 기대 효과
- 경험적 테스팅을 체계화 할 수 있음
- 케이스 작성시간을 단축하여 보다 많은 테스트를 실행할 수 있음
- 테스터, 테스트 엔지니어의 역량 향상에 도움
- 적은 테스트 인력으로 많은 테스트를 수행할 수 있음
- 명세가 거의 없어 시간이 부족한 테스트의 효과적, 효율적 수행이 가능
다. 탐색적 테스팅이 적합한 곳(Where ET Fits
- 새로운 제품이나 기능에 빠른 피드백을 제공해야 할 필요가 있을 때
- 제품에 대해 신속하게 학습해야 할 때
- 스크립트를 사용해 이미 테스트를 완료하고 좀 더 심도 있는 테스팅이 필요할 때
- 짧은 시간 안에 가장 중요한 단일 버그를 찾고 싶을 때
- 간단한 독립적인 조사를 수행함으로써 다른 테스터의 작업을 체크하고 싶을때
- 특정한 결함을 조사하고 격리시키길 원할 때
- 특정한 위험이 발생한 영역에 대해 스크립트 테스트가 필요한지 평가하기 위해 특정한 위험의 상태를 조사하길 원할 때