테스트 그룹 분배

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

variation

circle-info

Java/Kotlin SDK를 사용하는 경우 동일한 사용자가 1분 이내에 연속으로 발생시킨 동일한 A/B 테스트 분배결과에 대한 노출 이벤트를 제거합니다.

1분 이내의 이벤트는 1회로 계산됩니다.

circle-exclamation

variation() 메소드에 실험 키사용자 식별자를 전달하면 사용자를 분배하고 결과를 전달받을 수 있습니다. 이후 테스트 그룹 별 로직을 구현합니다.

아래 예제 코드에서는 실험 키 42를 전달하고 있으며, 사용자 식별자는 "ae2182e0" 입니다. 테스트 그룹은 A와 B 두 개가 존재합니다.

import io.hackle.sdk.HackleClient  
import io.hackle.sdk.common.Variation  

// 실험 키가 42인 A/B 테스트에서
// "ae2182e0"라는 식별자를 가진 사용자에게 노출할 테스트 그룹을 결정합니다.
// 결정하지 못하는 상황인 경우 테스트 그룹 A를 반환합니다.
val variation: Variation = hackleClient.variation(42, "ae2182e0")

// 할당받은 그룹에 대한 로직
if (variation == Variation.A) {
  // 그룹 A 로직
} else if (variation == Variation.B) {
  // 그룹 B 로직
}

variationDetail

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

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

분배 사유
설명
분배 결과

SDK_NOT_READY

SDK 사용 준비가 되지 않았습니다.

(예: 잘못된 SDK 키로 초기화 시도)

A (기본 그룹)

EXPERIMENT_NOT_FOUND

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

A (기본 그룹)

NOT_IN_MUTUAL_EXCLUSION_EXPERIMENT

실험이 상호 배타적 설정에 포함되어 있지만 해당 상호 배타적 그룹에 할당되지 않은 경우

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 (기본 그룹)

파라미터

  • variationDetail() 메소드를 통해 분배된 그룹의 파라미터 값도 같이 제공받을 수 있습니다.

  • variationDetail() 메소드를 통해 전달받은 Decision 인스턴스에는 전체 파라미터 설정 정보가 담긴 ParameterConfig 객체가 존재합니다.

  • 핵클의 A/B 테스트 화면에서 설정한 파라미터 값이 key, value 형태로 존재하기 때문에, 설정한 파라미터 유형에 따라 아래 메소드를 사용하여 설정한 파라미터 값을 받아 활용할 수 있습니다.

getString

  • STRING, JSON 유형으로 설정된 parameter값을 반환합니다.

  • 분배된 그룹의 설정된 값을 반환합니다.

getInt

  • Number 유형으로 설정된 parameter 값을 Int 타입으로 반환합니다.

  • 분배된 그룹의 설정된 값을 반환합니다.

getDouble

  • Number 유형으로 설정된 parameter 값을 Double 타입으로 반환합니다.

  • 분배된 그룹의 설정된 값을 반환합니다.

getLong

  • Number 유형으로 설정된 parameter 값을 Long 타입으로 반환합니다.

  • 분배된 그룹의 설정된 값을 반환합니다.

getBoolean

  • Boolean 유형으로 설정된 parameter값을 반환합니다.

  • 분배된 그룹의 설정된 값을 반환합니다.

마지막 업데이트