أفضل الممارسات لتعيين تباين اختبار A/B استنادًا إلى عنوان IP
-
22-09-2019 - |
سؤال
بدأت في كتابة بعض التعليمات البرمجية لاختبار 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. لكنني أشعر أنني يجب أن أشير إلى بعض المشاكل مع هذا النهج:
- إذا كان تطبيقك وراء أي وكلاء ، فسيكون IP هو نفسه لجميع مستخدمي هذا الوكيل.
- سيقوم بعض المستخدمين بتغيير IPS بشكل متكرر إلى حد ما ، بشكل متكرر أكثر مما تعتقد. ربما (كما يقول جويل سبولسكي) "الإنترنت مكسور لهؤلاء المستخدمين" ، لكنني أقول إنه ضرر لعملائك إذا جعلت الإنترنت أكثر كسرًا لهم ، خاصة بطريقة خفية ، بالنظر إلى أنهم ليسوا على الأرجح في وضع يسمح له بفعل أي شيء حيال ذلك.
- للمستخدمين الذين لديهم جلسة جديدة ، يمكنك فقط تعيين ملف تعريف الارتباط بناءً على الطلب الأول والحفاظ على المهام في الذاكرة ؛ ما لم تنتقل الطلبات الأولية للمستخدم إلى خوادم متعددة في نفس الوقت ، يجب أن يحل هذه المشكلة (هذا ما أقوم به في التطبيق الذي أحافظ عليه).
- بالنسبة للمستخدمين الذين يعانون من تعطيل ملفات تعريف الارتباط ، أقول "الإنترنت مكسور" ، ولن أواجه الكثير من المتاعب لدعم هذه القضية ؛ سيتم تعيينهم إلى دلو اختبار افتراضي ويذهبون إلى هناك. إذا كنت تخطط لدعم العديد من هؤلاء المستخدمين بطريقة غير منقطعة ، فأنت تقوم بإنشاء عمل لنفسك ، ولكن ربما يكون هذا جيدًا. في هذه الحالة ، قد ترغب في التفكير في استخدام عنوان URL وإعادة توجيه 302 لإرسال هؤلاء المستخدمين إلى أسفل سيناريو أو آخر. ولكن في رأيي هذا لا يستحق الوقت.
- إذا تمكن المستخدمون من تسجيل الدخول إلى الموقع ، فتأكد من تسجيل تعيينات السيناريو في قاعدة البيانات الخاصة بك والتوفيق بين تباينات ملفات تعريف الارتباط/ديسيبل وفقًا لذلك.
لا تنتمي إلى StackOverflow