أفضل الممارسات لتعيين تباين اختبار A/B استنادًا إلى عنوان IP

StackOverflow https://stackoverflow.com/questions/2523192

سؤال

بدأت في كتابة بعض التعليمات البرمجية لاختبار A/B في تطبيق Web Grails. أريد التأكد من أن الطلبات من عنوان IP نفسه ترى دائمًا نفس الاختلاف. بدلاً من تخزين خريطة IP-> ، هل من المقبول ببساطة تحويل عنوان IP إلى عدد صحيح عن طريق إزالة النقاط ، ثم استخدم ذلك كبذور لمولد الأرقام العشوائية؟ ما يلي يحدث في مرشح Grails:

def ip = request.remoteAddr
def random = new Random(ip.replaceAll(/\./, '').toInteger())
def value = random.nextBoolean()
session.assignment = value
// value should always be the same for a given IP address

أعلم أن تحديد المستخدمين حسب عنوان IP غير موثوق ، وسأستخدم متغيرات/ملفات تعريف الارتباط للجلسة أيضًا ، ولكن يبدو أن هذا مفيد للحالة التي لدينا جلسة جديدة ، ولم يتم تعيين ملفات تعريف الارتباط (أو لدى المستخدم ملفات تعريف الارتباط معاق).

هل كانت مفيدة؟

المحلول

يمكنك ببساطة أخذ الرقم 32 بت وإجراء رقم IP mod_of_test_scenarios. أو استخدم وظيفة التجزئة القياسية المقدمة في Ruby. لكنني أشعر أنني يجب أن أشير إلى بعض المشاكل مع هذا النهج:

  1. إذا كان تطبيقك وراء أي وكلاء ، فسيكون IP هو نفسه لجميع مستخدمي هذا الوكيل.
  2. سيقوم بعض المستخدمين بتغيير IPS بشكل متكرر إلى حد ما ، بشكل متكرر أكثر مما تعتقد. ربما (كما يقول جويل سبولسكي) "الإنترنت مكسور لهؤلاء المستخدمين" ، لكنني أقول إنه ضرر لعملائك إذا جعلت الإنترنت أكثر كسرًا لهم ، خاصة بطريقة خفية ، بالنظر إلى أنهم ليسوا على الأرجح في وضع يسمح له بفعل أي شيء حيال ذلك.
  3. للمستخدمين الذين لديهم جلسة جديدة ، يمكنك فقط تعيين ملف تعريف الارتباط بناءً على الطلب الأول والحفاظ على المهام في الذاكرة ؛ ما لم تنتقل الطلبات الأولية للمستخدم إلى خوادم متعددة في نفس الوقت ، يجب أن يحل هذه المشكلة (هذا ما أقوم به في التطبيق الذي أحافظ عليه).
  4. بالنسبة للمستخدمين الذين يعانون من تعطيل ملفات تعريف الارتباط ، أقول "الإنترنت مكسور" ، ولن أواجه الكثير من المتاعب لدعم هذه القضية ؛ سيتم تعيينهم إلى دلو اختبار افتراضي ويذهبون إلى هناك. إذا كنت تخطط لدعم العديد من هؤلاء المستخدمين بطريقة غير منقطعة ، فأنت تقوم بإنشاء عمل لنفسك ، ولكن ربما يكون هذا جيدًا. في هذه الحالة ، قد ترغب في التفكير في استخدام عنوان URL وإعادة توجيه 302 لإرسال هؤلاء المستخدمين إلى أسفل سيناريو أو آخر. ولكن في رأيي هذا لا يستحق الوقت.
  5. إذا تمكن المستخدمون من تسجيل الدخول إلى الموقع ، فتأكد من تسجيل تعيينات السيناريو في قاعدة البيانات الخاصة بك والتوفيق بين تباينات ملفات تعريف الارتباط/ديسيبل وفقًا لذلك.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top