본문 바로가기
IT 진로/자격증

STQB_CTFL 6. 테스트 지원 도구

by Jinger 2024. 5. 17.

서론

    이번 6장의 학습 목표는 "테스트 지원 도구는 사용 목적에 따라 여러 종류로 나눌 수 있고 도구의 선택과 도입을 위한 중대한 내용을 알아야 한다. 테스트 자동화를 통한 장점을 알고 이를 준비할 수 있다."이다. 이를 기억하고 내용을 이해해 보자.


배우기에 앞서 용어 정리

    용어를 확실하게 아는 것이 이해에 도움이 된다. ISTQB가 개발자뿐만 아니라 다른 직군도 시험을 충분히 볼 수 있기에 이해하기 쉽게 용어의 정의를 살펴보자.

  • 테스트 도구: 소프트웨어 테스트를 자동화하고 효율적으로 수행하기 위해 사용되는 소프트웨어
  • 데이터 주도 테스팅: 테이블이나 스프레드시트에 테스트 입력값과 예상결과를 저장하여 스크립트를 작성하고 테스트하는 기법.
  • 키워드 주도 테스팅: 테스트 데이터와 예상 결과뿐만 아니라, 테스트 대상 애플리케이션과 관련된 키워드를 포함한, 데이터 파일을 사용하는 스크립트 기법.
  • 테스트 자동화: 테스트 활동을 수행하거나 지원하는 소프트웨어 툴의 사용하여 테스팅 하는 것.
  • 테스트 실행 도구: 테스트 케이스를 자동으로 실행하고 결과를 기록하는 데 사용하는 도구
  • 테스트 관리 도구: 테스트 관리 도구는 테스트 계획 수립, 요구사항 추적, 테스트 케이스 작성 및 유지보수, 결함 관리, 테스트 보고서 작성 등을 지원
  • 테스트 하네스: 테스트를 수행하기 위해 필요한 스텁과 드라이버로 구성된 테스트 환경
  • 스텁: 골격만 있는 또는 특별한 목적의 소프트웨어 컴포넌트를 구현한 것.
  • 드라이버: 컴포넌트나 시스템을 제어하거나 호출하는 상위 컴포넌트를 대체하는 테스트용의 소프트웨어 컴포넌트 또는 툴.

테스트 도구 고려 사항

   테스트 도구는 하나 이상의 테스팅 활동을 지원하는데 사용할 수 있으며, 다음과 같은 종류가 있다.

  • 테스트 관리 지원 도구
  • 테스트 설계 지원 도구
  • 테스트 실행 및 로깅 지원 도구
  • 성능과 모니터링 도구

테스트 도구의 분류

    테스트 도구는 반복적인 테스팅 작업을 자동화함으로써 테스팅 활동의 효율성을 높이는 데 도움을 준다. 또한, 테스트 도구는 대용량의 데이터를 비교하거나 동작을 시뮬레이션 하는 것을 자동화함으로써 신뢰성을 높이기도 한다. 어떤 종류의 도구는 도구 자체가 테스트의 실재 결과에 영향을 미친다는 측면에서 침입적(Intrusive)이라고 할 수 있다. 테스트 도구는 정황에 따라 다음과 같은 하나 이상의 목적이 있다.

  • 반복적인 작업이나 수동으로 진행했을 때 상당한 리소스를 필요로 하는 작업을 자동화해서 테스트 활동의 효율성을 높인다.
  • 테스트 프로세스 전반에 걸쳐 수동 테스트 활동을 지원해서 테스트 활동의 효율성을 높인다.
  • 테스팅의 일관성과 결함 재현성 향상으로 테스트 활동의 품질을 향상한다.
  • 수동으로 실행할 수 없는 활동을 자동화한다.
  • 테스팅의 신뢰성을 향상한다.

    어떤 도구는 명확하게 하나의 테스트 활동만을 지원하고 어떤 도구는 하나 이상의 활동을 지원하기도 한다. 여러 도구가 함께 동작하도록 설계된 도구를 제공하는 공급자는 통합된 하나의 스위트를 제공할 수 있다. 도구 자체가 테스트의 실제 결과에 영향을 준다는 의미에서 침입적(Intrusive) 도구도 있다. 예를 들어 성능 테스팅 도구가 실행하는 추가 명령 때문에 애플리케이션의 실제 반응 시간이 달라질 수 있고 코드 커버리지 도구를 사용하면 달성하는 코드 커버리지의 측정치가 달라질 수 있다. 이러한 침입적 도구를 사용해 달라진 결과를 탐사 효과(Probe effect)라고 부른다.

    또 컴포넌트 테스트나 컴포넌트 통합 테스트 중 개발자에게 더 적절한 도구도 있다. 이런 도구는 아래에 “ 개발자 지원”으로 표기되어 있다.

    도구는 목적, 가격, 라이선스 모델, 사용된 기술에 따라 분류할 수 있다. 앞으로는 테스트 도구는 활동에 따라 분류해 보자.

