1. 테스트 도구의 종류
테스트 도구는 반복적인 테스팅 작업을 자동화함으로써 테스팅 활동의 효율성을 높이는데 도움을 준다. 또한, 테스트 도구는 대용량의 데이터를 비교하거나 동작을 시뮬레이션하는 것을 자동화함으로써 신뢰성을 높이기도 한다. 어떤 종류의 도구는 도구 자체가 테스트의 실제 결과에 영향을 미친다는 측면에서 침입적이라고 할 수 있다. (서로 다른 종류의 성능 테스트 도구로 어떻게 측정하느냐에 따라) 이러한 침입적 도구를 사용하여 달라진 결과를 탐사 효과(Probe effect)라고 부른다.
테스트 관리 지원 도구
테스팅 전반과 테스트 프로세스를 관리를 지원해주는 도구로서 테스트 계획, 설계, 실행, 리포팅, 테스트 프로세스 개선 등의 활동의 지원한다.
테스트 관리 도구(Test management tools)
특징 : 실행된 테스트와 테스팅 활동 관리를 지원, 테스트 실행 도구나 결함 추적 도구, 요구사항 관리 도구와의 인터페이스 역할을 함, 별도의 버전 관리 기능을 가지거나 혹은 다른 형상 관리 도구와의 인터페이스 기능을 가지고 있음, 요구사항 명세와 같은 원본 문서와 테스트, 테스트 결과, 결함 또는 인시던트 간의 추적성을 제공함, 테스트 결과를 기록하고 진행상황에 대한 리포트를 생성함, 테스트 대상 정보를 제공하고 테스트 프로세스를 개선하기 위해 테스트 수행과 관련되었거나 테스트 대상과 관련된 정량적인 분석을 지원함.
ex) TPMS(Test Process Management System)
인시던트 관리 도구(Incident management tools)
인시던트 관리 도구는 결함이나 장애, 인지된 문제와 불일치 등을 포함하는 인시던트 리포트를 저장하고 관리한다.
인시던트 리포트 관리를 지원한다는 것은 보고된 인시던트 리포트 간의 우선순위를 정할 수 있다는 것이고, 담당자에게 수정 또는 확인 테스트 등의 임무를 할당할 수 있다. 결함 재수정 요청, 수정 완료, 수정 연기 등으로 결함 상태를 변경할 수도 있다.
결함 추적 시스템으로 알려진 인시던트 관리 도구는 테스트 중 발견되는 인시던트 정보를 모니터링하여 결함 및 인시던트 보고에 필요한 통계적 분석 정보를 제공한다.
요구사항 관리 도구(Requirement management tools)
특징 : 요구사항 명세서 저장, 요구사항의 일관성 및 정의되지 않았거나 누락된 요구사항 확인, 요구사항의 우선순위를 정할 수 있도록 지원, 테스트와 요구사항, 기능 사이의 추적성을 확보할 수 있도록 지원
형상 관리 도구(Configuration management tools)
형상 관리 도구는 엄밀히 말하면 테스팅 도구가 아니지만, 일반적으로 소프트웨어나 테스트 대상의 다양한 버전이나 빌드 이력을 추적하기 위해 사용한다.
특징 : 소프트웨어나 테스트 웨어 버전이나 빌드들에 대한 정보를 저장, 테스트웨어나 소프트웨어 중간 산출물 버전에 대한 추적성 지원, ㅏ나 이상의 형상을 갖는 하드웨어나 소프트웨어 환경에서 개발이 진행될 때 유용함.
정적 테스팅 지원 도구
리뷰 도구(Review tools)
특징 : 리뷰 프로세스 정보를 저장, 리뷰 코멘트를 저장하고 서로 의사소통하게 함, 발견된 결함과 노력을 보고함, 리뷰 규칙이나 체크리스트를 참조할 수 있도록 관리함, 문서와 소스 코드 사이의 추적성을 확보, 온라인 리뷰를 지원하므로 지역적으로 떨어져 있는 팀들에게 유용함.
정적 분석 도구(Static analysis tools)
정적 분석도구는 개발자, 테스터, 품질보증 담당자가 동적 테스팅을 하기 전에 결함을 발견할 수 있게 지원한다.
목적 : 코딩 표준을 지킬 것을 강제함, 구조와 의존관계를 분석, 코드를 쉽게 이해할 수 있도록 지원함.
모델링 도구(Modeling tools)
소프트웨어 모델의 유효성을 검사할 수 있게 한다.
정적 분석도구나 모델링 도구를 사용함으로써 이득은 개발 프로세스 초기에 더 많은 결함을 발견하게 하는 비용 효과성이다.
테스트 설계 지원 도구
테스트 케이스를 특정 조건에 따라 자동적으로 생성하거나 이를 지원해 주는 도구.
테스트 설계 도구(Test design tools)
테스트 설계 도구는 코드, 설계모델, 사용자 인터페이스, 요구사항으로부터 테스트 입력값과 테스트 케이스를 생성해낸다. 어떤 테스트 설계 도구는 테스트 오라클 등을 사용하여 기대 결과값까지 생성하기도 한다. 상태나 객체 모델로부터 생성된 테스트 케이스는 구현된 시스템을 검증하는데 매우 유용하다. 어떤 도구는 테스트와 또 다른 도구는 동등 분할, 경계값 분석, 조합 테스트 등의 테스트 기법을 지원하여 테스트 케이스를 자동으로 생성하고 관리한다.
테스트 데이터 준비 도구(Test data preparation tools)
테스트 데이터 준비 도구는 데이터베이스, 파일, 데이터 전송을 적절히 조작하여 테스트 실행 시 사용할 테스트 데이터를 생성하는 도구이다. 이런 도구가 주는 장점은 실 데이터의 익명성을 보장하여 데이터를 보호하면서도 실제 동일한 데이터로 테스트할 수 있다는 것이다. 그리고 다량의 데이터가 필요한 경우나 특정 생성 규칙에 맞는 데이터가 필요한 경우에도 유용하게 활용할 수 있다.
테스트 실행 및 로깅 지원 도구
준비된 테스트 케이스 또는 테스트 슈트, 테스트 지침, 테스트 데이터 등을 자동으로 실행시키고 기대 결과와 실제 결과를 비교하는 작업을 수행.
테스트 실행 도구(Test execution tools)
테스트 실행 도구는 스크립트 언어를 이용하여 저장한 입력값과 기대 결과를 이용하여 테스트를 자동 혹은 반 자동으로 실행해 준다. 적은 노력으로 테스트를 제어하는 것이 가능하다.
테스트 실행 도구는 레코딩 기능을 이용하여 자동으로 캡처된 스크립트 또는 수동으로 작성하여 저장한 스크립트를 재실행한다.
ex) Fitnesse
테스트 하네스 도구(Test harness tools)
테스트 하네스는 테스트 대상이 실행되는 환경을 시뮬레이션 함으로써 컴포넌트나 시스템 일부에 대한 테스팅을 가능하게 한다. 이것은 테스팅 환경 일부가 준비되어 있지 않고 스텁이나 드라이버로 대체가 필요할 때 사용되거나 또는 결함을 테스트 대상으로만 제한하도록 제어하는 테스트 환경이 필요한 경우에도 사용된다.
단위 테스트 프레임워크(Unit test framework tools)
테스트 실행 프레임워크 중 컴포넌트 테스트 레벨에 포커스를 맞춘 도구를 단위 테스트 프레임워크라고 한다. 이러한 도구는 코드 개발 동안 컴포넌트 테스트를 병렬적으로 수행할 수 있도록 지원한다.
ex) Junit
테스트 비교자(Test comparators)
테스트 비교자는 파일이나 데이터베이스 혹은 테스트 결과의 차이를 비교해준다.
커버리지 측정 도구(Coverage measurement tools)
커버리지 측정 도구는 사용되는 측정 기법, 측정 대상, 코딩 언어에 따라 침입적이기도 하고 비침입적이기도 하다. 코드 커버리지 도구는 측정하고자 하는 코드 구조가 몇 퍼센트 테스트되었는가를 측정한다.
ex) codecover
보안 도구(Security tools)
보안 도구는 컴퓨터 바이러스나 서비스 거부 공격 등을 검사하다. 방화벽은 테스팅 도구는 아니지만 보안 테스팅에서 사용될 수 있다. 시스템의 특정 취약성을 찾기 위한 보안 도구도 존재한다. 이밖에도 테스트 대상의 취약성을 찾기 위해 운영체제를 시뮬레이션하여 보안성을 테스트하는 도구도 있다. 해당 도구는 테스트 대상을 운영체제 레벨에서 장악하여 파일 시스템, 커널, 사용자 인터페이스 등에 공격을 가하여 테스트 대상의 보안적 취약성을 테스트한다.
성능과 모니터링 도구
테스트 대상 애플리케이션의 시간 효율성과 자원 효율성을 측정하고 모니터링하여 성능상의 문제를 발견하는 도구.
동적 분석 도구(Dynamic analysis tools)
동적 분석 도구는 소프트웨어의 실행 시에만 발생하는 시간 의존성과 메모리 주수와 같은 결함을 검출해낼 수 있다. 이런 도구들은 전형적으로 컴포넌트나 컴포넌트 통합 테스팅에서 사용되거나 미들웨어를 테스트할 때 사용된다.
성능/부하/스트레스 테스팅 도구(Performancd/Load/Stress testing tools)
성능 테스팅 도구는 시스템이 다양한 사용 조건 하에서 어떻게 동작하는 가를 시뮬레이션하고 모니터링하고 보고한다. 이 도구들은 애플리케이션, 데이터베이스, 네트워크, 서버와 같은 시스템 환경에 대한 부하를 시뮬레이션한다. 부하나 스트레스를 측정하기 때문에 부하 테스팅, 스트레스 테스팅 도구로 불리기도 한다.
모니터링 도구(Monitoring tools)
모니터링 도구는 테스팅 도구는 아니지만 테스팅 목적으로 이용할 수 있다. 특정 시스템 리소스 사용량을 지속적으로 확인하고 분석해서 보고하거나 예상되는 서비스 상의 문제점에 대해 경고 메시지를 줄 수 있다. 모니터링 도구는 테스트웨어나 소프트웨어 빌드나 버전 정보를 저장하여 추적성을 확보하기도 한다.
그 외에 특정 애플리케이션 영역을 위한 도구, 테스팅 도구 이외의 다른 도구(스프레드시트, SQL), 상용 도구와 오픈소스 도구가 있다.
2. 도구의 효과적인 사용_ 잠재 가치와 위험
테스팅(도구) 도입의 잠재 이익과 위험
잠재적인 가치 : 반복적인 업무 감소, 월등한 일관성과 반복성 제공, 객관적인 평가 제공, 테스트 또는 테스팅 진행 정보에 대한 쉬운 접근성 제공
잠재적인 위험 : 도구에 대한 비현실적 기대, 도구 도입 초기에 필요한 시간, 비용, 노력을 과소평가하여 산정, 도구를 통해 지속 가능한 성과를 얻기 위해 필요한 시간이나 노력을 적게 산정하는 것, 도구에 의해 생성된 테스트 자산을 유지 보수하는데 필요한 노력을 적게 산정하는 것, 도구에 대한 지나친 의존
도구 유형별 고려사항
테스트 실행 도구(Test execution tools)
테스트 실행 도구는 테스트를 실행할 수 있도록 작성된 스크립트를 재생한다.
데이터 주도 접근 방식은 일반적으로 테스트 입력값을 스프레드 시트에 저장하고, 이 테스트 데이터를 읽을 수 있도록 한다. 이로써 다른 다양한 테스트 데이터로 동일 테스트를 수행할 수 있게 된다. 따라서 사전의 정의된 스크립트에 테스트 데이터를 입력하고 테스트를 수행할 수 있게 된다.
키워드 주도 접근 방식에서는, 스프레드 시트에 수행할 동작을 나타내는 키워드(액션 워드)와 테스트 데이터가 포함되어 있다. 이 방식은 스크립트 언어에 익숙하지 않은 테스터라도 키워드를 이용하여 테스트를 정의할 수 있는데, 키워드는 테스트 대상 애플리케이션에 맞게 테일러링 될 수 있다.
성능 테스팅 도구(Performance testing tools)
성능 테스팅 도구를 정상적으로 사용하기 위해서는 성능 테스팅을 설계하고 테스트 결과를 해석할 수 있는 전문가가 필요하다.
정적 분석 도구(Static analysis tools)
정적 분석 도구는 소스코드에 코딩 표준을 강제하는 데 사용할 수 있지만, 실제 적용 시 매우 많은 경고 메시지를 발생시킬 수 있다. 향후 소스코드의 유지보수를 용이하게 하기 위해서 적절한 조치를 취하는 것이 좋다.
테스트 관리 도구(Test management tools)
테스트 관리 도구는 조직의 요구에 맞는 최적화된 정보를 생성하기 위해 다른 도구나 스프레드시트 등과 연계하여 사용할 필요가 있다.
3. 도구 도입 및 배포
테스트 프로세스와 테스트 지원 도구 사이에는 밀접한 관계가 있다. 명확한 프로세스 없이 도구 도입만으로 기대하는 성과를 얻기는 힘들다.
도구 도입 고려사항 : 조직의 성숙도, 강점과 약점 평가 후, 도구 지원으로 테스팅 프로세스를 개선할 수 있는 기회를 발견하고, 도구 도입을 위한 명확한 요구사항과 객관적인 도구 평가 기준을 가지고 도입하고자 하는 도구를 평가한다. 도구가 요구되는 기능성을 만족하는지, 목표하는 바를 달성하는지 등을 파일럿 프로젝트에 적용하여 입증해본다. 교육 제공과 지원 능력 등을 고려하여 도구 제작 회사나 배포 회사를 평가한다. 도구 사용과 관련된 조직 내부 교육과 개별 지도에 대한 요구사항을 식별한다.
도구 선택 및 도입 - 파일럿 프로젝트 적용 - 테스트 자동화 - 도구의 배포 - 도구 도입 절차(요구사항 정의> 도구 조사> 도구 평가> 파일럿 시범 적용> 도구 선택> 도구 도입 및 배포)
4. 도구 도입의 성과
- 사람의 실수로 인한 에러 최소화
- 수동으로 하기 어렵거나 불가능한 작업이 도구 지원을 통해 가능해짐
- 신뢰성 있는 정량적 테스팅 리포팅
- 테스트 시간의 단축으로 제품 릴리즈 시간 단축 가능
- 더욱 빈번하게 자주 테스트함으로써 신뢰성을 높일 수 있음
- 테스팅 스킬이 높지 않아도 도구를 활용한 테스트 실행 가능
- 테스트 커버리지를 높일 수 있음
- 실행 자동화 도구의 경우 리그레션 테스팅의 효과 가능
- 처리 절차의 자동화는 커뮤니케이션 시간 및 커뮤니케이션 오류 절감에 기여
- 도구에 내장된 기능을 사용함으로써 객관적이고 효과적인 도구 사용 가능
- 매니저의 경우 담당자의 개별 보고에 의존하지 않고 도구의 대시보드를 통해 실시간 현황 파악 가능
출처 : 개발자도 알아야 할 소프트웨어 테스팅 실무 제3판
'ISTQB 공부 > CTFL' 카테고리의 다른 글
CTFL 시험 후기 (0) | 2020.12.26 |
---|---|
6. 테스트 관리 (0) | 2020.12.11 |
5. 테스트 설계기법 - 상태전이 테스팅 (2) | 2020.11.29 |
4. 테스트 설계 기법 (0) | 2020.11.26 |
3. 정적 기법 (0) | 2020.11.19 |
댓글