สร้างการทดสอบการรับส่งข้อความด้วยการทดสอบ A/B

เมื่อคุณติดต่อผู้ใช้หรือเริ่มแคมเปญการตลาดใหม่ คุณต้องตรวจสอบว่าคุณทำอย่างถูกต้อง การทดสอบ A/B ช่วยให้คุณค้นหาถ้อยคำและการนำเสนอที่เหมาะสมที่สุดได้โดยการทดสอบข้อความรูปแบบต่างๆ กับฐานผู้ใช้บางส่วนที่เลือกไว้ ไม่ว่าเป้าหมายของคุณคือการคงผู้ใช้ไว้ได้ดีขึ้นหรือการทำ Conversion จากข้อเสนอ การทดสอบ A/B สามารถทำการวิเคราะห์ทางสถิติเพื่อระบุว่าข้อความที่แตกต่างกันมีประสิทธิภาพเหนือกว่าเกณฑ์พื้นฐานสำหรับวัตถุประสงค์ที่คุณเลือกหรือไม่

หากต้องการทดสอบ A/B ตัวแปรของฟีเจอร์กับตัวแปรพื้นฐาน ให้ทำดังนี้

  1. สร้างการทดสอบ
  2. ตรวจสอบความถูกต้องของการทดสอบในอุปกรณ์ทดสอบ
  3. จัดการการทดสอบ

สร้างการทดสอบ

การทดสอบที่ใช้ Notifications composer ช่วยให้คุณประเมินตัวแปรหลายรายการในข้อความแจ้งเตือนเดียวได้

  1. ยืนยันว่าเปิดใช้ Google Analytics ในโปรเจ็กต์แล้วเพื่อให้การทดสอบมีสิทธิ์เข้าถึงข้อมูล Analytics

    หากไม่ได้เปิดใช้ Google Analytics เมื่อสร้างโปรเจ็กต์ คุณสามารถเปิดใช้ได้ในแท็บการตั้งค่า > การผสานรวมของคอนโซล Firebase

  2. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การทดสอบ A/B

  3. คลิกสร้างการทดสอบ แล้วเลือกการแจ้งเตือนเมื่อระบบแจ้งให้เลือกบริการที่ต้องการทดสอบ

  4. ป้อนชื่อและคำอธิบาย (ไม่บังคับ) สำหรับการทดสอบ แล้วคลิกถัดไป

  5. กรอกข้อมูลในช่องการกำหนดเป้าหมาย โดยเริ่มจากการเลือกแอปที่ใช้การทดสอบ นอกจากนี้ คุณยังกำหนดเป้าหมายผู้ใช้ชุดย่อยให้เข้าร่วมการทดสอบได้โดยเลือกตัวเลือกต่างๆ ซึ่งรวมถึงตัวเลือกต่อไปนี้

    • เวอร์ชัน: แอปของคุณอย่างน้อย 1 เวอร์ชัน
    • กลุ่มเป้าหมายผู้ใช้: กลุ่มเป้าหมาย Analytics รายการที่ใช้เพื่อกำหนดเป้าหมายผู้ใช้ที่อาจรวมอยู่ในการทดสอบ
    • พร็อพเพอร์ตี้ผู้ใช้: พร็อพเพอร์ตี้ผู้ใช้ Analytics อย่างน้อย 1 รายการสําหรับเลือกผู้ใช้ที่อาจรวมอยู่ในการทดสอบ
    • ประเทศ/ภูมิภาค: ประเทศหรือภูมิภาคอย่างน้อย 1 แห่งสำหรับการเลือกผู้ใช้ที่อาจรวมอยู่ในการทดสอบ
    • ภาษาของอุปกรณ์: ภาษาและภาษาถิ่นอย่างน้อย 1 รายการที่ใช้ในการเลือกผู้ใช้ที่อาจรวมอยู่ในการทดสอบ
    • เปิดครั้งแรก: กำหนดเป้าหมายผู้ใช้ตามครั้งแรกที่เปิดแอป
    • การมีส่วนร่วมกับแอปครั้งล่าสุด: กำหนดเป้าหมายผู้ใช้ตามครั้งล่าสุดที่ผู้ใช้มีส่วนร่วมกับแอป
  6. กำหนดเปอร์เซ็นต์ของผู้ใช้เป้าหมาย: เลือกเปอร์เซ็นต์ของฐานผู้ใช้ของแอปที่ตรงกับเกณฑ์ที่กำหนดไว้ในส่วนผู้ใช้เป้าหมาย ซึ่งคุณต้องการแบ่งอย่างเท่าๆ กันระหว่างกลุ่มฐานและกลุ่มตัวแปรอย่างน้อย 1 กลุ่มในการทดสอบ โดยอาจเป็นเปอร์เซ็นต์ใดก็ได้ระหว่าง 0.01% ถึง 100% ระบบจะสุ่มกำหนดเปอร์เซ็นต์ใหม่ให้กับผู้ใช้สำหรับการทดสอบแต่ละครั้ง รวมถึงการทดสอบที่ซ้ำกัน

  7. ในส่วนตัวแปร ให้พิมพ์ข้อความที่จะส่งไปยังกลุ่มพื้นฐานในช่องป้อนข้อความ หากไม่ต้องการส่งข้อความไปยังกลุ่มฐาน ให้ปล่อยช่องนี้ว่างไว้

  8. (ไม่บังคับ) หากต้องการเพิ่มตัวแปรมากกว่า 1 รายการในการทดสอบ ให้คลิกเพิ่มตัวแปร โดยค่าเริ่มต้น การทดสอบจะมีเกณฑ์พื้นฐาน 1 รายการและตัวแปร 1 รายการ

  9. (ไม่บังคับ) ป้อนชื่อตัวแปรแต่ละรายการในการทดสอบเพื่อแทนที่ชื่อตัวแปร A, ตัวแปร B ฯลฯ

  10. กำหนดเมตริกเป้าหมายสำหรับการทดสอบเพื่อใช้เมื่อประเมินตัวแปรการทดสอบ พร้อมกับเมตริกเพิ่มเติมที่ต้องการจากรายการแบบเลื่อนลง เมตริกเหล่านี้รวมถึงวัตถุประสงค์ในตัว (การมีส่วนร่วม การซื้อ รายได้ การคงผู้ใช้ไว้ ฯลฯ) เหตุการณ์ Conversion ของ Analytics และเหตุการณ์อื่นๆ ของ Analytics

  11. เลือกตัวเลือกสำหรับข้อความ ดังนี้

    • วันที่นำส่ง: เลือกส่งเลยเพื่อเปิดตัวการทดสอบทันทีที่บันทึก หรือเลือกตั้งเวลาเพื่อระบุเวลาเปิดตัวการทดสอบในอนาคต
    • ตัวเลือกขั้นสูง: หากต้องการเลือกตัวเลือกขั้นสูงสำหรับการแจ้งเตือนทั้งหมดที่รวมอยู่ในการทดสอบ ให้ขยายตัวเลือกขั้นสูง แล้วเปลี่ยนตัวเลือกข้อความที่แสดงอยู่
  12. คลิกตรวจสอบเพื่อบันทึกการทดสอบ

