본문 바로가기

ISTQB CTFL

개발자도 알아야 할 소프트웨어 테스팅 실무 6

6.1 테스트 도구의 종류

6.1.1 테스트 도구의 분류(test tool classification)

어떤 종류의 도구는 도구 자체가 테스트의 실제 결과에 영향을 미친다는 측면에서 침입적(intrusive)라고 할 수 있다.

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

 

테스트 관리 지원 도구

테스트 설계 및 tc 관리 지원 도구(tc 생성 도구 -> tc suit)

테스트 실행/로깅 지원 도구(테스트 엔진) test execution

성능 테스팅 도구/모니터링 도구 => 테스트 결과

 

6.1.2 테스트 관리 지원 도구(tool for test management of testing and tests)

테스트 관리 지원 도구의 특징

테스트 결과를 기록(logging)하고 테스트 진행 상황에 따른 리포트를 생성한다.

요구사항 명세와 같은 원본 문서(source documents)와 테스트, 테스트 결과, 결함 또는 인시던트 간의 추적성을 제공한다.

 

인시던트 관리 도구(incident management tools)

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

 

요구사항 관리 도구

요구사항 명세서 저장

테스트 케이스와 요구사항, 기능 사이의 추적성을 확보할 수 있도로 ㄱ지원

요구사항의 우선순위를 정할 수 있도록 지원

요구사항의 일관성 및 정의도지 않았거나 누락된 요구사항 확인

 

형상 관리 도구

테스트 대상의 다양한 버전이나 빌드이력을 추적하기 위해 사용한다. 

 

테스트웨어와 소프트웨어 중간산출물 버전에 대한 추적성을 지원한다.

하나 이상의 형상을 갖는 환경에서 개발 진행 시 유용하다.

다양한 버전의 운영체제, 다양한 라이브러리, 컴파일러, 다양한 웹 브라우저, 컴퓨터 등

 

6.1.3 정적 테스팅 지원 도구(tool for static testing)

리뷰 도구

리뷰 규칙이나 체크리스트를 참조할 수 있도록 관리한다.

문서와 소스 코드 사이 추적성을 확보할 수 있다.

 

정적 분석 도구

동적 테스팅을 하기 전에 결함을 발견할 수 있도록 지원한다. 

코딩 표준 지킬 것을 강제한다.

구조와 의존관계를 분석한다.(링크된 웹 페이지의 구조와 의존관계 분석)

=> 소스코드의 복잡도와 같은 메트릭 도출할 수 있는데, 이 정보는 계획 수립이나 리스크 분석 경우에 가치 있게 활용될 수 있다.

 

모델링 도구

sw 모델의 유효성을 검사할 수 있게 한다.

db 모델 검사 도구는 데이터 모델의 결함이나 불일치를 찾아낸다.

 

정적분석 도구와 모델링 도구 장점

비용 효과성, 초기 개발 프로세스에 더 많은 결함을 발견하게 되므로

개발 프로세스는 가속화되고 향상된다.

 

6.1.4 테스트 설계 지원 도구(tool for test specification)

테스트 설계 도구

설계 모델, 사용자 인터페이스, 요구사항으로부터 tc 생성해낸다.

테스트 설계 도구는 테스트 오라클을 사용하여 기대 결과값(expected outcome)까지 생성하기도 한다.

그러나 tc는 모든 측면을 검증하기에 충분하지 못하다.

테스트 설계 지원 도구에 내장되어 있는 테스트 설계 기법이 자동 적용되어 일정 수준 이상의 테스트 커버리지도 확보하고 신뢰성도 높일 수 있다.

 

테스트 데이터 준비 도구(test data preparation tools)

db, 파일, 데이터 전송을 적절히 조작하여 테스트 실행 시 사용할 테스트 데이터를 생성하는 도구

 

장점

익명성을 보장하여 데이터를 보호하면서도 실제와 거의 동일한 데이터로 테스트를 할 수 있다는 것이다.

 

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

테스트 실행 도구

도구 중 ㅌ캡처 후 재실행 방식의 도구(capture and playback tools)는 테스트 실행 내용을 저장하는 데 사용할 수 있따.

 

 

테스트 자동화 도구 실행 결과(Fitnesse 활용)

 

테스트 하네스 도구(test harness tools) 

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

테스트 대상을 호출/피드백 줌으로써, 코드, 객체, 메서드나 기능 단위나 컴포넌트의 일부가 실행될 수 있으며, 프레임워크는 생성될 수 있다.

 

프레임워크는 테스트 대상에 입력을 하는 인위적인 수단을 제공하거나 실제 출력 대상을 대신하여 테스트 대상으로부터 출력을 얻기 위해 스텁을 제공할 수 있다.

 

미들웨어 상의 테스트 실행 프레임워크를 제공하는 용도로도 사용될 수 있다.

 

 

단위 테스트 프레임워크 도구(unit test framework tools)

컴포넌트 테스트 레벨에 포커스를 맞춘 도구를 단위 테스트 프레임워크 도구 라고 한다.

코드를 개발하는 동안 컴포넌트 테스트를 병렬적으로 수행할 수 있도록 지원한다.

 

테스트 비교자(test comparators)

파일이나 데이터베이스 혹은 테스트 결과의 차이를 비교해준다.

자동화 테스트의 경우 테스트 결과 비교를 위해 테스트 오라클(테스트에 대한 기대결과)을 이용하는데, 테스트 비교자는 테스트 오라클을 얼마나 정형화할 수 있느냐에 따라 가치가 달라진다.

 

커버리지 측정 도구(coverage measurement tools)

측정 기법, 측정 대상, 코딩 언어에 따라 침입적이기도 하고 비침입적이기도 하다. 측정하고자 하는 코드구조(구문, 분기 또는 결정, 모듈 또는 함수 호출) 몇 퍼센트 테스트 되었는가를 측정한다.

 

