1. 테스트 도구의 종류
1.1 테스트 도구의 분류
테스트 도구
- 반복적인 테스팅 작업을 자동화함으로써 테스팅 활동이 효율성을 높이는 데 도움을 줌
- 대용량의 데이터를 비교하거나 동작을 시뮬레이션 하는 것을 자동화함으로써 테스팅의 신뢰성을 높임
- 침입적 : 어떤 종류의 도구는 도구 자체가 테스트의 실제 결과에 영향을 미친다는 측면에서 침입적이라 할 수 있음
- 탐사 효과 : 침입적 도구를 사용하여 달라진 결과(ex. 서로 다른 종류의 성능 테스트 도구로 어떻게 측정하냐에 따라 실제 결과가 달라질 수 있고, 어떤 커버리지 도구를 사용하냐에 따라 코드 커버리지의 측정치가 달라질 수 있음)
1.2 테스트 관리 지원 도구
- 소프트웨어 수명주기 전체에 걸쳐 모든 테스팅 활동에 사용
- 테스트 관리 도구, 인시던트 관리 도구, 요구사항 관리 도구, 형상 관리 도구 등
테스트 관리 도구
- 실행된 테스트와 테스팅 활동 관리 지원
- 테스트 실행 도구나 결함 추적 도구, 요구사항 관리 도구와의 인터페이스 역할
- 별도의 버전 관리 기능을 가지거나 다른 형상 관리 도구와의 인터페이스 기능을 가지고 있음
- 요구사항 명세와 같은 원본 문서와 테스트, 테스트 결과, 결함 또는 인시던트 간의 추적성 제공
- 테스트 결과 기록, 테스트 진행 상황에 대한 리포트 생성
- 테스트 대상 정보 제공, 테스트 프로세스 제어 및 개선 위해 테스트 수행과 관련되었거나 테스트 대상과 관련된 정량적인 분석을 지원
인시던트 관리 도구
- 결함이나 장애, 인지된 문제와 불일치 등을 포함하는 인시던트 리포트를 저장하고 관리
- 테스트 중 발견되는 인시던트 정보를 모니터링하여 결함 및 인시던트 보고에 필요한 통계적 분석 정보 제공
- 인시던트 중에서도 개발자 수정 및 재테스트가 필요한 결함을 주요 관리 대상으로 함
- 결함 수명주기를 관리
요구사항 관리 도구
- 요구사항 명세서 저장
- 요구사항의 일관성 및 정의되지 않았거나 누락된 요구사항 확인
- 요구사항의 우선순위를 정할 수 있도록 지원
- 테스트(케이스)와 요구사항, 기능 사이의 추적성을 확보할 수 있도록 지원
형상 관리 도구
- 소프트웨어나 테스트웨어의 버전, 빌드들에 대한 정보 저장
- 테스트웨어와 소프트웨어 중간산출물 버전에 대한 추적성 지원
- 하나이사의 형상을 갖는 하드웨어나 소프트웨어 환경에서 개발이 진행될 때 유용
1.3 정적 테스팅 지원 도구
리뷰 도구
- 리뷰 프로세스 정보 저장
- 리뷰 코멘트 저장, 의사소통
- 발견된 결함과 노력을 보고
- 리뷰 규칙이나 체크리스트를 참조할 수 있도록 관리
- 문서와 소스 코드 사이의 추적성 확보
- 온라인 리뷰를 지원, 지역적으로 떨어져 있는 팀들에게 유용
정적 분석 도구(개발자지원)
- 코딩 표준을 지킬 것을 강제하여 소스 코드의 유지보수성 향상
- 구조와 의존관계를 분석
- 코드를 쉽게 이해할 수 있도록 지원
모델링 도구(개발자지원)
- 소프트웨어 모델의 유효성 검사
- 상태 모델이나 객체 모델의 결함 찾을 수 있음
정적 분석 도구 & 모델링 도구 이점
- 개발 프로세스 초기에 더 많은 결함을 발견하게 하는 비용 효과성
- 미래에 발생하게 될 재작업을 줄임으로써 개발 프로세스는 가속화되고 향상될 것임
1.4 테스트 설계 지원 도구
테스트 설계 도구
- 코드, (상태, 데이터, 객체) 설계 모델, 사용자 인터페이스, 요구사항으로부터 테스트 입력값과 테스트 케이스를 생성
- 특정 설계 도구는 테스트 오라클 등을 사용해 입력값과 결과값까지도 생성
- 도구가 생성해내는 체계적인 테스트 케이스는 테스팅의 완성도 증가 및 시간 절약 가능하지만, 모든 측면을 검증하기에는 불충분
테스트 데이터 준비 도구
- 데이터베이스, 파일, 데이터 전송을 적절히 조작하여 테스트 실행 시 사용할 테스트 데이터를 생성하는 도구
- 실 데이터의 익명성을 보장하여 데이터를 보호하면서 실제와 거의 동일한 데이터로 테스트 할 수 있음
- 다량의 데이터가 필요한 경우나 특정 생성 규칙에 맞는 데이터가 필요한 경우에도 유용
1.5 테스트 실행 및 로깅 지원 도구
테스트 실행 도구
- 스크립트 언어를 이용하여 저장한 입력 값과 기대 결과를 이용하여 테스트를 자동 또는 반 자동으로 실행해줌
- 스크립트 언어를 통해 적은 노력으로 테스트 제어 가능
- 레코딩 기능을 이용하여 자동으로 캡쳐된 스크립트 또는 수동으로 작성하여 저장한 스크립트를 재실행
테스트 하네스 도구(개발자지원)
- 테스트 대상이 실행되는 환경을 시뮬레이션 함으로써 컴포넌트나 시스템 일부에 대한 테스팅을 가능하게 함
- 테스팅 환경의 일부 컴포넌트가 아직 준비가 되어 있지 않고 스텁이나 드라이버로 대체가 필요할 때 사용되거나 결함을 테스트 대상으로만 제한하도록 제어하는 테스트 환경이 필요할 경우에도 사용
- 미들웨어 상의 테스트 실행 프레임워크를 제공하는 용도로도 사용될 수 있음
단위 테스트 프레임워크 도구(개발자지원)
- 테스트 실행 프레임워크 중 컴포넌트 테스트 레벨에 포커스를 맞춘 도구
- 코드를 개발하는 동안 컴포넌트 테스트를 병렬적으로 수행할 수 있도록 지원함
테스트 비교자
- 파일이나 데이터베이스 혹은 테스트 결과의 차이를 비교해줌
- 자동화 테스트의 경우 테스트 결과 비교를 위해 테스트 오라클을 이용하는데, 이때 테스트 비교자는 테스트 오라클을 얼마나 정형화 할 수 있느냐에 따라 그 가치가 달라짐
커버리지 측정 도구(개발자지원)
- 사용되는 측정 기법, 측정 대상, 코딩 언어에 따라 침입적이기도하고 비침입적이기도 함
- 코드 커버리지 도구는 측정하고자 하는 코드구조가 몇 퍼센트 테스트되었는가를 측정함
보안 도구
- 컴퓨터 바이러스나 서비스 거부 공격 등을 검사 -> 보안적 취약성 테스트
1.6 성능과 모니터링 도구
동적 분석 도구(개발자지원)
- 소프트웨어의 실행 시에만 발생하는 시간 의존성과 메모리 누수와 같은 결함을 검출할 수 있음
- 컴포넌트나 컴포넌트 통합 테스팅에서 사용되거나 미들웨어 테스트할 때 사용됨
성능/부하/스트레스 테스팅 도구
- 시스템이 다양한 사용 조건 하에서 어떻게 동작하는가를 시뮬레이션하고 이를 모니터링하고 보고
- 시스템 환경에 대한 부하를 시뮬레이션
모니터링 도구
- 특정 시스템 리소스의 사용량을 지속적으로 확인하고 분석해서 보고하거나 예상되는 서비스 상의 문제점에 대해 경고 메시지를 줄 수 있음
- 테스트웨어나 소프트웨어의 빌드나 버전 정보를 저장하여 추적성을 확보 하기도 함
1.7 특정 어플리케이션 영역을 위한 도구
- 웹 기반 어플리케이션에 특화된 성능 테스팅 도구
- 특정 개발 플랫폼을 위한 정적 분석 도구
- 보안 테스팅에 특화된 동적 분석 도구
- 임베디드 시스템과 같은 특정 어플리케이션 분야를 위한 상용 도구 스위트
1.9 상용 도구와 오픈 소스 도구
오픈 소스 도구
- 단순한 기능의 테스트 관리 도구부터 테스트 자동화 도구, 성능 테스트 도구, 시뮬레이션 도구, 정적 분석 도구, 테스트 프레임워크까지 다양한 종류가 존재
- 상용 도구와 마찬가지로 관련 기술 및 지식의 발전에 따라 새로운 도구들이 계속해서 개발되고 발표되고 있음
- 자동화 도구 개발시에는 오픈 소스를 기반으로 하는 경우도 있음
2. 도구의 효과적인 사용 : 잠재 가치와 위험
2.1 테스팅(도구) 도입의 잠재 이익과 위험
도구 사용의 잠재적인 가치
- 반복적인 업무 감소
- 월등한 일관성과 반복성 제공
- 객관적인 평가 제공
- 테스트 또는 테스팅 진행 정보에 대한 쉬운 접근성 제공
도구 사용의 잠재적인 위험
- 도구에 대한 비현실적인 기대
- 도구 도입 초기에 필요한 시간, 비용, 노력
- 도구를 통해 중대하고 지속 가능한 성과를 얻기 위해 필요한 시간이나 노력을 적게 산정하는 것
- 도구에 의해 생성된 테스트 자산을 유지 보수하는 데 필요한 노력을 적게 산정하는 것
- 도구에 대한 지나친 의존
3. 도구 도입 및 배포
3.1 도구 선택 및 도입
도구 선택을 위한 주요 고려사항
- 조직의 성숙도, 강점과 약점을 평가한 후, 도구 지원으로 테스팅 프로세스를 개선할 수 있는 기회를 발견
- 도구 도입을 위한 명확한 요구사항과 객관적인 도구 평가 기준을 가지고 도입 하고자 하는 도구를 평가
- 도구가 요구되는 기능성을 만족하는지, 본래 목표하는 바를 달성하는지 등을 파일럿 프로젝트에 적용해보며 입증
- 교육 제공과 지원 능력 등을 고려하여 도구 제작 회사나 배포 회사를 평가
- 도구 사용과 관련된 조직 내부 교육과 지도에 대한 요구사항을 식별
3.2 파일럿 프로젝트 적용
도구를 도입하여 적용하자마자 테스팅 노력이 감소되는 것은 아님
도구에 익숙해지고 효과적이고 효율적으로 사용할 수 있게 되기까지는 일정 시간의 학습 기간이 필요
파일럿 프로젝트의 목적
- 도구와 관련된 상세한 사항을 습득
- 도구를 어떻게 적용할 수 있는지 평가, 도구 적용을 위해 현 프로세스나 업무의 무엇을 변경해야 하는지 결정
- 도구의 사용, 관리, 저장, 유지 보수하는 표준적인 방식을 결정
- 합리적인 비용으로 목표하는 성과에 도달할 수 있는지 평가
3.3 테스트 자동화
테스트 자동화를 위한 주요 고려사항
- 적절한 자동화 대상 프로젝트 선정
- 자동화를 테스트 전략과 계획에 포함
- 자동화 도구 선정에 신중
- 도구에서 요구하는 것에 따라 제품과 테스트 스펙을 공식적으로 변경하도록 준비
- 자동화 테스트 지원 시설 개발 계획 고려 - 자동화 도구 적용범위의 한계로 직접 개발해야 할 부분 존재
- 테스팅을 개발 계획 또는 도구 방식에 맞게 진행하는 것 고려
- 상세한 자동화 테스트 지침 필요
- 자동화 도구 및 자동화 테스팅 교육에서의 투자 요구
- 도구 전문가 참여
- 자동화 도구 관련 프로세스의 정의와 적용
3.4 도구의 배포
도구 배포의 성공 요인
- 조직의 나머지 부분에도 도구의 사용을 점진적으로 확대
- 도구의 사용법에 맞게 프로세스를 수정하고 개선
- 새로운 사용자를 위해 교육과 훈련
- 사용 가이드라인 정의
- 도구 사용을 통해 교훈을 얻는 방법 마련
- 도구 사용 현황과 성과를 모니터링
3.5 도구 도입 절차
도구 도입의 일반적인 절차
ID | 단계 | 활동 |
1 | 요구사항 정의 | - 조직의 능력 평가 - 테스트 프로세스 개선 준비 - 도구 도입 요구사항 식별 및 정의 |
2 | 도구 조사 | - 도입 가능한 도구 조사 - 제약사항 식별 및 검토 - In-house 개발 가능성 검토 |
3 | 도구 평가 | - 도구 평가 준비 - 기능 및 관련 기술 평가 및 검토 - 도구 및 공급사 평가 실시 |
4 | 파일럿 시범 적용 | - 파일럿 프로젝트 선정 - 도구 시범 적용 실시 - 요구사항 만족 여부 평가 - 시범 적용을 통한 문제점 도출 및 해결 방안 검토 |
5 | 도구 선택 | - 도구 선택 기준 준비 - ROI 및 테스트 프로세스 개선 고려 - 도구 선택 기준에 의한 도구 선택 - 도구 도입 계획 수립 |
6 | 도구 도입 및 배포 | - 전담 조직 할당 및 관련 인프라 구축 계획 - 도구 도입에 따른 테스트 프로세스 개선 - 도구 배포 계획 수립 - 교육 및 훈련 계획 수립 - 도구 설치 및 환경 구축 - 도구 적용의 내재화 및 성공 사례 공유 |
4. 도구 도입의 성과
도구 도입을 통한 기대 효과
- 사람의 실수로 인한 에러 최소화
- 수동으로 하기 어렵거나 불가능한 작업이 도구 지원을 통해 가능해짐
- 신뢰성 있는 정량적 테스트 리포팅
- 테스트 시간의 단축으로 제품 릴리즈 시간 단축 가능
- 더욱 빈번하게 자주 테스트함으로써 신뢰성을 높일 수 있음
- 테스팅 스킬이 높지 않아도 도구를 활용한 테스트 실행 가능
- 테스트 커버리지를 높일 수 있음
- 실행 자동화 도구의 경우 리그레션 테스팅의 효과 가능
- 처리 절차의 자동화는 커뮤니케이션 시간 및 커뮤니케이션 오류 절감에 기여
- 도구에 내장된 기능을 사용함으로써 객관적이고 효과적인 도구 사용 가능
- 매니저의 경우 담당자의 개별 보고에 의존하지 않도 도구의 대시보드를 통해 실시간 현황 파악 가능
- 테스팅 업무의 인식 개선
- 테스트 엔지니어가 단순 반복성의 업무에만 시달리며 창조적인 활동을 하지 못할 수 있음
- 도구 도입을 통해 단순 반복성의 업무를 도구에게 맡겨, 테스트 엔지니어는 보다 중요하고 가치 있는 도전적인 업무에 집중하고 몰입할 수 있음
📚 참고 문헌 : 개발자도 알아야할 소프트웨어 테스팅 실무
'SW 테스팅 > ISTQB' 카테고리의 다른 글
[ISTQB] PART 05. 테스트 관리 (0) | 2024.10.15 |
---|---|
[ISTQB] PART 03. 정적 기법 (0) | 2024.10.15 |
[ISTQB] PART 02. 소프트웨어 수명주기와 테스팅 (0) | 2024.10.14 |
[ISTQB] PART 01. 소프트웨어 테스팅의 기초 (0) | 2024.09.01 |