คุณสามารถทำการทดสอบได้สูงสุด 300 รายการต่อโปรเจ็กต์ (รวมถึงการเปิดตัว) ซึ่งอาจประกอบด้วยการทดสอบและการเปิดตัวที่ทำงานอยู่สูงสุด 24 รายการ โดยที่เหลือเป็นการทดสอบที่เสร็จสมบูรณ์แล้ว

ตรวจสอบการทดสอบในอุปกรณ์ทดสอบ

สำหรับการติดตั้ง Firebase แต่ละครั้ง คุณสามารถเรียกข้อมูลโทเค็นการลงทะเบียน FCM ที่เชื่อมโยงกับการติดตั้งนั้นได้ คุณใช้โทเค็นนี้เพื่อทดสอบตัวแปรการทดสอบที่เฉพาะเจาะจงในอุปกรณ์ทดสอบที่ติดตั้งแอปได้ หากต้องการตรวจสอบการทดสอบในอุปกรณ์ทดสอบ ให้ทำดังนี้

  1. รับโทเค็นการลงทะเบียน FCM โดยทำดังนี้

    Swift

    Messaging.messaging().token { token, error in
      if let error = error {
        print("Error fetching remote FCM registration token: \(error)")
      } else if let token = token {
        print("Remote instance ID token: \(token)")
      }
    }

    Objective-C

    [[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error fetching the remote FCM registration token: %@", error);
      } else {
        NSLog(@"Remote FCM registration token: %@", token);
        NSString* message =
          [NSString stringWithFormat:@"FCM registration token: %@", token];
        // display message
        NSLog(@"%@", message);
      }
    }];

    Java

    FirebaseMessaging.getInstance().getToken()
        .addOnCompleteListener(new OnCompleteListener<String>() {
            @Override
            public void onComplete(@NonNull Task<String> task) {
              if (!task.isSuccessful()) {
                Log.w(TAG, "Fetching FCM registration token failed", task.getException());
                return;
              }
    
              // Get new FCM registration token
              String token = task.getResult();
    
              // Log and toast
              String msg = getString(R.string.msg_token_fmt, token);
              Log.d(TAG, msg);
              Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

    Kotlin

    FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
        if (!task.isSuccessful) {
            Log.w(TAG, "Fetching FCM registration token failed", task.exception)
            return@OnCompleteListener
        }
    
        // Get new FCM registration token
        val token = task.result
    
        // Log and toast
        val msg = getString(R.string.msg_token_fmt, token)
        Log.d(TAG, msg)
        Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
    })

    C++

    firebase::InitResult init_result;
    auto* installations_object = firebase::installations::Installations::GetInstance(
        firebase::App::GetInstance(), &init_result);
    installations_object->GetToken().OnCompletion(
        [](const firebase::Future<std::string>& future) {
          if (future.status() == kFutureStatusComplete &&
              future.error() == firebase::installations::kErrorNone) {
            printf("Installations Auth Token %s\n", future.result()->c_str());
          }
        });

    Unity

    Firebase.Messaging.FirebaseMessaging.DefaultInstance.GetTokenAsync().ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("FCM registration token {0}", task.Result));
        }
      });
  2. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การทดสอบ A/B
  3. คลิกฉบับร่าง วางเมาส์เหนือการทดสอบ คลิกเมนูตามบริบท () แล้วคลิกจัดการอุปกรณ์ทดสอบ
  4. ป้อนโทเค็น FCM สำหรับอุปกรณ์ทดสอบและเลือกตัวแปรการทดสอบที่จะส่งไปยังอุปกรณ์ทดสอบนั้น
  5. เรียกใช้แอปและยืนยันว่าอุปกรณ์ทดสอบได้รับตัวแปรที่เลือก

จัดการการทดสอบ

