ISTQB 용어집은 체크리스트 기반 테스트(checklist-based testing)를 체크리스트의 항목을 실행하도록 테스트 케이스를 설계하는 경험 기반 테스트 기법으로 정의한다.[1] ISTQB CTFL 강의계획서에 따르면 체크리스트 기반 테스트에서 테스터는 체크리스트의 테스트 조건을 커버하도록 테스트를 설계하고 구현하고 실행한다. 체크리스트는 경험, 사용자에게 무엇이 중요한지에 대한 지식, 소프트웨어가 왜 어떻게 실패하는지에 대한 이해를 바탕으로 만든다.[2]
체크리스트 항목
체크리스트에는 자동으로 확인할 수 있는 항목, 진입 기준이나 종료 기준으로 두는 편이 나은 항목, 너무 일반적인 항목을 넣지 않는다. 항목은 흔히 질문 꼴로 쓰고, 하나하나를 따로 곧바로 확인할 수 있어야 한다. 항목은 요구사항, 그래픽 인터페이스의 속성, 품질 특성, 그 밖의 테스트 조건을 가리킬 수 있다. 체크리스트는 기능 테스트와 비기능 테스트를 비롯한 여러 테스트 유형에 쓸 수 있다.[2]
개발자가 같은 실수를 피하는 법을 배우면서 일부 항목은 시간이 지날수록 효과가 떨어진다. 새로 찾은 심각도 높은 결함을 반영하는 항목을 더해야 할 때도 있다. 그래서 체크리스트는 결함 분석을 바탕으로 주기적으로 고치되, 너무 길어지지 않게 한다.[2]
커버리지와 반복성
자세한 테스트 케이스가 없을 때 체크리스트 기반 테스트는 테스트에 지침과 어느 정도의 일관성을 준다. 체크리스트가 상위 수준이면 실제 테스트가 달라지기 쉬워, 커버리지는 커질 수 있지만 반복성은 떨어진다.[2]
체크리스트 만들기
ISTQB CTAL-TA(Certified Tester Advanced Level Test Analyst) 강의계획서에 따르면 체크리스트를 쓰면 테스트 항목의 알려진 핵심 측면을 빠짐없이 다뤄 중요한 영역을 놓치지 않고, 테스트 주기 사이와 테스트 분석가 사이에 일관성이 생긴다. 체크리스트는 테스트 분석가가 겪은 장애(failure)와 결함의 경험을 기록한 것이고, 탐색적 테스트 중처럼 아이디어가 떨어졌을 때 떠올릴 거리가 된다. 테스트 항목에 맞는다면 표준 체크리스트나 동료가 만든 체크리스트를 다시 써서 시간을 아낄 수 있다. 테스트 케이스를 문서로 쓰는 일이 줄어, 요구사항과 소프트웨어가 계속 바뀔 때 쓸모가 크다.[3]
이 강의계획서는 체크리스트를 만드는 지침으로 다음 순서를 든다.[3]
- 체크리스트의 범위, 목표, 꼴을 정한다. 이것이 테스트의 깊이와 필요한 상세 수준을 좌우한다.
- 항목을 정하는 데 필요한 정보를 모은다. 경험 많은 사람의 통찰, 결함 라이브러리와 결함 분류법, 관련 문서, 리스크, 테스트 케이스, 일어날 수 있는 시나리오가 그 원천이다.
- 항목을 기능 영역, 사용자 역할, 테스트 레벨 같은 기준으로 묶어 정리한다.[3]
이 강의계획서는 꼴로 두 가지를 든다. read-do 체크리스트는 어떤 과정에서 고려할 주요 요소를 담는다. 예를 들어 입력 필드에 넣어 확인할 구체적인 무효 입력을 항목으로 둔다. do-confirm 체크리스트는 생각의 흐름을 이끄는 도구로, 애플리케이션을 더 탐색할 경험 기반 테스트 아이디어를 준다. 예를 들어 검색 결과가 알맞은지 확인하라는 항목을 둔다.[3]
항목은 명확하고 구체적이며 모호하지 않고, 일관되고 관련 있으며, 유지보수할 수 있고 실행할 수 있으며 측정할 수 있어야 한다. 항목은 ‘예’, ‘아니요’, ‘해당 없음’으로 답할 수 있는 질문으로 쓰고, 중요도, 잠재 영향, 리스크 수준에 따라 우선순위를 단다. 체크리스트는 빠짐없는 사용 설명서가 아니라 전문가가 빠르고 간단히 쓰는 도구다. 체크리스트는 끝나는 일이 없어서, 새로 찾은 것, 바뀐 우선순위, 다른 테스터의 피드백, 앞선 테스트 주기의 교훈을 반영해 계속 다듬는다.[3]
체크리스트 기반 리뷰와의 차이
체크리스트 기반 리뷰는 미리 정한 체크리스트에 비추어 테스트 기준을 평가하는 리뷰 기법이다.[3] ISTQB 용어집은 리뷰를 정적 테스트의 한 유형으로 정의한다.[4]