테스트 그룹 분배
A/B 테스트를 진행할 때, 테스트 그룹을 대상으로 사용자를 분배하고 각 테스트 그룹에 해당하는 로직을 작성해야 합니다. 이 때 사용자 분배를 핵클 SDK를 통해 진행할 수 있습니다.
테스트 그룹테스트 그룹은 테스트 대상이 되는 기존안(대조군)과 개선안(실험군)을 의미하며, 개선안은 1개 이상일 수 있습니다. 대시보드에서 설정 가능하며, 테스트 그룹을 관리하는 방법에 대해서는 A/B 테스트 설정 문서를 참고하시기 바랍니다.
variation
variation() 메소드에 실험 키와 사용자 식별자를 전달하면 사용자를 분배하고 결과를 전달받을 수 있습니다. 이후 테스트 그룹 별 로직을 구현합니다.
아래 예제 코드에서는 실험 키 42를 전달하고 있으며, 사용자 식별자는 "ae2182e0" 입니다. 테스트 그룹은 A와 B 두 개가 존재합니다.
<?php
  
require 'vendor/autoload.php';
$client = \Hackle\HackleClients::create("YOUR_SDK_KEY");
$user = \Hackle\Common\HackleUser::builder()
    ->deviceId("ae2182e0")
    ->build();
$variation = $client->variation(42, $user);
if ($variation === "A") {
    //그룹 A 로직
} elseif ($variation === "B") {
    //그룹 B 로직;
}
?>variationDetail
variationDetail() 메소드는 variation() 메소드와 동일하게 동작하고 추가로 특정 그룹으로 분배된 사유를 같이 제공합니다. 이 메소드는 분배가 잘 되고 있는지 살펴볼 때 유용하게 사용할 수 있습니다.
파라미터로 실험 키를 전달해야 합니다. 아래 예제 코드의 경우 실험 키 42를 전달하고 있습니다.
<?php
  
require 'vendor/autoload.php';
$client = \Hackle\HackleClients::create("YOUR_SDK_KEY");
$user = \Hackle\Common\HackleUser::builder()
    ->deviceId("ae2182e0")
    ->build();
//분배 결정 상세
$decision = $client->variationDetail(42, $user);
//분배 그룹
$variation = $decision->getVariation();
//분배 결정 사유
$reason = $decision->getReason();
?>분배 결정 사유는 SDK_NOT_READY 와 같은 형태로 받게 됩니다. 자세한 내용은 아래 표를 참고해주세요.
사유  | 설명  | 분배 결과  | 
|---|---|---|
SDK_NOT_READY  | 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)  | 
EXCEPTION  | 알 수 없는 오류가 발생했습니다.  | 기본 그룹(A)  | 
파라미터
variationDetail()메소드를 통해 분배된 그룹의 파라미터 값도 같이 제공받을 수 있습니다.- 핵클의 A/B 테스트 화면에서 설정한 파라미터 값이 key, value 형태로 존재하기 때문에, 설정한 파라미터 유형에 따라 아래 메소드를 사용하여 설정한 파라미터 값을 받아 활용할 수 있습니다.
 
getString
- STRING, JSON 유형으로 설정된 파라미터 값을 반환합니다.
 - 상태 결정에 따라 기본 값 혹은 규칙에 설정된 값을 반환합니다.
 
<?php
  
require 'vendor/autoload.php';
$client = \Hackle\HackleClients::create("YOUR_SERVER_SDK_KEY");
$user = \Hackle\Common\HackleUser::builder()
    ->deviceId("ae2182e0")
    ->build();
$decision = $client->variationDetail(42, $user);
$strValue = $decision->getString("parameter_key_string_type", "defaultValue");
$jsonValue = $decision->getString("parameter_key_json_type", "defaultValue");
  
?>getInt
- Number 유형으로 설정된 parameter 값을 Int 타입으로 반환합니다.
 - 상태 결정에 따라 기본 값 혹은 규칙에 설정된 값을 반환합니다.
 
<?php
  
require 'vendor/autoload.php';
$client = \Hackle\HackleClients::create("YOUR_SERVER_SDK_KEY");
$user = \Hackle\Common\HackleUser::builder()
    ->deviceId("ae2182e0")
    ->build();
$decision = $client->variationDetail(42, $user);
$intValue = $decision->getInt("parameter_key_number_type", 0);
?>getFloat
- Number 유형으로 설정된 parameter 값을 float 타입으로 반환합니다.
 - 상태 결정에 따라 기본 값 혹은 규칙에 설정된 값을 반환합니다.
 
<?php
  
require 'vendor/autoload.php';
$client = \Hackle\HackleClients::create("YOUR_SERVER_SDK_KEY");
$user = \Hackle\Common\HackleUser::builder()
    ->deviceId("ae2182e0")
    ->build();
$decision = $client->variationDetail(42, $user);
$floatValue = $decision->getFloat("parameter_key_number_type", 0.0);
?>getBool
- Boolean 유형으로 설정된 parameter값을 반환합니다.
 - 상태 결정에 따라 기본 값 혹은 규칙에 설정된 값을 반환합니다.
 
<?php
  
require 'vendor/autoload.php';
$client = \Hackle\HackleClients::create("YOUR_SERVER_SDK_KEY");
$user = \Hackle\Common\HackleUser::builder()
    ->deviceId("ae2182e0")
    ->build();
$decision = $client->variationDetail(42, $user);
$boolValue = $decision->getBool("parameter_key_bool_type", true);
?>Updated about 2 months ago