ไม่ว่าคุณจะสร้างการทดสอบด้วย Remote Config, Notifications Composer หรือ Firebase In-App Messaging คุณก็สามารถตรวจสอบและเริ่มการทดสอบ ตรวจสอบการทดสอบขณะที่ทำงานอยู่ และเพิ่มจำนวนผู้ใช้ที่รวมอยู่ในการทดสอบที่ทำงานอยู่ได้

เมื่อการทดสอบเสร็จสิ้น คุณสามารถจดบันทึกการตั้งค่าที่ใช้โดยตัวแปรที่ชนะ แล้วนำการตั้งค่าเหล่านั้นไปใช้กับผู้ใช้ทั้งหมด หรือจะทำการทดสอบอื่นก็ได้

เริ่มการทดสอบ

  1. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การทดสอบ A/B
  2. คลิกฉบับร่าง แล้วคลิกชื่อการทดสอบ
  3. หากต้องการตรวจสอบว่าแอปมีผู้ใช้ที่จะรวมอยู่ในการทดสอบหรือไม่ ให้ขยายรายละเอียดฉบับร่างและตรวจสอบตัวเลขที่มากกว่า 0% ในส่วนการกำหนดเป้าหมายและการเผยแพร่ (เช่น 1% ของผู้ใช้ที่ตรงตามเกณฑ์)
  4. หากต้องการเปลี่ยนแปลงการทดสอบ ให้คลิกแก้ไข
  5. หากต้องการเริ่มการทดสอบ ให้คลิกเริ่มการทดสอบ คุณทำการทดสอบได้สูงสุด 24 รายการต่อโปรเจ็กต์พร้อมกัน

ติดตามการทดสอบ

เมื่อการทดสอบทำงานมาระยะหนึ่งแล้ว คุณสามารถตรวจสอบความคืบหน้าและดูผลลัพธ์ของผู้ใช้ที่เข้าร่วมการทดสอบจนถึงตอนนี้

  1. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การทดสอบ A/B
  2. คลิกกำลังทำงาน แล้วคลิกหรือค้นหาชื่อการทดสอบ ในหน้านี้ คุณสามารถดูสถิติที่สังเกตได้และสถิติโดยประมาณต่างๆ เกี่ยวกับการทดสอบที่ทำงานอยู่ ซึ่งรวมถึงข้อมูลต่อไปนี้

    • % ความแตกต่างจากเกณฑ์พื้นฐาน: การวัดการปรับปรุงเมตริกสำหรับตัวแปรหนึ่งๆ เมื่อเทียบกับเกณฑ์พื้นฐาน คำนวณโดยการเปรียบเทียบช่วงค่าของตัวแปรกับช่วงค่าของเกณฑ์พื้นฐาน
    • ความน่าจะเป็นที่จะสูงกว่าเกณฑ์พื้นฐาน: ความน่าจะเป็นโดยประมาณที่ตัวแปรหนึ่งๆ จะสูงกว่าเกณฑ์พื้นฐานสำหรับเมตริกที่เลือก
    • observed_metric ต่อผู้ใช้: ช่วงที่คาดการณ์ว่าค่าเมตริกจะลดลงเมื่อเวลาผ่านไป โดยอิงตามผลการทดสอบ
    • observed_metric ทั้งหมด: มูลค่าสะสมที่สังเกตได้สำหรับฐานหรือตัวแปร มูลค่านี้ใช้เพื่อวัดประสิทธิภาพของตัวแปรการทดสอบแต่ละรายการ และใช้เพื่อคำนวณการปรับปรุง ช่วงมูลค่า ความน่าจะเป็นที่จะสูงกว่าเกณฑ์พื้นฐาน และความน่าจะเป็นที่จะเป็นตัวแปรที่ดีที่สุด คอลัมน์นี้อาจมีป้ายกำกับว่า "ระยะเวลาต่อผู้ใช้" "รายได้ต่อผู้ใช้" "อัตราการคงผู้ใช้ไว้" หรือ "อัตรา Conversion" ทั้งนี้ขึ้นอยู่กับเมตริกที่วัด
  3. หลังจากที่การทดสอบทำงานไปได้สักระยะหนึ่ง (อย่างน้อย 7 วันสำหรับ FCM และ In-App Messaging หรือ 14 วันสำหรับ Remote Config) ข้อมูลในหน้านี้จะระบุว่าตัวแปรใด (หากมี) เป็น "ผู้นำ" การวัดผลบางรายการจะมาพร้อมกับแผนภูมิแท่งที่แสดงข้อมูลในรูปแบบภาพ

เปิดตัวการทดสอบกับผู้ใช้ทุกคน

