핵클팀에서 A/B 테스트 설계, 준비, 진행, 결과해석, 의사결정 전 과정에 걸쳐 많은 분들이 궁금해 하시는 내용들을 ‘A/B 테스트 정복하기’ 시리즈로 다룹니다.
1. 어떤 경우 A/B 테스트를 해야 하나요?
2. 실험의 목표 지표는 어떻게 정하는게 좋은가요?
3. 실험 모수와 기간은 어떻게 정하는게 좋은가요?
4. 유저 식별자 세팅은 어떤 기준으로 하는게 좋은가요?
5. A/B 테스트로 인과관계 확인이 가능한가요?
6. 테스트를 중단할 타이밍은 언제인가요?
7. 애매한 결과가 나왔을 때의 의사결정은 어떻게 하는것이 좋을까요?
8. 테스트를 다시 시작하고 싶으면 어떻게 해야하나요?
9. 조직 내 리뷰 프로세스는 어떻게 가져가는게 좋을까요?
***
이번 포스팅에서 다룰 주제는 A/B 테스트 준비 단계에서 매우 중요한 ‘유저 식별자 세팅하기’입니다. 서비스에 접속한 각 유저를 정확하게 구분하는 기준을 세우고 식별자를 부여하는 작업은 A/B 테스트의 신뢰성을 확보하고 그 결과를 조직 내에서 효과적으로 활용하기 위해 특히 주의해야 하는 부분인데요. 유저 식별자 세팅이 왜 그렇게 중요한지, 어떤 기준으로 세팅하는게 좋을지 알아보겠습니다.
A/B 테스트는 서비스에 접속한 유저에게 A, B안 중 한 쪽을 노출하여 해당 변경사항이 최종 의사결정에 어떤 영향을 미치는지를 알아보고자 진행하는 온라인 실험 방법론입니다. 유저를 식별하는 명확한 기준이 있어야 1) 각 유저가 실험기간 중 동일한 안에만 노출되도록 할 수 있고, 2) 해당 유저의 구매, 검색, 상품조회 등의 이력을 정확하게 계산할 수 있습니다.
예를 들어 홈화면 메인 배너의 문구가 해당 배너 클릭율에 어떤 영향을 미치는지에 대한 A/B 테스트를 진행한다고 하면, 개별 유저는 실험이 종료될 때까지 A, B 중 한쪽 배너의 문구에만 노출되어야 합니다. 한 유저가 여러개 식별자를 가지게 되어 양쪽 모두에 노출되는 경우가 발생하면 해당 유저가 배너를 클릭한 것이 A안의 문구 때문인지, B안의 문구 때문인지 구별할 수 없기 때문입니다.
눈에 직접적으로 보이지 않는 변경사항에 대한 A/B 테스트를 진행할 때도 마찬가지입니다. 새로운 상품 추천 알고리즘이 구매전환율에 어떤 영향을 미치는지 알아보기 위한 A/B 테스트를 진행하는 경우 각 유저의 계정에는 A, B 알고리즘 중 한쪽만이 적용되어야 하며, 그렇지 않은 경우 해당 유저의 최종 구매 결정이 어떤 추천 알고리즘으로 인한 것이었는지 판단할 수 없게 됩니다.
마찬가지로 식별 기준이 명확해야 각 유저의 구매, 검색, 상품조회 등의 행동 데이터를 정확히 수집할 수 있고, 사용자당 구매금액, 검색 전환율, 상품페이지 조회 수와 같은 A/B 테스트의 목표 지표도 계산할 수 있습니다. 특히 실험 결과를 다른 데이터셋과 연결해서 추가로 분석하거나 활용하는 경우가 발생할 수 있으므로, 실험을 시작하기 전 프로덕트, 개발, 데이터 조직이 유저 식별자의 싱크를 맞추는 작업은 매우 중요합니다.
우선 유저 식별자는 중복이 없는 유일값(unique value)이어야 합니다. 가장 쉽게 생각할 수 있는 유저 식별자 중 하나는 로그인을 할 때 사용되는 User ID 입니다. User ID는 로그인을 한 상태에서만 접근할 수 있는 페이지에서 A/B 테스트를 진행하는 경우에 유저 식별자로 사용될 수 있습니다.
그러나 특정 유저를 ‘정확하게’ 식별하는 작업이 쉽지만은 않습니다. 유저가 비로그인 상태에서 서비스를 이용하는 경우도 많고, 이 경우에도 실험을 위해 행동 데이터를 수집해야 하는 상황은 충분히 발생할 수 있기 때문입니다. 유저의 로그인 여부에 구애받지 않고 행동 데이터를 기록해야 하는 상황이라면 일반적으로 사용중인 기기 정보(Device ID)를 유저 식별자 값으로 사용하는 방식을 권장합니다. 모바일 앱의 경우에는 UUID 혹은 ADID 값을, 모바일 웹/PC의 경우에는 쿠키 값을 기반으로 하는 PCID를 유저 식별자 기준으로 활용할 수 있습니다.
광고ID를 수집할 때는 구글과 애플의 정책을 반드시 따라야 하며, 광고ID를 사용자가 재설정할 수 있다는 점에도 유의해야 합니다.
이처럼 사용할 수 있는 유저 식별자는 다양합니다. 일반적으로 로그인을 하지 않은 상태에서도 서비스의 대부분의 기능을 이용할 수 있는 경우에는 기기 정보 (Device ID) 를 유저 식별자로 사용하는 것을 권장하지만, 상황에 따라 다른 식별자를 사용하게 될 수도 있습니다.
1) 클라이언트 SDK
핵클은 클라이언트 SDK에 한해 내부적으로 유저의 Device ID를 관리하고 있습니다. 이 경우 핵클이 제공하는 Device ID를 그대로 활용할 수도 있고, User ID 등의 다른 기준을 사용하고자 한다면 별도의 유저 식별자를 설정할 수도 있습니다.
JavaScript의 경우, SDK가 관리하는 디바이스 식별자를 얻기 위한 예제 코드는 아래와 같습니다.
JavaScript에서 사용자가 직접 지정한 식별자를 사용하기 위한 예제 코드는 아래와 같습니다.
Javascript에서 쿠키 기반으로 식별자를 생성하는 예제 코드는 아래와 같습니다.
2) 서버 SDK
서버 SDK는 유저를 특정할 수 없어 항상 사용자가 직접 지정한 식별자를 사용해야 하며, Java 예제 코드는 아래와 같습니다.
JavaScript, Android, iOS, React 등의 클라이언트 SDK와 Java, Python, Node.js, PHP, Ruby 등의 서버 SDK를 통해 핵클 플랫폼에서 유저 식별자를 세팅하기 위한 예제 코드는 아래 링크에서 확인하실 수 있습니다.
***
A/B 테스트 플랫폼에서 직접 실험 설계 정보를 세팅해보고 싶으시다면, 핵클 대시보드에 구글 계정으로 로그인하셔서 진행해보실 수 있어요.
핵클에서는 A/B 테스트 입문자부터 전문가까지 다양한 경험치를 가진 분들이 모여 A/B 테스트 관련 정보와 노하우를 나눌 수 있는 커뮤니티를 운영중입니다. 아래 링크로 입장하셔서 아직 해결하지 못했던 고민들도 나누고, 데이터 기반의 제품 성장을 고민하는 다른 분들과 교류하세요.