테스팅 및 테스트웨어 관리 지원 도구

테스트 관리 도구

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

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

   테스트 관리 도구의 특징은 다음과 같다.

  • 실행된 테스트와 테스팅 활동 관리를 지원한다.
  • 테스트 실행 도구나 결함 추적 도구, 요구사항 관리 도구와의 인터페이스 역할을 한다.
  • 별도의 버전 관리 기능을 가지거나 혹은 다른 형상 관리 도구와의 인터페이스 기능을 가지고 있다.
  • 요구사항 명세와 같은 원본 문서와 테스트, 테스트 결과, 결함 또는 인시던트 간의 추적성을 제공한다.
  • 테스트 결과를 기록(로깅)하고 테스트 진행 상황에 대한 리포트를 생성한다.
  • 테스트 대상 정보를 제공하고 테스트 프로세스를 제어하고 개선하기 위해, 테스트 수행과 관련되었거나 테스트 대상과 관련된 정량적인 분석을 지원한다.
    • 테스트 수행 관련 측정: 수행한 테스트와 합격한 테스트 등
    • 테스트 대상 관련 측정: 발견된 결함 또는 인시던트 등

인시던트 관리 도구

   인시던트 관리 도구는 결함이나 장애, 인지된 문제와 불일치 등을 포함하는 인시던트 리포트를 저장하고 관리한다. 인시던트 리포트 관리를 지원한다는 것은 다음을 의미한다.

  • 보고된 인시던트 리포트 간의 우선순위를 정할 수 있다.
  • 담당자에게 수정 또는 확인 테스트 등의 임무를 할당할 수 있다.
  • 결함 재수정 요청, 수정 완료, 수정 연기 등으로 결함 상태를 변경할 수 있다.

   인시던트 관리 도구는 인시던트 중에서도 개발자 수정 및 재테스트가 필요한 결함을 주요 관리 대상으로 하며, 결함이 발견(오픈)되고, 할당되고, (재)수정되고, (재)확인되고, 종료(마감)되는 등의 결함 수명주기를 관리한다.

요구사항 관리 도구

   요구사항 관리 도구의 특징은 다음과 같다.

  • 요구사항 명세서 저장
  • 요구사항의 일관성 및 정의되지 않았거나 누락된 요구사항 확인
  • 요구사항의 우선순위를 정할 수 있도록 지원
  • 테스트(케이스)와 요구사항, 기능 사이의 추적성을 확보할 수 있도록 지원

    요구사항 추적성은 테스트 진척 보고서를 통해 보고될 수 있으며, 테스트를 통해 달성한 요구사항 또는 기능 커버리지가 있다. 일반적으로 모든 요구사항에 대해 테스트 케이스를 만들고, 해당 테스트 케이스가 실행되는 비율에 따라 요구사항 커버리지를 자동으로 보고한다.

형성 관리 도구

   형성 관리 도구는 엄밀히 말하자면 테스팅 도구가 아니지만, 일반적으로 소프트웨어 테스트 대상의 다양한 버전이나 빌드이력을 추적하기 위해 사용한다. 형상 관리 도구의 일반적인 특징은 아래와 같다.

  • 소프트웨어나 테스트웨어의 버전이나 빌드들에 대한 정보를 저장한다.
  • 테스트웨어와 소프트웨어 중간산출물 버전에 대한 추적성을 지원한다.
  • 특히, 하나 이상의 형상을 갖는 하드웨어나 소프트웨어 환경에서 개발이 진행될 때 유용하다.

정적 테스팅 지원 도구

    정적 테스팅 도구는 제3 장의 정적 테스팅과 장점에 연관돼 있으며, 다음과 같은 도구가 있다.

  • 리뷰도구
  • 정적 분석 도구(개발자 지원)
  • 모델링 도구(개발자 지원)