หลังจากทำการทดสอบนานพอจนได้ "ผู้นำ" หรือตัวแปรที่ได้ผลดีที่สุดสำหรับเมตริกเป้าหมายแล้ว คุณสามารถเผยแพร่การทดสอบกับผู้ใช้ทั้ง 100% ได้ ซึ่งจะช่วยให้เลือกตัวแปรเพื่อเผยแพร่ไปยังผู้ใช้ทั้งหมดในอนาคตได้ แม้การทดสอบจะไม่สามารถระบุผู้ชนะที่ชัดเจนได้ แต่คุณก็ยังเลือกเผยแพร่ตัวแปรให้ผู้ใช้ทั้งหมดเห็นได้

  1. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การทดสอบ A/B
  2. คลิกเสร็จสมบูรณ์หรือกำลังทำงาน คลิกการทดสอบที่ต้องการเผยแพร่ให้ผู้ใช้ทุกคน คลิกเมนูตามบริบท () เปิดตัวตัวแปร
  3. เปิดตัวการทดสอบให้ผู้ใช้ทุกคนโดยทำอย่างใดอย่างหนึ่งต่อไปนี้

    • สําหรับการทดสอบที่ใช้ Notifications Composer ให้ใช้กล่องโต้ตอบเปิดตัวข้อความเพื่อส่งข้อความไปยังผู้ใช้เป้าหมายที่เหลือซึ่งไม่ได้เป็นส่วนหนึ่งของการทดสอบ
    • สำหรับการทดสอบ Remote Config ให้เลือกตัวแปรเพื่อกำหนดค่าพารามิเตอร์ Remote Config ที่จะอัปเดต เกณฑ์การกำหนดเป้าหมายที่ระบุไว้ตอนสร้างการทดสอบจะเพิ่มไว้เป็นเงื่อนไขใหม่ในเทมเพลต เพื่อให้การเริ่มใช้ตัวแปรมีผลกับผู้ใช้ที่การทดสอบนี้กำหนดเป้าหมายไว้เท่านั้น หลังจากคลิกตรวจสอบในการกำหนดค่าระยะไกลเพื่อตรวจสอบการเปลี่ยนแปลงแล้ว ให้คลิกเผยแพร่การเปลี่ยนแปลงเพื่อดำเนินการใช้ตัวแปรให้เสร็จสิ้น
    • สําหรับการทดสอบ In-App Messaging ให้ใช้กล่องโต้ตอบเพื่อระบุตัวแปรที่ต้องเปิดตัวเป็นแคมเปญ In-App Messaging แบบสแตนด์อโลน เมื่อเลือกแล้ว ระบบจะเปลี่ยนเส้นทางคุณไปยังหน้าจอเขียนข้อความ FIAM เพื่อทำการเปลี่ยนแปลง (หากจำเป็น) ก่อนเผยแพร่

ขยายการทดสอบ

หากพบว่าการทดสอบไม่สามารถดึงดูดผู้ใช้ได้มากพอที่ A/B Testing จะประกาศตัวแปรที่ได้ผลดีที่สุด คุณสามารถเพิ่มการกระจายการทดสอบเพื่อเข้าถึงฐานผู้ใช้ของแอปในเปอร์เซ็นต์ที่มากขึ้นได้

  1. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การทดสอบ A/B
  2. เลือกการทดสอบที่ทำงานอยู่ซึ่งคุณต้องการแก้ไข
  3. ในภาพรวมการทดสอบ ให้คลิกเมนูตามบริบท () แล้วคลิกแก้ไขการทดสอบที่ทำงานอยู่
  4. กล่องโต้ตอบการกำหนดเป้าหมายจะแสดงตัวเลือกในการเพิ่มเปอร์เซ็นต์ของผู้ใช้ที่อยู่ในการทดสอบที่กำลังดำเนินอยู่ เลือกตัวเลขที่มากกว่าเปอร์เซ็นต์ปัจจุบัน แล้วคลิกเผยแพร่ ระบบจะพุชการทดสอบไปยังเปอร์เซ็นต์ของผู้ใช้ที่คุณระบุไว้

ทำซ้ำหรือหยุดการทดสอบ

  1. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การทดสอบ A/B
  2. คลิกเสร็จสมบูรณ์หรือกำลังทำงาน วางเคอร์เซอร์เหนือการทดสอบ คลิกเมนูตามบริบท () แล้วคลิกทำซ้ำการทดสอบหรือหยุดการทดสอบ

การกำหนดเป้าหมายผู้ใช้

คุณสามารถกำหนดเป้าหมายผู้ใช้ที่จะรวมไว้ในการทดสอบได้โดยใช้เกณฑ์การกำหนดเป้าหมายผู้ใช้ต่อไปนี้

เกณฑ์การกำหนดเป้าหมาย ผู้ประกอบธุรกิจ    ค่า หมายเหตุ
เวอร์ชัน มี
ไม่มี
ตรงกันทุกประการ
มีนิพจน์ทั่วไป (Regex)
ป้อนค่าสำหรับเวอร์ชันแอปอย่างน้อย 1 เวอร์ชันที่ต้องการรวมไว้ในการทดสอบ

เมื่อใช้โอเปอเรเตอร์มี ไม่มี หรือตรงทั้งหมด คุณสามารถระบุรายการค่าที่คั่นด้วยคอมมาได้

เมื่อใช้โอเปอเรเตอร์มีนิพจน์ทั่วไป คุณจะสร้างนิพจน์ทั่วไปในรูปแบบ RE2 ได้ นิพจน์ทั่วไปสามารถจับคู่สตริงเวอร์ชันเป้าหมายทั้งหมดหรือบางส่วนได้ นอกจากนี้ คุณยังใช้ Anchor ^ และ $ เพื่อจับคู่จุดเริ่มต้น จุดสิ้นสุด หรือสตริงเป้าหมายทั้งหมดได้ด้วย

