이 글에서는..

2014년부터 7년동안(현재 진행형.) 다양한 프로젝트(대/중/소 SI, 대/중/소 솔루션)에 테스트 자동화를 지원하며 나름의 업무 노하우를 정리하려고 한다.
많은 프로젝트(대/중형 SI프로젝트, 대/중/소형 솔루션형 프로젝트)에 투입되서 프로젝트에서 정말 필요한 테스트 자동화업무를 어떻게 도출하고 구축하였는지 정리해본다.
※ 개인적으로 겪은 경험을 판단으로 작성된 글이어서, 글을 읽으시는 분의 생각과 차이가 있을 수 있습니다. 그런점 이 있으면 댓글 달아주시면 수정/반영해보겠습니다.

테스트 자동화에 대한 생각

개인적으로 테스트 자동화를 한단어로 표현하라고 하면 맞춤옷 표현하고 싶다.

인터넷을 통해서 구해한 제품이 내 몸과는 잘 맞는 않는 경우를 한번쯤은 겪어봤을 것이라고 생각한다.
테스트 자동화 또한 이런 경우가 흔히 발생한다. 경영진 또는 PM등의 관리자가 유명하다고 소개된 툴을 큰맘먹고 구매하여 프로젝트에 적용해보려고 시도하였지만, 실패하고 툴은 사용하지 않는 경우가 많다.
그래서 나는 맞춤옷처럼 프로젝트 상황(기술, 아키텍쳐, 인프라 등)을 고려해서 그에 맞는 테스트 자동화 체계, 툴을 적용해야 한다고 생각한다.

