본문 바로가기

CSTS

7. 테스트 자동화

도구 분류

자원 업무 도구 종류 설명
테스트 관리 테스트 관리 도구, 요구사항 관리,
인시던트 관리(이슈 추적), 형상 관리
테스트 계획, 노력 추정, 테스트 일정 관련 작업 수행
테스트 진행과 보고
테스트 문서 관리
요구사항과 테스트 케이스 추적성 관리
이슈 등록 및 추적
변경 관리 및 통제
정적 테스트 리뷰 프로세스 지원 도구,
정적 분석 도구, 모델링 도구
표준 코딩 규칙 검사
복잡도 검사
자료 흐름 검사
동적 테스트 테스트 설계 도구,
테스트 데이터 준비 도구
모델이나 소스코드에서 테스트 케이스 생성
테스트 실행에 필요한 데이터 자동 생성
테스트 실행 및 로깅 테스트 실행 도구, 보안 도구,
테스트 하네스/단위 테스트 프레임워크,
테스트 비교기, 커버리지 측정 도구
테스트 케이스 실행
모의 객체 생성
기대 결과와 실행 결과 비교
커버리지 측정
성능 및 모니터링 동적 분석 도구, 모니터링 도구
성능/스트레스/부하 테스트 도구
메모리 누수 검사
부하 발생
성능 측정

 

테스트 자동화는 도구를 사용하여 테스트 프로세스 일부 혹은 전부를 자동화하는 것을 의미

 

단순하면서 반복적인 업무에서 벗어나 일관성을 유지하며 빠르게 테스트를 수행

한 두번 수행되는 경우에는 자동화할 필요 없음

경우에 따라 매뉴얼 테스트가 더 효과적일 때도 있음

 


테스트 자동화 분야 및 테스트 도구


SEARCH 모델

Setup, Execution, Analysis, Report, Clean up, Help

 

 

동적 테스트 프로세스

  • 테스트 설계 및 구현 : 테스트 케이스 및 테스트 절차를 개발하는 프로세스
  • 테스트 환경 구축 및 관리 : 테스트 환경 요구사항에 따라 환경을 구축하고 관리하는 프로세스
  • 테스트 실행 : 테스트 절차 실행, 결과 저장
  • 결함 보고 : 테스트 결과를 분석하여 결함이 식별되었을 때 보고하는 프로세스

테스트 설계 도구

명세 기반 테스트 설계 도구

  • 요구사항 명세서를 바탕으로 테스트 케이스의 설계 및 생성을 도와주는 도구
  • 요구사항 명세 모델을 입력으로 받아 테스트 케이스 생성
  • 마이크로소프트에서 만든 PICT 도구는 입력 인자, 입력 인자의 값, 제약사항을 제공하면 테스트 케이스 조합 생성

 

구조 기반 테스트 설계 도구

  • 코드를 입력으로 받아 테스트 케이스를 생성하는 도구
  • 기대 결괏값을 생성하지 않음, 몇몇 구조 기반 테스트 설계 도구는 생성함

 

  • 레거시 시스템을 기반으로 프로젝트를 실행할 때, 이렇게 생성된 테스트 케이스를 리그레션 테스트 케이스로 활용

테스트 환경 도구

테스트를 원활하게 수행하기 위한 가장 기본적이면서 중요한 작업

 

IaC(Infrastructure as Code) 

  • 인프라를 코드화 한다
  • IaC 개념을 바탕으로 한 도커는 애플리케이션 실행 환경을 자동으로 설치할 수 있는 도구
  • 도커는 소프트웨어 컨테이너라는 단위로 패키징
  • 컨테이너에는 라이브러리, 미들웨어, 시스템 도구, 런타임 환경 등 애플리케이션 실행 시 필요한 것을 포함
  • 개발자 플랫폼에 구애받지 않고 실행될 것임을 확신할 수 있음
  • 누구라도 구성 파일 실행을 통해 테스트 환경이나 운영 환경을 손쉽게 구축 가능

테스트 실행 도구

Record&Playback : 테스트 케이스를 컴퓨터가 실행할 수 있는 스크립트로 변환하는 방법 중 대표적인 것

Katalon Studio는 Record&Playback 기능을 제공하는 도구

 

선형 프레임워크

  • 스크립트를 작성하는 가장 간단한 형태
  • 모듈과 같은 스크립트를 구조화하는 수단을 제공하지 않고, 테스트 단계를 순차적인 흐름으로 실행
  • 프로그래밍 지식이 필요하지 않음
  • 테스트 케이스를 쉽게 작성할 수 있음
  • 유지보수하기 어려움
  • 테스트가 기록되는 시점과 조건이 조금이라도 다르면 테스트가 작동되지 않음
  • 데이터가 스크립트에 직접적으로 기록되어 다양한 데이터를 사용하기 어려움

