تمنحك أداة إنشاء عنوان أمريكي عناوين كاملة عند الطلب، مبنية من رقم المنزل واسم الشارع ووحدة سكنية اختيارية والمدينة ورمز الولاية المكون من حرفين والرمز البريدي المكون من خمسة أرقام والذي قد يحمل امتدادا من أربعة أرقام. والفرق بين أداة نافعة ومجرد باني سلاسل عشوائية هو أن كل حقل فيها يتفق مع بقية الحقول: المدينة تنتمي إلى الولاية، والرمز البريدي ينتمي إليهما معا. وعندما يختل هذا الاتفاق يصبح السجل مجموعة قيم مقبولة منفردة لا تشكل عنوانا، ويصعب على أي مراجعة بشرية أن تكتشف الخلل لأن كل قيمة تبدو معقولة في ذاتها.
يستعرض هذا الدليل ما يتكون منه العنوان الأمريكي فعلا، وكيف تترابط الولايات ومقاطعة كولومبيا والأقاليم بعضها ببعض، ولماذا يهم الاتساق بين الرمز البريدي والمدينة أكثر مما تتوقع معظم الفرق، وأين تقف الحدود الصادقة للسجلات المنشأة. وبحلول النهاية ستعرف أي عيوب في العناوين ينبغي أن تلتقطها نماذجك، وأي عيوب تزيلها الأداة بصمت نيابة عنك.
ما الذي يتكون منه العنوان الأمريكي فعلا؟
العنوان الأمريكي يكتب من الأصغر إلى الأكبر، وهذا عكس الترتيب المستخدم في اليابان وعدد من الأنظمة البريدية الأخرى. يأتي سطر المستلم أولا، ثم رقم المنزل واسم الشارع، ثم رمز الوحدة أو الشقة، ثم المدينة، ثم رمز الولاية، ثم الرمز البريدي. وعندما يكتب العنوان في سطر واحد يوضع اسم المدينة مع الولاية ثم فاصلة ثم الرمز البريدي في النهاية. والأداة التي تحترم هذا التسلسل تنتج بطاقة يقرؤها الناقل بشكل صحيح، في حين أن الأداة التي تعيد ترتيب العناصر تنتج سطرا يبدو غريبا حتى لو كانت كل قيمة فيه صحيحة.
حقل الولاية دائما رمز من حرفين لا اسم مكتوب بالكامل، وهيئة البريد تحتفظ بهذه القائمة كمجموعة ثابتة لا تتغير من سنة إلى أخرى. والرمز البريدي خمسة أرقام، ومنذ أواخر الثمانينات يمكن أن يتبعه امتداد من أربعة أرقام بعد شرطة لتحديد قطاع تسليم أصغر. والنماذج التي تقبل الصيغة الموسعة يجب أن تقبل الطولين معا، لأن مجموعة بيانات تحمل النسخة الخمسية فقط لن تجرب المسار الأطول أبدا، وستبقى الفرع الخاص بالامتداد غير مغطى في الاختبارات.
رمز الوحدة هو الحقل الأكثر احتمالا لأن يكون اختياريا في نظام وإلزاميا في نظام آخر. ويمكن كتابة رقم الشقة أو الجناح أو الطابق أو المبنى ككلمة يتبعها رقم، أو كرمز شباك يتبعه رقم، أو كرقم مجرد في سطر ثان. وكل هذه الأشكال تصل في البيانات الحقيقية، لذلك فإن محللا يتعامل مع صيغة الكلمة فقط سيرفض مدخلات صحيحة تماما، وسيظهر العيب في الإنتاج لا في الاختبار.
وهناك تفصيل ثالث يستحق الانتباه، وهو الفواصل داخل سطر الشارع نفسه. فبعض العناوين تحمل اسم شارع يحتوي على نقطة بعد حرف مفرد، وبعضها يحمل اسم طريق مرقم بصيغة مختصرة، وبعضها يحمل اسم شارع فيه علامة اختصار تفصل بين كلمتين. والنماذج التي تقسم السطر عند أول فاصلة لتفصل الرقم عن الاسم تفشل مع هذه الحالات، لأن الفاصلة قد تكون جزءا من الاسم لا فاصلا بين الحقول.
ويستحق عدد المنازل ملاحظة خاصة. فرقم المنزل في الولايات المتحدة يمكن أن يكون رقما مفردا صغيرا، أو رقما من أربعة أو خمسة أرقام على الطرق الطويلة، أو رقما يحمل لاحقة حرفية عندما يقسم المخطط العقاري قطعة أرض. والقاعدة العملية أن حقل رقم المنزل يجب أن يقبل الأرقام والحروف معا، وأن طوله لا يقل عن الطول الذي تستخدمه أطول الطرق في المنطقة المخدومة.
كيف تختلف الولايات ومقاطعة كولومبيا والأقاليم؟
خمسون ولاية ومقاطعة كولومبيا والأقاليم المأهولة، ولكل منها رمز من حرفين، وهي غير قابلة للتبديل في قائمة منسدلة. وتحمل مقاطعة كولومبيا الرمز DC وتتصرف كولاية لأغراض العنوان، لكنها ليست ولاية، والأنظمة التي تنمذج المستوى الأول من التسلسل باسم ولاية ستسميها خطأ في التقارير والمرشحات، وسيظهر الخلل في تقرير إحصائي لا في رسالة خطأ.
الأقاليم هي المشكلة الأهدأ. فبورتوريكو تحمل الرمز PR، وغوام تحمل GU، وجزر العذراء الأمريكية تحمل VI، وساموا الأمريكية تحمل AS، وجزر ماريانا الشمالية تحمل MP. وبعض أنظمة الشحن والضرائب تعاملها كوجهات داخلية وبعضها يعاملها كوجهات دولية، وهذا يعني أن نموذجا يثبت الرمز US كالبلد الوحيد المقبول إلى جانب رمز إقليم سينتج تركيبة يرفضها بقية النظام في الطبقة التالية.
وهناك أيضا مجموعة من الدول المرتبطة بحرية والمناطق النائية الصغيرة التي تظهر في مجموعات البيانات المرجعية برموزها الخاصة لكنها نادرا ما تظهر على بطاقة شحن. والأداة التي تدعي تغطية أمريكية يجب أن تكون صريحة في ما إذا كانت تشمل الولايات الخمسين فقط، أو الولايات مع مقاطعة كولومبيا، أو المجموعة الكاملة مع الأقاليم. والفرق مهم عند اختبار قائمة اختيار الاختصاص القضائي، لا عند اختبار حقل عنوان الشارع، لأن القائمة هي التي تحدد ما يستطيع المستخدم اختياره.
من الناحية العملية، ينبغي أن يرتبط كل رمز من هذه الرموز باسم مقروء داخل مجموعة البيانات، لا أن يوجد كسلسلة معزولة. وعندما يحمل السجل الرمز والاسم معا يستطيع النموذج أن يعرض الاسم ويخزن الرمز، ويستطيع الاختبار أن يؤكد أن الاثنين يصفان الشيء نفسه. أما السجلات التي تحمل الرمز وحده فتضعف قابلية المراجعة، لأن أي مراجع بشري يحتاج إلى قائمة خارجية ليحكم على صحة القيمة، ويمكن الاطلاع على تفاصيل بيانات هذا البلد في صفحة الولايات المتحدة.
ويستحق مستوى التقسيم الوسيط انتباها مماثلا. فبعض الأنظمة الأمريكية تستخدم المقاطعة كوحدة ضرائب، وبعضها يستخدم المنطقة التعليمية، وبعضها يستخدم منطقة الخدمة. ونموذج عنوان لا يعرض هذه الطبقة يمرر سجلات ناقصة إلى أنظمة تحتاجها، ويجعل من الصعب لاحقا إضافة الحقل دون إعادة تنظيم المخزن.
لماذا يجب أن يتحرك الرمز البريدي مع المدينة والولاية؟
العيب الأكثر شيوعا في بيانات العناوين الأمريكية المكتوبة يدويا هو عدم التوافق بين الرمز البريدي والمكان الذي يفترض أن ينتمي إليه. يختار أحدهم اسم مدينة معقولا، ويكتب رقما من خمسة أرقام معقولا، ولا تكون بينهما أي علاقة. ولا تبدو أي من القيمتين خاطئة بمفردها، وهذا بالضبط سبب بقاء العيب حتى مراجعة الكود ووصوله إلى ملف ثابت يستخدمه الجميع.
الاختيار العشوائي المستقل يزيد الأمر سوءا لا حسنا. فإذا سحبت مدينة من قائمة تضم ألف اسم، وسحبت رمزا بريديا من نطاق يضم أربعين ألف احتمال، فإن احتمال أن يكون الزوجان حقيقيين يكاد يكون معدوما. وهذا الفشل نفسه يظهر في كل بلد آخر، سواء كان قضاء تركيا مقرونا بالمحافظة الخطأ أو رمزا بريديا برازيليا ملتصقا ببلدية ليست له.
الإصلاح هيكلي لا تحريري. حدد الولاية أولا، ثم اختر مدينة ورمزا بريديا ينتميان إليها معا، ثم اشتق رمز المنطقة الهاتفية من المنطقة نفسها. والأداة التي تعمل بهذا الترتيب لا تستطيع أن تنتج زوجا يقع في منطقتين مختلفتين، ولهذا تبني أداة العنوان على هذا الموقع كل سجل من منطقة واحدة إلى الأسفل. وتنطبق العلاقة الأوسع بين الحقول بالطريقة نفسها على أعمدة العنوان كما تنطبق على أعمدة الهوية، وهو ما يشرحه دليل بيانات الهوية بالتفصيل.
ويستحق الترتيب نفسه التطبيق على الحقول المشتقة. فرمز المنطقة الهاتفية ليس حقل عنوان، لكنه في كثير من النماذج يوضع في الشاشة نفسها، وإذا اشتق من منطقة أخرى صار دليلا على أن السجل جمع من مصادر غير مترابطة. والقاعدة العملية أن كل حقل مشتق في السجل يجب أن يكون قابلا للتتبع إلى الحقل الذي اشتق منه، وإلا فإن السجل يبدو متماسكا بينما هو في الحقيقة مجموعة اختيارات مستقلة.
وهناك اختبار بسيط يكشف هذا النوع من الخلل بتكلفة منخفضة. اطلب عشر سجلات من الأداة لنفس الولاية، ثم افحص الرموز البريدية الناتجة. فإذا تجمعت في نطاق ضيق عرف أن الاشتقاق يبدأ من الولاية وينزل، وإذا تفرقت على النطاق الوطني كله عرف أن الأداة تسحب الحقلين بشكل مستقل، وأن قيمها لا تصلح لتأكيدات تشغيلية.
ماذا تعني أرقام التغطية وراء الأداة؟
أرقام التغطية سهلة التضخيم وصعبة التفسير، لذلك يفيد أن تعرف إلى ماذا تشير الأعداد. على هذا الموقع تشمل المجموعة الأمريكية كامل التقسيمات من المستوى الأول، ونحو مئتي تجمع سكاني، وما يقل قليلا عن ألفي تقسيم إداري تحتها، وأكثر من ثلاثة عشر ألف رمز بريدي مأخوذة من التخصيص الحقيقي.
هذه الأرقام أقل أهمية من العلاقات بينها. فمئتا مدينة مقابل ثلاثة عشر ألف رمز بريدي تعني أن المكان المتوسط يحمل رموزا بريدية كثيرة، وأن أداة تسحب قائمة المدن وقائمة الرموز بشكل مستقل ستنتج تعارضات في معظم الحالات. والادعاء ذو المعنى ليس عدد القيم الموجودة بل أن المدينة المختارة تأتي دائما برمز بريدي ينتمي إليها. والأداة القادرة على إنتاج زوج صحيح من أي قائمتين أنفع من أداة تحمل قائمة أطول من القيم غير المترابطة، لأن الأولى فقط يمكن استخدامها داخل تأكيد يبقى صحيحا في العام القادم.
ويستحق الغرض من التقسيمات التي تقع تحت مستوى المدينة معرفة واضحة. ففي بلدان كثيرة يكون المستوى الوسيط هو الوحدة التي ترتبط بها الرموز البريدية، ولهذا تنظم مجموعات البيانات هرميا لا كقوائم مسطحة. ونموذج عنوان يسأل عن المدينة والولاية والرمز البريدي فقط يهمل طبقة ستطلبها بلدان أخرى، ومجموعة اختبارات لا تجرب تلك الطبقة لن تكشف الفرق بين نموذج عام ونموذج مبني لبلد واحد.
ومن المفيد أيضا التمييز بين التغطية والتخصيص. فوجود رمز بريدي في المجموعة يعني أن النطاق الرقمي محجوز جغرافيا، لا أن كل مبنى تحت ذلك النطاق معروف للأداة. وهذا التمييز يفسر لماذا يمكن للأداة أن تنتج رقم منزل غير موجود في الواقع مع بقاء العلاقة الجغرافية صحيحة، وهو السلوك الصحيح لبيانات الاختبار لا للسجل التشغيلي.
وكلما كبرت المجموعة كبرت حاجتها إلى مراجعة دورية. فالرموز البريدية تتغير، والمدن تنمو، والتقسيمات الإدارية تعاد رسمها. ومجموعة بيانات لا تحمل تاريخ تحديث ولا مصدرا معلنا تنتهي إلى قيم قديمة تبدو صحيحة، وهو نوع من الخطأ لا يظهر في أي فحص آلي لأنه لا يخالف أي قاعدة شكلية.
أي عيوب في العناوين ينبغي أن تلتقطها نماذجك؟
البيانات المنشأة مفيدة لتأكيد أن النموذج يقبل المدخل الصحيح، وهي أكثر فائدة لتأكيد أنه يرفض المدخل الخاطئ. والعيوب التي تستحق كتابة حالات لها هي التي يستطيع النموذج كشفها فعلا: رمز بريدي أقصر أو أطول من اللازم، ورمز ولاية ليس في القائمة، ومدينة لا تطابق الولاية المختارة، ورمز وحدة أطول مما يسمح الحقل، وسطر شارع يتجاوز عرض العمود المخزن.
ثم هناك الحالات التي لا يستطيع النموذج كشفها فلا ينبغي أن يتظاهر بكشفها. فر مز بريدي صحيح التنسيق ينتمي إلى مدينة أخرى غير المدينة المدخلة ليس شيئا يستطيع التحقق في المتصفح حله، وكذلك اسم مدينة مكتوب بطريقة تختلف عن الاسم الرسمي. ومعاملة هذه الحالات كأخطاء تحقق تنتج رفضا خاطئا، وهو نتيجة أسوأ من قبول سجل غريب قليلا، لأن المستخدم الصحيح هو من يدفع الثمن. وتشرح أداة التحقق كيف تبنى قواعد الفحص التي تفصل بين الرفض الصحيح والرفض الخاطئ.
ملف اختبار منتج لتدفقات الدفع يحتوي عادة على دفعة من سجلات العناوين الأمريكية المنشأة للمسار السعيد، ومجموعة صغيرة من القيم المشوهة عن قصد لمسار الرفض، وسجل أو سجلين بأشكال غير معتادة لكنها قانونية مثل رمز إقليم، ورمز بريدي موسع، واسم شارع يحمل نقطة أو علامة اختصار. وحيث يرفض الحقل قيمة، يجب التأكيد على نص الرسالة كما تؤكد على الرفض نفسه، لأن الرسالة الواضحة والرسالة العامة تفشل مع المستخدمين بشكل مختلف تماما.
ويستحق حقل الوحدة حالتين على الأقل. الحالة الأولى وحدة مكتوبة بكلمة يتبعها رقم، والحالة الثانية وحدة مكتوبة برقم مجرد. والفرق بين الحالتين ليس شكليا، لأن المحلل الذي يقبل الأولى فقط سيرفض مدخلات صحيحة في الإنتاج، وستظهر المشكلة كتذكرة دعم لا كخطأ في الاختبارات. ولهذا ينبغي أن يحمل ملف الاختبار الشكلين معا لا الشكل الأكثر شيوعا وحده.
ولا تكفي الحالات المفردة وحدها. فالحقل الذي يمر بمدخل صحيح منفرد قد يفشل عند لصق قيمة تحمل مسافة في البداية، أو عند لصق قيمة تحمل شرطة في المنتصف، أو عند إدخال قيمة ثم حذف جزء منها. وهذه الحالات ليست نظرية، لأن اللصق هو الطريقة التي يدخل بها معظم الناس عناوينهم، والتحقق الذي يعمل مع الكتابة اليدوية فقط ينهار أمام أول مستخدم ينسخ عنوانا من رسالة.
هل يمكن تسليم العناوين الأمريكية المنشأة؟
لا يمكن، ولا ينبغي لأي أداة صادقة أن توحي بغير ذلك. فالعنوان المنشأ يحمل البنية الصحيحة والعلاقات الداخلية الصحيحة، وهذا ما يحتاجه محلل النماذج أو مجموعة قواعد التحقق أو تدفق الدفع ليتم تشغيله. لكنه لا يشير إلى مبنى حقيقي، وهو غير مسجل باسم أحد، ولن يقبله أي ناقل كوجهة.
يسهل إبهام هذا التمييز عندما تبدو البيانات عادية. فرقم المنزل معقول، واسم الشارع اسم شارع حقيقي مستخدم في مكان ما من البلد، والمدينة موجودة فعلا. والتركيبة هي ما يجعل السجل صناعيا، لأن ذلك المنزل بعينه في ذلك الشارع بعينه لا يقابل السجل المعروض أمامك، ولو كان كل عنصر فيه صحيحا على حدة.
النتيجة العملية قاعدة تنتمي إلى ملاحظات مجموعة البيانات لا إلى تعليق لا يقرؤه أحد: هذه السجلات موجودة لاختبار البرمجيات، ولا يجوز استخدامها في شحنات حقيقية، ولا يجوز تقديمها كمحل إقامة لأي شخص. وإذا تسربت صورة أو ملف من بيانات بيئة الاختبار إلى الخارج، ينبغي أن يعلن السجل عن ماهيته بوضوح بحيث لا يضطر القارئ إلى التخمين.
ويستحق هذا الجانب تدقيقا عند مراجعة أي مجموعة بيانات. اسأل دائما عن المصدر، وعن تاريخ التحديث، وعن القاعدة التي تمنع استخدام القيم في غير الاختبار. والمجموعة التي لا تجيب عن هذه الأسئلة الثلاثة هي مجموعة لا يعرف أحد حدودها، والحدود المجهولة هي التي تتحول إلى حادث لاحق.
كيف تخزن النتيجة لإعادة استخدامها لاحقا؟
خزّن العناوين المنشأة كملفات ثابتة بمجرد أن يصبح لها غرض واضح، واحتفظ بمعاملات الإنشاء إلى جانبها. فالملف الذي يسجل مفتاح الهوية والبلد والبذرة المستخدمة يمكن إعادة إنشائه بعد سنوات، وهذا ما يجعل اختبار الانحدار القديم ذا معنى لا لغزا يستغرق ساعات لفهمه.
أبق أعمدة العنوان منفصلة عن كل شيء آخر. فأسماء المستلمين والملاحظات الداخلية وتفاصيل المزود وتعليمات التسليم لا تنتمي إلى داخل سطر الشارع، لأن خلطها ينفخ طوله ويكسر فحوص الأحرف وينتج أعطالا تبدو كمشكلات في العنوان بينما الخطأ الحقيقي مخطط سمح بمرور نص غير ذي صلة من البداية.
وأخيرا أكد العلاقات بدلا من الوثوق بها. فالاختبار الذي يفحص أن المدينة تنتمي إلى الولاية، وأن الرمز البريدي ينتمي إلى الولاية نفسها، يلتقط معظم بيانات العناوين الأمريكية المصنوعة يدويا قبل أن تصل إلى ملف ثابت مشترك. وهذا التأكيد الواحد يفعل لصحة البيانات أكثر مما يفعله أي قدر من الحرص أثناء كتابة السجلات يدويا سطرا بسطر.
وأبق عادة أخرى إلى جانبه. عندما يفشل سجل في فحص علاقة، أصلح الأداة لا السجل، لأن صفا مصححا بيد بشرية هو صف سيكتب فوقه في المرة القادمة التي يحدث فيها الملف. والفحص الذي لا يستطيع أحد أن يرضيه بتحرير حقل واحد هو فحص يستمر في العمل، وهو الفرق بين قاعدة مؤقتة وقاعدة بنيوية.
ولحفظ السجلات فائدة ثانية لا تقل عن الأولى. فالمجموعة الثابتة تجعل من الممكن مقارنة نتيجة اليوم بنتيجة الشهر الماضي، وتكشف التغيرات في الأداة نفسها لا في الكود الذي يختبرها. ولهذا ينبغي أن يحمل الملف الثابت تاريخ الإنشاء ونسخة الأداة، لا القيم وحدها.
كل عنوان ينتج بهذه الطريقة هو بيانات اختبار صناعية ببنية صحيحة وعلاقات داخلية صحيحة، ولا شيء أكثر من ذلك. وهو ليس موقعا قابلا للتسليم، ولا ينتمي إلى أي شخص أو مؤسسة، ولا يجوز استخدامه لانتحال هوية أحد، ولا لإثبات إقامة، ولا لتلقي بريد حقيقي، ولا لتجاوز خطوة تحقق من أي نوع.