
고성장 스타트업의 QA 팀이 엔지니어 추가 채용 없이 테스트를 50개에서 500개로 확장하는 방법
요약
고성장 스타트업이 테스트 스위트 확장 시 겪는 유지보수 비용 급증 문제를 분석합니다. 인력 채용 대신 아키텍처 개선을 통해 테스트를 50개에서 500개로 효율적으로 확장하는 전략을 제시합니다.
핵심 포인트
- 테스트 스위트 확장은 특정 지점에서 유지보수 부담이 급증하는 변곡점을 가짐
- 단순 인력 충원은 구조적 문제를 해결하지 못하며 유지보수 소용돌이를 유발함
- 셀렉터 기반 방식보다 비전 AI 기반 아키텍처가 확장성 측면에서 압도적임
- 유지보수 부채가 커지기 전인 100~200개 테스트 단계에서 아키텍처 전환 권장
귀하의 QA 팀이 1분기에 50개의 자동화 테스트 (automated tests)를 구축했습니다. 경영진은 매우 기뻐했습니다. 테스트 커버리지 (coverage)는 성장하고 있었고, 버그는 더 일찍 발견되었으며, 자동화에 대한 투자가 결실을 보고 있었습니다.
테스트가 200개에 도달했을 때, 무언가 변했습니다. 해당 테스트를 작성했던 동일한 두 명의 엔지니어가 이제는 일주일 중 대부분의 시간을 테스트를 수정하는 데 소비하고 있었습니다. 새로운 테스트를 작성할 여력이 없었기 때문에 새로운 기능들이 테스트 커버리지 없이 출시되었습니다. 팀은 세 번째 QA 채용을 요청했습니다. 그다음에는 네 번째를 요청했습니다. 테스트가 300개에 달했을 때, 대화의 주제는 "자동화가 시간을 절약해 주고 있다"에서 "왜 QA 팀은 계속해서 인력 충원을 요구하는가?"로 바뀌었습니다.
이것이 모든 고성장 스타트업이 마주하는 확장성 벽 (scaling wall)입니다. 테스트 스위트 (test suite)는 성장합니다. 유지보수 비용 (maintenance cost)은 더 빠르게 증가합니다. 그리고 이를 해결하기 위해 더 많은 엔지니어를 채용하려는 본능은 인력 충원의 소용돌이를 만들어내며 결코 안정되지 않습니다. 왜냐하면 근본 원인은 인원수가 아니라 아키텍처 (architecture)이기 때문입니다.
이 가이드는 50개에서 500개의 테스트로 가는 여정을 특정 변곡점 (inflection points)과 함께 설명합니다. 각 단계에서 무엇이 고장 나는지, 채용을 통해 해결할 것인지 아니면 도구 (tool)를 통해 해결할 것인지를 결정하는 수학적 근거, 그리고 확장 가능한 팀과 정체되는 팀을 가르는 아키텍처 결정에 대해 다룹니다.
핵심 요약 (Key Takeaways)
- 테스트 스위트(Test suite)의 확장은 50개, 150개, 300개, 500개의 테스트 지점에서 변곡점을 갖는 예측 가능한 패턴을 따르며, 이 지점들에서 팀 역학, 유지보수 부담, 그리고 커버리지 속도가 근본적으로 변화합니다.
- 유지보수는 테스트 수에 따라 선형적으로 증가합니다. 테스트 스위트를 두 배로 늘리면 유지보수 비용도 두 배가 됩니다. 셀렉터 기반(Selector-based) 도구로는 규모가 커져도 효율성 이득을 얻을 수 없습니다.
- 추가 QA 엔지니어를 채용하는 것은 용량(Capacity) 문제를 일시적으로 해결할 뿐, 구조적 문제를 해결하지는 못합니다. 새로운 엔지니어들도 2~3개월 이내에 동일한 유지보수 부담을 물려받게 됩니다.
- 셀렉터 기반(Selector-based) 대 시각적 식별(Visual identification)이라는 아키텍처 결정이 확장 곡선을 결정합니다. 셀렉터 기반 스위트는 200~300개의 테스트에서 정체기에 도달하지만, 비전 AI(Vision AI) 스위트는 지속적으로 확장 가능합니다.
- 매주 배포를 진행하는 배달 앱의 경우, 아키텍처 간의 차이는 극명합니다. 500개의 테스트로 구성된 Appium 스위트는 유지보수에 1.5~2.5명의 FTE(Full-Time Equivalent, 전업 인력)를 소모합니다. 반면 500개의 테스트로 구성된 Drizz 스위트는 0.2 FTE 미만을 소모합니다.
- 아키텍처를 변경하기로 하는 결정은 유지보수 부채가 압도적이 되기 전인 100~200개 테스트 사이, 그리고 팀이 테스트 패턴을 이해한 직후에 내릴 때 가장 높은 ROI(투자 대비 수익)를 가집니다.
네 가지 변곡점 (The Four Inflection Points)
1단계: 0~50개 테스트 "잘 돌아가고 있음" (Stage 1: 0-50 Tests "This Is Working")
현황: 1~2명 규모의 QA 팀이 첫 자동화 테스트를 작성합니다. 로그인 흐름, 기본적인 결제 과정, 몇 가지 핵심 사용자 경로 등이 포함됩니다. 테스트는 CI(지속적 통합)에서 실행됩니다. 버그가 프로덕션에 반영되기 전에 포착됩니다. 경영진은 초록색 대시보드를 보고 자동화 투자를 승인합니다.
유지보수 부담: 주당 2~4시간. 관리 가능한 수준입니다. 한 명의 담당자가 새로운 테스트를 작성하는 사이사이에 이를 처리할 수 있습니다.
커버리지 속도: 스프린트당 8~12개의 새로운 테스트. 스위트가 꾸준히 성장합니다.
팀 분위기: 낙관적입니다. 자동화가 마치 초능력처럼 느껴집니다.
아직 인지하지 못하는 점: 모든 테스트에는 610개의 셀렉터(Selector)가 있습니다. 테스트가 50개라면 300500개의 셀렉터가 존재하며, 각각이 미래의 결함 발생 지점이 됩니다. 하지만 테스트 작성 이후 UI가 크게 변하지 않았기 때문에 아직 심각한 장애는 발생하지 않았습니다.
2단계: 50~150개 테스트 "첫 번째 균열" (Stage 2: 50-150 Tests "The First Cracks")
현상: 테스트 스위트(Suite)가 실질적인 커버리지(Coverage)를 제공할 만큼 충분히 커졌습니다. 제품 팀은 기능을 더 빠르게 출시합니다. 첫 번째 대규모 UI 리디자인(Redesign)이 발생합니다. 갑자기 하룻밤 사이에 20~30개의 테스트가 실패합니다. 하지만 그중 실제 버그(Bug)는 하나도 없습니다.
유지보수 부담 (Maintenance burden): 주당 8~16시간. 엔지니어 한 명의 월요일 전체가 이제 깨진 테스트를 분류(Triage)하고 수정하는 데 소비됩니다.
커버리지 속도 (Coverage velocity): 스프린트(Sprint)당 신규 테스트 4~6개로 감소합니다. 유지보수가 생성 시간을 잠식하기 때문에 이전 속도의 절반 수준입니다.
첫 번째 채용 요청: QA 리드(Lead)가 세 번째 엔지니어를 요청합니다. "나머지 팀원들이 새로운 테스트를 작성할 수 있도록 유지보수에 집중할 인력이 필요합니다."
실제로 일어나고 있는 일: 스위트 내의 750~1,500개 셀렉터(Selector)가 이제 부채(Liability)가 되었습니다. 모든 UI 변경은 연쇄적인 테스트 실패를 일으킵니다. 팀은 커버리지를 확장하는 대신 깨진 테스트를 수정하는 반응적(Reactive) 모드에 빠져 있습니다. 하지만 스위트 규모가 아직은 한 명을 더 채용하면 문제가 해결될 것처럼 느껴질 만큼 작습니다.
3단계: 150~300개 테스트 "유지보수의 함정" (Stage 3: 150-300 Tests "The Maintenance Trap")
현상: 팀에는 이제 34명의 QA 엔지니어가 있습니다. 유지보수가 전체 QA 역량의 4060%를 소비합니다. 이론적으로 스위트는 핵심 경로(Critical paths)를 커버하지만, 실제로는 테스트의 15~20%가 "알려진 플래키(Known flaky, 불안정한)" 상태이며 무시됩니다. 커버리지는 정체되었습니다.
유지보수 부담 (Maintenance burden): 주당 16~30시간. 거의 풀타임 엔지니어 한 명 분의 업무량입니다.
커버리지 속도 (Coverage velocity): 스프린트당 신규 테스트 2~4개. 사실상 정체된 상태입니다. 신규 기능이 테스트가 작성되는 속도보다 더 빠르게 출시됩니다.
VP(부사장)의 질문: "QA 팀을 세 배로 늘렸는데, 왜 커버리지는 제자리걸음입니까?"
실제로 일어나고 있는 일: 팀이 유지보수의 한계점(Ceiling)에 도달했습니다. 새로운 테스트를 추가할 때마다 유지보수 부하가 늘어납니다. 현재 속도라면 스프린트당 10개의 테스트를 추가할 때마다 매주 2~3시간의 유지보수 시간이 영구적으로 추가됩니다. 팀은 제자리에 머물기 위해 전력 질주하고 있는 셈입니다.
배달 앱 사례: 인도의 최대 음식 배달 플랫폼은 매주 여러 차례 UI 업데이트를 배포합니다. 이러한 배포 주기에서 250개의 테스트로 구성된 Appium 스위트(suite)는 스프린트(sprint)당 30~50개의 셀렉터(selector) 오류를 발생시킵니다. 엔지니어 3명이 월요일과 화요일을 테스트 수정에 소비합니다. 수요일부터 금요일은 새로운 테스트 작성과 추가적인 유지보수 작업으로 나뉩니다. 신규 기능(예약 주문, 그룹 주문, 구독)에 대한 테스트 커버리지(coverage)는 개발 속도보다 몇 달이나 뒤처져 있습니다.
4단계: 300~500개 테스트 "채용할 것인가, 재설계할 것인가"
현황: 팀에는 45명의 QA 엔지니어가 있습니다. 유지보수가 전체 역량의 5070%를 차지합니다. 테스트 스위트는 규모가 크지만 점점 신뢰도가 떨어집니다. 많은 실패 사례가 허위 양성(false positives)이기 때문에 테스트 결과를 분류(triage)하는 데 30~60분이 소요됩니다. 엔지니어들은 더 이상 테스트 스위트를 신뢰하지 않습니다.
유지보수 부담: 주당 3050시간 이상. 전일제(full-time) 엔지니어 1.52.5명이 유지보수에 투입됩니다.
커버리지 속도: 거의 제로에 가깝습니다. 팀은 완전히 유지보수 모드에 있으며, 중요한 출시를 위한 간헐적인 신규 테스트만 수행합니다.
인력 충원의 악순환: 5번째 또는 6번째 QA 엔지니어를 채용하면 일시적인 완화(2~3개월간의 속도 향상) 효과가 나타나지만, 곧 그들 역시 유지보수 작업에 흡수됩니다. 테스트당 비용은 계속 상승합니다. 자동화 투자에 대한 ROI(투자 대비 효율)는 이제 의문스러운 상황이 됩니다.
의사결정 지점: 여기서 경로가 갈립니다. 팀은 계속해서 채용을 진행하거나(그리고 QA 인원수가 테스트 수에 비례하여 증가하는 것을 수용하거나), 아니면 재설계(선형적인 유지보수 곡선을 깨뜨리기 위해 테스트 접근 방식을 변경)를 선택해야 합니다.
수학적 계산: 채용 vs 재설계
채용 경로 (셀렉터 기반 아키텍처)
테스트가 500개에 도달하면, 1.25명의 FTE(전일제 환산 인원)가 유지보수에 소비됩니다. 500개의 테스트를 유지하고, 새로운 테스트를 작성하며, 탐색적 테스트(exploratory testing)까지 수행하려면 56명의 QA 엔지니어가 필요합니다. 연간 비용: 6072L INR.
재설계 경로 (Vision AI)
Vision AI를 사용하여 500개의 테스트를 수행할 경우, 유지보수 시간은 주당 5시간으로 한 명의 반나절 분량입니다. 총 3명의 QA 엔지니어가 필요합니다. 연간 비용: 36L INR.
차이점 (The Delta)
500개의 테스트 시점에서 아키텍처 간의 차이는 다음과 같습니다:
- 2~3명의 QA 엔지니어 적게 필요 (인도 기준 연간 24~36L INR 절감)
- 주당 45시간의 유지보수 시간 감소; 이 시간은 테스트 커버리지 확장, 탐색적 테스트(exploratory testing), 그리고 전략적 QA 업무로 재배치됩니다.
- 지속적인 커버리지 속도 (Continuous coverage velocity) vs 정체: Vision AI 팀은 테스트를 계속 추가하는 반면, 셀렉터(selector) 기반 팀은 기존 것을 유지보수하는 데 갇혀 있습니다.
아키텍처를 전환하는 손익분기점(마이그레이션 노력 포함)은 일반적으로 3~4개월입니다. 그 이후에는 매 스프린트(sprint)마다 절감액이 복리로 쌓입니다.
채용이 문제를 해결하지 못하는 이유
유지보수 업무가 팀을 압도할 때 엔지니어를 더 채용하려는 본능은 논리적이지만 잘못되었습니다. 그 이유는 다음과 같습니다:
신규 엔지니어는 유지보수 부담을 상속받습니다
새로운 QA 엔지니어가 합류하여 코드베이스를 익히고 46주 이내에 기여를 시작합니다. 812주가 지나면, 그들은 다른 모든 사람과 마찬가지로 업무 시간의 40~60%를 동일한 유지보수 작업에 소비하게 됩니다. 인원수가 늘어난다고 해서 1인당 유지보수 부담이 줄어들지는 않는데, 그 근본 원인인 셀렉터의 취약성(selector fragility)은 팀 규모가 아니라 테스트 개수에 비례하기 때문입니다.
유지보수는 선형적으로 증가하지만, 팀의 산출물은 그렇지 않습니다
3명 규모의 팀에 4번째 엔지니어를 추가한다고 해서 산출물이 33% 증가하지는 않습니다. 조정 오버헤드(coordination overhead), 컨텍스트 스위칭(context switching), 그리고 셀렉터 수정에 소요되는 줄일 수 없는 시간 때문에, 4번째 엔지니어는 약 20~25%의 유효 역량만을 추가할 뿐이며, 그 사이 테스트 스위트(suite)는 계속 성장하며 유지보수 부하를 더해갑니다.
예산 논의는 매번 더 어려워집니다
첫 번째 채용 요청("QA 엔지니어가 세 명 필요합니다")은 승인하기 쉽습니다. 하지만 다섯 번째 요청("400개의 테스트를 유지하기 위해 두 명이 더 필요합니다")은 경영진의 정밀 조사(scrutiny)를 불러옵니다: "왜 QA 인원수가 엔지니어링 인원수보다 더 빠르게 증가하고 있습니까? 이 자동화 투자에 대한 ROI(투자 대비 수익)는 무엇입니까?"
이것은 QA 리드들이 신뢰를 잃게 되는 대화의 지점입니다. 그들이 도움을 요청하는 것이 틀렸기 때문이 아니라, 구조적인 문제를 인력 충원이라는 해결책으로 풀려고 하기 때문입니다.
아키텍처 결정(Architecture Decision)을 내려야 하는 시점
너무 이른 시기 (테스트 50개 미만)
테스트가 50개 미만일 때는 유지보수가 최소 수준이며, 팀은 여전히 테스트 패턴을 학습하는 단계입니다. 이때 도구를 교체하는 것은 명확한 ROI 없이 복잡성만 더할 뿐입니다. 현재 알고 있는 도구로 첫 50개의 테스트를 구축하여 핵심 경로(critical-path) 커버리지를 확보한 다음, 그때 평가하십시오.
최적의 시기 (테스트 100-200개)
이 시기가 최적의 마이그레이션(migration) 구간입니다:
- 유지보수 부담이 느껴지기 시작하지만 아직 압도적이지는 않음 (주당 8-16시간)
- 팀이 유지보수가 가장 많이 발생하는 영역을 식별할 수 있을 만큼 충분한 테스트 이력을 보유함
- 점진적인 마이그레이션이 가능함 (유지보수가 가장 많이 발생하는 테스트 10-20개를 먼저 재작성)
- 비교 데이터(테스트당 유지보수 시간, 셀렉터(selector) vs Vision AI)가 2번의 스프린트(sprint) 내에 설득력을 가짐
- 테스트가 300개를 넘어갔을 때 도구 교체를 더 어렵게 만드는 매몰 비용(sunk cost) 심리를 피할 수 있음
늦었지만 여전히 가치 있는 시기 (테스트 200-400개)
이 단계에서의 마이그레이션은 더 어렵습니다. 재작성해야 할 테스트가 더 많고, 파헤워야 할 유지보수 부채(maintenance debt)가 더 많으며, 극복해야 할 팀의 관성(inertia)도 더 큽니다. 하지만 유지보수 절감 효과가 즉각적이고 상당하기 때문에 ROI 또한 더 큽니다. 유지보수의 80%를 유발하는 상위 20%의 테스트부터 시작하십시오. 이를 기존 테스트와 병행하여 실행하십시오. 데이터가 스스로 논거를 증명하게 만드십시오.
병행 파일럿 (The Parallel Pilot)
단계와 상관없이 마이그레이션 경로는 동일합니다:
- 유지보수 비용이 가장 높은 테스트 10~20개를 식별하십시오 (매 스프린트마다 깨지는 테스트들)
- 이를 Drizz로 다시 작성하십시오 (Plain English 사용, 셀렉터(Selector) 미사용)
- 4번의 스프린트 동안 두 버전을 모두 실행하십시오
- 테스트당 유지보수 시간을 비교하십시오
- 데이터를 리더십(Leadership)에 제시하십시오
만약 20개의 Drizz 테스트는 유지보수가 전혀 필요 없는 반면, 20개의 Appium 테스트는 4번의 스프린트 동안 12시간 이상의 수정 작업이 필요하다면, 계산 결과가 스스로를 증명할 것입니다. 별도의 설득은 필요 없습니다.
엔지니어링 부사장(VP of Engineering)이 실제로 보고 싶어 하는 것
QA 리드들은 종종 셀렉터(Selector), XPath, 로케이터 전략(Locator strategies), 플래키 테스트(Flaky tests)와 같은 QA 언어로 도구 변경의 정당성을 주장합니다. 하지만 엔지니어링 부사장(VP of Engineering)은 다른 관점에서 생각합니다. 다음과 같이 번역하여 전달하십시오:
결론
500개의 테스트까지 확장 가능한 QA 팀과 200개에서 정체되는 팀의 차이는 인재, 노력, 또는 예산의 문제가 아닙니다. 그것은 바로 아키텍처 (Architecture)입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