กลุ่มเป้าหมายที่เป็นผู้ใช้ รวมทั้งหมด,
รวมอย่างน้อย 1 รายการ,
ไม่รวมทั้งหมด,
ไม่รวมอย่างน้อย 1 รายการ
เลือกกลุ่มเป้าหมาย Analytics อย่างน้อย 1 กลุ่มเพื่อกำหนดเป้าหมายผู้ใช้ที่อาจรวมอยู่ในการทดสอบ การทดสอบบางรายการที่กำหนดเป้าหมายเป็นกลุ่มเป้าหมาย Google Analytics อาจต้องใช้เวลา 2-3 วันในการรวบรวมข้อมูล เนื่องจากขึ้นอยู่กับเวลาในการตอบสนองของการประมวลผลข้อมูล Analytics คุณมีแนวโน้มที่จะพบความล่าช้านี้กับผู้ใช้ใหม่ ซึ่งโดยปกติแล้วจะลงทะเบียนในกลุ่มเป้าหมายที่มีสิทธิ์ภายใน 24-48 ชั่วโมงหลังจากสร้าง หรือสำหรับกลุ่มเป้าหมายที่สร้างขึ้นเมื่อเร็วๆ นี้
พร็อพเพอร์ตี้ผู้ใช้ สำหรับข้อความ:
มี
ไม่มี
ตรงกันทุกประการ
มีนิพจน์ทั่วไป (Regex)

สำหรับตัวเลข:
<, ≤, =, ≥, >
ระบบจะใช้พร็อพเพอร์ตี้ผู้ใช้ Analytics เพื่อเลือกผู้ใช้ที่อาจรวมอยู่ในการทดสอบ โดยมีตัวเลือกมากมายสำหรับการเลือกค่าพร็อพเพอร์ตี้ผู้ใช้

ในฝั่งไคลเอ็นต์ คุณจะตั้งค่าได้เฉพาะค่าสตริงสําหรับพร็อพเพอร์ตี้ผู้ใช้ สำหรับเงื่อนไขที่ใช้โอเปอเรเตอร์ตัวเลข บริการ Remote Config จะแปลงค่าของพร็อพเพอร์ตี้ผู้ใช้ที่เกี่ยวข้องเป็นจำนวนเต็ม/จำนวนทศนิยม
เมื่อใช้โอเปอเรเตอร์มีนิพจน์ทั่วไป คุณจะสร้างนิพจน์ทั่วไปในรูปแบบ RE2 ได้ นิพจน์ทั่วไปสามารถจับคู่สตริงเวอร์ชันเป้าหมายทั้งหมดหรือบางส่วนได้ นอกจากนี้ คุณยังใช้ Anchor ^ และ $ เพื่อจับคู่จุดเริ่มต้น จุดสิ้นสุด หรือสตริงเป้าหมายทั้งหมดได้ด้วย
ประเทศ/ภูมิภาค ไม่มี ประเทศหรือภูมิภาคอย่างน้อย 1 แห่งที่ใช้ในการเลือกผู้ใช้ที่อาจรวมอยู่ในการทดสอบ  
ภาษา ไม่มี ภาษาและภาษาถิ่นอย่างน้อย 1 รายการที่ใช้ในการเลือกผู้ใช้ที่อาจรวมอยู่ในการทดสอบ  
การเปิดครั้งแรก มากกว่า
น้อยกว่า
ระหว่าง
กำหนดเป้าหมายผู้ใช้ตามครั้งแรกที่เปิดแอปของคุณ โดยระบุเป็นจำนวนวัน
การมีส่วนร่วมกับแอปครั้งล่าสุด มากกว่า
น้อยกว่า
ระหว่าง
กำหนดเป้าหมายผู้ใช้ตามครั้งล่าสุดที่มีส่วนร่วมกับแอปของคุณ โดยระบุเป็นจำนวนวัน

เมตริก A/B Testing รายการ

เมื่อสร้างการทดสอบ คุณต้องเลือกเมตริกหลักหรือเมตริกเป้าหมายที่จะใช้ในการระบุตัวแปรที่ชนะ นอกจากนี้ คุณควรติดตามเมตริกอื่นๆ เพื่อช่วยให้เข้าใจประสิทธิภาพของตัวแปรการทดสอบแต่ละรายการได้ดียิ่งขึ้น และติดตามแนวโน้มที่สำคัญซึ่งอาจแตกต่างกันไปสำหรับตัวแปรแต่ละรายการ เช่น การคงผู้ใช้ไว้ ความเสถียรของแอป และรายได้จากการซื้อในแอป คุณติดตามเมตริกที่ไม่ใช่เป้าหมายได้สูงสุด 5 รายการในการทดสอบ

ตัวอย่างเช่น สมมติว่าคุณได้เพิ่มการซื้อในแอปใหม่ลงในแอปและต้องการเปรียบเทียบประสิทธิภาพของข้อความ "กระตุ้น" 2 ข้อความที่แตกต่างกัน ในกรณีนี้ คุณอาจตัดสินใจเลือกตั้งค่ารายได้จากการซื้อเป็นเมตริกเป้าหมาย เนื่องจากคุณต้องการให้ตัวแปรที่ชนะแสดงถึงการแจ้งเตือนที่ส่งผลให้เกิดรายได้จากการซื้อในแอปสูงสุด และเนื่องจากคุณต้องการติดตามด้วยว่าตัวแปรใดส่งผลให้เกิด Conversion ในอนาคตและผู้ใช้ที่คงอยู่มากขึ้น คุณจึงอาจเพิ่มสิ่งต่อไปนี้ในเมตริกอื่นๆ ที่จะติดตาม

  • รายได้ทั้งหมดโดยประมาณเพื่อดูว่ารายได้จากการซื้อในแอปและรายได้จากโฆษณารวมกันของตัวแปรทั้ง 2 รายการแตกต่างกันอย่างไร
  • การคงผู้ใช้ไว้ (1 วัน), การคงผู้ใช้ไว้ (2-3 วัน), การคงผู้ใช้ไว้ (4-7 วัน) เพื่อติดตามการคงผู้ใช้ไว้รายวันหรือรายสัปดาห์

