Galactic Games يتيح لك تحدي شخص آخر واللعب معه مباشرة. تغطي اختبارات الوحدة الكثير منه: 8 فحوصات للترحيل، و21 للحسابات وغرفة الانتظار والنتائج، و178 لمنطق لعبة Knife Duels. لا يثبت أي منها أن شخصين حقيقيين يمكنهما لعب مباراة. لأجل ذلك أردت اختباراً يقوم بالضبط بما يفعله لاعبان حقيقيان.
الإعداد
- شغّل الـ Worker محلياً وافتح نافذتي Edge بلا واجهة، يتم التحكم بهما عبر بروتوكول Chrome DevTools.
- أنشئ حسابين جديدين وضع رمز تسجيل الدخول الخاص بكل منهما في متصفحه.
- ضع اللاعبين في قائمة انتظار مباراة وانتظر حتى يلتقيا.
- تحقق من أن الشاشتين متفقتان على حالة اللعبة، ثم أغلق متصفح المضيف وتحقق من أن المباراة تستمر.
ثلاثة أمور وقفت في الطريق
حظر المتصفح الاتصال. ترفض الإصدارات الأحدث اتصال WebSocket الخاص بالصفحة إلى
127.0.0.1 ما لم يتم تعطيل فحوصات الشبكة الخاصة عبر علامة تشغيل. فشلت المحاولات الأولى قبل
إرسال رسالة واحدة.
حقن تسجيل الدخول لم يثبت. إضافة الرمز عبر سكريبت يعمل على كل مستند جديد لم يصمد أمام التنقل. أما ضبطه من صفحة على نفس المصدر فقد نجح.
يتنافس المتصفحان على الموارد. بدون وحدة معالجة رسوميات، تقوم كلتا النافذتين بعرض اللعبة ثلاثية الأبعاد برمجياً على نفس الجهاز. عملت اللعبة بحوالي خُمس السرعة الحقيقية، لذا بدا اللاعب الآخر متأخراً بثوانٍ. هذا التأخير موجود فقط في الاختبار. كان لا بد أن يكون كل انتظار سخياً، وفي عمليات التشغيل بلا واجهة تستخدم حلقة الإطارات مؤقتاً ثابتاً مدته 16 مللي ثانية.
الدرس المستفاد
الاختبار الشامل من البداية إلى النهاية يقيس جهاز الاختبار بقدر ما يقيس اللعبة. قبل ملاحقة خطأ في التأخير، تحقق مما إذا كان التأخير في المنتج أم في تنافس المتصفحين على معالج واحد.