المستويات الأربعة للاختبار الذاتي للبرمجيات

  • 1. الكتابة بمساعدة الأداة. أنت تحدّد ما يجب اختباره، وهي تكتب الشيفرة. وفرٌ حقيقي في الوقت. والقرار كله ما زال بيدك.

  • 2. التغطية المُولَّدة. تقترح الأداة ما يجب اختباره انطلاقًا من مواصفة أو من التطبيق أثناء تشغيله. وأنت تراجع الخطة. وهذا هو الموضع الحقيقي لمعظم المنتجات.

  • 3. الصيانة الذاتية. تتكيّف التغطية مع تغيّر المنتج دون أن يصلحها أحد. ويستلزم ذلك التمييز بين التغيير المقصود والانحدار.

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

ما يطلبه كل مستوى منك

  • المستوى الأول: أن تعرف ما يجب اختباره. الحكم كله يبقى بيدك.

  • المستوى الثاني: أن تراجع خطة. أسرع من الكتابة، وليس مجهودًا معدومًا، وتخطّيه هو ما يمنحك تغطية لا يفهمها أحد.

  • المستوى الثالث: أن تحدّد ما يُعدّ تغييرًا مقصودًا. فالأداة لا تستطيع أن تعرف أن مسارًا ما قد أُعيد تصميمه عن قصد.

  • المستوى الرابع: أن تعرّف معنى الصحيح بدقة تكفي للتحقق من الإصلاح دونك.

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

السقف الذي لا يُسوّقه أحد

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

وأي منتج يوحي بغير ذلك فهو يصف المستوى الثاني ويسمّيه المستوى الرابع.

أسئلة تحدّد موضع المنتج على السُّلَّم

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

من يقرّر ما يُختبر؟ إذا كان الجواب أنك أنت، فهذا هو المستوى الأول مهما كانت طريقة كتابة الاختبار.

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

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

كيف تبدأ

الطرفية

npm install -g @testsprite/testsprite-cli
testsprite setup

وإن كنت تفضّل ألّا تثبّت أي شيء، فلوحة المعلومات تؤدي الغرض نفسه. وكل ما يستطيع سطر الأوامر فعله غير ذلك موجود في مستودع CLI.

وإذا كان خط الإنتاج يخصّ فريقًا آخر، فإن GitHub App هو الطريق الأقل مقاومة: فهو مجرّد webhook، ولا يغيّر شيئًا في مستودعك، ويعمل عندما يُبلّغ البناء عن إتاحة الإصدار الجديد. وإن أردت أن يكون الفحص ظاهرًا في المستودع نفسه، فإن خطوة في GitHub Actions تحقّق ذلك.

موضع TestSprite على السُّلَّم

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

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

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

ما المستوى الواقعي اليوم؟

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

هل يعني الاستقلال الذاتي عددًا أقل من الأشخاص؟

بل يعني عملًا مختلفًا. يتقلّص الشقّ الميكانيكي، ويصبح شقّ الحكم هو العمل نفسه.

كيف نعرف أنها لا تُولّد ضجيجًا فحسب؟

اقرأ الخطة، واحذف ما لا يهم، وقِس العيوب المتسرّبة لا أعداد الاختبارات.

ما الذي يتعطّل في المستوى الثالث؟

التغييرات المقصودة. فالمسار المُعاد تصميمه يبدو مطابقًا للانحدار إلا إذا قال أحد غير ذلك.

هل الحلقة المغلقة آمنة؟

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

الخلاصة

سُلَّم، لا مفتاح تشغيل.

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