단계별 테스트 자동화 수행

  1. 착수회의
    양장점에 손님이 처음 방문한다면 주인은 손님에게 어떤 종류의 옷이 필요한지, 옷의 가격대는 얼마나 생각하는지 옷은 언제까지 필요한지 등등을 먼저 물어볼것 같다. 그리고 나서 손님의 신체사이즈 잴것 같다.
    테스트 자동화를 진행함에 있어서도, 최초에 테스트 자동화 요청이 온다면, 제일먼저 할 일은 프로젝트 담당자와 미팅을 한 후에 무엇이 필요한지, 프로젝트는 어떤 기술기반으로 개발이 되고 운영이 되는지를 물어본다.
    운이 좋을 경우 프로젝트 담당자가 테스트 자동화를 통해 얻고자 하는 것과 수행하고 싶은 대상이 명확할 때가 있지만, 대부분의 경우는 정확히 뭘 원하는지 모르는 경우가 많다.
    그럴 경우 테스트 자동화를 통해 얻을 수 있는 몇가지 사례를 말해주곤 한다.
    • Health Check형 테스트 자동화

      프로젝트에서 반드시 확인해야 하는 기능에 대해서 정상적으로 수행되는지 일정 주기(매분/매시/매일/매주)를 가지고 확인한다.
      주로 기존에 테스트 자동화를 수행하지 않았고, 이미 시스템이 구축완료단계 혹은 운영단계에 있는 프로젝트에 대해서 시스템이 정상동작하는지 여부를 확인하는 용도.

    • E to E형 테스트 자동화

      EtoE의 대상에 맞게 사용자입장의 테스트 영역에 대해서 기능 및 시나리오를 도출하고, 이중 자동화 가능영역(툴 및 데이터)에 대해서 테스트 자동화를 수행
      수행주기는 빌드 후/버전릴리즈 후/매주 1회로 수행
      프로젝트에서 테스트 자동화에 대한 어느정도의 이해가 있어서 시나리오 및 테스트 데이터 준비에도 어느정도 협조적이고, 기능정의도 잘 되어있는 프로젝트에 적용

    • 호환성 테스트 자동화

      프로젝트 및 솔루션의 특성 상 호환성(다양한 Browser, 다양한 단말, 다양한 OS)에 많은 문제가 있는 경우 깊은 단계의 테스트시나리오 보다, 넓은 호환성영역을 커버할 수 있도록 테스트 자동화를 구축함

    • Data Driven형 테스트 자동화

      차세대 SI형 프로젝트의 경우 AS-IS와 TO-BE가 동일한 결과를 도출해야하는 경우가 있다. 이럴 경우 AS-IS와 TO-BE에 혹은 TO-BE에만 입력값에 예상된 결과가 도출되는지를 검증해주는 형태의 테스트 자동화가 필요한 경우가 있다.

    • Unit 테스트 자동화
      앞에 소개한 테스트 자동화와 범위가 차이가 있지만, 개발팀의 수준이 어느정도 높을 경우 Unit영역에 대해서 테스트 자동화 수행을 권유하곤 한다.
      이때 테스트 수행은 전적으로 개발자가 진행하게되고, 테스트 자동화 엔지니어는 프로젝트 기술에 맞는 Unit test환경(Unit테스트 용 Build Script수정, 테스트 결과 report체계 구축) 및 기초 기술 가이드(F.I.R.S.T, Mocking방법)등을 제공한다. ※ 물론 이부분은 전문적인 개발팀이 나보다 더 잘하는 경우가 많다.

      어느정도 테스트 자동화의 공감대가 형성되었다면, 프로젝트 담당자는 어느 형태의 테스트 자동화가 좋겠다고 생각하거나 판단할 수 있다.

  2. POC진행
    1.단계에서 테스트 자동화를 진행하기로 협의가 되었다면, 이후 단계는 POC를 진행해야 된다. 앞선 단계에서 어떤 테스트를 수행하기로 협의가 되었다고 해도 프로젝트 환경에서 테스트를 수행해보니 알지 못하는 제약사항(기술적, 환경적)때문에 하고싶은 테스트 자동화를 다 하지 못하는 경우가 있다.
    이 때문에 POC테스트 시나리오에는 반드시 테스트 자동화를 수행하려고 하는 범위 내에 기술적 이슈가 될 만한 요소가 포함되어야 한다.
    POC를 진행하면서 어느 Library를 활용해서 테스트를 수행할지 생각해야 한다.
    • Unit
      개발 언어 및 Framework별 최신 트랜드 Unit test tool(library)를 조사한다.
      프로젝트의 Build환경(front, backend모든 기술에 대해서)에 맞게 Build Script를 수정한다.
      프로젝트에 맞는 샘플 Test Case를 도출한다.(Mocking 포함)
    • API
      직접 API테스트 Script를 작성할 경우 나에게 맞는 Tool(python request, java restassured등등)을 사용하지만, API스크립트 작성자가 프로젝트 인력(개발자/메뉴얼테스터)인 경우에 API스크립트 작성자에 맞는 툴을 선택한다.
      개발자의 경우 개발언어에 맞는 Library를 채택
      테스터의 경우 SoapUI, Jmeter, PostMan등등의 툴을 채택
    • GUI
      GUI영역 또한 직접 테스트 script를 작성할 경우 나에게 맞는 Tool을 선택하지만, 그렇지 않을 경우 사용자에 맞는 툴을 선택한다.
      ex) Robot framework, Sikuli, UTF, RPA tool, airtest framework(최신툴) 등등
  3. 테스트 자동화 범위 및 일정 협의
    POC가 성공적으로 수행되었다면, 본격적으로 테스트 자동화를 구축하기로 협의한다. 이때는 다음과 같은 요소를 협의한다.
    • 자동화 대상 범위/영역
      앞선의 회의를 통해서 어떤 형태의 자동화 테스트를 수행할지 논의가 되었지만, POC이후 수행하고자 하는 범위가 달라 질 수 있다. 이를 충분의 논의 해서 어느 범위/영역까지 테스트 자동화를 수행할지 협의한다.
    • 테스트 시나리오 작성
      테스트 자동화용 시나리오가 있다면 Best겠지만, 이런 경우는 거의 없다. 이럴 경우 기존의 메뉴얼 테스트 시나리오가 있다면 이를 분석하여, 자동화 테스트 가능 범위만을 재산출 해서 테스트 자동화용 시나리오를 도출하거나.
      프로젝트 팀과 새롭게 테스트 자동화 시나리오를 작성한다.
      이때 테스트 스크립트를 작성하는 역할자가 충분히 이해(기능, 테스트 데이터 등)가도록 테스트 자동화용 시나리오를 작성해야 한다.
    • 테스트 스크립트 작성자
      비용 및 기타 문제 때문에 테스트 스크립트를 직접 작성하지 않고, 프로젝트 인력을 통해서 작성해야 될 수도 있다.
      개인적으로 이 부분이 테스트 자동화에 제일 어려운 부분이다. (왜 어려운지는 이후에 왜 테스트 자동화가 실패하는지를 따로 정리할때 말하려고 한다.)
      이런 경우 테스트 스크립트 작성자가 테스트 자동화를 이해하고 유지보수 하는데 충분한 기술적 배경을 가지고 있는 인력을 뽑도록 한다.
      만약 기술수준이 낮은 엔지니어만 지원가능하다고 하다면, 실패가능성에 대해서 충분이 사전에 언급한다.
    • 테스트 수행주기
      테스트 자동화체계를 구축하면 어떤 단계에 테스트 스크립트를 수행할지 협의해야 한다.
      하지만 만들어지지 않은 시점에선 잘 정하지 못하는 경우도 있어서, 추후에 정해도된다.
      보통 매일/주1/월1회등 일정주기로 수행하거나, 빌드 후/배포 후/통테시즌 등 특정 시점으로 한다.
    • 테스트 수행장비
      테스트 자동화를 테스트 자동화 엔지니어의 PC및 스크립트 작성장비를 통해서 수행할 수는 없다. 또한 호환성/Data Driven 테스트의 경우 충분한 장비 확보계획이 필요하다.
      계획단계에서 충분한 장비 확보계획을 세워야 한다.
    • 전체 일정
      테스트 자동화 대상 및 수행인력등이 정해지면 대략 어느 정도의 일정으로 업무를 진행할 지 알 수 있다.
      정확하게는 알 수 없지만 POC를 진행하면서 스크립트당 얼마정도로 소요되는지를 계산했다면 대략적인 일정을 정할 수 있다.
  4. 테스트 자동화 스크립트 작성 및 진행
    앞서 세운 계획대로 테스트 자동화 스크립트를 작성하고 테스트 자동화를 구축한다. 계획대로만 진행되면 좋겠지만, 계획대로 되지 않는 경우가 많다.
    계획대로 되지 않는 사례는 추후에 추가적으로 작성해보고자 한다.
profile
안녕하세요~ :)

2개의 댓글

comment-user-thumbnail
2020년 9월 22일

오오오!!꿀팁입니다.

답글 달기
comment-user-thumbnail
2020년 9월 22일

오오오!!꿀팁입니다.

답글 달기