شعار قسم مدونات

عمليّة "الكرامة" في مواجهة الـ Software Testing

General Khalifa Haftar (4th L) talk about military operations with Libyan army commanders in Benghazi December 3, 2014, where clashes between pro and anti-government forces have taken place. Libya has two governments and parliaments vying for power since a group called Libya Dawn seized the capital Tripoli in August after a month-long battle with a rival group and set up its own cabinet. Internationally recognised Prime Minister Abdullah al-Thinni's government has allied itself with forces of Haftar who had declared war on Islamists in May. Picture taken December 3. REUTERS/Stringer (LIBYA - Tags: CIVIL UNREST POLITICS MILITARY)

سيبدو لك عنواني غريبًا، وسيبدو لك تخصصيًّا، لكنني أؤكّد لك أنه متى ما صحِبَنا عقلُك في هذه الأسطر مع الموضوعية والإنصاف فإن الكلمات ستكون سهلة ميسّرة. والآن عقلك وحَارسَاه "الموضوعية والإنصاف" معنا، إذن تفضل بالقراءة، واستعن بسعة الصدر.
 

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

ينقسم الاختبار إلى نوعين رئيسين هما:
1. الاختبار الذي يسمح للنظام بالنجاح، ويعرف بـ "Test to Pass" 
2. الاختبار الذي يَجُرّ النظام إلى الخطأ، ويعرف بـ "Test to Fail"
 

قبل انطلاق عملية الكرامة في مايو/أيار 2014 كان الدولار الأمريكي يساوي 1.33 دينارًا في السوق الموازي، أما اليوم -بعد حاولي ثلاثة أعوام- فإن سعر الدولار جاوز 6 دنانير في السوق الموازي.

النوع الأول: الاختبار الذي يسمح للنظام بالنجاح
وفيه يجب على مُختبِر البرنامج أن يتأكد من أن النظام البرمجي يؤدّي الحد الأدنى من المتطلبات العادية في الظروف الطبيعية، ولا يحاول إحراج النظام البرمجي وذلك بتطبيق أبسط المتطلبات.

برمجيًّا، لو كان المطلوب اختبار برنامج الآلة الحاسبة بطريقة Test to Pass فإن مختبر النظام سيدخل عمليات حسابية عادية كـ (1+1) أو (100×25) أو (99÷3)، وهكذا.
 

أما عسكريًّا، فالمثال سيكون بعملية "الكرامة" التي يقودها المتقاعد حفتر، فلو أردنا أن نجري اختبار من نوع Test to Pass للحملة سالفة الذكر، فإن المُختبِر لها سيسأل القائمين عليها أو سيسأل نفسه عن المتطلبات الرئيسة التي قامت الحملة من أجلها كما يلي: هل توقفت الاغتيالات في بنغازي -لأن هذا هو السبب الرئيس المُعلَن للحملة-؟ والإجابة لا تتطلب منك أكثر من مُطالعة أخبار المناطق التي تسيطر عليها قوات حفتر لتسمع عن القتل اليومي والاغتيال الذي أضحى أمرًا علنيًّا، بل سيتناهى إلى سمعك اتهام أعمدة الحملة العسكرية لبعضهم البعض بالاغتيالات والتصفية الجسدية.
 

إذًا فالإجابة عن سؤال "هل توقفت الاغتيالات في بنغازي؟" ستكون "لا، لم تتوقف"، وهذا المعيار سيكون علامة ومؤشرًا لكل ذي عقل بأن يضع علامات استفهام وكأن الآلة الحاسبة فشلت في معرفة مجموع (1+1) أو حاصل ضرب (100×25) أو خارج قسمة (99÷3).

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

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

حيث يُفترض أن يرفض النظام (الآلة الحاسبة) القسمة على صفر برسالة نصها مثلًا: "يتعذّر القسمة على صفر"، وأن يرفض النظام مجرد محاولة إدخال رمز أو حرف بدلًا عن رقم، والتعامل مع ذلك بإصدار صوت تحذيري مثلًا -لاحظ أن هذا النوع من الاختبار يبحث عن الكمال وعن الجودة العالية والإتقان-.
 

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

أما عسكريًّا، فالمثال ذاته مثالنا السابق وهو ما يسمى بعملية "الكرامة"، فلو أردنا أن نجري عملية Test to fail للحملة فإن المختبر لها سيبحث عن تطوّر أشياء ليست رئيسة أو "متطلبات جودة وكفاءة"، فمثلًا هل حدث استقرار في الاقتصاد الليبي بعد انطلاق العملية؟ هل استضافت ليبيا حدثًا دوليًّا أو رياضيًّا أو مهرجانًا؟ هل تم إجراء انتخابات -سواءً بلديّة أو حتى طلابية-؟ ماذا عن الوضع الاجتماعي بعد الكرامة؟
 

إن الإجابة عن هذه الأسئلة هي مؤشّر لمعرفة صلابة المشروع العسكري أو البرمجي -كون كليهما يعدّ مشروعًا كما نردّد دائمًا-. قبل انطلاق عملية الكرامة في مايو/أيار 2014 كان الدولار الأمريكي يساوي 1.33 دينارًا في السوق الموازي، أما اليوم -بعد حاولي ثلاثة أعوام- فإن سعر الدولار جاوز 6 دنانير في السوق الموازي، أما بالنسبة للأحداث الدولية والمهرجانات فقد ألغي عدِيدُها بسبب تردّي الوضع الأمني.
 

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

ملاحظة:
في العادة لا يتم الانتقال إلى "Test to fail" بعد فشل أي نظام برمجي أو أي "مشروع" في اجتياز النوع الأول "Test to Pass" لأن "المشروع" الذي يفشل في هدفه الرئيس لا يحتاج "مزيد صبر" -إن صح القول- ولكنني أردت التوضيح فقط فاستخدمت النوعين ليستبينَ القارئ.

الآراء الواردة في هذا المقال هي آراء الكاتب ولا تعكس بالضرورة الموقف التحريري لقناة الجزيرة.