자격증/ISTQB FL2020. 3. 30. 08:00

용어
데이터 주도 테스팅(data-driven testing), 키워드 주도 테스팅(keyword-driven testing), 테스트 자동화(test
automation), 테스트 실행 도구(test execution tool), 테스트 관리 도구(test management tool)

학습목표
6.1 테스트 도구 고려 사항 (Test tool considerations)
6.1.1  테스트 도구를 사용 목적과 지원하는 테스트 활동에 따라 구별할 수 있다.
6.1.2  테스트 자동화의 효과와 리스크를 식별할 수 있다.
6.1.3  테스트 실행 및 테스트 관리 도구 사용 시 특별히 고려해야 하는 사항을
기억할 수 있다.
6.2 도구의 효과적인 사용 (Effective use of tools)
6.2.1  도구 선택의 주요 원칙을 식별할 수 있다.
6.2.2  도구를 도입할 때 파일럿 프로젝트의 목적을 상기할 수 있다.
6.2.3  조직의 테스트 도구에 대한 평가, 시행, 배포, 상시 지원의 성공 요인을
식별할 수 있다.


6.1 테스트 도구 고려 사항 Test Tool Considerations
테스트 도구는 하나 이상의 테스팅 활동을 지원하는데 사용할 수 있으며, 다음과 같은 종류가 있다:
● 테스팅에 직접 사용하는 도구 (예: 테스트 실행 도구, 테스트 데이터 준비 도구)
● 요구사항, 테스트 케이스, 테스트 프로세스, 자동 테스트 스크립트, 테스트 결과, 테스트 데이터, 결함을
관리하고, 테스트 실행 보고와 모니터링을 지원하는 도구
● 분석(analysis)과 평가(evaluation)에 사용하는 도구
● 테스팅을 지원하는 모든 도구 (이런 의미에서 스프레드시트도 테스트 도구임)