ตารางต่อไปนี้แสดงรายละเอียดเกี่ยวกับวิธีคำนวณเมตริกเป้าหมายและเมตริกอื่นๆ

เมตริกเป้าหมาย

เมตริก คำอธิบาย
ผู้ใช้ที่ไม่พบข้อขัดข้อง เปอร์เซ็นต์ของผู้ใช้ที่ไม่พบข้อผิดพลาดในแอปของคุณซึ่งตรวจพบโดย SDK ของ Firebase Crashlytics ระหว่างการทดสอบ

หมายเหตุ: เว็บแอปพลิเคชันไม่รองรับ Firebase Crashlytics

รายได้จากโฆษณาโดยประมาณ รายได้จากโฆษณาโดยประมาณ
รายได้ทั้งหมดโดยประมาณ มูลค่ารวมสําหรับการซื้อและรายได้จากโฆษณาโดยประมาณ
รายได้จากการซื้อ มูลค่ารวมของเหตุการณ์ purchase และ in_app_purchase ทั้งหมด
การรักษาผู้ใช้ (1 วัน) จำนวนผู้ใช้ที่กลับมาที่แอปของคุณเป็นประจำทุกวัน
การเก็บรักษา (2-3 วัน) จำนวนผู้ใช้ที่กลับมายังแอปของคุณภายใน 2-3 วัน
การคงผู้ใช้ไว้ (4-7 วัน) จำนวนผู้ใช้ที่กลับมาที่แอปของคุณภายใน 4-7 วัน
การคงผู้ใช้ไว้ (8-14 วัน) จำนวนผู้ใช้ที่กลับมายังแอปของคุณภายใน 8-14 วัน
การรักษาผู้ใช้ (15 วันขึ้นไป) จำนวนผู้ใช้ที่กลับมายังแอปของคุณหลังจากที่ใช้งานครั้งล่าสุดไปแล้ว 15 วันขึ้นไป
first_open เหตุการณ์ Analytics ที่ทริกเกอร์เมื่อผู้ใช้เปิดแอปเป็นครั้งแรกหลังจากติดตั้งหรือติดตั้งอีกครั้ง ใช้เป็นส่วนหนึ่งของ Conversion Funnel

เมตริกอื่นๆ

เมตริก คำอธิบาย
notification_dismiss เหตุการณ์ Analytics ที่ทริกเกอร์เมื่อมีการปิดการแจ้งเตือนที่ส่งโดย Notifications Composer (Android เท่านั้น)
notification_receive เหตุการณ์ Analytics ที่ทริกเกอร์เมื่อได้รับข้อความแจ้งเตือนที่ส่งโดย Notifications composer ขณะที่แอปอยู่เบื้องหลัง (Android เท่านั้น)
os_update เหตุการณ์ Analytics ที่ติดตามเมื่อระบบปฏิบัติการของอุปกรณ์อัปเดตเป็นเวอร์ชันใหม่ ดูข้อมูลเพิ่มเติมได้ที่เหตุการณ์ที่รวบรวมโดยอัตโนมัติ

เว็บแอปพลิเคชันไม่รองรับเมตริกนี้

screen_view เหตุการณ์ Analytics ที่ติดตามหน้าจอที่ดูภายในแอป ดูข้อมูลเพิ่มเติมได้ที่ติดตามการดูหน้าจอ
session_start เหตุการณ์ Analytics ที่นับเซสชันของผู้ใช้ในแอป ดูข้อมูลเพิ่มเติมได้ที่เหตุการณ์ที่รวบรวมโดยอัตโนมัติ

การส่งออกข้อมูล BigQuery

นอกจากการดูข้อมูลการทดสอบ A/B Testing ในคอนโซล Firebase แล้ว คุณยังตรวจสอบและวิเคราะห์ข้อมูลการทดสอบใน BigQuery ได้ด้วย แม้ว่า A/B Testing จะไม่มีตาราง BigQuery แยกต่างหาก แต่ระบบจะจัดเก็บการเป็นสมาชิกการทดสอบและตัวแปรไว้ในทุกเหตุการณ์ Google Analytics ภายในตารางเหตุการณ์ Analytics

พร็อพเพอร์ตี้ผู้ใช้ที่มีข้อมูลการทดสอบจะอยู่ในรูปแบบ userProperty.key like "firebase_exp_%" หรือ userProperty.key = "firebase_exp_01" โดยที่ 01 คือรหัสการทดสอบ และ userProperty.value.string_value มีดัชนี (แบบอิงตาม 0) ของตัวแปรการทดสอบ

คุณสามารถใช้พร็อพเพอร์ตี้ผู้ใช้ของการทดสอบเหล่านี้เพื่อดึงข้อมูลการทดสอบได้ ซึ่งจะช่วยให้คุณแบ่งผลการทดสอบออกเป็นหลายๆ วิธีและยืนยันผลลัพธ์ของ A/B Testing ได้อย่างอิสระ

หากต้องการเริ่มต้นใช้งาน ให้ทำตามขั้นตอนต่อไปนี้ตามที่อธิบายไว้ในคู่มือนี้

  1. เปิดใช้การส่งออก BigQuery สำหรับ Google Analytics ในคอนโซล Firebase
  2. เข้าถึงข้อมูล A/B Testing โดยใช้ BigQuery
  3. สำรวจตัวอย่างการค้นหา

เปิดใช้การส่งออก BigQuery สำหรับ Google Analytics ในคอนโซล Firebase

