개념
이 기법의 정체는 "비용이 N배인 테스트"다
모듈 5(레슨 13)에서 짝 탐험을 짧게 봤다 — 두 사람이 함께 보면 혼자보다 많이 본다는 이야기였다. 이 레슨은 그 한 문단을 운영 절차 로 펼치되, 출발점을 반대쪽에 둔다.
혼자 탐색 90분 = 1.5 사람-시간
페어 테스팅 90분 = 3.0 사람-시간 (2배)
몹 테스팅 90분 (5인) = 7.5 사람-시간 (5배)같은 90분이 회계상으로는 5배다. 판단 기준은 "협업이 좋은가"가 아니라 "이 90분이 혼자 하는 7시간 30분보다 나은 결과를 내는가" 다. 회귀 확인과 케이스 실행에서는 답이 거의 언제나 "아니오"다. 답이 "예"가 되는 조건은 좁고, 그 조건을 아는 것이 이 레슨의 전부 다.
페어와 몹 — 인원이 바뀌면 다른 기법이 된다
3인 이상이 되는 순간 성질이 달라진다. 페어는 깊이 를 위한 도구이고, 몹은 정렬(alignment) 을 위한 도구다.
| 페어 테스팅 (2인) | 몹(앙상블) 테스팅 (3인 이상) | |
|---|---|---|
| 주 목적 | 한 영역을 깊게 파기, 1:1 지식 전달 | 팀 전체의 이해를 한 지점에 맞추기 |
| 적정 시간 | 45~90분 | 60~120분 (그 이상은 피로가 결과를 갉아먹는다) |
| 교대 주기 | 10~15분 | 4~10분 (인원이 많을수록 짧게) |
| 산출물 | 결함 + 세션 노트 | 결함 + 팀 공통 이해 + 합의된 후속 조치 |
| 실패 신호 | 한 명이 계속 키보드를 잡는다 | 두세 명이 노트북을 따로 연다 |
| 주된 값어치 | 발견 | 발견보다 정렬과 전파 |
몹의 산출물 칸이 중요하다. 다섯 명이 90분에 결함 세 건이면 결함 단가로는 최악이다. 하지만 그동안 개발자 셋이 "쿠폰 규칙이 이렇게 동작하는 줄 몰랐다"를 동시에 알게 됐다면 그다음 스프린트 내내 생기지 않을 결함 이 값어치다. 몹은 결함 발견 도구가 아니라 지식 전파 도구이고, 결함 수로 평가하면 언제나 실패로 보인다.
용어 — 2020년 전후로 "몹(mob)"을 앙상블(ensemble) 로 바꿔 부르는 흐름이 생겼다. Maaret Pyhäjärvi는 가이드북 제목을 『Ensemble Programming Guidebook』으로 바꿨고, 테스트에 적용한 형태를 앙상블 테스팅 으로 부른다. 국내에서는 아직 "몹"이 통용되므로 이 레슨은 두 용어를 함께 쓴다.
역할 — 손과 머리를 분리한다
Woody Zuill 팀이 Hunter Industries에서 정리한 구조를 쓴다. 뿌리는 Llewellyn Falco의 강한 스타일 페어링(strong-style pairing) 이다.
| 역할 | 하는 일 | 하지 말아야 할 일 |
|---|---|---|
| 드라이버(Driver) | 키보드를 잡고 들은 것을 조작으로 옮긴다 | 혼자 판단해 다른 경로로 가기, 말없이 빠르게 클릭하기 |
| 내비게이터(Navigator) | 다음에 무엇을 할지 말로 지시하고 결과를 해석한다 | 키보드 뺏기, "그거 아니고 이거요"만 반복하기 |
| 관찰자(Observer) — 몹 | 눈에 띈 것을 짧게 던진다 | 동시에 여러 명이 말하기, 딴 일 하기 |
| 서기(Scribe) — 선택 | 결함 후보·질문을 한 곳에 적는다 | 회의록 수준으로 길게 적기 |
강한 스타일의 규칙은 한 문장이다. "아이디어가 내 머리에서 컴퓨터로 가려면 반드시 다른 사람의 손을 거쳐야 한다." 이 규칙이 하는 일은 하나다 — 가장 잘 아는 사람이 키보드를 잡지 못하게 막는 것 . 제품을 제일 잘 아는 QA가 드라이버를 잡으면 나머지는 구경꾼이 되고 세션은 시연으로 변한다. 반대로 그 영역을 가장 모르는 사람을 드라이버로 세우면 그 사람이 헤매는 지점이 그대로 사용성 결함 후보 가 된다.
교대 주기는 짧을수록 참여가 유지되지만, 짧을수록 전환 비용이 든다. 아래 값은 출발점이고, 첫 세션 회고에서 조정한다.
| 상황 | 권장 주기 | 근거 |
|---|---|---|
| 페어, 둘 다 숙련 | 15분 | 맥락 전환 비용이 낮다 |
| 페어, 한쪽이 신입 | 10분 | 신입이 관찰만 하다 끝나는 것을 막는다 |
| 몹 4~5인 | 7~8분 | 90분 세션에서 각자 2회 이상 드라이버를 한다 |
| 몹 6인 이상 | 4~5분 | 한 바퀴가 30분을 넘기면 뒷순번이 이탈한다 |
| 원격 (인원 무관) | 위 값 + 1~2분 | 화면 공유·제어권 이전에 시간이 든다 |
Hunter Industries 팀은 15분 교대를 공개했고, 이후 커뮤니티에서는 4~10분 관행이 퍼졌다. 타이머가 돌아간다는 사실 자체 가 주기 값보다 중요하다.
90분 몹 테스팅 세션 대본
시간이 배분되지 않은 몹은 90분짜리 잡담이 된다. 5인 기준 대본이다.
00:00 ~ 00:05 시작 (5분)
· 차터 한 문장을 소리 내어 읽는다
"결제 수단 3종 × 쿠폰/포인트 조합에서 금액 계산이 깨지는 지점을 찾는다"
· 범위 밖 선언: "이번 세션에서 안 보는 것 — 성능, 관리자 화면"
· 교대 순서와 주기 공지, 타이머 시작
· 규칙 3줄 낭독: 드라이버는 손, 내비게이터는 입, 결함은 멈추지 말고 적는다
00:05 ~ 00:20 워밍업 (15분, 2교대)
· 가장 모르는 사람이 첫 드라이버
· 정상 경로 1회 — 모두가 같은 화면을 보게 만드는 것이 목적
00:20 ~ 01:05 본 세션 (45분, 6교대)
· 내비게이터가 아이디어를 하나씩 소진
· 결함 후보가 나오면 서기가 적고 즉시 다시 진행 (티켓 작성은 세션 후에)
· 15분마다 "지금 어디까지 왔나" 한 줄 확인
01:05 ~ 01:15 정리 (10분)
· 발견 목록을 셋으로 분류
[바로 등록] [확인 필요] [제품이 아니라 우리가 몰랐던 것]
· 티켓 작성 담당자 지정
01:15 ~ 01:30 회고 (15분)
1. 오늘 새로 알게 된 것 중 팀 전체가 알아야 할 것은?
2. 교대 주기는 적절했나?
3. 다음에 이 조합(사람·주제)으로 또 할 가치가 있나? ← "아니오"면 안 한다마지막 질문이 대본의 핵심이다. 세션마다 "다음에도 할 것인가"를 묻지 않으면 몹은 관성으로 이어지다 어느 날 모두가 싫어하는 정례 회의가 된다.
페어는 같은 구조를 45분으로 줄인다 — 시작 3분(차터·교대 주기), 진행 35분(10분 교대), 마무리 7분(발견 분류 + "또 할 가치가 있나"). 마무리를 생략하면 페어의 산출물은 대화 속에서 증발한다.
조합별로 무엇이 잡히는가
같은 기법이어도 누구와 짝을 짓느냐 에 따라 나오는 결함의 종류가 다르다. 페어를 설계할 때 가장 실용적인 지식이다.
| 조합 | 잡아내는 것 | 전형적인 발견 | 이 조합의 실패 모드 |
|---|---|---|---|
| QA × 개발 | 구현 내부와 관측 가능한 동작의 어긋남 | "그 값은 캐시에서 와서 5분 늦어요" → 캐시 무효화 결함, 예외 경로 누락, 로그 없는 실패 | 개발자가 즉석에서 고치기 시작한다. 세션이 디버깅으로 변한다 |
| QA × QA | 휴리스틱의 사각지대, 기법의 전수 | 탐색 경로가 부딪히며 나오는 조합 결함, 선배의 판정 기준이 후배에게 옮겨감 | 같은 관점 둘은 같은 것을 놓친다. 경력·담당이 비슷하면 값이 급감한다 |
| QA × 기획(PO) | 사양의 공백과 의도 불일치 | "여기서 뒤로 가면 어떻게 되죠?" → 미정의 상태, 오류 메시지 결함, AC에 없던 규칙 | PO가 즉석에서 사양을 바꾼다. 결정은 기록하고 티켓으로 돌린다 |
한 줄로 쓰면 이렇다. QA×개발은 "어떻게 만들어졌는가"를 열고, QA×QA는 "어떻게 보는가"를 옮기고, QA×기획은 "무엇이 정해지지 않았는가"를 드러낸다.
실패 모드 칸은 셋 다 같은 함정을 가리킨다 — 세션이 다른 활동으로 변질되는 것 . 그래서 시작 5분에 "이번 세션에서 안 하는 것"을 선언한다. 수정도, 사양 변경도, 티켓 작성도 세션 중에는 하지 않는다. 몹에서 한 명이 코드를 고치기 시작하면 나머지 네 명은 그 순간부터 대기 인력이다.
언제 쓰지 말아야 하는가
먼저 쓸 조건 이다. 네 개 중 둘 이상이 해당할 때만 비용이 정당화된다.
- 아무도 전체를 모른다 — 여러 팀이 나눠 만든 기능, 처음 통합되는 흐름
- 판정 기준이 사람마다 다르다 — "이게 결함인가"를 합의해야 하는 영역
- 지식이 한 사람에게 몰려 있다 — 버스 팩터가 1인 영역
- 위험이 크고 되돌릴 수 없다 — 결제·정산·개인정보처럼 운영 사고 비용이 압도적인 곳
이제 쓰지 말아야 할 조건 이다. 하나라도 해당하면 그 세션은 낭비다.
| 상황 | 왜 안 되는가 | 대신 할 것 |
|---|---|---|
| 회귀 케이스 실행 | 절차가 정해진 작업에 사람을 N배 넣는 것 | 자동화, 아니면 혼자 |
| 명세가 확정된 단순 기능 | 발견할 모호함이 없다 | 혼자 체크리스트 |
| 한 사람이 압도적으로 잘 아는 영역 | 나머지가 구경꾼이 된다 | 그 사람이 혼자 + 세션 노트 공유 |
| 심리적 안전이 없는 팀 | 틀린 조작이 평가로 돌아오면 아무도 키보드를 안 잡는다 | 먼저 그 문제를 푼다 (모듈 43 레슨 3) |
| 정례로 박아 둔 몹 | 목적 없는 세션이 반복되면 기법 자체의 신뢰가 죽는다 | 차터가 있을 때만 소집 |
| 마감 이틀 전 | 필요한 것은 처리량인데 몹은 처리량을 떨어뜨린다 | 병렬 분담 |
마지막 두 줄이 가장 자주 어겨진다. 정례화와 마감 직전 투입 — 이 둘이 페어·몹을 "해봤는데 별로였다"로 만드는 주범이다. 원인은 기법이 아니라 배치다.
원격에서 운영하기
원격은 같은 기법을 더 비싸게 만든다. 마찰이 셋 추가된다.
- 입력권 이전 — 제어권 넘기기는 승인 대기·해상도 차이·단축키 충돌로 매번 20~60초를 먹는다. 교대 8회면 그것만 5분이다. 대안은 드라이버가 매번 자기 화면을 공유 하는 방식이다. 이전 비용이 거의 없는 대신 테스트 계정·데이터가 인원수만큼 준비돼 있어야 한다. 공유 계정으로 동시 로그인하면 세션 충돌이 결함처럼 보인다.
- 참여 신호의 소멸 — 대면이면 몸이 앞으로 기우는 것이 보이지만 원격은 안 보인다. 그래서 말 없는 사람을 내비게이터 순번으로 명시 호명 한다. "다음 내비게이터는 OO님"이 원격 몹의 기본 문장이다.
- 피로 — 화면 공유 응시는 대면보다 빨리 지친다. 원격은 60분 상한, 45분 지점에 10분 휴식을 고정한다. 90분이 필요하면 45분씩 두 세션으로 나누고 사이에 각자 자리를 뜬다.
추가로 타이머를 모두가 보는 화면 에 띄우고, 결함 후보를 적는 공동 문서 링크 를 시작 전에 올리고, 드라이버와 내비게이터는 카메라를 켠다 — 조작이 막혔는지 생각 중인지가 구분돼야 한다.
심리적 안전 줄은 부연이 필요하다. 페어·몹은 모르는 상태를 공개하는 기법 이고, 헤매는 자리가 곧 결함이 나오는 자리다. 그 노출이 평가로 돌아오는 팀에서는 같은 구조가 독이 된다 — 아는 것만 조작하고, 세션은 무사히 끝나고, 아무것도 발견되지 않는다. 그래서 사회자는 "여기서 막히는 건 그 사람이 아니라 제품 때문이다" 를 소리 내어 말하고, 노트에는 누가 못 했는지가 아니라 무엇이 막혔는지만 남긴다.
실무에서 왜 필요한가
QA 한 명이 여러 스쿼드를 지원하는 조직에서 병목은 테스트 실행량이 아니라 지식의 위치 다. 제품 전체를 아는 사람이 QA 한 명뿐이면 그 사람이 휴가를 가는 주에 팀의 판단력이 사라진다. 자동화는 실행을 옮겨 주지만 판단을 옮기지는 못한다. 판단을 옮기는 수단은 사실상 둘뿐이다 — 문서와 함께 보는 시간 . 그리고 "이 정도 깜빡임은 결함이 아니고 저 정도는 결함이다" 같은 판정 기준은 문서로 잘 써지지 않는다.
두 번째 값어치는 논쟁의 종료 다. 사양 해석이 갈려 메신저에서 사흘째 오가는 건은 세 사람이 30분 같은 화면을 보면 대개 끝난다. 글로 주고받는 동안 각자 머릿속의 화면이 달라서 안 끝나는 것이다.
채용시장에서의 위치
경력 QA 면접의 "팀에 품질 문화를 어떻게 정착시켰나"에는 대개 추상적인 답이 돌아온다. 페어·몹 사례는 여기에 절차가 있는 답 을 준다. "결제 영역 버스 팩터가 1이어서 격주 90분 몹 세션을 넉 달 돌렸고, 그 뒤 개발자 두 명이 결제 결함을 직접 재현해 오기 시작했다"는 검증 가능한 형태다. "도입했다가 두 달 만에 접었고 이유는 정례화였다"도 좋은 답이다 — 기법을 평가할 줄 안다는 뜻이다.