리뷰 도구

   리뷰 도구의 특징은 다음과 같다.

  • 리뷰 프로세스 정보를 저장한다.
  • 리뷰 코멘트를 저장하고, 서로 의사소통하게 한다.
  • 발견된 결함과 노력을 보고한다.
  • 리뷰 규칙이나 체크리스트를 참조할 수 있도록 관리한다.
  • 문서와 소스 코드 사이의 추적성을 확보할 수 있다.
  • 온라인 리뷰를 지원하므로 지역적으로 떨어져 있는 팀들에게 유용하다.

정적 분석 도구

   정적 분석 도구는 개발자, 테스터, 품질보증 담당자가 동적 테스팅을 하기 전에 결함을 발견할 수 있도록 지원한다. 이러한 도구들의 주요 목적은 다음과 같다.

  • 코딩 표준을 지킬 것을 강제한다.
  • 구조와 의존관계를 분석한다.
  • 코드를 쉽게 이해할 수 있도록 지원한다.

    정적 분석 도구는 소스 코드의 복잡도와 같은 메트릭을 도출할 수 있는데, 이러한 정보는 계획 수립이나 리스크 분석 등의 경우에 가치 있게 활용될 수 있다. 또한 코딩 표준이 존재할 경우 코딩 표준의 준수 여부를 검증하여 소스 코드의 유지보수성을 더욱 향상할 수 있다.

모델링 도구

  모델링 도구는 소프트웨어 모델의 유효성을 검사할 수 있게 한다. 정적 분석 도구나 모델링 도구를 사용함으로써 얻을 수 있는 가장 큰 이점은 개발 프로세스 초기에 더 많은 결함을 발견하게 하는 비용 효과성이다. 즉, 미래에 발생하게 될 재작업을 줄임으로써 개발 프로세스는 가속화되고 향상될 것이다.

테스트 설계 및 구현 지원 도구

     테스트 설계 도구는 테스트 설계와 구현 단계에서 작업 산출물을 유지보수하는 데 도움을 주며, 다음과 같은 도구가 있다.

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

   테스트 설계와 구현을 지원하는 도구가 테스트 실행과 로깅을 지원하기도 하고 테스트 설계와 구현 도구가 테스트 실행과 로깅을 지원하는 다른 도구에 결과를 제공하기도 한다.

테스트 설계 도구

   테스트 설계 도구는 코드, 설계 모델, 사용자 인터페이스, 요구사항으로부터 테스트 입력값과 테스트 케이스를 생성해 낸다. 어떤 테스트 설계 도구는 테스트 오라클 등을 사용하여 기대 결과값까지 생성하기도 한다. 상태나 객체 모델로부터 생성된 테스트 케이스는 구현된 시스템을 검증하는 데 매우 유용하다. 도구가 생성해 내는 체계적인 테스트 케이스로 테스팅의 완성도를 증가시키고 시간을 절약할 수 있다. 그러나 이러한 테스트 케이스는 시스템이나 소프트웨어의 모든 측면을 검증하기에 충분하지 못하다.

    설계 지원 도구를 사용함으로써 각 상태 전이 흐름을 추적하여 모든 전이 흐름을 최소 한 번씩은 커버할 수 있도록 테스트 시나리오를 자동으로 생성해주기도 한다. 테스트 설계 지원 도구에 내장되어 있는 테스트 설계 기법이 자동 적용되어 일정 수준 이상의 테스트 커버리지도 확보하고 신뢰성도 높일 수 있음을 확인할 수 있다.

테스트 데이터 준비 도구

    테스트 데이터 준비 도구는 데이터베이스, 파일, 데이터 전송을 적절히 조작하여 테스트 실행 시 사용할 테스트 데이터를 생성하는 도구이다. 이런 도구가 주는 장점은 실 데이터의 익명성을 보장하여 데이터를 보호하면서도 실제와 거의 동일한 데이터로 테스트를 할 수 있다는 것이다. 또한 대량의 데이터가 필요한 경우나 특정 생성 규칙에 맞는 데이터가 필요한 경우에도 유용하게 활용할 수 있다.

테스트 실행 및 로깅 지원 도구

   테스트 실행과 로깅 활동을 지원하는 도구는 다양하며 아래와 같은 종류가 있다.

  • 테스트 실행 도구
  • 테스트 하네스 (개발자 지원)
  • 단위 테스트 프레임워크 도구 (개발자 지원)
  • 테스트 비교자
  • 커버리지 측정 도구 (개발자 지원)
  • 보안 도구

