القائمة

ملفات تجهيز الهوية: كيف تنظم سجلات الاختبار لتبقى قابلة للتكرار

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

تاريخ النشر

  • بيانات اختبار
  • هوية
  • ملفات التجهيز

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

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

ما الذي ينتمي إلى ملف تجهيز وما الذي ينتمي إلى أداة الإنشاء؟

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

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

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

لماذا يجعل السحب العشوائي الفشل غير قابل للتكرار؟

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

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

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

كيف تنظم سجلات التجهيز وتسميها؟

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

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

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

أي الحالات الحدية تستحق ملف تجهيز دائم؟

قائمة قصيرة تغطي قدرا مدهشا من المخاطرة، لأن كل بند فيها يكسر افتراضا مختلفا لا قيمة مختلفة.

شخص تجاوز المئة عام. يكسر افتراض أن سنوات الميلاد تقع دائما في نطاق ضيق.

اسم أطول بكثير مما تسمح به الواجهة. يكسر افتراض أن عرض الحقل في النموذج ممثل للحقيقة.

شخص بلا اسم عائلة. يكسر افتراض أن جزأي الاسم موجودان دائما.

اسم بأبجدية غير لاتينية أو بعلامات نطق. يكسر افتراض أن الأبجدية لاتينية أبدا.

سجل بمعرّف اختياري غائب. يكسر افتراض أن كل حقل مملوء دائما.

تاريخ ميلاد في اليوم الكبيس. يكسر افتراض أن كل تاريخ يقع في كل سنة.

سجل يحمل زوجا واحدا غير متسق عن قصد. يكسر افتراض أن قواعد الاتساق ما زالت مفعلة.

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

كيف تتلف ملفات التجهيز وما الذي يبطئ ذلك؟

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

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

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

هل ينبغي إنشاء ملفات التجهيز أصلا؟

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

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

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

للمطورين: بنية ملفات التجهيز

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

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

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

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

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

تابع القراءة

أدلة أداة إنشاء الهويات وبيانات الاختبار