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