이번 설 연휴는 다음 목적지와 커리어 방향성을 정리하고자 지나온 시간들을 회고하게 되었습니다. 그러던 중 올해 1월, 저와 함께할 QA분을 채용하고자 작성했던 JD가 눈에 띄었습니다. 최종 후보자 2분께 커피챗 요청 드렸던 찰나에 내부 사정으로 인해 채용 중단되었고 아쉽게도 끝내 모실 수 없게 되었습니다.
제가 플랫폼 서버팀에서 담당했던 B2B SaaS Product는 3가지였습니다. 중심이 되는 API 서버와 API 사용량에 대해 파악할 수 있고 사용자의 수면 정보 또한 손쉽게 검색 및 추적하며 그 결과를 시각적으로 확인 가능한 웹 대시보드 그리고 사운드 데이터를 앱에서 쉽게 수집하고 API 서버와 통신하여 수면 분석 데이터를 받아올 수 있는 SDK로 구성되어 있었습니다.
소프트웨어 개발 수명 주기(SDLC)에서 3가지 제품에 대한 품질 보증을 최소한의 인풋으로 최대의 효율을 만들기 위한 방향이 필요했고 이에 따라 무엇보다 각 제품의 CICD 파이프라인에서 웹 API 모바일의 다양한 환경에서의 병렬 테스팅을 통한 Early 테스팅 프로세스의 가속화가 중요했습니다. 릴리스 막바지 대규모 회귀 테스트를 혼자서 감당할 수 없었고 일부 제품 특성상 블랙박스 테스트로는 커버하기 힘든 테스트 유형이 많았습니다. 코드가 잘할 수 있는 테스트와 사람이 잘할 수 있는 테스트는 분명 존재하기에 개발프로세스 초기부터 코드가 잘할 수 있는 테스트 영역을 발굴하고 구축하고 구현하는 과정에 보다 집중했었습니다.
지난 4년간 테스트 자동화 분야에서 경험한 것들을 돌이 켜봤을 때 테스트 자동화의 중요성과 가치는 단순히 무언갈 자동으로 테스트한다라는 속도감이라는 단편적인 가치에만 해당되지 않았습니다. 각 서비스의 특성과 개발프로세스에 맞춰서 자동화 플로우가 구축되어 있지 않다면 QA와 개발자는 영원히 빌드 배포마다 Side-Effect를 걱정하면서 사람이 아닌 코드가 더 잘하는 테스트에 많은 리소스를 사용하게 됩니다. 때로는 사람이 더 잘하는 영역에만 집중하다가 코드가 더 잘하는 영역에서 버그가 발생할 수도 있습니다. 회귀 테스트 자동화의 핵심은 빠른 테스트 속도도 중요하지만 무엇보다 최대한의 테스트 커버리지에서 높은 품질이 유지되고 있는지를 QA와 개발자 모두 확신을 가지는 일정 수준의 안전장치의 역할로써 존재합니다. 코드 한 줄 수정 후 수정한 부분만 확인하고 배포했더니 Side-Effect가 생기는 상황을 막으려면 누군가는 수정 확인뿐 아니라 회귀 테스트를 해야 하고 회귀 테스트는 사람보다 코드가 더욱 정확하고 빠르게 수행할 수 있습니다. 쓰이지 않을 법한 A 코드를 삭제하거나 수정했더니 B 코드에서 A 코드를 사용하고 있는 상황이 발생하면서 오류가 발생하는 상황을 미리 예방하기 위해서는 더욱더 코드가 더 잘하는 영역에서 최대한의 테스트 커버리지에 대한 자동화 시스템이 구축되어야 합니다.
특히나 모바일 SDK 제품 특성상 OS에 따른 호환성 검증이 중요하기 때문에 OS별로 모두 확인할 경우 TC 개수*디바이스 개수만큼 회귀 테스트 커버리지가 산정됩니다. Android와 iOS 모두 실기기 15대를 기준으로 최소~최신 OS에 대한 높은 품질을 유지한다는 기준을 만들 경우 최소 수천 개의 테스트를 배포 과정에서 클라우드 테스트 인프라가 되었든 온프레미스 환경이 되었든 누군가는 실행하고 결과를 확인해야 합니다. 그리고 사람은 이러한 상황에서 타협을 시도합니다. 사람은 일정과 여러 상황에 따라 타협을 시도하지만(인력 중심의 테스팅 접근법의 한계) 한번 잘 만들어진 코어 로직 전체를 검증하는 테스트 코드는 어떠한 상황에서도 타협하지 않고 원래 확인하고자 했던 모든 테스트를 재현 가능하고 반복 가능한 형태로 언제 어디서나 빠르게 수행하면서 사람은 사람이 필요한 테스트에만 집중할 수 있습니다.
제가 추구했던 B2B SaaS Product QA팀의 목표는 클라이언트와 서버 개발자분들께서 마음 놓고 수정하고 배포했을 때 문제가 발생했는지를 조기에 발견할 수 있도록 서버와 SDK QA 전체에 필요한 테스트를 보다 효율적이고 정확하고 빠르게 검증하여 사람은 사람이 더 잘할 수 있는 영역에 집중 가능한 시스템을 완성하고 효율적인 방식으로 운영하는 것이었습니다.
아쉽게도 좋은 팀에서 좋은 동료분들과 함께 이러한 바람을 이어가지는 못했지만 곧 정해질 다음 스텝에서 에이슬립에서 끝맺음하지 못했던 목표를 이뤄갈 수 있길 바라봅니다.
QA 리드를 다시 한번 맡게 될지 팔로워가 될지 아직은 마음 정리가 필요한 시기지만 무엇이 되었든 에이슬립에서 끝맺음하지 못했던 QA 환경을 만들어가는 목표에는 변함이 없을 것 같습니다. 부족한 저와 함께하길 희망하셨던 QA 동료분들께 진심으로 감사드립니다.