brunch

You can make anything
by writing

C.S.Lewis

by 담다리담 Apr 30. 2022

내가 AB테스트를 돌리기 전에 미리 알았다면 좋았을 것

내가 가장 짜릿할 때는 실패할까 아닐까 조마조마했던 실험이 일말의 희망을 보여서 두 번째 iteration을 돌릴 수 있을 때다. 물론 한 번에 테스트를 성공시킨다면 가장 이상적이고 좋지만, 생각보다 그리 흔하지 않고 오히려 배운 점은 적을 때도 있다. 하지만 첫번째 iteration으로 얻은 교훈을 바탕으로 두 번째, 세 번째 이터레이션을 돌리고, 이게 성공했을 때는 내가 확신을 가진 가설이 성공한 것 같아 가장 기분이 좋다. 예를 들어 위젯A를 추가했다가 반품률이 높아져서 실패했지만, 원인을 분석해서 일부 카테고리에서 반품이 높다는 것을 확인하고 이를 제외하고 실험을 다시 돌렸다. 이 때 해당 페이지의 매출이 늘어나서 해당 위젯을 런치할 수 있었다. 이런 사소한 가설이 들어맞았을 때는 내가 정말 뭔가 해 낸 기분이랄까


이렇게 테스트를 돌릴 때 어떤 점을 실수하기 좋을까??

나는 아래와 같은 점들을 실수를 통해 배웠다.


1. 목표와 지표

테스트를 돌릴 때 목표를 명확히 해야한다. 종종 가설과는 다르지만 어쨌든 지표가 잘 나와서 런치리뷰에 들고갈 때가 있는데, 이 때는 내가 세운 가설과 어떻게 연결되는 지를 명확하게 내가 이해해야 한다. 그렇지 않으면 단순한 노이즈를 가지고도 런치할 수 있을 지 모른다며 설렐 수 있다. 테스트는 뭐가 나올 지 모르는 사탕단지가 아니다. A를 넣으면 B가 나올 것이라는 목표를 명확하게 타겟하는 것이 좋다. 그래야만 테스트가 애매할 때 멈출 지, 멈추지 않고 계속 돌릴 지를 확실하게 결정할 수 있다. 모든 메트릭이 다 좋게 나온다면 너무 좋겠지만 생각보다 현실에서는 일부는 긍정적으로, 다른 일부는 부정적으로 나오는 경우가 많다. 이 때 내가 목표로 하는 메트릭이 명확하다면 그 메트릭을 위주로 확인하여 계속 돌릴지 말지를 확인할 수 있다. 물론 이는 주요지표가 해쳐지지 않았다는 가정 하에다. 주요 지표(구매전환율, 고객 당 매출, 공헌이익, CS컨택비율 등)가 내려간다면 절대로 런치할 수 없다.



https://www.simplypsychology.org/p-value.html

또한 지표가 신뢰가능하는지는 대표적으로 p-value를 본다. 학생 때 배운 적이 있는 익숙한 지표다. p-value는 significance value의 줄임말로 한국어로 유의확률이라고 하지만 대부분 p-value라는 말로 통용하는 듯하다. p-value가 0.05 미만일 때, 즉 통계분포에서 오른쪽 끄트머리일 때만 신뢰한다. AB테스트에서도 0.05미만일때만 지표를 완전하게 신뢰하지만, 중요한 지표라면 그보다 높아도 trend를 보기도 한다.

또한 지표를 계속 보다보니 p-value가 아닌 다른 지표들도 확인하기도 한다. 예를 들어 MDE를 보기도 하는데, 이는 변동수치라고 부르며, 최소로 내가 이 테스트를 통해 기대할 수 있는 효과, 즉 얼마나 임팩풀한지에대한 계수이다. P-value가 낮아져도 MDE가 안 높아지면 지표는 신뢰할 수는 있지만 효과가 거의 미미하다는 의미가 된다. P-value는 통계적으로 유의미한 수치 여부를 판단하는 것이고 MDE는 이를 통해서 실제로 메트릭에 효과를 낼 수 있는 최소한의 수준을 나타내는 것이기 때문이다. 예를 들어 MDE 0.4% 이면, 메트릭의 효과가 긍정적이든 부정적이든 0.4%만큼만 효과를 낼 수 있다는 의미이다. 즉, 효과가 미미하다는 것이다.