테스트 실행 도구

   테스트 실행 도구는 스크립트 언어를 이용하여 저장한 입력 값과 기대 결과를 이용하여 테스트를 자동 혹은 반 자동으로 실행해 준다. 스크립트 언어를 통해 적은 노력으로 테스트를 제어하는 것이 가능하다.

   테스트 실행 도구는 레코딩 기능을 이용하여 자동으로 캡쳐된 스크립트 또는 수동으로 작성하여 저장한 스크립트를 재실행한다. 일반적으로 이런 유형의 도구를 사용해 주목할 만한 성과를 달성하기 위해서는 상당한 노력이 필요하다. 테스터의 테스트 수행 경로를 저장하는 캡쳐링 테스트는 매력적으로 보이지만, 이런한 접근 방식으로는 대용량의 자동화 테스트를 효과적으로 관리하기 어렵다. 캡쳐된 스크립트는 각 스크립트 작성 당시에 예측한 데이터와 동작에 의존한 테스트만 수행할 수 있으므로, 예상치 않은 이벤트 발생에 매우 취약할 수 있다.

테스트 하네스 (개발자 지원)

   테스트 하네스는 테스트 대상이 실행되는 환경을 시뮬레이션함으로써 컴포넌트나 시스템 일부에 대한 테스팅을 가능하게 한다.

   테스트 대상을 호출하거나 테스트 대상에 피드백을 줌으로써, 코드, 객체, 메서드나 기능, 단위나 컴포넌트의 일부가 실행될 수 있으면 프레임워크는 생성될 수 있다. 프레임워크는 테스트 대상에 입력을 하는 인위적인 수단을 제공하거나, 실제 출력 대상을 대신하여 테스트 대상으로부터 출력을 얻기 위해 스텁을 제공할 수 있다.

   테스트 하네스 도구는 미들웨어 상의 테스트 실행 프레임워크를 제공하는 용도로도 사용될 수 있는 데, 이 같은 경우에는 언어, 운영체제, 혹은 하드웨어는 함께 테스트되어야 한다.

단위 테스트 프레임워크 도구

   테스트 실행 프레임워크 중 컴포넌트 테스트 레벨에 포커스를 맞춘 도구를 단위 테스트 프레임워크라고 한다. 이러한 도구는 코드를 개발하는 동안 컴포넌트 테스트를 병행적으로 수행할 수 있도록 지원한다.

테스트 비교자

   테스트 비교자는 파일이나 데이터베이스 혹은 테스트 결과의 차이를 비교해 준다. 테스트 실행 도구는 일반적으로 내부에 동적 비교자를 포함하고 있지만, 별도의 비교 도구가 실행 이후의 그 결과를 비교하므로 이를 다른 도구로 분류한 것이다.

커버리지 측정 도구

  커버리지 측정 도구는 사용되는 측정 기법, 측정 대상, 코딩 언어에 따라 침입적이기도 하고 비침입적이기도 하다. 코드 커버리지 도구는 측정하고자 하는 코드구조가 몇 퍼센트 테스트되었는가를 측정한다. 이런 도구들은 테스트 대상의 구조가 테스트 세트에 의해 얼마나 완벽하게 수행되었는지를 보여준다.

보안 도구

   보안 도구는 컴퓨터 바이러스나 서비스 거부(DOS) 공격 등을 검사한다.

성능 측정과 동적 분석 지원 도구

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

  • 동적 분석 도구 (개발자 지원)
  • 성능/부하/스트레스 테스팅 도구
  • 모니터링 도구

동적 분석 도구

   동적 분석 도구는 소프트웨어의 실행 시에만 발생하는 시간 의존성과 메모리 누수와 같은 결함을 검출해 낼 수 있다. 이러한 도구들은 전형적으로 컴포넌트나 컴포넌트 통합 테스팅에서 사용되거나 미들웨어 테스트할 때 사용한다.

성능/부하/스트레스 테스팅 도구

   성능 테스팅 도구는 시스템이 다양한 사용 조건 하에서 어떻게 동작하는 가를 시뮬레이션하고 이를 모니터링하고 보고한다. 대부분 테스트의 자동 반복 실행에 기초하고 있고 파라미터에 의해 조정된다.