หากใช้แพ็กเกจ Spark คุณสามารถใช้ แซนด์บ็อกซ์ BigQuery เพื่อเข้าถึง BigQuery ได้โดยไม่มีค่าใช้จ่าย ทั้งนี้ขึ้นอยู่กับขีดจำกัดของแซนด์บ็อกซ์ ดูข้อมูลเพิ่มเติมได้ที่ราคาและแซนด์บ็อกซ์ BigQuery

ก่อนอื่น โปรดตรวจสอบว่าคุณกำลังส่งออกข้อมูล Analytics ไปยัง BigQuery โดยทำดังนี้

  1. ในคอนโซล Firebase ให้ไปที่แท็บ การตั้งค่า > การผสานรวม

  2. ในการ์ด BigQuery ให้คลิกจัดการและยืนยันว่าโปรเจ็กต์กำลังส่งออกข้อมูล Analytics ไปยัง BigQuery

    หากการ์ดระบุว่าลิงก์ คุณจะต้องตั้งค่าการส่งออก (ไปที่ขั้นตอนถัดไป)

  3. หากต้องการตั้งค่าการส่งออก ให้ทำดังนี้

    1. อ่านเกี่ยวกับการลิงก์ Firebase กับ BigQuery แล้วคลิกถัดไป

    2. ในส่วนกำหนดค่าการผสานรวม ให้เปิดใช้ Google Analytics

    3. เลือกภูมิภาคและเลือกการตั้งค่าการส่งออก

    4. คลิกลิงก์กับ BigQuery

ทั้งนี้อาจใช้เวลาถึง 1 วันกว่าตารางจะพร้อมใช้งาน โดยขึ้นอยู่กับวิธีที่คุณเลือกส่งออกข้อมูล ดูข้อมูลเพิ่มเติมเกี่ยวกับการส่งออกข้อมูลโปรเจ็กต์ไปยัง BigQuery ได้ที่หัวข้อส่งออกข้อมูลโปรเจ็กต์ไปยัง BigQuery

เข้าถึงข้อมูล A/B Testing ใน BigQuery

ก่อนค้นหาข้อมูลสำหรับการทดสอบที่เฉพาะเจาะจง คุณจะต้องได้รับข้อมูลต่อไปนี้บางส่วนหรือทั้งหมดเพื่อใช้ในการค้นหา

  • รหัสการทดสอบ: คุณดูรหัสนี้ได้จาก URL ของหน้าภาพรวมการทดสอบ ตัวอย่างเช่น หาก URL มีลักษณะเป็น https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25 รหัสการทดสอบคือ 25
  • รหัสพร็อพเพอร์ตี้ Google Analytics: รหัสพร็อพเพอร์ตี้ Google Analytics 9 หลัก คุณจะเห็นรหัสนี้ใน Google Analytics และจะปรากฏใน BigQuery ด้วยเมื่อคุณขยายชื่อโปรเจ็กต์เพื่อแสดงชื่อตารางเหตุการณ์ Google Analytics (project_name.analytics_000000000.events)
  • วันที่ทดสอบ: เพื่อสร้างการค้นหาที่รวดเร็วและมีประสิทธิภาพมากขึ้น แนวทางปฏิบัติแนะนำคือจำกัดการค้นหาไว้ที่พาร์ติชันตารางกิจกรรมรายวัน Google Analytics ที่มีข้อมูลการทดสอบ ซึ่งเป็นตารางที่ระบุด้วยคำต่อท้าย YYYYMMDD ดังนั้น หากการทดสอบทำงานตั้งแต่วันที่ 2 กุมภาพันธ์ 2026 ถึง 2 พฤษภาคม 2026 คุณจะต้องระบุ _TABLE_SUFFIX between '20260202' AND '20260502' ดูตัวอย่างได้ที่เลือกค่าของการทดสอบที่เฉพาะเจาะจง
  • ชื่อเหตุการณ์: โดยทั่วไปแล้ว ชื่อเหล่านี้จะสอดคล้องกับเมตริกเป้าหมายที่คุณกําหนดค่าไว้ในการทดสอบ เช่น กิจกรรม in_app_purchase, ad_impression หรือกิจกรรม user_retention

หลังจากรวบรวมข้อมูลที่จำเป็นในการสร้างการค้นหาแล้ว ให้ทำดังนี้

  1. ในคอนโซล Google Cloud ให้ไปที่ BigQuery
  2. เลือกโปรเจ็กต์ แล้วเลือกสร้างการค้นหา SQL
  3. เพิ่มคำค้นหา ดูตัวอย่างการค้นหาที่จะเรียกใช้ได้ที่หัวข้อสำรวจตัวอย่างการค้นหา
  4. คลิกเรียกใช้

ค้นหาข้อมูลการทดสอบโดยใช้การค้นหาที่สร้างขึ้นโดยอัตโนมัติของคอนโซล Firebase

หากคุณใช้แพ็กเกจ Blaze หน้าภาพรวมการทดสอบจะมีตัวอย่างการค้นหาที่แสดงชื่อการทดสอบ ตัวแปร ชื่อเหตุการณ์ และจำนวนเหตุการณ์สำหรับการทดสอบที่คุณกำลังดูอยู่

