테스트 자동화에 대한 소개와 목표
Keyword
API testing, CLI testing, GUI testing, SUT, TAA, taf, Test automation strategy, test automation, test script, testware
소프트웨어 테스팅에서, 테스트 자동화는 다음 작업 중 하나를 의미한다.
좋은 방법으로는 테스트의 대상이 되는 시스템과 테스트 소프트웨어를 분리하는 것인데, 임베디드 시스템과 같이 SUT에 같이 테스트 소프트웨어가 배포되어야하는 소프트웨어는 예외이다.
테스트 자동화는 많은 테스트케이스에 대해 일관적이고 반복적으로 여러 버전의 테스트 대상 시스템 혹은 테스트 환경에 대해 실행하는 것을 기대한다. 그러나 테스트 자동화는 사람의 조작없이 테스트를 수행하는 것 그 이상이다. 아래와 같은 테스트웨어를 디자인하는 과정을 포함한다.
테스트웨어는 아래를 포함하는 테스트활동에 꼭 필요하다.
테스트 자동화는 SUT(System Under Test) 와 인터렉션하는 여러가지 방법을 가지고 있다.
테스트 자동화의 목적은 아래와 같다.
테스트 자동화의 장점은 아래와 같다.
테스트 자동화의 단점은 아래와 같다.
테스트 자동화의 한계로는 아래와 같다.
모든 수동 테스트를 자동화할 수 없다.
테스트 자동화는 기계가 해석가능한 결과만 확인할 수 있다.
테스트 자동화는 자동화된 테스트 출처(Test oracle)에서만 확인할 수 있는 결과만 체크 가능하다.
assert
를 통해서 확인가능 하다.탐색적 테스트를 대체할 수 없다.
다음 성공 요인은 운영 중인 테스트 자동화 프로젝트에 적용되므로 프로젝트의 장기적인 성공에 영향을 미치는 요소에 중점을 둔다. 아래 내용에서는 테스트 자동화의 초기 단계에 영향을 미칠만한 요소는 고려되지 않았다.
주요 성공 요인으로는 아래와 같다.
테스트 자동화 아키텍처(TAA)는 소프트웨어 아키텍처와 매우 밀접하게 관련된다. 아키텍처가 어떤 기능적 요구 사항과 비기능적 요구 사항을 지원하는지 명확해야 한다. 일반적으로 이것은 가장 중요한 요구 사항이 될 것이다.
TAA는 일반적으로 유지보수성, 성능, 학습성(learnability) 을 위해 설계된다. (ISO/IEC 25000:2014에서 이 내용과 비기능 특성에 대해 확인가능하다.) 테스트 대상 소프트웨어의 구조를 이해하고 있는 개발자를 TAA개발에 참여시키면 도움이 된다.
테스트 대상 소프트웨어는 자동화된 테스트를 지원하기 위한 가능성을 염두하고 설계되어야한다. GUI 테스트의 경우, SUT(System Under Test)가 가능한 한 GUI와 관련 데이터들로부터 분리되어야하는 것을 의미할 수 있다. API테스트의 경우 더 많은 테스트가 수행될 수 있도록 많은 클래스, 모듈 CLI 등에 대해 public하게 제공되어야할 수도 있다.
SUT 의 테스트 가능한 부분을 먼저 목표로 설정해야한다. 일반적으로 테스트 자동화의 핵심 요소는 자동 테스트 스크립트를 쉽게 구현하는 것에 있다. 이것을 목표로 염두에 두고, 테스트 자동화 엔지니어 (Test Automation Engineer, TAE)는 쉽게 자동화할 수 있는 모듈이나 구성요소를 식별하고, 거기서부터 프로젝트를 시작하는 것이 필요하다.
실용적이고 일관성있는 테스트 자동화 전략으로는 SUT의 유지보수성과 일관성에 대해 고려해야한다.
SUT의 레거시 영역과 새로운 기능에 대해 모두 동일한 전략을 적용하는 것은 불가능할 수 있다. 자동화 전략을 세울 때 기존 기능과 신규 기능에 대한 테스트를 자동화 할 때 소모될 비용과 이점, 및 리스크를 고려해야한다.
테스트 결과의 일관성을 담보하기 위해 UI테스트와 API테스트를 둘 다 자동화하는 것을 고려해야한다.
사용하기 쉽고, 잘 문서화되어있으며 유지보수하기 쉬운 테스트 자동화 프레임워크는, 자동 테스트에 대한 일관된 접근 방식을 지원한다.
사용하기 쉽고 유지보수하기 좋은 TAF를 만들기 위해서는 아래 내용이 반드시 수행되어야 한다.
테스트 자동화 코드는 유지보수하기 복잡해질 수 있다. SUT의 코드만큼 많은 코드를 가지고 있는 것은 드문일은 아니다. 이것이 테스트 코드가 유지보수할 수 있어야하는 이유이다. 테스트 자동화 코드가 SUT의 코드만큼 많은 이유는 다양한 테스트 도구, 다양한 유형의 검증 및 유지되어야하는 테스트웨어(테스트 데이터, 리포트 등)때문이다.
유지보수에 관한 점들을 염두에 두고 수행해야하는 점들과 더불어, 수행하면 안되는 몇가지 점들도 있다.
테스트 자동화 프로젝트 성공 요인이 충족될 수록, 프로젝트가 성공할 가능성이 높아진다. 모든 요인이 필요한 것은 아니며 실제로 모든 조건이 충족되는 경우도 거의 없다. 테스트 자동화 프로젝트를 시작하기 전에, 프로젝트의 맥락 뿐 아니라 선택가능한 접근 방식들의 리스크를 염두에 두고, 누락될 요인들을 고려하여 프로젝트의 성공 가능성을 분석하는 것이 중요하다. TAA가 준비되면 어떤 항목이 빠졌는지 확인하는 작업이 필요하다.
ref.