모니터링 도구

   모니터링 도구는 특정 시스템 리소스의 사용량을 지속적으로 확인하고 분석해서 보고하거나 예상되는 서비스 상의 문제점에 대해 경고 메시지를 줄 수 있다. 모니터링 도구는 테스트웨어나 소프트웨어의 빌드나 버전 정보를 저장하여 추적성을 확보하기도 한다.

   모니터링 도구는 엄밀하게 말하자면 테스팅 도구는 아니지만 테스팅 목적으로 이용할 수 있어 유용하며, 다른 방법으로는 얻을 수 없는 모니터링 정보를 제공하기도 한다.

특수 목적 테스팅 지원 도구

    일반적인 테스트 프로세스를 지원하는 도구 외에 비기능적 특징(non-functional characteristics)을 커버하기 위한 보다 특정적인 테스팅을 지원하는 도구도 있다. 특정 유형의 애플리케이션만을 위해 전문화될 수 있다. 예를 들어보면 아래와 같다.

  • 웹 기반 애플리케이션에 특화된 성능 테스팅 도구
  • 특정 개발 플랫폼을 위한 정적 분석 도구
  • 보안 테스팅에 특화된 동적 분석 도구
  • 임베디드 시스템과 같은 특정 어플리케이션 분야를 위한 사용 도구 스위트

테스팅 도구 이외의 다른 도구

   테스터에 의해 사용되는 도구만이 테스트 도구의 전부는 아니다. 테스터는 개발자가 사용하는 도구도 사용할 수 있고, 사무용으로 사용하는 도구도 테스팅에 활용할 수 있다.

상용 도구와 오픈 소스 도구

  도구 도입 시 상용 도구 이외에도 무료로 사용할 수 있는 오픈 소스 도구를 고려해 볼 수 있다. 기본적으로 오픈 소스는 소스 코드를 모두 공개하는 것을 의미하지만, 그 의미를 확장하여 소스 코드 공개 없이 사용할 수 있는 도구를 포함하기도 한다.

구분 오픈 소스 도구 상용 도구
기술 지원 대부분 불가능 공급사의 기술 지원 가능
도구의 완성도 도구에 따라 다름 대부분 높음
비용 무료 대부분 고가
소스 공개 공개 비공개
사용자 커스터마이징 가능 불가능
교육 및 훈련 사용자 스스로 해결 공급사의 교육 지원 가능
업데이트 주기 알 수 없음 공급사의 전략 또는 계획 존재
유지보수 사용자 스스로 해결하거나 관련 커뮤니티 활용 공급사의 기술 지원 가능
제품 또는 회사 종속성 특정 회사나 제품에 대한 종속성 탈피 특정 회사나 제품에 종속됨
문서화 대체로 빈약함 체계적인 사용자 문서 존재
기술 발전의 기여도 커뮤니티를 통한 기술 정보 공유로 발전 속도가 빠름 폐쇄적이고 독점적인 경우가 많음

  오픈 소스 도구 라이선스는 기본적으로 자유로운 사용, 수정 및 배포를 허용하고 있지만, 일정 한 조건을 준수하도록 하고 있다. 다음은 대표적인 오픈소스 종류이다.

종류 내용
GPL 2.0 현재 가장 많은 오픈 소프트웨어가 체택한 라이선스
가장 잘 알려져 있고 의무사항들도 엄격한 편
소스 코드 공개 의무 등 라이선스 내용 엄격함
GPL 3.0 기존 GPL 2.0의 내용을 적절히 수정하여 재구성한 라이선스
아파치 라이선스로 배포되는 코드와 결합 가능
LGPL 2.1 GPL보다 소스 코드의 공개 정도를 다소 완화시킨 라이선스
오픈 소스 SW의 사용을 축진하기 위한 목적으로 만든 라이선스
BSD License SW의 소스코드를 공개하지 않아도 되는 대표적인 라이선스
GPL이나 LGPL에 비해 허용 범위가 비교적 넓음
Apache License 아파치 재단의 SW에 적용되는 라이선스
BDS License와 유사하게 소스 코드 공개 의무 등이 없음
"Apache"라는 이름에 대한 상표권을 침해하지 않아야 함
특허권에 관한 내용이 포함되어 있음
MPL Netscape 브라우저의 소스코드를 공개하기 위해 개발된 라이선스
공개해야 할 소스 코드의 범위를 GPL에 비해 명확하게 정의함
새로운 파일에 작성된 소스 코드는 공개 의무가 없음
종류 무료 이용 배포 허용 소스 취득 소스 수정 2차 저작물 재공개 의무 독점 SW와 결합 가능
GPL 2.0 O O O O O X
GPL 3.0 O O O O O O
LGPL 2.1 O O O O O O
BSD License O O O O X O
Apache License O O O O X O

