테스트 그룹 분배

A/B 테스트를 진행할 때, 테스트 그룹을 대상으로 사용자를 분배하고 각 테스트 그룹에 해당하는 로직을 작성해야 합니다. 이 때 사용자 분배를 핵클 SDK를 통해 진행할 수 있습니다.

📘

테스트 그룹

테스트 그룹은 테스트 대상이 되는 기존안(대조군)과 개선안(실험군)을 의미하며, 개선안은 1개 이상일 수 있습니다. 대시보드에서 설정 가능하며, 테스트 그룹을 관리하는 방법에 대해서는 A/B 테스트 설정 문서를 참고하시기 바랍니다.

useVariation

핵클이 제공하는 컴포넌트를 사용하거나 Hooks API를 사용하여 사용자를 특정 그룹으로 분배하고 분배 결과를 전달받을 수 있습니다. 분배 시에는 실험 키를 전달해야 합니다.

아래 예제 코드의 경우 실험 키 42를 전달하고 있으며, 테스트 그룹은 A와 B 두 개가 존재합니다.

import {HackleExperiment, HackleVariation} from "@hackler/react-sdk";

function App() {
  return (
    // 실험 키가 42인 A/B 테스트에서 사용자에게 노출할 테스트 그룹을 결정합니다.
    // 결정하지 못하는 상황인 경우 테스트 그룹 A를 반환합니다.
    <HackleExperiment experimentKey={42}> 
      <HackleVariation variation={"A"}>
        <AwesomeFeature />
      </HackleVariation>
      <HackleVariation variation={"B"}>
        <SuperAwesomeFeature />
      </HackleVariation>
    </HackleExperiment>
  )
}
function App() {
  return (
    // 실험 키가 42인 A/B 테스트에서 사용자에게 노출할 테스트 그룹을 결정합니다.
    // 결정하지 못하는 상황인 경우 테스트 그룹 A를 반환합니다.
    <HackleExperiment experimentKey={42}>
      {(variation) => {
        switch (variation) { // 할당받은 그룹에 대한 로직
          case "A":
            return <AwesomeFeature />
          case "B":
            return <SuperAwesomeFeature />
          default:
            return <AwesomeFeature />
        }
      }}
    </HackleExperiment>
  )
}
function App() {
  // 실험 키가 42인 A/B 테스트에서 사용자에게 노출할 테스트 그룹을 결정합니다.
  // 결정하지 못하는 상황인 경우 테스트 그룹 A를 반환합니다.
  const variation = useVariation(42)
  
  // 할당받은 그룹에 대한 로직
  if (variation === "A") return <AwesomeFeature />
  if (variation === "B") return <SuperAwesomeFeature />
  return <AwesomeFeature />
}

useVariationDetail

useVariationDetail() Hooks API는 useVariation()와 동일하게 동작하고 추가로 특정 그룹으로 분배된 사유를 같이 제공합니다. 이 메소드는 분배가 잘 되고 있는지 살펴볼 때 유용하게 사용할 수 있습니다.
파라미터로 실험 키를 전달해야 합니다. 아래 예제 코드의 경우 실험 키 42를 전달하고 있습니다.

// 분배 결정 상세
const decision = useVariationDetail(42)

// 분배 그룹
const variation = decision.variation

// 분배 결정 사유
const reason = decision.reason

분배 결정 사유는 SDK_NOT_READY 와 같은 형태로 받게 됩니다. 자세한 내용은 아래 표를 참고해주세요.

사유

설명

분배 결과

SDK_NOT_READY

SDK 사용 준비가 되지 않았습니다.
(예: 잘못된 SDK 키로 초기화 시도)

기본 그룹(A)

EXPERIMENT_NOT_FOUND

전달한 실험 키에 대한 A/B 테스트를 찾을 수 없습니다.
실험 키가 잘못되었거나 해당 실험이 보관 상태일 수 있습니다.

기본 그룹(A)

EXPERIMENT_DRAFT

A/B 테스트가 준비 상태입니다.

기본 그룹(A)

EXPERIMENT_PAUSED

A/B 테스트가 일시 정지 상태입니다.

기본 그룹(A)

EXPERIMENT_COMPLETED

A/B 테스트가 종료되었습니다.

종료 시 선택한
승리 그룹

OVERRIDDEN

사용자가 수동할당에 의해 특정 그룹으로 결정되었습니다.

수동할당한 그룹

NOT_IN_EXPERIMENT_TARGET

사용자가 A/B 테스트 대상이 아닙니다.

기본 그룹(A)

TRAFFIC_NOT_ALLOCATED

A/B 테스트가 실행 중이지만 사용자가 테스트에 할당되지 않았습니다.

기본 그룹(A)

TRAFFIC_ALLOCATED

사용자가 A/B 테스트에 할당되었습니다.

할당된 그룹

VARIATION_DROPPED

원래 할당된 그룹이 테스트에서 제외되었습니다.

기본 그룹(A)

INVALID_INPUT

입력 값이 유효하지 않습니다.
(예: 숫자 타입을 넣어야 하는 파라미터에 문자 타입 입력)

기본 그룹(A)

EXCEPTION

알 수 없는 오류가 발생했습니다.

기본 그룹(A)


Did this page help you?