성공적인 A/B 테스트는 코드 배포 이전에 작성하는 설계서에서 결정됩니다. 설계서는 단순히 기록용이 아니라, 실험의 리스크를 방지하고 팀 전체의 싱크를 맞추는 강력한 도구입니다.
1. 실험의 뼈대: 배경과 가설
실험의 목적이 흔들리지 않도록 명확한 근거를 제시해야 합니다.
- 배경 및 문제 정의: "왜 이 실험을 하는가?"에 대한 답입니다. 정량적 분석(데이터)과 정성적 분석(유저 리퍼트)을 결합할 때 설득력이 높아집니다.
- 가설 설정: 데이터로 검증 가능한 문장으로 작성합니다.
- [가설 양식] "X(변경 요소)를 하면 Y(지표)가 Z(결과)만큼 변할 것이다."
2. 실험 계획: 정밀한 설계
분석가에게 가장 중요한 파트입니다. 실험의 오염을 막기 위한 통제 장치를 설정합니다.
실험 대상 : 유입 채널, 기기(OS), 지역 등 타겟팅 조건 정의
그룹 분배 : 무작위 할당(Randomization) 여부 및 노출 비율 (예: 5:5 또는 9:1 점진적 확대)
샘플 사이즈 : 통계적 유의성을 확보하기 위한 최소 표본 수. (MDE, 기각역 고려)
실험 기간 : 평일/주말 사이클을 포함하여 최소 1주일 이상 권장
데이터 분석가의 Tip (MDE) MDE(Minimum Detectable Effect)는 우리가 감지하고 싶은 최소한의 지표 변화량입니다. MDE가 작을수록(세밀한 변화를 보고 싶을수록) 더 많은 샘플 사이즈가 필요합니다.
3. 지표 설정: 무엇으로 성공을 정의할 것인가?
하나의 핵심 지표에 집중하되, 전체적인 서비스 건강도를 체크할 수 있는 지표를 함께 둡니다.
- 성공 지표 (Primary Metric): 가설 검증의 핵심 지표 (예: 클릭률, 예약률)
- 보조 지표 (Secondary Metric): 성공 지표에 영향을 받는 연관 지표 (예: 체류 시간)
- 가드레일 지표 (Guardrail Metric): 절대 나빠지면 안 되는 방어 지표 (예: 탈퇴율, 오류 발생률, CS 인입량)
4. 실전 사례: 코드비앤비(CodeBnB) 예약 버튼 실험
위 가이드를 적용한 실제 설계서 예시입니다.
실험 설계서 (요약)
- 배경: 2026년 KPI인 예약률 증대를 위한 UI 개선.
- 문제 정의: 예약 버튼이 페이지 하단에 있어 인지 속도가 느림 (클릭률 10% 수준).
- 가설: 예약 버튼을 가격 정보 위로 올리면 클릭률이 상승할 것이다.
- 샘플 사이즈: 최소 6,376명 확보 필요 (기존 전환율 3%, MDE 약 28.8% 기준).
- 가드레일: 버튼 위치 변경으로 인한 UI 혼동 및 CS 인입 급증 확인.
- 특이사항: 실험 첫날 로그인 장애 발생 시간 데이터는 분석에서 제외(Filtering).
5. 분석가를 위한 Python 실전: 샘플 사이즈 계산
실험 전 필요한 유저 수를 계산하는 Python 코드를 활용하면 설계 단계에서 신뢰도를 높일 수 있습니다.
from statsmodels.stats.power import NormalIndPower
# 1. 분석가 설정값
current_rate = 0.03 # 기존 전환율 (3%)
mde = 0.01 # 우리가 감지하고 싶은 최소 변화량 (+1%)
alpha = 0.05 # 유의 수준 (5%)
power = 0.8 # 통계적 검정력 (80%)
# 2. 효과 크기(Effect Size) 계산
effect_size = mde / current_rate # 단순화된 계산 방식
# 3. 필요한 샘플 사이즈 계산
analysis = NormalIndPower()
required_n = analysis.solve_power(effect_size=effect_size, alpha=alpha, power=power, ratio=1.0)
print(f"그룹당 필요한 최소 사용자 수: {round(required_n)}명")