테스트 자동화의 효과와 리스크

   단순히 도구를 도입했다고 성공이 보장되는 건 아니다. 조직에 새로운 도구를 도입할 때마다 실질적이고 지속적인 가치를 전달하려면 노력이 필요하다. 테스팅에서 도구를 사용해 잠재적인 가치를 얻을 기회가 있는 반면 리스크도 존재한다. 특히 테스트 자동화로 자주 지칭하는 테스트 실행 도구가 특히 그렇다.

   테스트 실행 지원 도구는 아래와 같은 잠재적 가치가 있다.

  • 반복적인 수동 업무의 감소로 시간 절약
  • 월등한 일관성과 반복성 제공
  • 보다 객관적인 평가 기준 제공
  • 테스팅 관련 정보에 접근이 쉬움

   테스팅 지원 도구는 아래와 같은 잠재적인 리스크가 있다.

  • 도구에 대한 비현실적인 기대
  • 초기 도구 도입에 필요한 시간, 비용, 노력에 대한 과소평가
  • 도구로 의미 있고 지속적인 효과를 얻는 데 필요한 시간과 노력을 과소평가
  • 도구가 생성하는 테스트 작업 산출물을 유지하기 위한 노력의 과소평가
  • 도구에 대한 지나친 의존
  • 테스트 작업 산출물에 대한 버전의 관리 소홀
  • 요구사항 관리 도구, 형상 관리 도구, 결함 관리 도구, 다수의 공급 업체에서 제공하는 도구 환경에서 주요 도구 간의 관계와 상호운용성 이슈를 관리하지 않음
  • 도구 공급 업체의 폐업, 해당 도구의 판매 중단, 해당 도구가 다른 공급 업체에 매각될 수 있음
  • 지원, 업그레이드, 결함 수정에 대한 공급 업체의 부적절한 대응
  • 오픈소스 프로젝트는 연기되거나 중단될 수 있음
  • 도구가 새로운 플랫폼이나 기술을 지원하지 않음
  • 도구의 소유권이 명확하지 않음

테스트 실행 및 테스트 관리 도구 고려 사항

   조직에 테스트 실행과 테스트 관리 도구를 도입하고 통합해 큰 문제없이 성공적으로 도구를 구현하기 위해 고려해야 할 사항이 많다.

테스트 실행 도구

   테스트 실행 도구는 자동화 테스트 스크립트를 사용해 테스트를 실행한다. 보통 이런 종류의 도구에서 의미 있는 가치를 끌어내는 데는 상당한 노력이 필요하다.

  • 캡처 기반 테스트 접근법 (Capturing test approach): 테스터의 수동적인 조작을 녹화해 테스트를 캡처하는 것은 매력적으로 보일 수 있지만 이러한 접근 방식은 테스트 스크립트의 수가 많을 경우 적절하지 않다. 캡처한 스크립트마다 특정 데이터와 행위를 1차원적으로 표현하고 있기 때문에 미처 예상하지 못한 이벤트가 발생하면 취약할 수 있으며, 시스템의 사용자 인터페이스가 시간이 지남에 따라 바뀌게 되면 스크립트도 그에 맞게 계속해서 유지보수를 해 줄 필요가 있다.
  • 데이터 주도 테스트 접근법 (Data-driven test approach): 이 접근법은 테스트 입력값과 기대 결과값을 보통 스프레드시트(spreadsheet)에 저장하고 더 많은 공통 스크립트를 활용해 해당 테스트 데이터를 읽어 들여 동일한 테스트 스크립트를 매번 다른 데이터로 반복적으로 실행한다.
  • 키워드 주도 테스트 접근법 (keyword-driven test approach): 이 접근법은 해야 할 행동을 설명하는 키워드(액션 워드라고도 함)를 공통 스크립트가 처리해 키워드 스크립트를 호출(call)한다. 키워드 스크립트는 연관된 테스트 데이터를 처리한다.

    위에서 언급한 접근법은 스크립트 언어 전문가가 필요하다. 데이터 주도 또는 키워드 주도 테스트 접근법을 사용하는 경우 스크립팅 언어에 익숙하지 않은 테스터도 이렇게 사전 정의된 스크립트에 대한 테스트 데이터나 키워드를 작성함으로써 테스팅에 기여할 수 있다. 사용한 스크립트 기술과 상관없이 각 테스트의 기대 결과와 실제 결과를 비교할 필요가 있다. 동적(테스트 실행 도중)으로 아니면 차후(실행 후) 비교할 수 있다.

    모델 기반 테스팅(MBT, Model based testing) 도구는 기능 명세를 액티비티 다이어그램과 같은 모델의 형태로 표현할 수 있도록 해준다. 일반적으로 이 작업은 시스템 설계자가 수행한다. MBT 도구는 모델을 해석해 테스트 케이스 명세를 생성하고, 생성한 명세는 테스트 관리 도구에 저장하거나 테스트 실행 도구로 실행한다.

