본문 바로가기
IT/QA

자동화 테스트란 무엇인가

by 보띵 2022. 11. 5.
반응형

QA 업무 중 하나인 테스트. 그중에서도 자동화 테스트 관련된 내용을 포스팅하고자 한다.

자동화 테스트?

자동화 테스트란 무엇일까? 자동화 테스트가 있다면 수동 테스트도 있다는 건데 수동 테스트는 또 무엇일까?

수동 테스트
테스터가 테스트 계획에 따라 테스트 케이스를 통해 소프트웨어의 기능을 수동으로 실행시키면서 올바르게 동작하는지 테스트하는 것

자동 테스트
테스트 자동화는 사람이 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는 자동화 도구를 적용함으로써 쉽고 효율적으로 테스트를 수행할 수 있도록 한 것

  • 테스트 자동화 도구를 사용함으로써 휴먼 에러를 줄이고 테스트의 정확성을 유지하면서 테스트의 품질을 향상시킬 수 있다.

위에서 '쉽다' 라고 말하는 건 자동화 테스트를 '사용하는' 입장에서 말하는 것이다. 자동화 테스트를 구현하는 것과는 다르다.

무조건 자동화 테스트가 좋을까?

자동화 테스트에 대한 설명을 듣다 보면 무조건 자동화 테스트를 하는 것이 좋다고 느껴질 수 있다. 그러나 모든 것을 자동화 테스트 하기에는 비효율적인 부분도 많다.

  • 테스트 효율성을 높일 수 있는 부분을 테스트 자동화해야 한다.
  • 개발/유지보수 비용이 클 수도 있다.(ROI 저하)
  • 수동 테스트를 완전히 대체하기 어렵다.
  • 테스트 대상 제품이 자주 변하거나 테스트 주기가 너무 짧으면 자동화에 어려움이 있다.

자동화 테스트보다 수동 테스트에서 얻을 수 있는 이점도 많기 때문에 기준을 잘 정하고 적용해야 한다.

"현실적으로 적용할 수 있는 효율성 높은 자동화 테스트 구성을 목표로"


자동화 테스트 구성 단계
목표 설정 > 도구 선택 > 범위 선정 > 계획, 설계 및 개발 > 실행 및 리포트 > 유지 보수
1. 목표 설정

자동화 테스트의 장점을 살릴 수 있도록 목표를 설정해야 한다.

적합한 사례

  • 높은 위험(High Risk) - 비즈니스에서 대단히 중요한 테스트 케이스
  • 반복적으로 실행해야 하는 테스트 케이스
  • 수동으로 테스트하기에 매우 지루하고(tedious) 어려운 테스트 케이스
  • 시간을 소비하는 테스트 케이스
  • 투자 대비 수익률(ROI) 이 높은 테스트 케이스

부적합한 사례

  • 새롭게 설계되었고 한 번도 수동으로 실행하지 않은 테스트 케이스
  • 요구사항 자주 변화하는 테스트 케이스
  • 필요에 따라 실행됐던 테스트 케이스
2. 도구 선택

자동화 테스트를 구축할 수 있는 도구를 조사해서 가격 / 환경 / 스크립트 스킬 / 적용 가능 범위 등을 고려해서 선택한다. 컨설팅 업체나 교육을 통해 스터티 후 적용하는 것도 좋은 방법이다.

테스트 도구 선택을 위한 일반적인 조건들

  • 환경 지원
  • 쉬운 사용법
  • 데이터베이스 테스팅
  • 객체 인식, 매핑
  • 사용된 스크립팅 언어
  • 다양한 테스트 유형 지원 - 기능적, 테스트 운영, 모바일 등 포함
  • 다양한 테스팅 프레임워크에 대한 지원
  • 폭넓은 테스트 보고서와 결과
  • 선택된 툴을 익히는 비용의 최소화 가능성

테스트 도구 유형

  • 정적 분석 도구(Static Analysis Tools)

프로그램을 실행하지 않고 분석하는 도구로, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함 등을 발견하기 위해 사용한다. 테스트를 수행하는 사람이 코드를 이해하고 있어야만 사용이 가능하다.
Ex) PMD, FindBug 등

  • 테스트 실행 도구(Test Execution Tools)

스크립트 언어를 사용해 테스트를 실행하는 방법으로, 테스트 데이터와 테스트 수행 방법 등이 포함된 스크립트를 작성 후 실행한다.
Ex) Junit, pytest, selenium 등

  • 성능 테스트 도구(Performance Test Tools)

애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률 등을 인위적으로 적용한 가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달성 여부를 확인한다.
Ex) Jmeter, Gatling 등

  • 테스트 통제 도구(Test Control Tools)

테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구로, 종류에는 형상 관리 도구, 결함 추적/관리 도구 등이 있다.
Ex) SVN, Jenkins 등

3. 범위 선정

컴포넌트, 솔루션, 플랫폼 단위 등으로 범위를 선정할 수 있다.

  • 비즈니스에 대한 중요한 특징
  • 거대한 데이터량을 가진 시나리오들
  • 애플리케이션 전반에 걸친 일반적인 기능들
  • 기술적으로 실행 가능한 것
  • 재사용된 사무용 구성요소(business component)의 정도 – 재사용 가능한 데이터, 스크립트 등
  • 테스트 사례들의 복잡성(complexity)
  • 크로스 브라우저(한 가지 이상 호환 가능한 웹 브라우저) 테스팅을 위해 같은 테스트 사례들을 사용하기 위한 능력
4. 계획, 설계 및 개발

아래의 내용을 포함하는 자동화 전략 및 계획을 수립한다.

  • 선택된 자동화 툴
  • 프레임워크 설계와 특징
  • 자동화 범위 내 항목들과 범위 밖 항목들
  • 자동화 테스트 기반 준비
  • 스크립팅과 실행에 관한 스케줄과 일정표
  • 자동화 테스팅의 산출물(deliverable)
5. 실행 및 리포트

테스트 시나리오대로 테스트 자동화 스크립트를 실행하고 테스트 결과에 대한 리포트를 작성한다.
(자동화 도구에서 지원할 수도 있고, 수정해야 하는 경우도 있음)
스크립트를 실행하기 위한 설정들은 충분히 준비해 두어야 하고 자동화 테스트의 신뢰성을 높이기 위해서는 기준 데이터가 명확하거나 여러 번 반복을 통해 리포팅되어야 한다.

6. 유지 보수

제품의 다음 버전에서 작성된 스크립트를 재사용 가능한지 검토하고 추가되거나 삭제되는 기능의 경우에는 테스트 시나리오 및 스크립트를 업데이트한다.
스크립트는 최대한 재사용이 가능하도록 모듈화 구성이 좋다.

참고 자료 (state-of-testing-report-2021)
Tasks of the Tester in your organization

Scripting / Automation

Testing skills and knowledge needed to succeed


다음에 기회가 되면 실제로 적용한 자동화 테스트에 대한 포스팅을 작성해 보겠다.

끝!

반응형

댓글