2. 자가잠식(Cannibalization)

모든 신규피쳐에서는 캐니벌라이제이션이 일어날 수밖에 없다. 그럼에도 이를 모니터링하는 이유는 아래 두 가지다.   

캐니벌라이제이션 정도 파악

net positive impact가 안 나왔을 때 피쳐가 효율이 적은 건지, 아님 캐니벌라이제이션이랑 비슷한 수준의 효율(i.e. direct substitute)인건지 확인


나는 처음 다른 페이지에 빨간 색으로 선명하게 지표가 마이너스로 떴을 때 런치를 못 하는 줄 알았다. 달는 PO가 고심하여 만들어둔 기능에 해를 입혔으니까. 그래서 해당 페이지의 담당자에게 질문 겸 허락을 받기 위해 물어봤는데, 그는 멋지고도 담담하게 말했다. "신규피쳐를 런치했을 때 다른 페이지에 캐니벌라이제이션이 일어나는 건 당연해요, 제가 실험을 봤을 때는 전체적으로 지표가 좋아서 런치하실 수 있을 것 같아요."라고. 프로페셔널해보이고 멋져보였다. 이를 마음에 새기고 나니 다른 테스트를 진행할 때도 조금 더 여유롭고 넓은 시각으로 보기 시작했다. 사이트 전체 지표가 좋아진다면 내 페이지에의 지표가 낮아지는 것은 감안하는 것이 프로페셔널하다.


자가잠식에 대한 이야기를 조금 더 해 보자면 이렇다. 먼저 캐니벌라이제이션이 얼마나 일어났는 지 확인하는 것이 좋다.

예를 들어 고객이 평균적으로 두 개의 상품을 구매하는 한 사이트가 있다. 내가 신규기능을 런치하여 전체 구매건수가 2.5개로 늘었다면, 가장 이상적으로는 기존의 2개는 그대로 있고 내가 신규로 넣은 기능에서 0.5개가 늘어드는 것이다. 그렇지만 현실적으로 그렇게 칼로 무를 베듯이 똑떨어지는 일은 적어도 내 경험 상 없었다. 한 페이지에서 구매를 더 유도하면 필연적으로 고객은 다른 페이지에서 구매를 줄이게 되어있다.


예를 들어 신규피쳐로 내가 이 페이지에서 0.5만큼 구매건수를 늘렸어도 다음 페이지에서 0.5만큼 구매를 줄였다면 총 효과는 0이다. 위젯의 효과만을 보자면 0.5이나 늘어났지만 다른 위젯의 효과를 잠식하여 낸 효과이기 때문에 런치할 수 없다. 한편 다른 위젯에서 0.5만큼의 구매건수가 줄어들었을지언정 내가 만든 위젯에서 1개가 늘어났다면 났다면 총 효과는 0.5이며 높은 확률로 런치가 가능하다. 다만 이 경우에도 어디서 왜 떨어졌는 지에 대한 가설은 가지고 있어야 한다. 반면 극단적으로 내가 만든 피쳐에서는 구매가 거의 늘지 않았지만 다른 페이지에서 구매가 늘어서 총 구매건수가 늘어나는 경우도 있다. 이런 경우 다른 페이지에서 구매가 늘어난 것이 내가 만든 피쳐때문에 늘어난 것이라는 것을 별도 데이터를 통해 검증해서라도 알아내야 한다. 그렇지 않으면 이 증가를 노이즈로 볼 수밖에 없고 런치가 불가능하다.


