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