اختبار التحقق من البريد الإلكتروني هو الجزء الذي يتدرب عليه معظم الفرق مرة واحدة، على المسار السعيد، ثم يعلن انتهاءه. الأعطال المثيرة تقع في مكان آخر: رابط يفتح مرتين، ورابط يفتح في متصفح آخر، ورمز يصل بعد أن يكون المستخدم قد تحقق بالفعل، ورسالة لا تصل إطلاقا. تستعرض هذه المقالة الحالات التي يمر بها مسار التحقق فعلا والحالات الجديرة بالتغطية في كل منها.
الحالات التي ينتقل بينها مسار التحقق
قبل كتابة أي اختبار، اكتب الحالات. المسار الذي يوصف بأنه محقق أو غير محقق يخفي أربع حالات مختلفة على الأقل، ولكل واحدة سلوكها الصحيح.
| الحالة | ما يعتقده النظام | ما يستطيع المستخدم فعله |
|---|---|---|
| غير محقق، ولم ترسل رسالة | الحساب موجود لكنه غير مثبت | طلب رسالة أخرى |
| غير محقق، والرسالة في الطريق | توجد علامة لها عمر محدد | الانتظار أو الطلب مرة أخرى |
| محقق | أثبت العنوان بعلامة صحيحة | استخدام الحساب بشكل طبيعي |
| تغيير معلق | عنوان جديد مقترح والقديم ما زال صالحا | التأكيد أو الإلغاء |
معظم العيوب تسكن في الانتقالات لا في الحالات. اسأل ما يحدث حين يطلب المستخدم رسالة ثانية بينما الأولى في الطريق، أو حين يؤكد العنوان الجديد بينما هو ما زال مسجلا بالقديم.
ما الذي ينكسر حين يفتح رابط التأكيد مرتين؟
لا ينبغي أن ينكسر شيء، وهذا بالضبط سبب استحقاقه للاختبار. رابط التأكيد يسلم عبر قناة لا يتحكم فيها المستخدم بالكامل: عملاء البريد يعرضون معاينة للروابط، وأدوات الفحص الأمني تتبعها، والمستخدمون ينقرونها مرة ثانية نفادا للصبر.
السلوك المرغوب أن يستهلك أول استخدام صحيح المسار، وأن ينتج كل استخدام لاحق نتيجة واضحة غير مؤذية — صفحة تقول إن التحقق تم سابقا، أو دعوة لتسجيل الدخول — لا خطأ لا يستطيع المستخدم تفسيره. أما ما لا تريده فهو حدث تحقق ثان يعيد تعيين كلمة مرور، أو يصدر جلسة جديدة، أو يفشل برسالة توحي بأن الحساب معطوب.
وهناك حالة مجاورة تفاجئ الفرق: حسابان وعنوان واحد. إن كان منتجك يسمح بالعنوان نفسه على حسابين، فلا يجوز أن تؤدي رسالة تأكيد واحدة إلى التحقق من كليهما. اختبر ذلك عن قصد.
اختبار مساري تغيير العنوان وإعادة التعيين
تغيير العنوان وإعادة تعيين كلمة المرور يعيدان استخدام الآلية نفسها بنتيجة مختلفة، وهنا يبدأ التنفيذ المشترك في التسرب.
حين يغير المستخدم عنوانه، يكون العنوانان موجودين لفترة. يجب أن يظل القديم قادرا على استرجاع الحساب، وألا يصبح الجديد نافذا قبل إثباته. وحين يعيد المستخدم تعيين كلمة مروره، لا يجوز أن يصلح التأكيد نفسه كتحقق، ولا العكس. اختبار هذين المسارين يعني التأكد من أن علامة صدرت لغرض ما يرفضها الغرض الآخر، وهو تحقق صغير يمنع فئة كبيرة من العيوب.
بيانات تجريبية مفيدة لهذا العمل هي صندوق لا تستخدمه حالة أخرى، حتى تكون الرسالة التي تفتحها بالتأكيد هي التي أرسلها المسار للتو. أداة البريد المؤقت تنشئ هذا النوع من العناوين بالضبط، ومقال اختبار OTP في اختبارات الطرف إلى الطرف يعالج استخراج الرمز بعد وصوله.
ما الذي ينبغي أن يحدث حين لا تصل الرسالة؟
هذا هو المسار الذي تتخطاه الفرق، وهو أكثر ما يلقاه المستخدمون، لأن البريد يفشل لأسباب لا يتحكم فيها أحد: خطأ مطبعي في العنوان، ومزود يهمل الرسالة صامتا، ومرسل مقيد مؤقتا.
يجب أن يعامل المسار عدم الوصول كنتيجة طبيعية. أن يكون المستخدم قادرا على طلب رسالة أخرى دون انتظار مدة غير معقولة، وأن تقول الواجهة بصراحة إن الرسالة قد تستغرق لحظة، وألا يترك الحساب في حالة لا يستطيع فيها الطلب مرة أخرى لأن طلبا ما زال معلقا. لا شيء هنا رقم محدد بالثواني أو بالمحاولات؛ المهم أن يكون للتصميم جواب أصلا.
كيف تقرأ رسالة الرمز من صندوق للتخلص؟
حين يرسل المسار رمزا قصيرا بدل رابط، يحتاج الاختبار إلى الرمز من الرسالة. وقراءته من صندوق أنشئ للتشغيل تبقي التحقق ضيقا: الرسالة التي تجدها لا يمكن أن تخص إلا الحالة التي تشغلها، وهذا يزيل أشهر سبب لاختبار ينجح للسبب الخطأ.
ويبقي ذلك صناديق البريد الحقيقية خارج الاختبار تماما. لا يجوز أن يكون عنوان زميل هو مستلم مجموعة الانحدار عندك، لأن الزميل سيتلقى الحركة، ولأن تحققاتك ستعتمد بعدها على صندوق لا تتحكم فيه.
هل يكفي اختبار المسار السعيد؟
لا يكفي، وهو أكثر ما يفحص في الممارسة. تشغيل المسار السعيد يثبت أن الرابط الذي وصل يعمل، وهذا فحص جيد لكنه يغطي فرعا واحدا من مسار تحقق حقيقي. وأكثر ما يشحن من عيوب هذا المسار يسكن في الفروع التي لا يسلكها أحد بالصدفة.
والفروع التي تستحق التشغيل قليلة ومحددة. علامة انتهت صلاحيتها بعد أن ترك البريد في الصندوق ليلة كاملة. علامة استخدمت مرة ثم أعيد فتح الرابط نفسه من تاريخ المتصفح. عنوان تغير بين لحظة الإرسال ولحظة النقر، وهي الحالة التي تعري الأنظمة التي تخزن العنوان داخل العلامة. كذلك الحالة التي يطلب فيها التحقق من حساب أغلق في الأثناء.
وكل واحدة من هذه تنتج سلوكا يجب أن يكون مقصودا. الاختبار الذي يتخطاها لا يقول إن المسار سليم؛ يقول فقط إنه لم يشغل الفروع.
للمطورين: العلامات والتكرار والمسار غير السعيد
صمم العلامة، لا النموذج فقط. ثلاث خصائص تستحق تغطية صريحة.
الاستخدام الواحد أولا. يجب أن تستهلك العلامة مرة واحدة، وأن يكون المحاولة الثانية نتيجة حميدة لا خطأ خادم. وحيث يغير الانتقال شيئا ذا أثر، اجعل العملية قابلة للتكرار بحيث ينتج التكرار الحالة النهائية نفسها لا أثرا ثانيا.
انتهاء الصلاحية ثانيا. يجب أن تكون العلامات المنتهية مميزة عن غير الصالحة في سجلاتك ومن وجهة نظر المستخدم، لأن العلاج مختلف: العلامة المنتهية تعني البدء من جديد، والعلامة غير الصالحة قد تعني نسخ الرابط الخطأ. وما يجب ألا تفعله العلامة المنتهية هو ترك الحساب في حالة نصف متغيرة.
التزامن ثالثا. نقرتان تصلان معا، أو رابط يفتح في تبويبين، لا يجوز أن يتحققا من المسار نفسه مرتين. هذه خاصية طبقة البيانات لا خاصية الزر، فاختبرها بإصدار الطلبين لا بالنقر ببطء مرتين.
وأخيرا، أبق الحد واضحا في بياناتك التجريبية وفي ملاحظاتك: هذه العناوين موجودة لتلقي بريد اختبار للحظة، وهي ليست هويات حقيقية، ولا يجوز أن يوحي أي نموذج بغير ذلك.
الخطوات التالية
خذ مسار التحقق الذي أطلقته آخر مرة وامش على جدول الحالات أعلاه، وعلم الانتقالات التي اختبرتها فعلا. ثم شغل ما لم تشغله، مستخدما عنوانا أنشئ حديثا لكل حالة من صفحة البريد المؤقت. وإن كنت تحضر إطلاقا أوسع، فإن قائمة تحقق البريد المعاملاتي تغطي البريد المحيط الذي سيبدأ حساب محقق في تلقيه.