6.1.1 테스트 도구의 분류 (Test Tool Classification)
테스트 도구는 정황에 따라 다음과 같은 하나 이상의 목적이 있다:
● 반복적인 작업이나 수동으로 진행했을 때 상당한 리소스를 필요로 하는 작업(예: 테스트 실행,
리그레션 테스팅)을 자동화해서 테스트 활동의 효율성을 높인다.
● 테스트 프로세스 전반에 걸쳐 수동 테스트 활동을 지원해서 테스트 활동의 효율성을 높인다 (1.4 절
참조).
● 테스팅의 일관성과 결함 재현성 향상으로 테스트 활동의 품질을 향상시킨다.
● 수동으로 실행할 수 없는 활동을 자동화(예: 대규모 성능 테스팅)한다.
● 테스팅의 신뢰성을 향상(예: 대규모 데이터 비교 자동화나 동작 시뮬레이션)한다.
도구는 목적, 가격, 라이선스 모델(예: 상용이나 오픈소스), 사용된 기술에 따라 분류할 수 있다. 본
실러버스에서는 테스트 도구가 지원하는 활동에 따라 도구를 분류한다.
어떤 도구는 명확하게 하나의 테스트 활동만을 지원하고 어떤 도구는 하나 이상의 활동을 지원하기도 한다. 본
실러버스에서 분류는 가장 밀접하게 관련 있는 활동을 기준으로 했다. 여러 도구가 함께 동작하도록 설계된
도구를 제공하는 공급자는 통합된 하나의 스위트를 제공할 수 있다. 도구 자체가 테스트의 실제 결과에 영향을
준다는 의미에서 침입적(Intrusive) 도구도 있다. 예를 들어 성능 테스팅 도구가 실행하는 추가 명령 때문에
애플리케이션의 실제 반응 시간이 달라질 수 있고 코드 커버리지 도구를 사용하면 달성하는 코드 커버리지의
측정치가 달라질 수 있다. 이러한 침입적 도구를 사용해 달라진 결과를 탐사 효과(Probe effect)라고 부른다.
또 컴포넌트 테스트나 컴포넌트 통합 테스트 중 개발자에게 더 적절한 도구도 있다. 이런 도구는 아래에
“ 개발자 지원”으로 표기되어 있다.
테스팅 및 테스트웨어 관리 지원 도구 (Tool support for management of testing and testware)
관리 도구는 소프트웨어 수명주기 전체에 걸쳐 모든 테스팅 활동에 사용할 수 있다. 테스팅 및 테스트웨어
관리를 지원하는 도구는 다음과 같다:
● 테스트 관리 도구와 애플리케이션 수명주기 관리 도구 (ALM, application lifecycle management tool)
● 요구사항 관리 도구 (예: 테스트 대상의 추적성 관리)
● 결함 관리 도구
● 형상 관리 도구
● 지속적인 통합 도구 (개발자 지원)
정적 테스팅 지원 도구 (Tool support for static testing)
정적 테스팅 도구는 제 3 장의 정적 테스팅과 장점에 연관돼 있으며, 다음과 같은 도구가 있다:
● 정적 분석 도구 (개발자 지원)
테스트 설계 및 구현 지원 도구 (Tool support for test design and implementation)
테스트 설계 도구는 테스트 설계와 구현 단계에서 작업 산출물(예: 테스트 케이스, 테스트 프로시저, 테스트
데이터)을 유지보수하는 데 도움을 주며, 다음과 같은 도구가 있다:
● 모델 기반 테스팅 도구
● 테스트 데이터 준비 도구
테스트 설계와 구현을 지원하는 도구가 테스트 실행과 로깅을 지원하기도 하고 테스트 설계와 구현 도구가
테스트 실행과 로깅을 지원하는 다른 도구에 결과를 제공하기도 한다.
테스트 실행 및 로깅 지원 도구 (Tool support for test execution and logging)
테스트 실행과 로깅 활동을 지원하는 도구는 다양하며 아래와 같은 종류가 있다:
● 테스트 실행 도구 (예: 리그레션 테스트 수행]
● 커버리지 도구 (예: 요구사항 커버리지, 코드 커버리지 (개발자 지원))
● 테스트 하네스 (개발자 지원)
성능 측정과 동적 분석 지원 도구 (Tool support for performance measurement and dynamic analysis)
성능 측정 및 동적 분석 도구는 성능 및 부하 테스트 활동이 수동으로는 효과적으로 수행할 수 없기 때문에
이를 지원하는 데 필수적이다. 관련 도구의 예는 아래와 같다:
● 성능 테스팅 도구
● 동적 분석 도구 (개발자 지원)
특수 목적 테스팅 지원 도구 (Tool support for specialized testing needs)
일반적인 테스트 프로세스를 지원하는 도구 외에 비기능적 특징(non-functional characteristics)을 커버하기
위한 보다 특정적인 테스팅을 지원하는 도구도 있다.
6.1.2 테스트 자동화의 효과와 리스크 (Benefits and Risks of Test Automation)
단순히 도구를 도입했다고 성공이 보장되는 건 아니다. 조직에 새로운 도구를 도입할 때마다 실질적이고
지속적인 가치를 전달하려면 노력이 필요하다. 테스팅에서 도구를 사용해 잠재적인 가치를 얻을 기회가 있는
반면 리스크도 존재한다. 특히 테스트 자동화로 자주 지칭하는 테스트 실행 도구가 특히 그렇다.
테스트 실행 지원 도구는 아래와 같은 잠재적 가치가 있다:
● 반복적인 수동 업무 (예: 리그레션 테스트 수행, 환경 구축/해체 작업, 같은 테스트 데이터 재입력,
코딩 표준 준수 여부 점검 등)의 감소로 시간 절약
● 월등한 일관성과 반복성 제공 (예: 일관성 있는 테스트 데이터 생성, 같은 순서와 간격의 테스트 실행,
요구사항으로부터의 지속적인 테스트 도출)
● 보다 객관적인 평가 기준 제공 (예: 정적 테스팅 측정치, 커버리지)
● 테스팅 관련 정보에 접근이 쉬움 (예: 테스트 진척도, 결함율, 성능 통계와 그래프)
테스팅 지원 도구는 아래와 같은 잠재적인 리스크가 있다:
● 도구에 대한 비현실적인 기대 (예: 도구의 기능과 사용성)
● 초기 도구 도입에 필요한 시간, 비용, 노력에 대한 과소평가 (예: 교육, 외부 전문가 비용)
● 도구로 의미 있고 지속적인 효과를 얻는 데 필요한 시간과 노력을 과소평가 (예: 테스트 프로세스의
수정과 도구의 사용법에 대한 지속적인 개선)
● 도구가 생성하는 테스트 작업 산출물을 유지하기 위한 노력의 과소평가
● 도구에 대한 지나친 의존 (테스트 설계나 실행을 대체한다고 생각하거나 수동 테스팅이 더 효과적인
경우에 자동 테스팅 사용)
● 테스트 작업 산출물에 대한 버전의 관리 소홀
● 요구사항 관리 도구, 형상 관리 도구, 결함 관리 도구, 다수의 공급 업체에서 제공하는 도구 환경에서
주요 도구 간의 관계와 상호운용성 이슈를 관리하지 않음
● 도구 공급 업체의 폐업, 해당 도구의 판매 중단, 해당 도구가 다른 공급 업체에 매각될 수 있음
● 지원, 업그레이드, 결함 수정에 대한 공급 업체의 부적절한 대응
● 오픈소스 프로젝트는 연기되거나 중단될 수 있음
● 도구가 새로운 플랫폼이나 기술을 지원하지 않음
● 도구의 소유권이 명확하지 않음 (예: 멘토링, 업데이트 등의 어려움)