이같은 이유 때문에 캐니벌라이제이션에 대한 데이터도 AB테스트를 돌릴 때는 필수로 영향이 갈 만한 페이지를 추가해두자. 특히 트래픽이 큰 페이지는 민감하게 반응하기 때문에 해당 페이지들도 같이 확인하는 것이 좋다. 내 경험 상 새로운 피쳐에 가장 민감하게 반응하는 곳은 "검색"이다. 검색은 이커머스에서 전체 매출의 약 50%를 차지할 정도로 1등 매출공신이다. 그렇기 때문에 매출이 조금만 떨어져도 검색에서는 유난히 높은 숫자로 떨어지고 조금만 높아져도 큰 숫자로 좋은 임팩을 보인다.(그만큼 노이즈가 생기기도 쉬운 곳이기도 하다) 그렇기에 나는 검색과 홈 화면은 필수적으로 추가해서 확인한다. 다른 페이지의 지표가 올랐을 때나 내려갔을 때 가장 높은 확률로 이 페이지들에서 확인할 수 있기 때문이다. 또한 비슷한 기능이 같은 퍼널에 있을 경우 잠식이 가장 두드러지게 일어난다. 예를 들어 "A추천상품"이 바로 다음 페이지에 있는데 바로 전 페이지에 "A추천상품"위젯을 넣는다면 다음페이지에서의 캐니벌라이제이션은 불 보듯 뻔하다. 이 경우 꼭 넣어야 한다면 이전 페이지의 오너와 미리 얘기를 하여 싱크를 맞추는 것이 좋다.


3. 전략적인 계획

한편 내가 지난 분기에 가장 명확하게 배운 점은, 한 페이지에 여러 개의 테스트를 돌릴 땐 규칙을 명확하게 짜야 한다는 것이다. 한 테스트 내에서만 전략이 필요한 것이 아니다. 테스트는 한 번에 여러 개 돌아갈 수 밖에 없기 때문에 여러 개의 테스트를 돌리는데도 전략이 필요하다. 예를 들어 ㄱ위젯을 넣는 테스트와 ㄴ위젯을 넣는 테스트의 기간이 병행된다면, 두 테스트는 하나의 컨테이너에 넣어서 대상고객을 분리해야한다. 그래야만 두 테스트의 효과를 각각 측정할 수 있다. 하지만 이 때 기억해야 할 점은, 두 개의 실험을 한 컨테이너에 넣으면 트래픽이 반으로 줄어들기 때문에, 테스트결과를 신뢰할 수 있을만큼 지표가 올라갈 때까지 시간이 두 배로 걸린다.


하지만 위젯을 추가하는 테스트1과 위젯 순서를 변경하는 테스트3은 어쩔 수 없는 경우 병행할 수 있다. 테스트1의 A그룹과 B그룹에 테스트2가 똑같은 비율로 반영될 것이기 때문에 두 테스트는 서로 영향을 최소한으로 미치며 병행될 수 있다. 물론 병행을 하지 않는 것이 가장 좋지만 시간이 없는 경우엔 굳이 컨테이너에 넣어서 테스트 시간을 두 배로 늘리지 않고 한 번에 진행하는 것이 더 좋은 방법이 될 수 있다.


 또한 테스트를 한 번 돌리며 트래픽을 어느 정도 쌓았는데, 다른 실험과 병행하게 될 경우 컨테이너에 넣기 위해 테스트를 멈추었다가 다시 돌려야하므로 시간을 낭비하게 된다. 그러므로 여러 테스트를 한 번에 돌릴 때는 미리 계획을 세우는 것이 굉장히 중요하다. 한편 실험을 병행할 경우 비즈니스를 고려하여 임팩이 큰 것부터 진행하도록 순서를 짜는 것만 해도 좋지만 엔지니어링 쪽으로도 생각해야 한다. 임팩은 우리가 생각하는 것과 다를 때도 있다. 하지만 개발자가 쓰는 시간은 비교적 확신을 갖고 예상을 할 수 있으니까. 개발리소스는 항상 한정되어 있고 우리는 항상 시간이 없다. 테스트를 효과적으로 돌리는 것도 PO의 역할이다. 이런 맥락에서 앞으로 어떤 테스트를 진행할 지 최소한 이후 3-4개 정도는 미리 계획이 되어 있어야 한다. 내가 일하는 곳에서는 앞으로 한 분기 동안 어떤 일을 할 지 분기 초에 계획하고 순서를 정한다. 이런 방식으로 테스트를 미리 계획할 수는 있지만, 변수는 언제나 생기기 마련이다.




매거진의 이전글 PO 입사 세 달, 이젠 조금 알 것 같다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari