إنشاء تجارب "الإعداد عن بُعد في Firebase" باستخدام ميزة "اختبار A/B"

عند استخدام ميزة "الإعداد عن بُعد في Firebase" لتفعيل إعدادات تطبيق من قاعدة مستخدمين نشطين، عليك التأكّد من صحة الإعدادات. يمكنك استخدام تجارب اختبار A/B لتحديد ما يلي على أفضل نحو:

  • أفضل طريقة لاستخدام ميزة لتحسين تجربة المستخدم: في كثير من الأحيان، لا يعلم مطورو التطبيقات أن المستخدمين لا يحبون ميزة جديدة أو تجربة مستخدم محدثة حتى ينخفض تقييم التطبيق في متجر التطبيقات. يمكن أن يساعد اختبار أ/ب في قياس ما إذا كان المستخدمون يحبون المتغيرات الجديدة للميزات أو ما إذا كانوا يفضلون التطبيق كما هو موجود. بالإضافة إلى ذلك، يضمن إبقاء معظم المستخدمين في مجموعة مرجعية أنّ معظم قاعدة المستخدمين يمكنهم مواصلة استخدام تطبيقك بدون مواجهة أي تغييرات في سلوكه أو مظهره إلى أن تنتهي التجربة.
  • أفضل طريقة لتحسين تجربة المستخدم وفقًا لهدف النشاط التجاري في بعض الأحيان تقوم بتنفيذ تغييرات المنتج لتعظيم مقياس مثل الإيرادات أو الاحتفاظ. عند استخدام اختبار A/B، يمكنك تحديد هدف نشاطك التجاري، ويجري Firebase التحليل الإحصائي لتحديد ما إذا كانت إحدى الصيغ تتفوق على المستوى المرجعي للهدف المحدّد.

لإجراء اختبار A/B لنُسخ الميزات التي تتضمّن مرجعًا، اتّبِع الخطوات التالية:

  1. أنشئ تجربتك.
  2. تحقّق من صحة تجربتك على جهاز اختبار.
  3. أدِر تجربتك.

إنشاء تجربة

تتيح لك تجربة "الإعداد عن بُعد" تقييم صيغ متعدّدة في مَعلمة "الإعداد عن بُعد" واحدة أو أكثر.

  1. سجِّل الدخول إلى وحدة تحكُّم Firebase وتحقّق من تفعيل "إحصاءات Google" في مشروعك حتى تتمكن التجربة من الوصول إلى بيانات "إحصاءات Google".

    إذا لم تفعّل "إحصاءات Google" عند إنشاء مشروعك، يمكنك تفعيله من علامة تبويب عمليات الدمج التي يمكنك الوصول إليها باستخدام > إعدادات المشروع في وحدة تحكُّم Firebase.

  2. انقر على اختبار A/B في قسم التفاعل ضمن قائمة التنقّل في وحدة تحكُّم Firebase.

  3. انقر على إنشاء تجربة، ثم اختَر الإعداد عن بُعد عندما يُطلب منك ذلك للخدمة التي تريد تجربتها.

  4. أدخِل اسمًا ووصفًا اختياريًا لتجربتك، ثم انقر على التالي.

  5. املأ حقول الاستهداف، ثم اختَر أولاً التطبيق الذي يستخدم تجربتك. يمكنك أيضًا استهداف مجموعة فرعية من المستخدمين للمشاركة في تجربتك من خلال النقر على و، ثم تحديد الخيارات من القائمة التالية:

    • الإصدار: إصدار واحد أو أكثر من تطبيقك
    • رقم الإصدار: رمز إصدار التطبيق
    • اللغات: يتم استخدام لغة واحدة أو أكثر من اللغات المحلية لاختيار المستخدمين الذين قد يتم تضمينهم في التجربة.
    • البلد/المنطقة: بلد أو منطقة واحدة أو أكثر لاختيار المستخدمين الذين يجب تضمينهم في التجربة
    • جمهور المستخدم: شرائح جمهور "إحصاءات Google" التي يتم استخدامها لاستهداف المستخدمين الذين قد يتم تضمينهم في التجربة
    • خاصّية المستخدِم: خاصيّة مستخدِم واحدة أو أكثر في "إحصاءات Google" لاختيار المستخدِمين الذين قد يتمّ تضمينهم في التجربة
    • أول فتح: يمكنك استهداف المستخدمين استنادًا إلى المرة الأولى التي فتحوا فيها التطبيق.

      تتوفَّر ميزة استهداف المستخدمين حسب وقت الفتح لأوّل مرّة بعد اختيار تطبيق متوافق مع Android أو iOS. ويتم دعمه من خلال الإصدارَين التاليَين من حزمة تطوير البرامج (SDK) للإعداد عن بُعد: الإصدار 9.0.0 أو الإصدارات الأحدث من حزمة تطوير البرامج (SDK) لنظام التشغيل Android الأساسي والإصدار 21.1.1 من حزمة تطوير البرامج (SDK) لنظام التشغيل Android أو الإصدارات الأحدث (الإصدار 30.3.0 والإصدارات الأحدث من حزمة تطوير البرامج (SDK) لنظام التشغيل Android).

      ويجب أيضًا تفعيل "إحصاءات Google" على البرنامج خلال أول حدث مفتوح.

  6. حدِّد النسبة المئوية للمستخدمين المستهدَفين: أدخِل النسبة المئوية لقاعدة مستخدمي التطبيق التي تتطابق مع المعايير المحدّدة ضمن استهداف المستخدمين التي تريد تقسيمها بالتساوي بين المرجع وصيغة واحدة أو أكثر في تجربتك. يمكن أن تكون أي نسبة مئوية بين 0.01٪ و100٪. يتم تخصيص المستخدمين بشكل عشوائي لكل تجربة، بما في ذلك التجارب المكرّرة.

  7. اختياريًا، يمكنك ضبط حدث تفعيل لضمان ألّا يتم احتساب سوى البيانات الواردة من المستخدمين الذين بدأوا بعض أحداث "إحصاءات Google" لأول مرة في تجربتك. تجدر الإشارة إلى أنّ جميع المستخدمين الذين يطابقون مَعلمات الاستهداف سيتلقّون القيم التجريبية لميزة "الإعداد عن بُعد"، ولكن لن تشمل نتائج تجربتك سوى الأشخاص الذين بدأوا حدث تفعيل.

    لضمان إجراء تجربة صالحة، تأكَّد من أنّ الحدث الذي تختاره يقع بعد أن يفعّل تطبيقك قيم الإعدادات التي تم جلبها. إضافةً إلى ذلك، لا يمكن استخدام الأحداث التالية لأنّها تحدث دائمًا قبل تفعيل القيم التي تم استرجاعها:

    • app_install
    • app_remove
    • app_update
    • dynamic_link_first_open
  8. بالنسبة إلى أهداف التجربة، اختَر المقياس الأساسي الذي تريد تتبُّعه، ثمّ أضِف أيّ مقاييس أخرى تريد تتبُّعها من القائمة. وهي تتضمن الأهداف المضمّنة (عمليات الشراء والأرباح والاحتفاظ بالمستخدمين والمستخدمين الذين لم يواجههم أي تعطُّل وما إلى ذلك)، وأحداث الإحالات الناجحة في "إحصاءات Google" وغيرها من أحداث "إحصاءات Google" عند الانتهاء، انقر على التالي.

  9. في قسم الصيغ، اختَر الأساس وصيغة واحدة على الأقل للتجربة. استخدِم قائمة اختيار أو إنشاء جديد لإضافة مَعلمة واحدة أو أكثر من أجل تجربتها. يمكنك إنشاء معلَمة لم يتم استخدامها من قبل في وحدة تحكم Firebase، ولكن يجب أن تكون موجودة في تطبيقك حتى يكون لها أي تأثير. يمكنك تكرار هذه الخطوة لإضافة معلَمات متعددة إلى تجربتك.

  10. (اختياري) لإضافة أكثر من صيغة واحدة إلى تجربتك، انقر على إضافة صيغة أخرى.

  11. غيِّر مَعلمة واحدة أو أكثر لخيارات منتج معيّنة. وتكون أي مَعلمات لم يتم تغييرها هي نفسها للمستخدمين الذين لم يتم تضمينهم في التجربة.

  12. وسِّع أوزان الصيغ للاطّلاع على ترجيح الصيغة أو تغييره في التجربة. بشكل تلقائي، يتم منح جميع الصيغ قيمًا تقديرية متساوية. تجدر الإشارة إلى أنّ القيم التقديرية غير المتساوية قد تؤدي إلى زيادة وقت جمع البيانات ولا يمكن تغيير القيم التقديرية بعد بدء التجربة.

  13. انقر على مراجعة لحفظ تجربتك.

يمكنك إجراء ما يصل إلى 300 تجربة لكل مشروع، ويمكن أن يشمل ذلك ما يصل إلى 24 تجربة قيد التنفيذ، والباقي كمسودة أو مكتملة.

التحقّق من صحة تجربتك على جهاز اختبار