6.1.3 테스트 실행 및 테스트 관리 도구 고려 사항 (Special Considerations for Test Execution and
Test Management Tools)
조직에 테스트 실행과 테스트 관리 도구를 도입하고 통합해 큰 문제없이 성공적으로 도구를 구현하기 위해
고려해야 할 사항이 많다.
테스트 실행 도구 (Test execution tools)
테스트 실행 도구는 자동화 테스트 스크립트를 사용해 테스트를 실행한다. 보통 이런 종류의 도구에서 의미
있는 가치를 끌어내는 데는 상당한 노력이 필요하다.
• 캡처 기반 테스트 접근법 (Capturing test approach): 테스터의 수동적인 조작을 녹화해 테스트를
캡처하는 것은 매력적으로 보일 수 있지만 이러한 접근 방식은 테스트 스크립트의 수가 많을 경우
적절하지 않다. 캡처한 스크립트마다 특정 데이터와 행위를 1 차원적으로 표현하고 있기 때문에 미처
예상하지 못한 이벤트가 발생하면 취약할 수 있으며, 시스템의 사용자 인터페이스가 시간이 지남에
따라 바뀌게 되면 스크립트도 그에 맞게 계속해서 유지보수를 해 줄 필요가 있다.
• 데이터 주도 테스트 접근법 (Data-driven test approach): 이 접근법은 테스트 입력값과 기대 결과값을
보통 스프레드시트(spreadsheet)에 저장하고 더 많은 공통 스크립트를 활용해 해당 테스트 데이터를
읽어 들여 동일한 테스트 스크립트를 매번 다른 데이터로 반복적으로 실행한다.
• 키워드 주도 테스트 접근법 (keyword-driven test approach): 이 접근법은 해야 할 행동을 설명하는
키워드(액션 워드라고도 함)를 공통 스크립트가 처리해 키워드 스크립트를 호출(call)한다. 키워드
스크립트는 연관된 테스트 데이터를 처리한다.
위에서 언급한 접근법은 스크립트 언어 전문가(테스터, 개발자 또는 테스트 자동화 전문가)가 필요하다. 데이터
주도 또는 키워드 주도 테스트 접근법을 사용하는 경우 스크립팅 언어에 익숙하지 않은 테스터도 이렇게 사전
정의된 스크립트에 대한 테스트 데이터나 키워드를 작성함으로써 테스팅에 기여할 수 있다. 사용한 스크립트
기술과 상관없이 각 테스트의 기대 결과와 실제 결과를 비교할 필요가 있다. 동적(테스트 실행 도중)으로 아니면
차후(실행 후) 비교할 수 있다.
데이터 주도와 키워드 주도 테스트 접근법에 대한 자세한 내용과 예는 (ISTQB-CTAL-TAE, Fewster 1999 및
Buwalda 2001)에 나와 있다.
모델 기반 테스팅(MBT, Model based testing) 도구는 기능 명세를 액티비티 다이어그램과 같은 모델의 형태로
표현할 수 있도록 해준다. 일반적으로 이 작업은 시스템 설계자가 수행한다. MBT 도구는 모델을 해석해 테스트
케이스 명세를 생성하고, 생성한 명세는 테스트 관리 도구에 저장하거나 테스트 실행 도구로 실행한다 (ISTQBCT
MBT 참조).
테스트 관리 도구 (Test management tools)
테스트 관리 도구는 아래와 같은 여러 이유로 다른 도구나 스프레드시트와 연동해야 하는 경우가 많다:
● 필요한 정보를 생성하기 위해
● 요구사항 관리 도구에 저장된 요구사항과의 추적성을 지속적으로 유지하기 위해
● 형상 관리 도구에 저장된 테스트 대상 버전 정보와 연결하기 위해
이는 통합 도구(예: ALM, Application Lifecycle Management 애플리케이션 수명주기 관리)를 사용할 때 특히
중요하다. 애플리케이션 수명주기 관리 도구에는 조직 내 다양한 그룹에서 사용하는 기타 모듈(예: 프로젝트
일정과 예산 정보)뿐 아니라 테스트 관리 도구 모듈도 들어있다.


