القائمة

توسيع بيانات الاختبار عبر البلدان: الثوابت وقائمة الاستثناءات

توسيع بيانات الاختبار عبر البلدان ينجح حين تصح مجموعة صغيرة من الثوابت في كل مكان ويسجل كل انحراف عنها كاستثناء مسمى واضح.

تاريخ النشر

  • بيانات اختبار
  • الإنشاء
  • بيانات البلدان

يجرى توسيع بيانات الاختبار عبر البلدان عادة بإضافة بلدان أكثر إلى المنشئ نفسه. وهذا يعمل مدة ثم يتوقف، لأن الفروق بين البلدان ليست تنويعات على قالب واحد؛ بعضها يناقض ذلك القالب.

والمخرج هو تحديد ما يصح في كل بلد ومعاملة كل ما تبقى كاستثناء صريح. يتناول هذا الدليل هذا الفصل، ولماذا يجب أن تكون المجموعة المنشأة قابلة لإعادة الإنتاج، وكيف تؤخذ عينات من البلدان بحيث تحتوي المجموعة على الحالات الصعبة لا على الحالات السهلة وحدها.

ما الذي ينتمي إلى مجموعة الثوابت؟

الثابت خاصية تصح في كل بلد في المجموعة دون تحفظ. ويكتسب هذه الصفة بأن يكون صحيحا في نموذج البيانات لا في بلد بعينه.

والأعضاء المعتادون بنيويون: كل بلد له معرف مستقر، وكل معرف يقابل بلدا واحدا بالضبط، وكل بلد يحمل اسما معروضا ورمزا، ولا حقل إلزامي لبلد لا يملك نظاما لذلك الحقل. هذه عبارات قصيرة قابلة للفحص وصحيحة في كل مكان.

والاختبار الذي يكشف إن كان شيء ما ثابتا حقا هو محاولة إيجاد مثال مضاد. ومعظم الخصائص تنجو من هذه المحاولة، والقليل الذي لا ينجو هو ما كان سيفرض على المجموعة كلها فينتج سيلا من الإخفاقات يتبين أنها خطأ النموذج لا خطأ البيانات.

وأبق مجموعة الثوابت صغيرة. فقائمة الثوابت الطويلة هي في العادة قائمة استثناءات متنكرة، ويصبح من المستحيل التمييز بين انحدار حقيقي وبلد عادي يتصرف بشكل طبيعي.

كيف تبدو قائمة الاستثناءات؟

الاستثناء انحراف مسمى وموثق عن ثابت، محدد بنطاق بلدان معينة ويحمل سببا.

العنصر لماذا نحتاجه
البلد أو البلدان المعنية حتى تكون القائمة قابلة للاستعلام لا للقراءة فقط
الثابت الذي ينحرف عنه حتى يكون الانحراف غير ملتبس
السبب حتى يستطيع قارئ لاحق أن يحكم إن كان ما زال ينطبق
ما ينبغي أن يفعله المنشئ بدلا منه حتى يكون الانحراف قابلا للتنفيذ لا مجرد نصيحة

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

وحيث ينطبق استثناء على مجموعة من البلدان، اكتبه مرة واحدة للخاصية المشتركة وأشر إلى البلدان منه. فالتجميع بحسب الخاصية لا بحسب قائمة الرموز يبقي العبارة ذات معنى حين يضاف بلد إلى المجموعة أو يحذف منها.

لماذا يجب أن يكون الإنشاء قابلا لإعادة الإنتاج؟

لأن مجموعة لا يمكن إعادة إنتاجها لا يمكن تتبع أخطائها. فحين يظهر إخفاق، يكون السؤال الأول هل تغيرت البيانات أم تغيرت الشيفرة، والمنشئ الذي ينتج مجموعة مختلفة في كل تشغيل يزيل القدرة على الإجابة.

وقابلية إعادة الإنتاج تعني أن مدخلا معينا ينتج مخرجا مطابقا، بما في ذلك ترتيب السجلات والقيم داخلها. ويستلزم ذلك نقطة بداية ثابتة للاختيارات العشوائية وقاعدة تحفظ تسلسل الاختيار مستقرا حين تنمو مجموعة البلدان، بحيث لا تؤدي إضافة بلد واحد إلى إعادة خلط البيانات في كل البلدان الأخرى.

والمطلب الثاني يسهل تفويته. فالمنشئ الذي يسحب القيم من تسلسل طويل واحد مربوط بالعدد الكلي سينتج مجموعة مختلفة تماما عند إضافة بلد، فيدمر القدرة على مقارنة تشغيلين. أما تثبيت البذرة لكل بلد، أو لكل بلد وحقل، فيحفظ كل مدخل مستقرا مع إبقاء المجموعة قابلة للتوسع.

كيف ينبغي أخذ عينات من البلدان؟

