كيف تختار الاسم المناسب لاختبارات الوحدة (Unit Tests)
اختبار الوحدة غالبًا ما يكون أول نشاط جودة يستهدف الكود أثناء دورة حياة تطوير البرمجيات. يتناول هذا الموضوع المبادئ التوجيهية الأساسية في تسمية اختبارات الوحدة بالإضافة إلى أمثلة عديدة على الطُرُق الفعّالة لتسمية هذه الاختبارات.
يُعَدّ اختبار الوحدة (Unit Test) جزءًا أساسيًا من تطوير البرمجيات فهو يُساعِد على ضمان جودة الكود واكتشاف الأخطاء قبل تفاقمها. مع ذلك، يتطلّب كتابة اختبارات فعّالة أكثر من مجرّد كتابة كود يتحقّق من المخرجات المتوقّعة.
من الجوانب التي غالبًا ما يتم إغفالها في اختبارات الوحدة أهميّة تسمية الاختبارات بشكل صحيح. فالاختبار المُسَمّى بشكل جيّد يُوضّح الغرض منه ويُسهّل فهم الوظائف (functionality) التي يتم اختبارها ويُساعِد في تنظيم الاختبارات في قواعد البيانات البرمجية الكبيرة (codebases).
دعونا نُلقِي نظرة على بعض الإرشادات الأساسية لتسمية اختبارات الوحدة والتي من خلالها يمكنك تحسين سهولة قراءة اختبارات الوحدة وصيانتها ممّا يجعل اختبار الوحدة نشاطًا أكثرَ قيمة (more valuable) في عملية تطوير البرمجيات:
- كُنْ وَصْفيًا (Be Descriptive): يجب أن يكون واضحًا وسهل الفهْم ما الذي يقوم الاختبار بالتحقّق منه.
- استخدم اصطلاحًا للتسمية (Naming Convention): مثل إضافة كلمة test قبل اسم الاختبار أو استخدام نمط كتابة CamelCase. هذا يُسهّل تحديد اختبارات الوحدة ويساعد أدوات أتمتة الاختبارات على تحديد مواقع الاختبارات وتنفيذها.
- اجْعَل الاسم مُختصرًا: الاسم الطويل قد يجعل من الصّعب قراءَة وفهْم الهدف من الاختبار.
- استخدم أسماء ذات معنى تعكس الوظائف التي يتم اختبارها: تجنّبْ استخدام أسماء عامّة مثل test1 أو test2 والتي لا تحمِل أي معلومات عن الاختبار.
- استخدم الشرطات السفليّة (underscores) أو الشرطات العاديّة (dashes) لتحسين سهولة القراءة: تجنّبْ استخدام المسافات أو الأحرف الخاصّة الأُخرى التي قد تُسبّب مشاكل مع بعض أُطُر الاختبار (testing frameworks).
- اتّبِعْ بُنْيَة مُتّسِقَة (consistent structure): على سبيل المثال يمكنك اختيار إضافة اسم الوحدة كبادئة (prefix) متبوعًا بشَرطة سفليّة (underscore) ومن ثمّ وصف الاختبار لجميع الاختبارات المتعلّقة بوحدة معيّنة.
- تجنّبْ المعلومات الزائدة: على سبيل المثال إذا كان الاختبار يتحقّق من سلوك دالّة (function) معيّنة، فلا داعي لتضمين اسم الدالة في اسم الاختبار.
الآن سنستعرض بعض طُرُق تسمية اختبارات الوحدة الشائعة التي يُعتقَد أنها مطلوبة بين المطوّرين والمتخصّصين في الاختبار وضمان الجودة على حد سواء:
- Designation MethodName_StateUnderTest_ExpectedBehavior
هنالك العديد من الحُجَجْ ضد هذه الطريقة لأنه إذا تم تغيير أسماء الدوال بعد عملية إعادة الهيكلة (refactoring) فيجب تغيير اسم الاختبار ويصبح من الصعب جدًا فهم ذلك في وقت متأخر من عملية التطوير والاختبار المُسْتَقِل (independent testing).
فيما يلي بعض الأمثلة:

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

- Designation Feature to be tested
يعتقد البعض أن كتابة دالة اختبار بسيطة أكثر فعاليّة لأن التعليق التوضيحي (annotation) سيُستخدَم على أي حال لتعريف الدالة كدالة اختبار برمجيّة. كما يُنصح بذلك لأنه يسمح بإنشاء اختبار وحدة بصيغة بديلة ولا يُؤثر سلبًا على كود البرنامج.
مثال على هذه التسمية:

- Designation Should_ExpectedBehavior_When_StateUnderTest
هذا الخيار شائع لأنه يمكنك من خلاله شرْح الاختبار أو ما يجب أن تفعله الوظيفة التي يتم اختبارها بسهولة:

إن استخدام البيانات والتسميات المُمَاثلة سيسمح لك ليس فقط بهيكلة اختبارات الوحدة بشكل صحيح (correctly structure unit tests)، ولكن أيضًا سيسمح لك بالعثور بسرعة على أجزاء كود البرنامج التي تحتاج إلى تحسين واختبار.
خاتمة
في الختام، يُعدّ اختيار أسماء اختبارات الوحدة جزءًا أساسيًا من كتابة برمجيات عالية الجودة. فالاسم الجيّد للاختبار يُوضّح الغرَض منه ويُساعد المطوّرين الآخرين على فهْم الوظائف التي يتم اختبارها. كما أن تسمية اختبارات الوحدة بشكل مُتّسِق واتباع الاصطلاحات المُعتمَدة يُسهّل العثور على الاختبارات وتنظيمها في قواعد البيانات البرمجية الكبيرة. عند تسمية اختبارات الوحدة، من المهم استخدام أسماء وصفيّة ومُحدّدة تُشير إلى السلوك المتوقّع الذي يتم اختباره. بالإضافة إلى ذلك، يُفيد استخدام تنسيق أو بُنْيَة مُوحّدة لتسمية الاختبارات مثل البدء بكلمة اختبار ثم شرطة سفلية أو تضمين اسم الدالة التي يتم اختبارها. باتباع هذه الإرشادات، يستطيع فريق الاختبار إنشاءَ اختبارات وحدة مُسمّاة بشكل جيّد ممّا يُحسّن جودة الكود ويُعزّز التعاون.
* المصدر: https://www.softwaretestingmagazine.com/knowledge/how-to-choose-the-right-name-for-unit-tests
** الصورة من موقع: https://suncommander.medium.com


لا توجد تعليقات