테스트 관리 도구

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

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

    이는 통합 도구를 사용할 때 특히 중요하다. 애플리케이션 수명주기 관리 도구에는 조직 내 다양한 그룹에서 사용하는 기타 모듈뿐 아니라 테스트 관리 도구 모듈도 들어있다.

성능 테스팅 도구

   성능 테스팅 도구를 정상적으로 사용하기 위해서는 성능 테스팅을 설계하고 테스트 결과를 해석할 수 있는 전문가가 필요하다.

정적 분석 도구

   정적 분석 도구는 소스 코드에 코딩 표준에 강제하는 데 사용할 수 있지만, 실제 적용 시 매우 많은 경고 메시지를 발생시킬 수도 있다. 결고 메시지는 소스 코드를 실행 가능한 프로그램으로 변환하는 과정에는 영향을 끼치진 않지만, 향후 소스 코드의 유지 보수를 용이하게 하기 위해서는 적절한 조치를 취하는 게 좋다.

테스트 관리 도구

   테스트 관리 도구는 조직의 요구에 맞는 최적화된 형태의 정보를 생성하기 위해 다른 도구나 스프레드시크 등과 연계하여 사용할 필요가 있다. 또한, 보고서는 효과적으로 설계되고 모니터링되어 보고서의 가치를 전달할 수 있어야 한다.


도구의 효과적인 사용

도구 선택의 주요 원칙

   조직에 맞는 도구를 선택하는데 주요 고려사항은 다음과 같다.

  • 조직의 강점, 약점 등 성숙도 수준 평가
  • 도구의 지원으로 테스트 프로세스 개선 기회 식별
  • 테스트 대상이 이용하는 기술을 이해해 테스트 대상과 호환 가능한 도구 선택
  • 호환과 통합이 가능한 도구 확인을 위해, 조직에서 이미 사용하고 있는 빌드와 지속적인 통합 도구 이해
  • 명확한 요구사항과 객관적인 기준에 맞는 도구 평가
  • 도구를 일정 기간 무료로 시험해 볼 수 있는지 여부
  • 공급자 평가 또는 비 상업적 도구 지원 평가
  • 조직이 요구하는 도구 사용 코칭과 멘토 요구사항 식별
  • 도구를 직접 사용할 사람의 테스팅(테스트 자동화 포함) 역량을 고려한 훈련 수요 확인
  • 다양한 라이선스 모델의 장단점 고려
  • 필요시 구체적인 비즈니스 사례에 근거해 비용 대비 효과 추정

    마지막으로 사전 검증(proof-of-concept)을 진행해야 한다. 사전 검증으로 테스트 대상 소프트웨어와 현재 인프라 환경에서 도구가 효과적으로 동작하는지 확인하고 필요한 경우에는 효율적으로 도구를 사용하는 데 필요한 요구사항을 식별한다.

도구 도입을 위한 파일럿 프로젝트

    도구 선택과 사전 검증이 성공적으로 끝난 다음 선택한 도구를 조직에 도입하는 시점은 주로 파일럿 프로젝트(pilot project)이다. 파일럿 프로젝트의 목적은 다음과 같다.

  • 깊이 있는 도구 지식의 습득, 장단점 모두 이해
  • 도구를 기존 프로세스와 프랙티스에 어떻게 적용할지 평가하고 무엇을 변경할지 결정
  • 도구와 테스트 작업 산출물의 사용, 관리, 저장, 유지보수에 대한 기준 결정
  • 목표한 가치를 적절한 비용으로 달성할 수 있는지 평가
  • 도구에서 수집하고 보고하기를 희망하는 메트릭을 이해하고 그런 메트릭을 도출하고 보고할 수 있도록 도구를 설정