عمدا، وليس بتوزيع منتظم. فالمجموعة التي تأخذ عينة من كل بلد باحتمال متساو تنفق معظم حجمها على وسط التوزيع ولا تحتوي إلا القليل من الحالات التي وجدت الحزمة لالتقاطها.

والعينة الطبقية هي الشكل العملي: قسم المجموعة إلى فئات تشترك في الخصائص المهمة، ثم اسحب من كل فئة بدل السحب من الكل. وينبغي أن تتبع الفئات المحاور التي يتنوع عليها المنتج فعلا—وجود الحقل من عدمه، وكون البيانات ضعيفة أو كاملة، وكون البلد إقليما تابعا أو مدخلا موصوفا بالكامل، واختلاف اللغة عن الأصل المعتاد.

ثم املأ الخلايا الصعبة عمدا بدل الأمل في الوصول إليها. فالمجموعة التي تحتوي بلدا بلا نظام رمز بريدي، وإقليما صغيرا واحدا، وبلدا تغير اسمه، أنفع من مجموعة أكبر منها عدة مرات ولا تحتوي أيا منها.

المحور ما يختبره التنويع عليه
وجود الحقل مسارات المعالجة لحقل غير منطبق
كثافة البيانات المدخلات غير المكتملة والحالات المجهولة
نوع الكيان الأقاليم التابعة والرموز الخاصة
لغة الاسم المعروض الترتيب وتوحيد الصيغة

وأخذ العينات على كل المحاور في الوقت نفسه ينتج مصفوفة غير قابلة للاستخدام، فاختر المحاور التي تهم الحزمة المعنية واذكر أيها استبعد. فالإغفال غير المذكور يقرأ كأنه تغطية.

كيف تبقى القائمة متزامنة مع الشيفرة؟

باختبارين اثنين لا باختبار واحد. الأول أن تفحص الثوابت في كل سجل منشأ، وهذا يكشف المعالجة الخاصة العارضة. والثاني أن تفحص أن كل استثناء موثق ينتج فعلا، وهذا يكشف قائمة استثناءات انحرفت عن المنشئ.

والطبقة الثانية هي التي يتجاوزها الناس، وهي التي تكشف الإخفاق الهادئ حين يتوقف بلد عن الإنشاء بالطريقة التي تدعيها الوثيقة. اختبر الاستثناء بالاسم وبالشكل المتوقع، بحيث يلزم أي تغيير في المنشئ تغيير مقابل في القائمة.

للمطورين: أثبت الثوابت وأثبت الاستثناءات

غذ قواعد الإنشاء بالحالات الموصوفة في قائمة تغطية البيانات بدل معاملتها كتقرير، بحيث ينتج البلد الذي لا ينطبق فيه الحقل سجلا يقول ذلك بدل سجل يبدو غير مكتمل. وأما الطبقة البرمجية التي تحته، فإن دليل الأقاليم الصغيرة والرموز الخاصة يوفر الخلفية المناسبة، ويظهر دليل البلدان والمناطق نوع المجموعة التي يفترض أن يشبهها هذا الإنشاء.

وقائمة الثوابت وقائمة الاستثناءات ومحاور أخذ العينات في هذا الدليل بنية توضيحية لا مواصفة. وهي لا تصف حزمة اختبار حقيقية ولا مجموعة بيانات حقيقية ولا مجموعة بلدان تخص أي مؤسسة، وينبغي تكييفها لا تبنيها كما هي.

كيف تعرف أن الثابت خاطئ لا أن البلد شاذ؟

بالنظر إلى موضع الإخفاق. فحين ينتج الثابت إخفاقات في بلد واحد فذلك استثناء محتمل، وحين ينتج إخفاقات متفرقة في عدد من البلدان بلا خاصية مشتركة بينها فالمرجح أن الثابت نفسه مصوغ بشكل ضيق.

والفرق مهم لأن رد الفعل مختلف تماما. فالاستثناء يوثق ويسجل، أما الثابت المصوغ تصويغا خاطئا فيعاد صوغه، وقيام الفريق بتسجيل استثناءات متتالية بدل مراجعة الثابت هو أول علامة على أن المجموعة تسير نحو قائمة استثناءات طويلة لا تفيد أحدا.

وهذا هو الموضع الذي ينبغي فيه أن يتحول العد إلى إشارة: حين تتجاوز نسبة البلدان المستثناة حدا معقولا، توقف وأعد النظر في الثابت قبل أن تضيف مدخلا آخر.

الخطوات التالية

اكتب ثوابتك في صفحة واستثناءاتك في أخرى، ثم تحقق أيها يحترمه المنشئ الحالي فعلا. فالمدخل الذي تقادم ليس المشكلة نفسها التي يمثلها مدخل لم يكتمل يوما، ويغطي دليل حداثة بيانات البلدان كيفية معاملة الحالتين معاملة مختلفة.

تابع القراءة

أدلة تنسيقات بيانات العنوان والهوية في 86 بلدًا