tc에 의해 커버된 부분은 회색, 커버되지 않은 부분은 짙흔 회색으로 표시하고 여기에 tc를 추가하여 커버리지를 높일 수 있다.

 

보안 도구

컴퓨터 바이러스나 서비스 거부 공격 등을 검사한다. 시스템의 특정 취약성을 찾기 위한 보안 도구도 존재한다. 

 

6.1.6 성능과 모니터링 도구(tool support for performance and monitoring)

동적 분석 도구

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

 

성능/부하/스트레스 테스팅 도구(performance/load/stress testing tools)

자동 반복 실행에 기초하고 있고 파라미터에 의해 조정된다.

 

모니터링 도구(monitoring toos)

테스트웨어나 sw의 빌드나 버전 정보를 저장하여 추적성을 확보하기도 한다.

 

6.1.7 특정 어플리케이션 영역을 위한 도구

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

테스터에 의해 사용되는 도구만이 테스트 도구의 전부는 아니다. 개발자가 사용하는 도구도 사용할 수 있고 사무용으로 사용하는 도구도 테스팅에 활용할 수 있다. 테스터는 예를 들어 스프레드시트, sql, 리소스 또는 디버깅 도구를 사용할 수 있다.

 

6.1.7 특정 어플리케이션 영역을 위한 도구

 

6.1.8 테스팅 도구 이외의 다른 도구(other tools)

 

6.1.9 상용도구와 오픈 소스 도구

오픈 소스 도구의 특징

소스 코드 공개 없이 무료로 사용할 수 있는 도구

관련 기술 및 지식 발전에 따라 새로운 도구들이 계속 개발, 발표되고 있고, 자동화 도구 개발 시 오픈 소스를 기반으로 하는 경우도 많다.

 

표. 상용 도구와 오픈 소스 도구의 비교

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

 

오픈 소스 도구의 라이선스 종류

GPL(General Public License), LGPL(Lesser General Public License), BSD(Berkely Software Distribution), MPL(Mozilla public license), Apache License 

 

표. 오픈 소스 도구 라이선스 비교

 

6.2 도구의 효과적인 사용:잠재 가치와 위험

도구의 잠재적인 가치

반복적인 업무 감소

월등한 일관성과 반복성 제공

객관적인 평가 제공

테스트 또는 테스트 진행 정보에 대한 쉬운 접근성 제공

도구에 대한 비현실적 기대

도구 도입 초기에 필요한 시간, 비용, 노력

 

6.2.2 도구 유형별 고려사항

테스트 실행 도구

가치를 끌어내기 위해 상당한 노력 필요하다.

테스터의 수동적 조작을 기록하여 테스트를 자동화하는 방식은 매력적이나 대규모 테스트를 자동화하는데 적절하지 않다.

 

데이터 주도 접근 방식(data driven approach)

테스트의 입력값을 스프레드시트에 저장하고 이 테스트 데이터를 읽을 수 있도록 한다.

 언어에 익숙 x테스터도 수행 가능하다.

 

키워드 주도 접근 방식(keyword-driven approach)

스프레드시트에 수행할 동작을 나타내는 키워드가 포함되어 있고, 스크립트 언어에 익숙x 테스터라도 키보드 이용하여 테스트를 정의할 수 있다. 

 

어떠한 방식 테스트 자동화 선택하더라도 테스트 실행 자동화에 참여하는 테스터 혹은 전문가는 스크립트 언어에 대한 기술적 전문성이 필요하다.

 

정적 분석 도구

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

 

6.3 도구 도입 및 배포

6.3.1 도구 선택 및 도입

6.3.2 파일럿 프로젝트 적용

도구 도입하여 곧바로 테스팅 노력이 감소되는 것 아니다. 테스트 엔지니어가 도구에 이국해지고 효과적이고 효율적으로 도구를 사용할 수 있게 되기까지 학습시간이 필요하다. 

 

6.3.3 테스트 자동화

자체적으로 도구를 개발할 경우에도 도구 도입 원칙의 내용을 참고하여 절차에 따라 개발해야 한다.

 

테스트 자동화 시 고려해야 할 사항

적절한 자동화 대상 프로젝트 선정

자동화를 테스트 전략과 계획에 포함

자동하ㅗ 도구 선정에 신중

도구에서 요구하는 것에 따라 제품과 테스트 스펙을 공식적(formal)으로 변경하도록 준비

자동화 테스트 지원 시설 도구 개발 계획 고려

상세한 자동화 테스트 지침 필요

도구 전문가 참여

 

6.3.4 도구의 배포

도구 사용을 통해 교훈을 얻는 방법을 마련한다.

 

6.3.5 도구 도입 절차

요구사항 정의

도구 조사

도구 평가

파일럿 시범 적용(파일럿 프로젝트 선정, 도구 시범 적용 실시, 요구사항 만족 여부 평가, 시범 적용을 통한 문제점 도출 및 해결방안 검토)

도구 선택

도구 도입 및 배포

 

6.4 도구 도입의 성과

테스트 지원 도구는 여러 종류가 있으며 각 종류에 따라 얻을 수 있는 기대 효과/성과가 다르다.

 

도구 사용으로 인한 기대 효과

테스트 스킬이 높지 않아도 도구 활용한 테스트 실행 가능

테스트 커버리지를 높일 수 있음

실행 자동화 도구의 경우 리그레션 테스팅 효과 기능

도구에 내장된 기능을 사용함으로써 객관적이고 효과적인 도구 사용 가능

매니저의 경우 담당자의 개별 보고에 의존하지 않고 도구의 대시보드 통해 실시간 현황 파악 가능