วิธีรับและเรียกใช้การค้นหาที่สร้างขึ้นโดยอัตโนมัติ

  1. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การทดสอบ A/B
  2. เลือกการทดสอบ A/B Testing ที่ต้องการค้นหาเพื่อเปิดภาพรวมการทดสอบ
  3. จากเมนูตัวเลือก ให้เลือกค้นหาข้อมูลการทดสอบในส่วนการผสานรวม BigQuery การดำเนินการนี้จะเปิดโปรเจ็กต์ของคุณใน BigQuery ภายในคอนโซล Google Cloud และให้การค้นหาพื้นฐานที่คุณใช้ค้นหาข้อมูลการทดสอบได้

ตัวอย่างต่อไปนี้แสดงการค้นหาที่สร้างขึ้นสำหรับการทดสอบที่มีตัวแปร 3 รายการ (รวมถึงเส้นฐาน) ชื่อ "Winter welcome experiment" โดยจะแสดงชื่อการทดสอบที่ใช้งานอยู่ ชื่อตัวแปร เหตุการณ์ที่ไม่ซ้ำ และจำนวนเหตุการณ์สำหรับแต่ละเหตุการณ์ โปรดทราบว่า Query Builder ไม่ได้ระบุชื่อโปรเจ็กต์ในชื่อตาราง เนื่องจากจะเปิดภายในโปรเจ็กต์โดยตรง

  /*
    This query is auto-generated by Firebase A/B Testing for your
    experiment "Winter welcome experiment".
    It demonstrates how you can get event counts for all Analytics
    events logged by each variant of this experiment's population.
  */
  SELECT
    'Winter welcome experiment' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'Welcome message (1)'
      WHEN '2' THEN 'Welcome message (2)'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_000000000.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN '20260202' AND '20260502')
    AND userProperty.key = 'firebase_exp_25'
  GROUP BY
    experimentVariant, eventName

หากต้องการดูตัวอย่างการค้นหาเพิ่มเติม ให้ไปที่สำรวจตัวอย่างการค้นหา

สำรวจตัวอย่างคำค้นหา

ส่วนต่อไปนี้แสดงตัวอย่างการค้นหาที่คุณใช้เพื่อดึงข้อมูลการทดสอบ A/B Testing จากตารางเหตุการณ์ Google Analytics ได้

ดึงค่าการซื้อและค่าเบี่ยงเบนมาตรฐานของการทดสอบจากการทดสอบทั้งหมด

คุณสามารถใช้ข้อมูลผลการทดสอบเพื่อยืนยันผลลัพธ์ของ Firebase A/B Testing ได้อย่างอิสระ คำสั่ง SQL BigQuery ต่อไปนี้จะดึงข้อมูลตัวแปรการทดสอบ จำนวนผู้ใช้ที่ไม่ซ้ำในแต่ละตัวแปร และรวมรายได้ทั้งหมดจากเหตุการณ์ in_app_purchase และ ecommerce_purchase รวมถึงค่าเบี่ยงเบนมาตรฐานสำหรับการทดสอบทั้งหมดภายในช่วงเวลาที่ระบุเป็นวันที่เริ่มต้นและวันที่สิ้นสุดของ _TABLE_SUFFIX คุณสามารถใช้ข้อมูลที่ได้จากการค้นหานี้กับเครื่องมือสร้างนัยสำคัญทางสถิติสำหรับการทดสอบ t-test แบบทางเดียวเพื่อยืนยันว่าผลลัพธ์ที่ Firebase ให้มาตรงกับการวิเคราะห์ของคุณเอง

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ A/B Testing คำนวณการอนุมานได้ที่หัวข้อตีความผลการทดสอบ

  /*
    This query returns all experiment variants, number of unique users,
    the average USD spent per user, and the standard deviation for all
    experiments within the date range specified for _TABLE_SUFFIX.
  */
  SELECT
    experimentNumber,
    experimentVariant,
    COUNT(*) AS unique_users,
    AVG(usd_value) AS usd_value_per_user,
    STDDEV(usd_value) AS std_dev
  FROM
    (
      SELECT
        userProperty.key AS experimentNumber,
        userProperty.value.string_value AS experimentVariant,
        user_pseudo_id,
        SUM(
          CASE
            WHEN event_name IN ('in_app_purchase', 'ecommerce_purchase')
              THEN event_value_in_usd
            ELSE 0
            END) AS usd_value
      FROM `PROJECT_NAME.analytics_ANALYTICS_ID.events_*`
      CROSS JOIN UNNEST(user_properties) AS userProperty
      WHERE
        userProperty.key LIKE 'firebase_exp_%'
        AND event_name IN ('in_app_purchase', 'ecommerce_purchase')
        AND (_TABLE_SUFFIX BETWEEN 'YYYYMMDD' AND 'YYYMMDD')
      GROUP BY 1, 2, 3
    )
  GROUP BY 1, 2
  ORDER BY 1, 2;

เลือกค่าของการทดสอบที่เฉพาะเจาะจง

ตัวอย่างการค้นหาต่อไปนี้แสดงวิธีรับข้อมูลสำหรับการทดสอบที่เฉพาะเจาะจงใน BigQuery การค้นหาตัวอย่างนี้จะแสดงชื่อการทดสอบ ชื่อตัวแปร (รวมถึง Baseline) ชื่อเหตุการณ์ และจํานวนเหตุการณ์

  SELECT
    'EXPERIMENT_NAME' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'VARIANT_1_NAME'
      WHEN '2' THEN 'VARIANT_2_NAME'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_ANALYTICS_PROPERTY.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN 'YYYMMDD' AND 'YYYMMDD')
    AND userProperty.key = 'firebase_exp_EXPERIMENT_NUMBER'
  GROUP BY
    experimentVariant, eventName