- 자동화 테스트의 의미
- 자동화 테스트란?
- 테스트 스크립트를 작성하거나 자동화 테스트 도구를 활용하여 자동으로 테스트하는 방법을 의미한다.
- 자동화 테스트 도입 목적
- 일반적으로 투입비용과 시간 대비 높은 품질을 확보하기 위해 도입한다.
- 테스트 프로세스는 반복적이고, 점진적이며, 지속적인 테스트를 수행하는 형태로 변형되어왔다.
- 테스트 속도는 향상되어야 하고 높은 품질을 유지하며 테스트 효율성을 증가시키기 위해 도입한다.
- 자동화 도입 목적과 배경, 이유, 자동화로 해결하고자 하는 문제와 현재 상황을 구체적으로 살펴봐야 한다.
- 이후 배경을 고려하여 세부적인 꼐획과 문제를 해결할 구체적 방법을 구상해야, 유용하고 실용성있는 자동화를 설계할 수 있다.
- 자동화 테스트란?
- 자동화 테스트 계획
- 주의할 점
- 프로젝트 초기에 계획을 세우는 것이 좋다.
- 자동화 범위가 확대될수록 유지보수는 힘들어지고, 설계 자체가 경직되며, 전체를 완성하고 안정화하는 데까지 비용과 시간이 많이 소요되는 등, 투자 대비 유용성이 떨어진다.
- 시스템이 자주 변경되고 업그레이드될수록 자동화가 물거품이 될 수 있다.
- 자동화는 빠르게 만들고 수행해야 한다.
- 즉, 단순하게 만들고 구조는 작아야 하며, 범위는 명확하고 각 구조는 목적이 있어야 한다.
- 자동화 테스트 계획
- 테스트 코드 작성을 위한 환경을 구축한다.
- 자동화에 의존성을 가진 시스템 때문에 테스트가 어려울 경우, mock, dummy, fake객체를 만들어 사용한다.
- 오류 발생 가능성이 높은 주요 기능 위주로 자동화 프레임워크를 분리하여 설계한다.
- 자동화하기 좋은 범위를 확보한다.
- 수동으로 테스트하기에 반복적인 일이 많은 범위
- 사람보다 정확한 기계의 힘이 필요한 범위
- 테스트 결과와 빌드 품질에 대한 정보를 실시간으로 공유한다.
- 정보를 보여줄 수 있는 웹 페이지를 설계하거나 CI/CD 도구 또는 슬랙 등의 메신저를 활용한다.
- 주의할 점
- 실무에 맞춘 자동화 목표
- 안정성과 신뢰성을 확보한다.
- 테스트 코드와 자동화 테스트 결과에 대한 신뢰성을 보장할 수 있도록 자동화를 설계한다.
- 결과를 검증할 수 있도록 코드를 작성하고, 거짓 오류로 로직을 검사하여 신뢰성을 확보한다.
- 자동화 프레임워크는 주요 기능별로 분리하여, 독립적 테스트와 하고 용이한 유지보수가 가능하도록 한다.
- 수동 테스트를 줄이고 반복 테스트를 자동화로 대체할 수 있도록 한다.
- 용이한 유지보수를 목표로 한다.
- 이미지 기반 자동화는 코드기반에 비해 유지보수 비용이 더 높다.
- 불필요한 유지보수비용을 줄이고 하나의 코드로만 테스트 가능하도록 Element를 사용한다.
- 테스트 코드는 수정 및 유지보수가 쉽도록 단순하게 만들고, 주석을 작성해 쉽게 읽을 수 있도록 한다.
- 안정성과 신뢰성을 확보한다.
- 자동화 테스트 범위
- 테스트 범위 선정하기
- 전체 기능을 다 자동화하게 되면, 유지보수를 힘들게 하고, 자동화의 효율성과 유용성을 떨어트린다.
- 테스트 범위를 제한하면, 발견하는 버그수가 적고 품질검증의 신뢰도가 떨어질 수 있다.
- 자동회 테스트의 정체성을 전체 테스트 범위의 보조 역할에 초점을 두면, 유용한 범위를 선정할 수 있다.
- 반복적인 테스트가 많은 부분을 자동화하여 테스터가 테스트를 할 수 있는 시간을 확보하여 품질을 높인다.
- 기능 반복 테스트 범위
- 스모크 테스트 : 기본기능을 수행할 수 있는지 빠르게 확인하는 테스트
- BVT 테스트 : 빌드 검증 테스트로, 새 소프트웨어 빌드의 안정성을 평가하기 위한 테스트
- BAT 테스트 : 빌드 수용 테스트로, 사용자가 수용가능한 수준의 빌드인지 파악하는 초기 테스트
- 회귀 테스트 : 코드 수정, 기능 추가 등이 기존 기능에 영향을 주지 않았는지 확인하는 테스트
- 호환성 테스트 : 소프트웨어가 다양한 환경에서 제대로 동작하는 지 확인하는 테스트
- 도구를 활용한 기술 검증에서의 반복 테스트 범위
- 클라이언트 테스트 : 테스트 시나리오를 디바이스별로 반복하는 테스트
- API 테스트 : UI에 영향을 받지 않아 반복적으로 재사용 가능하고, BE에서 반복 회귀 테스트가 가능하다.
- 서버 부하 테스트 : 트래픽 부하가 필요할 때 자동화를 활용한다.
- 테스트 범위 선정하기
- 자동화 테스트 도구 선정
- 자동화 테스트 도구 선정 고려할 점
- 테스트 대상인 플랫폼의 종류
- 이미지 기반/코드 기반
- 테스트 코드 작성 담당자가 사용할 수 있는 프로그래밍 언어
- 대표적으로 많이 사용되는 자동화 테스트 도구
테스트 도구 사용 언어 지원 플랫폼 Appium Java, Python, C#, JavaScript, Ruby, PHP 모바일: iOS, Android
데스크탑: Windows, macOSSelenium Java, Python, C#, JavaScript, Ruby, PHP 웹 : 모든 주요 브라우저 (Chrome, Firefox, Safari, Edge 등) Katalon Groovy (Java 기반) 웹: 모든 주요 브라우저
모바일: iOS, Android
API: REST, SOAPRanorex C#, VB.NET 데스크탑: Windows
웹: 모든 주요 브라우저
모바일: iOS, Android
- 자동화 테스트 도구 선정 고려할 점
- 자동화 프로세스
- 수행 단계 절차화하기
- 프로젝트 개발을 위한 설계가 진행되는 동안 테스터는 자동화가 가능한지 검토 후 일정을 계획하고 범위를 선정하여 테스트 케이스를 설계한다.
- 개발의 구현 작업이 진행되는 기간에 테스터도 자동화 테스트를 위한 테스트 코드를 작성하고, 조직 내부를 통해 코드 검증과 수행 동작을 확인한다.
- 개발이 완료되면, CI/CD에서 PR 마다 테스트 수행 가능하도록 자동화를 적용하고 결과를 공유한다.
- 테스트 조직으로 개발 결과물이 인수되고 품질 검증 기간이 시작되면, 자동화를 반영하여 테스트 수행한다.
- 자동화 프로세스 각 수행 단계
- 프로젝트 선정
- 자동화가 가능한 기능을 고려하고 자동화 가능 여부를 검토하여 적용할 프로젝트를 선정한다.
- 선정 후 자동화 추진을 위한 일정과 인원, 테스트범위, 도구 등 구체적인 계획을 수립한다.
- 자동화 테스트케이스 작성
- 테스트 케이스 작성 전, 자동화가 가능한 범위를 선정하고 시나리오를 설계한다.
- 선정된 범위에 대한 자동화용 테스트케이스를 작성한다.
- 테스트 코드의 기반을 마련하고, 선정된 테스트 범위가 자동화에 적합한지 확인할 수 있다.
- 자동화 기능 누락 방지 및 계획과 실제 구현 범위의 차이를 비교할 수 있다.
- 유지보수, 담당자 변경 등의 경우를 대비해 테스트 코드 결과를 기록하고 관리할 수 있다.
- 구현가능 범위를 시각화하여 현실적인 일정 산정 및 자동화의 효과성 확인에도 사용된다.
- 자동화 목표 커버리지 (%) 산정
- 자동화 테스트케이스에서 실제 자동화로 구현 가능한 영역에 대한 목표를 산정한다.
- 현실성 있는 일정 안에 실제 작동 가능한 자동화 결과물을 얻을 수 있게 한다.
- 인원별, 상황별로 발생하는 문제를 사전에 차단할 수 있다.
- 적절한 목표 산정은 자동화 유효성과 유지 보수성을 결정한다.
- 자동화 테스트 코드 구현 및 실행과 검증
- 테스트 케이스 기반 자동화 도구에 맞는 코드를 작성하고 수시로 동작을 확인한다.
- 코드 작성이 완료되면 테스트 조직 내부에서 코드에 대한 자체 검증을 진행한다. (1차 검증)
- 개발자 또는 개발 조직을 통해 코드 리뷰를 요청한다. ( 2차 검증)
- 자동화를 배포하여 실무에 적용한다.
- 적용 및 활용
- 개발 구현 과정에서는 개발 PR 마다 자동화 테스트가 수행 가능하도록 적용한다.
- 테스트 기간에는 회귀/호환성/클라이언트 테스트 등 반복적인 테스트 활동에 적용한다.
- 테스트 수행 결과는 빠른 대응을 위해 HTML 또는 CI/CD 또는 사내 메신저로 공유한다.
- 프로젝트 선정
- 수행 단계 절차화하기
- 도구 활용 및 테스트 코드 작성 예시
- cypress studio
- 자바 스크립트를 기반으로 웹 페이지의 End to End 를 지원하는 테스트 도구 중 하나이다.
- 테스트 중인 애플리케이션에 대한 유저의 마우스, 키보드 등의 액션을 기록하여 코드를 자동으로 생성한다.
- 구성요소 테스트는 사용할 수 없고 여러 도메인에 걸친 테스트는 불가능하다는 한계가 있다.
- katalon studio
- selenium과 appium의 기능을 연동하여 사용할 수 있는 자동화 테스트 도구이다.
- desktop, mobile, web, API, application 등 다양한 플랫폼에서 생성된 소프트웨어를 사용할 수 있다.
- AI로 테스트 스크립트를 자동으로 생성하는 기능을 제공한다.
- 대부분의 플랫폼에서 사용 가능하지만 PC애플리케이션은 테스트할 수 없다.
- 레코더 패널
- Chrome에서 제공하는 도구로, 웹 페이지에서 유저의 마우스, 키보드 등의 액션과 페이지 동작을 재생하거나 JSON 파일로 기록한 내용을 저장하여 사용할 수 있다.
- 크롬 브라우저에 내장되어 있어, 컨텍스트 전환이나 추가 외부 도구 없이 사용할 수 있다.
- 웹 페이지에서만 사용이 가능하다는 한계가 있다.
- Cypress와 다르게 DevTools 에 추가하면, 웹을 병렬로 테스트 자동화가 가능하다.
- cypress studio
'QA성장하기 > 테스팅 전문 지식 쌓기' 카테고리의 다른 글
호환성 테스트를 위한 고려사항과 전략 (0) | 2024.08.12 |
---|---|
서버 부하 테스트 전략과 프로세스, 분석 방법 (0) | 2024.08.09 |
측정한 성능 데이터를 기반으로 분석 및 개선하기 (0) | 2024.08.07 |
게임 벤치 스튜디오 프로 데스크탑 설치 및 사용해보기 (0) | 2024.08.06 |
클라이언트 성능 테스트 의미와 목적, 준비하기 (1) | 2024.08.05 |