도구 성공 요인

   조직에 도구의 평가, 구현, 배포, 지속적인 지원을 위한 성공 요인은 다음과 같다.

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

   소프트웨어 개발 수명주기와 도구를 기술적으로, 유기적으로 통합하는 게 중요하다. 가령 운영이나 외부 공급업체를 담당하는 조직을 별도로 둔다.

테스트 자동화

   테스트 자동화는 도구를 활용하여 테스트 노력을 단축하고 신속하게 테스트를 진행하고자 할 때, 또는 수동으로 하기 어려운 가상의 작업이 필요하거나, 도구가 제공하는 체계적인 커버리지 달성을 목적을 도입하는 경우가 많다.

   도구를 구입하거나 자체 개발을 통해 테스트를 자동화할 경우에 고려해야 할 사항을 정리해 보면 다음과 같다.

  • 적절한 자동화 대상 프로젝트 선정
  • 자동화를 테스트 전략과 계획에 포함
  • 자동화 도구 선정에 신중
  • 도구에서 요구하는 것에 따라 제품과 테스트 스펙을 공식적으로 변경하도록 준비
  • 자동화 테스트 지원 시설 개발 계획 고려 - 자동화 도구 적용 범위의 한계로 직접 개발해야 할 부분 존재
  • 테스팅을 개발 계획 또는 도구 방식에 맞게 진행하는 것 고려
  • 상세한 자동화 테스트 지침 필요
  • 자동화 도구 및 자동화 테스팅 교육에의 투자 요구
  • 도구 전문가 참여
  • 자동화 도구 관련 프로세스의 정의와 적용

도구 도입 절차

   조직의 특성이나 프로젝트 성격에 따라 도구 도입 절차는 다를 수 있으나, 도구 도입의 일반적인 절차는 아래와 같다.

  1. 요구사항 정의: 조직의 능력 평가, 테스트 프로세스 개선 준비, 도구 도입 요구사항 식별 및 정의
  2. 도구 조사: 도입 가능한 도구 조사, 제약사항 식별 및 검토, In-house 개발 가능성 검토
  3. 도구 평가: 도구 평가 기준 준비, 기능 및 관련 기술 평가 및 검토, 도구 및 공급사 평가 실시
  4. 파일럿 시범 적용: 파일럿 프로젝트 선정, 도구 시범 적용 실시, 요구사항 만족 여부 평가, 시범 적용을 통한 문제점 도출 및 해결 방안 검토
  5. 도구 선택: 도구 선택 기준 준비, ROI 및 테스트 프로세스 개선 고려, 도구 선택 기준에 의한 도구 선택, 도구 도입 계획 수립
  6. 도구 도입 및 배포: 전담 조직 할당 및 관련 인프라 구축 계획, 도구 도입에 따른 테스트 프로세스 개선, 도구 배포 계획 수립, 교육 및 훈련 계획 수립, 도구 설치 및 환경 구축, 도구 적용의 내재화 및 성공 사례 공유

도구 도입의 성과

   테스트 지원도구는 앞에서 본 것과 같이 여러 종류가 있으며 각 종류에 따라 얻을 수 있는 기대효과나 성과도 다르다. 일반적으로 도구를 통해 얻을 수 있는 기대효과는 다음과 같다.

  • 사람의 실수로 인한 에러 최소화
  • 수동으로 하기 어렵거나 불가능한 작업이 도구 지원을 통해 가능해짐
  • 신뢰성 있는 정량적 테스트 리포팅
  • 테스트 시간의 단축으로 제품 릴리즈 시간 단축 가능
  • 더욱 빈번하게 자주 테스트함으로써 신뢰성을 높일 수 있음
  • 테스팅 스킬이 높지 않아도 도구를 활용한 테스트 실행 가능
  • 테스트 커버리지를 높일 수 있음
  • 실행 자동화 도구의 경우 리그레션 테스팅의 효과 가능
  • 처리 절차의 자동화는 커뮤니테이션 시간 및 커뮤니케이션 시간 및 커뮤니케이션 오류 절감에 기여
  • 도구에 내장된 기능을 사용함으로써 객관적으로 효과적인 도구 사용 가능
  • 매니저의 경우 담당자의 개별 보고에 의존하지 않고 도구의 대시보드를 통해 실시간 현황 파악 가능

주섬주섬

   공부 정리를 위한 블로그이며, "개발자도 알아야 할 소프트웨어 테스팅 실무 제3판"과 실라버스를 참고하였다.

참고

 

STEN

 

www.sten.or.kr

반응형

댓글