모듈 기반 프레임워크

  • 스크립트를 모듈화할 수 있는 여러 수단을 제공
  • 하나의 큰 스크립트를 유지가 용이한 여러 개의 작은 스크립트로 분할하여 관리하는 것이 가능
  • 여러 스크립트에서 공통적으로 필요로 하는 스크립트를 개발하는 비용을 줄임
  • 애플리케이션 변경 시 관련된 스크립트만 변경
  • 스크립트가 통과되는 경우와 통과되지 않은 경우를 구분하여 작성 가능
  • 스크립트 작성 시 프로그래밍 지식이 요구됨
  • 데이터가 스크립트에 직접적으로 기록되어 다양한 데이터를 사용하여 테스트하기 어려움

데이터 주도 프레임워크

  • 테스트에 사용되는 데이터를 테스트 스크립트의 로직과 분리하여 보관하는 프레임워크
  • 다양한 데이터를 사용하여 테스트
  • 데이터 파일 관리가 용이
  • 스크립트를 작성할 때 프로그래밍 지식이 요구됨
  • 데이터 파일 관리가 요구됨
  • 데이터 검증 요구

키워드 주도 프레임워크

  • 테스트 케이스와 애플리케이션 간 결합을 줄여서 애플리케이션 변경돼도 테스트 케이스에 영향 X
  • 키워드는 애플리케이션을 테스트 시 요구되는 액션이나 단계를 캡슐화하는 테스트 케이스를 구성하는 빌딩 블록
  • 테스트 설계와 자동화 분리, 테스트 케이스 유지보수 용이, 키워드 재사용
  • 테스트 케이스를 설계할 때 프로그래밍 지식이 요구되지 않음
  • 기술적인 관점이 아닌 비즈니스 관점에서 테스트
  • 프레임워크 구축 시 자동화 지식과 기술이 있는 전문화된 테스트 자동화 인력 요구
  • 테스트 라이브러리를 구성하는 등의 높은 초기 비용

이슈 관리 도구

과거에는 버그 추적 도구라고 부름

이슈는 시스템 품질을 악화시키고 사용자 불만족을 유발하는 원인이 됨

 

  • 신규 상태 : 식별된 결함이 보고된 상태
  • 진행 상태 : 개발자가 지시된 결함을 해결하기 위해 소스 코드를 수정
  • 해결 상태 : 개발자에게서 지시된 결함이 해결되었다는 보고를 받은 상태, 재테스트를 통해 확인.
  • 완료 상태 : 재테스트를 통해 결함이 해결된 것을 확인한 상태

Redmine(Ruby), Jira(Java), Mantis(PHP), Trac(Python), Yona(Java)


테스트 도구 선정


  • 테스트 조직 및 프로세스 상황에 따라 반자동화 또는 일부 자동화를 고려할 필요가 있음
  • UI 테스트를 위한 테스트 케이스가 많아질수록 문제가 발생할 가능성이 커짐
  • UI 변경 시 테스트 스크립트도 변경해야 함. 제때 변경하지 않으면 거짓 양성이 나타남.
    거짓 양성 : 실제 결함이 아닌데 결함으로 잘못 판단한 경우

  • 각 테스트 타입이 차지하는 영역의 넓이는 투자 대비 효과(ROI)와 자동화해야 하는 양을 의미
  • 새로운 테스트 케이스를 개발할 때 UI나 통합 테스트 케이스 형태로 개발하는 대신 가능한 한 단위 테스트 케이스로 개발하는 것을 의미
  • 단위 테스트, 통합테스트 케이스만으로 부족할 때 UI 테스트 케이스 개발

테스트 도구 선정 프로세스

  • 요구사항 정의 : 테스트 도구에 대한 요구사항을 식별하여 정의
  • 도구 조사 : 요구사항을 고려하여 상업용 도구, 오픈소스 등을 조사, 자체 개발 가능성 검토
  • 도구 평가 : 평가 기준을 준비하여 도구가 요구사항에 얼마나 부합한지 평가
    도구 공급자의 명성, 사후 관리 및 도구 갱신 주기 등 여러 요소 고려
  • 파일럿 프로젝트 : 도구의 시험판 버전 사용 또는 파일런 프로젝트 수행으로 도구 품질 평가
    도구의 문제점 도출, 해결방안 검토
  • 도구 선정 : 도구 도입에 따른 테스트 프로세스의 개선 효과 등을 고려하여 비용 대비 이득을 추정하여 도구 선정
  • 도구 도입 : 도구 도입에 따른 테스트 프로세스 개선, 도구 배포 계획 수립, 교육 및 훈련 계획 수립

'CSTS' 카테고리의 다른 글

9. 구조 기반 테스트  (0) 2021.02.27
8. 정적 테스트  (0) 2021.02.27
6. 소프트웨어 생명 주기 모델과 테스트  (0) 2021.02.26
5. 위험 기반 테스트  (1) 2021.02.25
4. 품질 특성과 비기능 테스트  (2) 2021.02.24