بالنسبة إلى كل عملية تثبيت لمنصة Firebase، يمكنك استرداد الرمز المميز لمصادقة التثبيت المرتبط به. يمكنك استخدام هذا الرمز المميّز لاختبار صيغ محدّدة من التجارب على جهاز اختباري تم تثبيت تطبيقك عليه. للتحقّق من صحة تجربتك على جهاز اختباري، اتّبِع الخطوات التالية:

  1. احصل على الرمز المميز لمصادقة التثبيت على النحو التالي:

    Swift

    do {
      let result = try await Installations.installations()
        .authTokenForcingRefresh(true)
      print("Installation auth token: \(result.authToken)")
    } catch {
      print("Error fetching token: \(error)")
    }
    

    Objective-C

    [[FIRInstallations installations] authTokenForcingRefresh:true
                                                   completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) {
      if (error != nil) {
        NSLog(@"Error fetching Installation token %@", error);
        return;
      }
      NSLog(@"Installation auth token: %@", [result authToken]);
    }];
    

    Java

    FirebaseInstallations.getInstance().getToken(/* forceRefresh */true)
            .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
        @Override
        public void onComplete(@NonNull Task<InstallationTokenResult> task) {
            if (task.isSuccessful() && task.getResult() != null) {
                Log.d("Installations", "Installation auth token: " + task.getResult().getToken());
            } else {
                Log.e("Installations", "Unable to get Installation auth token");
            }
        }
    });

    Kotlin+KTX

    val forceRefresh = true
    FirebaseInstallations.getInstance().getToken(forceRefresh)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d("Installations", "Installation auth token: " + task.result?.token)
            } else {
                Log.e("Installations", "Unable to get Installation auth token")
            }
        }

    C++‎

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

    Unity

    Firebase.Installations.FirebaseInstallations.DefaultInstance.GetTokenAsync(forceRefresh: true).ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("Installations token {0}", task.Result));
        }
      });
    
  2. في شريط التنقّل في وحدة تحكُّم Firebase، انقر على اختبار A/B.
  3. انقر على مسودة (و/أو قيد التشغيل لتجارب "الإعداد عن بُعد")، ومرِّر مؤشر الماوس فوق تجربتك، وانقر على قائمة السياقات ()، ثمّ انقر على إدارة الأجهزة الاختبارية.
  4. أدخِل الرمز المميّز لمصادقة التثبيت لجهاز اختبار واختَر صيغة التجربة لإرسالها إلى هذا الجهاز الاختباري.
  5. شغِّل التطبيق وتأكَّد من أنّه يتم تلقّي الإصدار المحدَّد على جهاز الاختبار.

لمعرفة المزيد من المعلومات عن عمليات تثبيت Firebase، يمكنك الاطّلاع على إدارة عمليات تثبيت Firebase.

إدارة تجربتك

سواء أنشأت تجربة باستخدام ميزة "الإعداد عن بُعد" أو أداة إنشاء الإشعارات أو ميزة "المراسلة داخل التطبيق من Firebase"، يمكنك التحقّق من صحة تجربتك وبدئها ومراقبة تجربتك أثناء تنفيذها وزيادة عدد المستخدمين المدرَجين في تجربتك قيد التنفيذ.

عند انتهاء التجربة، يمكنك ملاحظة الإعدادات التي استخدمتها الصيغة الفائزة، ثم طرح هذه الإعدادات لجميع المستخدمين. أو يمكنك إجراء تجربة أخرى.

بدء تجربة

  1. انقر على اختبار A/B في قسم التفاعل ضمن قائمة التنقّل في وحدة تحكُّم Firebase.
  2. انقر على مسودة، ثم انقر على عنوان تجربتك.
  3. للتحقّق من أنّ تطبيقك يحتوي على مستخدمين يمكن تضمينهم في تجربتك، وسِّع تفاصيل المسودة وتحقَّق من أنّ رقمًا أكبر من 0% في قسم الاستهداف والتوزيع (مثلاً، 1% من المستخدمين الذين يتطابقون مع المعايير).
  4. لتغيير تجربتك، انقر على تعديل.
  5. لبدء تجربتك، انقر على بدء التجربة. يمكنك إجراء ما يصل إلى 24 تجربة لكل مشروع في المرة الواحدة.

مراقبة تجربة

