본문 바로가기

소프트웨어 공학/SW 테스팅

[6장] 테스트 지원 도구 Tool Support for Testing

용어(Keyword)

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

6.1 테스트 도구 고려 사항 Test Tool Considerations

테스트 도구는 하나 이상의 테스팅 활동을 지원하는데 사용할 수 있다.

6.1.1 테스트 도구의 분류 (Test Tool Classification)

테스트 도구는 정황에 따라 다음과 같은 하나 이상의 목적이 있다:

  • 반복적인 작업이나 수동으로 진행했을 때 상당한 리소스를 필요로 하는 작업(예: 테스트 실행, 리그레션 테스팅)을 자동화해서 테스트 활동의 효율성을 높인다.
  • 테스트 프로세스 전반에 걸쳐 수동 테스트 활동을 지원해서 테스트 활동의 효율성을 높인다 (1.4 절 참조).
  • 테스팅의 일관성과 결함 재현성 향상으로 테스트 활동의 품질을 향상시킨다.
  • 수동으로 실행할 수 없는 활동을 자동화(예: 대규모 성능 테스팅)한다.
  • 테스팅의 신뢰성을 향상(예: 대규모 데이터 비교 자동화나 동작 시뮬레이션)한다.

도구 자체가 테스트의 실제 결과에 영향을 준다는 의미에서 침입적(Intrusive) 도구도 있다.

이러한 침입적 도구를 사용해 달라진 결과를 탐사 효과(Probe effect)라고 부른다.

 

도구는 목적, 가격, 라이선스 모델(예: 상용이나 오픈소스), 사용된 기술에 따라 분류할 수 있다.

본 실러버스에서는 테스트 도구가 지원하는 활동에 따라 도구를 분류한다.

1. 테스팅 및 테스트웨어 관리 지원 도구 (Tool support for management of testing and testware)

관리 도구는 소프트웨어 수명주기 전체에 걸쳐 모든 테스팅 활동에 사용할 수 있다.

  • 테스트 관리 도구와 애플리케이션 수명주기 관리 도구 (ALM, application lifecycle management tool)
  • 요구사항 관리 도구 (예: 테스트 대상의 추적성 관리)
  • 결함 관리 도구
  • 형상 관리 도구
  • 지속적인 통합 도구 (개발자 지원)

2. 정적  테스팅 지원 도구 (Tool support for static testing)

  • 정적 분석 도구 (개발자 지원)

3. 테스트 설계 및 구현 지원 도구 (Tool support for test design and implementation)

테스트 설계 도구는 테스트 설계와 구현 단계에서 작업 산출물(예: 테스트 케이스, 테스트 프로시저, 테스트 데이터)을 유지보수하는 데 도움을 준다.

  • 모델 기반 테스팅 도구
  • 테스트 데이터 준비 도구

4. 테스트 실행 및 로깅 지원 도구 (Tool support for test execution and logging)

  • 테스트 실행 도구 (예: 리그레션 테스트 수행)
  • 커버리지 도구 (예: 요구사항 커버리지, 코드 커버리지 (개발자 지원))
  • 테스트 하네스 (개발자 지원)

5. 성능 측정과 동적 분석 지원 도구 (Tool support for performance measurement and dynamic analysis)

성능 측정 및 동적 분석 도구는 성능 및 부하 테스트 활동이 수동으로는 효과적으로 수행할 수 없기 때문에 이를 지원하는 데 필수적이다.

  • 성능 테스팅 도구
  • 동적 분석 도구 (개발자 지원)

6. 특수 목적 테스팅 지원 도구 (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)
    • 테스터의 수동적인 조작을 녹화해 테스트를 캡처
  • 데이터 주도 테스트 접근법 (Data-driven test approach)
    • 이 접근법은 테스트 입력값과 기대 결과값을 보통 스프레드시트(spreadsheet)에 저장하고 더 많은 공통 스크립트를 활용해 해당 테스트 데이터를 읽어 들여 동일한 테스트 스크립트를 매번 다른 데이터로 반복적으로 실행한다.
  • 키워드 주도 테스트 접근법 (keyword-driven test approach)
    • 이 접근법은 해야 할 행동을 설명하는 키워드(액션 워드라고도 함)를 공통 스크립트가 처리해 키워드 스크립트를 호출(call)한다

테스트 관리 도구 (Test management tools)

테스트 관리 도구는 아래와 같은 여러 이유로 다른 도구나 스프레드시트와 연동해야 하는 경우가 많다

  • 필요한 정보를 생성하기 위해
  • 요구사항 관리 도구에 저장된 요구사항과의 추적성을 지속적으로 유지하기 위해
  • 형상 관리 도구에 저장된 테스트 대상 버전 정보와 연결하기 위해

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)

  • 조직의 다른 부서에 도구 사용 전파를 점진적으로 진행
  • 도구의 사용법에 맞게 프로세스를 수정하고 개선
  • 도구 사용자에게 교육, 코칭, 멘토링 제공
  • 도구사용에 필요한 지침을 정의 (예: 사내 자동화 규정)
  • 실제 도구 사용에서 얻은 사용법 정보의 수집 방법 구현
  • 도구 사용 현황과 성과를 모니터링
  • 특정 도구 사용자에게 지원 제공
  • 모든 사용자로부터 사용 후 교훈 수집