6.2 도구의 효과적인 사용 Effective Use of Tools

6.2.1 도구 선택의 주요 원칙 (Main Principles for Tool Selection)
조직에 맞는 도구를 선택하는데 주요 고려사항은 다음과 같다:
● 조직의 강점, 약점 등 성숙도 수준 평가
● 도구의 지원으로 테스트 프로세스 개선 기회 식별
● 테스트 대상이 이용하는 기술을 이해해 테스트 대상과 호환 가능한 도구 선택
● 호환과 통합이 가능한 도구 확인을 위해, 조직에서 이미 사용하고 있는 빌드와 지속적인 통합 도구
이해
● 명확한 요구사항과 객관적인 기준에 맞는 도구 평가
● 도구를 일정 기간 무료로 시험해 볼 수 있는지 여부
● 공급자 평가(교육, 지원, 상용 제품) 또는 비 상업적(예: 오픈소스) 도구 지원 평가
● 조직이 요구하는 도구 사용 코칭과 멘토 요구사항 식별
● 도구를 직접 사용할 사람의 테스팅(테스트 자동화 포함) 역량을 고려한 훈련 수요 확인
● 다양한 라이센스 모델(예: 상용 제품이나 오픈소스)의 장단점 고려
● 필요 시 구체적인 비즈니스 사례에 근거해 비용 대비 효과 추정
마지막으로 사전 검증(proof-of-concept)을 진행해야 한다. 사전 검증으로 테스트 대상 소프트웨어와 현재
인프라 환경에서 도구가 효과적으로 동작하는지 확인하고 필요한 경우에는 효율적으로 도구를 사용하는 데
필요한 요구사항을 식별한다.

6.2.2 도구 도입을 위한 파일럿 프로젝트 (Pilot Projects for Introducing a Tool into an Organization)
도구 선택과 사전 검증이 성공적으로 끝난 다음 선택한 도구를 조직에 도입하는 시점은 주로 파일럿
프로젝트(pilot project)이다. 파일럿 프로젝트의 목적은 다음과 같다:
● 깊이 있는 도구 지식의 습득, 장단점 모두 이해
● 도구를 기존 프로세스와 프랙티스에 어떻게 적용할지 평가하고 무엇을 변경할지 결정
● 도구와 테스트 작업 산출물의 사용, 관리, 저장, 유지보수에 대한 기준 결정 (예: 파일과 테스트를
명명하는 규칙 결정, 코딩 표준 선택, 라이브러리 생성, 테스트 스위트의 모듈성 정의)
● 목표한 가치를 적절한 비용으로 달성할 수 있는지 평가
● 도구에서 수집하고 보고하기를 희망하는 메트릭을 이해하고 그런 메트릭을 도출하고 보고할 수
있도록 도구를 설정

6.2.3 도구 성공 요인 (Success Factors for Tools)
조직에 도구의 평가, 구현, 배포, 지속적인 지원을 위한 성공 요인은 다음과 같다:
● 조직의 다른 부서에 도구 사용 전파를 점진적으로 진행
● 도구의 사용법에 맞게 프로세스를 수정하고 개선
● 도구 사용자에게 교육, 코칭, 멘토링 제공
● 도구사용에 필요한 지침을 정의 (예: 사내 자동화 규정)
● 실제 도구 사용에서 얻은 사용법 정보의 수집 방법 구현
● 도구 사용 현황과 성과를 모니터링
● 특정 도구 사용자에게 지원 제공
● 모든 사용자로부터 사용 후 교훈 수집
소프트웨어 개발 수명주기와 도구를 기술적으로, 유기적으로 통합하는 게 중요하다. 가령 운영이나 외부
공급업체를 담당하는 조직을 별도로 둔다. 테스트 실행 도구사용 경험, 사례와 조언은 Graham 2012 를
참조한다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터