بعد تنفيذ التجربة لفترة من الوقت، يمكنك التحقق من مستوى تقدمها ومعرفة الشكل الذي ستظهر به النتائج للمستخدمين الذين شاركوا في تجربتك حتى الآن.

  1. انقر على اختبار A/B في قسم التفاعل ضمن قائمة التنقّل في وحدة تحكُّم Firebase.
  2. انقر على قيد التشغيل، ثمّ انقر على عنوان تجربتك أو ابحث عنه. في هذه الصفحة، يمكنك الاطّلاع على العديد من الإحصاءات المرصودة والمستنِدة إلى نموذج عن تجربتك قيد التنفيذ، بما في ذلك ما يلي:

    • الفرق بالنسبة المئوية مقارنةً بالقيمة المرجعية: يشير ذلك إلى مقياس لتحسين مقياس معيّن لخيار منتج معيّن مقارنةً بالمرجع. ويتم حسابه من خلال مقارنة نطاق القيمة للمتغير بنطاق القيمة للمرجع.
    • احتمالية التفوق على الأساس: الاحتمالية المُقدّرة لتجاوز أحد المتغيّرات الأساسية للمقياس المُختار.
    • observed_metric لكل مستخدم: استنادًا إلى نتائج التجربة، هذا هو النطاق المتوقّع الذي ستدخل فيه قيمة المقياس بمرور الوقت.
    • الإجمالي observed_metric: القيمة التراكمية المرصودة للصيغة المرجعية أو الصيغة. تُستخدَم القيمة لقياس مدى جودة أداء كل صيغة من التجربة، وتُستخدَم لاحتساب التحسين ونطاق القيمة واحتمالية تجاوز القيم المرجعية واحتمالية أن تكون الصيغة الأفضل. تبعًا للمقياس الذي يتم قياسه، قد يحمل هذا العمود تصنيف "المدة لكل مستخدم" أو "الأرباح لكل مستخدم" أو "معدل الاحتفاظ" أو "معدل الإحالات الناجحة".
  3. بعد تشغيل تجربتك لفترة (7 أيام على الأقل لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" والمراسلة داخل التطبيق أو 14 يومًا لميزة "الإعداد عن بُعد")، تشير البيانات على هذه الصفحة إلى الصيغة "الرائدة" إن وُجدت. تصاحب بعض القياسات مخطط شريطي يعرض البيانات بتنسيق مرئي.

طرح التجربة لجميع المستخدمين

بعد إجراء التجربة لمدة كافية توفّر "رائد" أو صيغة فائزة في ما يتعلّق بمقياس هدفك، يمكنك إطلاق التجربة على جميع المستخدمين. يتيح لك ذلك تحديد صيغة لنشرها لجميع المستخدمين من الآن فصاعدًا. وحتى إذا لم تحدّد تجربتك الصيغة الفائزة بوضوح، يظلّ بإمكانك اختيار إصدار صيغة لجميع المستخدمين.

  1. انقر على اختبار A/B في قسم التفاعل ضمن قائمة التنقّل في وحدة تحكُّم Firebase.
  2. انقر على مكتملة أو قيد التشغيل، وانقر على التجربة التي تريد طرحها لجميع المستخدمين، ثم انقر على قائمة السياقات () طرح الصيغة.
  3. اطرح تجربتك لجميع المستخدمين من خلال تنفيذ أحد الإجراءات التالية:

    • بالنسبة إلى التجارب التي تستخدم منشئ الإشعارات، استخدِم مربّع الحوار طرح الرسالة لإرسال الرسالة إلى باقي المستخدمين المستهدَفين الذين لم يكونوا جزءًا من التجربة.
    • بالنسبة إلى تجربة الإعداد عن بُعد، اختَر صيغة لتحديد قيم مَعلمات "الإعداد عن بُعد" المطلوب تعديلها. تتم إضافة معايير الاستهداف المحدّدة عند إنشاء التجربة كشرط جديد في النموذج، وذلك لضمان عدم تأثير عملية الطرح إلا في المستخدمين المستهدَفين من خلال التجربة. بعد النقر على مراجعة في صفحة "الإعداد عن بُعد" لمراجعة التغييرات، انقر على نشر التغييرات لإكمال عملية الطرح.
    • بالنسبة إلى تجربة المراسلة داخل التطبيق، استخدِم مربّع الحوار لتحديد الصيغة التي يجب طرحها كحملة "مراسلة داخل التطبيق" مستقلة. بعد اختيار جهة النشر، ستتم إعادة توجيهك إلى شاشة إنشاء FIAM لإجراء أي تغييرات (إذا لزم الأمر) قبل النشر.

توسيع التجربة

إذا تبيّن لك أنّ إحدى التجارب لا تجذب عددًا كافيًا من المستخدمين لإجراء اختبار A/B للإعلان عن قائد، يمكنك زيادة توزيع تجربتك للوصول إلى نسبة أكبر من قاعدة مستخدمي التطبيق.

  1. انقر على اختبار A/B في قسم التفاعل ضمن قائمة التنقّل في وحدة تحكُّم Firebase.
  2. اختَر التجربة قيد التنفيذ التي تريد تعديلها.
  3. في نظرة عامة على التجربة، انقر على قائمة السياقات ()، ثم انقر على تعديل التجربة قيد التنفيذ.
  4. ويعرض مربّع حوار الاستهداف خيارًا لزيادة النسبة المئوية للمستخدمين المشاركين في التجربة قيد التنفيذ. اختَر رقمًا أكبر من النسبة المئوية الحالية وانقر على نشر. سيتمّ توجيه التجربة إلى النسبة المئوية للمستخدِمين التي حدّدتها.

تكرار تجربة أو إيقافها

  1. انقر على اختبار A/B في قسم التفاعل ضمن قائمة التنقّل في وحدة تحكُّم Firebase.
  2. انقر على مكتملة أو قيد التشغيل، ومرِّر مؤشر الماوس فوق تجربتك، وانقر على قائمة السياقات ()، ثمّ انقر على تكرار التجربة أو إيقاف التجربة.

استهداف المستخدمين

يمكنك استهداف المستخدِمين لتضمينهم في تجربتك باستخدام معايير استهداف المستخدِمين التالية.

معيار الاستهداف العوامل القيم ملاحظة
الإصدار يحتوي على،
لا يحتوي على،
يتطابق تمامًا،
يحتوي على تعبير عادي
أدخِل قيمة لإصدار واحد أو أكثر من إصدارات التطبيق التي تريد تضمينها في التجربة.

عند استخدام أي من عوامل التشغيل تحتوي على أو لا يحتوي أو تتطابق تمامًا، يمكنك تقديم قائمة قيم مفصولة بفواصل.

عند استخدام عامل التشغيل يحتوي على تعبير عادي، يمكنك إنشاء تعبيرات عادية بتنسيق RE2. يمكن للتعبير العادي أن يطابق سلسلة الإصدار المستهدفة بالكامل أو جزء منها. يمكنك أيضًا استخدام علامتَي الارتساء ^ و$ لمطابقة بداية السلسلة المستهدفة أو نهايتها أو بكاملها.

جمهور المستخدمين أيّ منها،
تتضمّن واحدة على الأقل،
لا تتضمّن كلّها،
لا تتضمّن واحدة على الأقل من
اختَر شريحة جمهور واحدة أو أكثر في "إحصاءات Google" لاستهداف المستخدمين الذين قد يتم تضمينهم في تجربتك. قد تتطلّب بعض التجارب التي تستهدف شرائح جمهور "إحصاءات Google" بضعة أيام لتجميع البيانات لأنّها تخضع لوقت استجابة معالجة البيانات في "إحصاءات Google". من المرجح أن تواجه هذا التأخير مع المستخدمين الجدد، الذين يتم تسجيلهم عادةً في شرائح الجمهور المؤهَّلة بعد 24 إلى 48 ساعة من الإنشاء، أو لشرائح الجمهور التي تم إنشاؤها مؤخرًا.

بالنسبة إلى ميزة "الإعداد عن بُعد"، يعني ذلك أنّه لن يتم تضمين المستخدم في التجربة إذا لم تكن "إحصاءات Google" قد أضفته إلى شريحة الجمهور من الناحية الفنية عند تنفيذ "fetchAndActivate() ".

خاصيّة المستخدم بالنسبة إلى النص:
يحتوي على،
لا يحتوي على،
يتطابق تمامًا،
يحتوي على تعبير عادي

بالنسبة إلى الأرقام:
<, ≤, =, ≥, >
يتمّ استخدام خاصيّة المستخدِم في "إحصاءات Google" لاختيار المستخدِمين الذين قد يتمّ تضمينهم في تجربة، مع مجموعة من الخيارات لتحديد قيم خصائص المستخدِمين.

في البرنامج، يمكنك ضبط قيم السلسلة فقط لخصائص المستخدمين. بالنسبة إلى الشروط التي تستخدم عوامل التشغيل الرقمية، تحوّل خدمة "الإعداد عن بُعد" قيمة خاصيّة المستخدم المقابلة إلى عدد صحيح/عدد عائم.
عند استخدام عامل التشغيل يحتوي على تعبير عادي، يمكنك إنشاء تعبيرات عادية بتنسيق RE2. يمكن للتعبير العادي أن يطابق سلسلة الإصدار المستهدفة بالكامل أو جزء منها. يمكنك أيضًا استخدام علامتَي الارتساء ^ و$ لمطابقة بداية السلسلة المستهدفة أو نهايتها أو بكاملها.
البلد/المنطقة لا ينطبق تم استخدام بلد أو منطقة واحدة أو أكثر لاختيار المستخدمين الذين قد يتم تضمينهم في التجربة.  
اللغات لا ينطبق تم استخدام لغة واحدة أو أكثر من اللغات المحلية لاختيار المستخدمين الذين قد يتم تضمينهم في التجربة.  
أول فتح قبل
بعد

استهداف المستخدمين استنادًا إلى المرة الأولى التي يفتحون فيها تطبيقك:

  • اختَر المستخدمون الجدد لاستهداف المستخدمين الذين يفتحون تطبيقك لأول مرة بعد تاريخ ووقت محدّدين في المستقبل.
  • اختَر النطاق الزمني لاستهداف المستخدمين الذين يفتحون تطبيقك لأول مرة ضمن النطاق قبل أو بعد التاريخ والوقت اللذين تحدِّدهما. يمكنك دمج الشرطين قبل وبعد لاستهداف المستخدمين ضمن نطاق زمني محدّد.

تتوفّر ميزة استهداف المستخدمين عن طريق التشغيل لأول مرة بعد اختيار تطبيق متوافق مع أجهزة Android أو iOS. وهي متوافقة حاليًا مع إصدارَي حزمة تطوير البرامج (SDK) التاليَين للإعداد عن بُعد: حزمة تطوير البرامج (SDK) لنظامَي التشغيل Apple، الإصدار 9.0.0 أو الإصدارات الأحدث، والإصدار 21.1.1 من حزمة تطوير البرامج (SDK) لنظام التشغيل Android أو الإصدارات الأحدث (الإصدار 30.3.0 من حزمة تطوير البرامج (SDK) والإصدارات الأحدث من Firebase).

ويجب أيضًا تفعيل الإحصاءات على البرنامج خلال أول حدث مفتوح.

مقاييس اختبار A/B

عند إنشاء تجربتك، يمكنك اختيار مقياس أساسي أو هدف يُستخدم لتحديد الصيغة الفائزة. ويجب أيضًا تتبُّع مقاييس أخرى لمساعدتك على فهم أداء كل صيغة من التجربة بشكل أفضل وتتبُّع المؤشرات المهمة التي قد تختلف حسب كل صيغة، مثل الحفاظ على المستخدمين وثبات التطبيق وأرباح عمليات الشراء داخل التطبيق. يمكنك تتبع ما يصل إلى خمسة مقاييس غير أهداف في تجربتك.

على سبيل المثال، لنفترض أنّك تستخدم ميزة "الإعداد عن بُعد" لإطلاق مسارَين مختلفَين للألعاب في تطبيقك وتريد تحسين عمليات الشراء داخل التطبيق وأرباح الإعلانات، ولكنّك تريد أيضًا تتبُّع الثبات والحفاظ على المستخدمين لكل صيغة. في هذه الحالة، يمكنك اختيار إجمالي الأرباح المقدَّرة كمقياس لهدفك، لأنّه يتضمّن أرباح عمليات الشراء داخل التطبيق وأرباح الإعلانات، وبالنسبة إلى المقاييس الأخرى التي يتم تتبّعها، يمكنك إضافة ما يلي:

  • لتتبُّع معدل الاحتفاظ بالمستخدمين يوميًا وأسبوعيًا، يمكنك إضافة الاحتفاظ بالمستخدمين (من 2 إلى 3 أيام) والاحتفاظ بالمستخدمين (من 4 إلى 7 أيام).
  • لمقارنة الثبات بين مسارَي اللعب، أضِف مستخدمون لم يواجهوا أعطالاً.
  • للاطّلاع على طرق عرض أكثر تفصيلاً لكل نوع من أنواع الأرباح، أضِف الأرباح من عمليات الشراء وأرباح الإعلانات المقدّرة.

تقدم الجداول التالية تفاصيل عن كيفية حساب مقاييس الأهداف والمقاييس الأخرى.

مقاييس الأهداف

المقياس الوصف
المستخدمون الذين لم يواجههم أي تعطُّل النسبة المئوية للمستخدمين الذين لم تواجههم أي أخطاء في تطبيقك ورصدتها حزمة تطوير البرامج (SDK) لمنصّة Firebase Crashlytics أثناء التجربة.
الأرباح المقدّرة الناتجة عن الإعلانات أرباح الإعلانات المقدّرة.
إجمالي الأرباح المقدَّرة القيمة المجمّعة لعملية الشراء وأرباح الإعلانات المقدّرة.
الأرباح من عمليات الشراء القيمة المُجمَّعة لكل فعاليات purchase وin_app_purchase.
الاحتفاظ بالبيانات (يوم واحد) يشير ذلك إلى عدد المستخدمين الذين يعودون إلى تطبيقك يوميًا.
الاحتفاظ بالاشتراكات (من يومَين إلى 3 أيام) يشير ذلك إلى عدد المستخدمين الذين يعودون إلى تطبيقك في غضون يومَين إلى 3 أيام.
الاحتفاظ بالاشتراكات (من 4 إلى 7 أيام) يشير ذلك إلى عدد المستخدمين الذين يعودون إلى تطبيقك في غضون 4 إلى 7 أيام.
الاحتفاظ بالاشتراكات (من 8 إلى 14 يومًا) يشير ذلك إلى عدد المستخدمين الذين يعودون إلى تطبيقك في غضون 8 إلى 14 يومًا.
الاحتفاظ بالاشتراكات (أكثر من 15 يومًا) عدد المستخدمين الذين يعودون إلى تطبيقك بعد 15 يومًا أو أكثر من استخدامهم له في المرة الأخيرة.
first_open يشير ذلك المصطلح إلى حدث في "إحصاءات Google" يتم تشغيله عندما يفتح المستخدِم تطبيقًا لأول مرة بعد تثبيته أو إعادة تثبيته. تُستخدَم كجزء من مسار الإحالة الناجحة.

المقاييس الأخرى

المقياس الوصف
notification_dismiss حدث في "إحصاءات Google" يتم تشغيله عند تجاهل إشعار مُرسَل من منشئ "الإشعارات" (في نظام التشغيل Android فقط).
notification_receive يشير ذلك المصطلح إلى حدث في "إحصاءات Google" يتم تشغيله عند تلقّي إشعار مُرسَل من منشئ "الإشعارات" أثناء تشغيل التطبيق في الخلفية (على نظام التشغيل Android فقط).
os_update حدث في "إحصاءات Google" يتتبّع وقت تحديث نظام تشغيل الجهاز إلى إصدار جديد.ولمزيد من المعلومات، يُرجى الاطّلاع على الأحداث المجمّعة تلقائيًا.
screen_view يشير ذلك المصطلح إلى حدث في "إحصاءات Google" يتتبّع الشاشات التي تتم مشاهدتها داخل تطبيقك. لمزيد من المعلومات، يُرجى الاطّلاع على تتبُّع مشاهدات الصفحة في التطبيق.
session_start حدث على "إحصاءات Google" يحتسب جلسات المستخدمين في تطبيقك. لمزيد من المعلومات، اطّلِع على الأحداث المجمّعة تلقائيًا.

تصدير بيانات BigQuery

بالإضافة إلى عرض بيانات تجربة اختبار A/B في وحدة تحكم Firebase، يمكنك فحص بيانات التجربة وتحليلها في BigQuery. لا يتضمّن اختبار A/B جدول BigQuery منفصلاً، ولكن يتم تخزين بيانات الاشتراكات التجريبية والخيارات في كل أحداث "إحصاءات Google" ضمن جداول أحداث "إحصاءات Google".

تكون خصائص المستخدمين التي تحتوي على معلومات عن التجربة بالشكل userProperty.key like "firebase_exp_%" أو userProperty.key = "firebase_exp_01" حيث يكون 01 هو رقم تعريف التجربة، وuserProperty.value.string_value تحتوي على الفهرس (المبني إلى الصفر) لصيغة التجربة.

يمكنك استخدام خصائص المستخدِمين هذه في التجربة لاستخراج بيانات التجربة. يتيح لك ذلك تقسيم نتائج التجربة بعدة طرق مختلفة والتحقق بشكل مستقل من نتائج اختبار A/B.

للبدء، أكمل ما يلي كما هو موضح في هذا الدليل:

  1. تفعيل ميزة تصدير بيانات BigQuery لخدمة "إحصاءات Google" في وحدة تحكُّم Firebase
  2. الوصول إلى بيانات "اختبار A/B" باستخدام BigQuery
  3. الاطّلاع على نماذج طلبات البحث

تفعيل ميزة BigQuery Export لخدمة "إحصاءات Google" في وحدة تحكُّم Firebase

إذا كنت مشتركًا في خطة Spark، يمكنك استخدام وضع الحماية في BigQuery للوصول إلى BigQuery بدون أي تكلفة، مع مراعاة حدود وضع الحماية. راجِع التسعير ووضع الحماية في BigQuery لمزيد من المعلومات.

أولاً، تأكَّد من تصدير بيانات "إحصاءات Google" إلى BigQuery:

  1. افتح علامة التبويب عمليات الدمج التي يمكنك الوصول إليها باستخدام > إعدادات المشروع في وحدة تحكُّم Firebase.
  2. إذا كنت تستخدم BigQuery مع خدمات Firebase الأخرى من قبل، انقر على إدارة. أو انقر على ربط.
  3. راجِع لمحة عن ربط Firebase بأداة BigQuery، ثمّ انقر على التالي.
  4. في قسم إعداد الدمج، فعِّل مفتاح تبديل إحصاءات Google.
  5. اختَر منطقة واختَر إعدادات التصدير.

  6. انقر على الربط بأداة BigQuery.

استنادًا إلى الطريقة التي اخترتها لتصدير البيانات، قد يستغرق توفُّر الجداول ما يصل إلى يوم. لمزيد من المعلومات حول تصدير بيانات المشروع إلى BigQuery، راجع تصدير بيانات المشروع إلى BigQuery.

الوصول إلى بيانات اختبار A/B في BigQuery

قبل إجراء طلب بحث عن بيانات لتجربة محدّدة، يجب الحصول على بعض أو كل ما يلي لاستخدامه في طلب البحث:

  • رقم تعريف التجربة: يمكنك الحصول على هذا الرقم من عنوان URL لصفحة نظرة عامة على التجربة. على سبيل المثال، إذا كان عنوان URL يظهر على النحو التالي https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25، يكون رقم تعريف التجربة هو 25.
  • رقم تعريف الموقع على "إحصاءات Google": هو رقم تعريف موقعك على "إحصاءات Google" المكوَّن من 9 أرقام. يمكنك العثور عليه في "إحصاءات Google"، ويظهر أيضًا في BigQuery عند توسيع اسم مشروعك لعرض اسم جدول أحداثك في "إحصاءات Google" (project_name.analytics_000000000.events).
  • تاريخ التجربة: لإنشاء طلب بحث أسرع وأكثر فعالية، من الممارسات الجيدة أن تقتصر طلبات البحث على أقسام جدول الأحداث اليومية في "إحصاءات Google" التي تحتوي على بيانات التجارب، وهي الجداول التي يتم تحديدها باللاحقة YYYYMMDD. لذلك، إذا تم تنفيذ تجربتك من 2 شباط (فبراير) 2024 إلى 2 مايو 2024، عليك تحديد _TABLE_SUFFIX between '20240202' AND '20240502'. للحصول على مثال، اطّلِع على المقالة اختيار قيم تجربة معيّنة.
  • أسماء الأحداث: عادةً ما تتوافق هذه الأسماء مع مقاييس الأهداف التي ضبطتها في التجربة. على سبيل المثال، أحداث in_app_purchase أو ad_impression أو user_retention.

بعد جمع المعلومات التي تحتاجها لإنشاء الاستعلام:

  1. افتح BigQuery في وحدة تحكّم Google Cloud.
  2. اختَر مشروعك، ثم اختَر إنشاء طلب بحث SQL.
  3. أضِف طلب البحث. للاطّلاع على أمثلة لطلبات البحث المطلوب تنفيذها، راجِع القسم الاطّلاع على أمثلة على طلبات البحث.
  4. انقر على تشغيل.

طلب بيانات التجربة باستخدام طلب البحث الذي تم إنشاؤه تلقائيًا في وحدة تحكُّم Firebase

إذا كنت تستخدم خطة Blaze، تقدِّم صفحة نظرة عامة على التجربة نموذج طلب بحث يعرض اسم التجربة والصيغ وأسماء الأحداث وعدد أحداث التجربة التي تشاهدها.

للحصول على طلب البحث الذي تم إنشاؤه تلقائيًا وتشغيله:

  1. من "وحدة تحكُّم Firebase"، افتح اختبار A/B واختَر تجربة "اختبار A/B" التي تريد إجراء طلب بحث عنها لفتح نظرة عامة على التجربة.
  2. من قائمة "الخيارات"، أسفل دمج BigQuery، اختر بيانات تجربة طلب البحث. يؤدي ذلك إلى فتح مشروعك في BigQuery ضمن وحدة التحكّم في Google Cloud Console، كما يوفّر استعلامًا أساسيًا يمكنك استخدامه للاستعلام عن بيانات تجربتك.

يوضّح المثال التالي طلب بحث تم إنشاؤه لتجربة تشمل ثلاثة صيغ (بما في ذلك الشكل الأساسي) باسم "تجربة ترحيبية في الشتاء". وتعرض اسم التجربة النشطة واسم الصيغة والحدث الفريد وعدد الأحداث لكل حدث. لاحظ أن أداة إنشاء الاستعلامات لا تحدد اسم مشروعك في اسم الجدول، حيث تفتح مباشرة داخل مشروعك.

  /*
    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 '20240202' AND '20240502')
    AND userProperty.key = 'firebase_exp_25'
  GROUP BY
    experimentVariant, eventName

للاطّلاع على أمثلة إضافية على طلبات البحث، انتقِل إلى المقالة استكشاف أمثلة على طلبات البحث.

الاطّلاع على أمثلة طلبات البحث

تقدِّم الأقسام التالية أمثلة على طلبات البحث التي يمكنك استخدامها لاستخراج بيانات تجربة اختبار A/B من جداول أحداث "إحصاءات Google".

استخراج قيم الانحراف المعياري للشراء والتجربة من جميع التجارب

يمكنك استخدام بيانات نتائج التجربة للتحقّق من نتائج "اختبار A/B من Firebase" بشكل مستقل. تعمل عبارة BigQuery SQL التالية على استخراج صيغ التجربة وعدد المستخدمين الفريدين في كل صيغة وتجمع إجمالي الأرباح من حدثَي in_app_purchase وecommerce_purchase والانحرافات المعيارية لجميع التجارب ضمن النطاق الزمني المحدَّدين في تاريخَي البدء والانتهاء في _TABLE_SUFFIX. يمكنك استخدام البيانات التي حصلت عليها من هذا الاستعلام مع منشئ دلالة إحصائية لاختبارات T أحادية الطرف للتحقق من أن النتائج التي يوفرها Firebase تطابق تحليلك الخاص.

لمزيد من المعلومات عن كيفية احتساب "اختبار أ/ب" للاستنتاج، يُرجى الاطّلاع على المقالة تفسير نتائج الاختبار.

  /*
    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. يعرض نموذج طلب البحث هذا اسم التجربة وأسماء المتغيّرات (بما في ذلك خط الأساس) وأسماء الأحداث وأعداد الأحداث.

  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