أفضل المبرمجين يخطئون. الفرق بين المبرمجين الجيدين والمبرمجين السيئين هو أن المبرمجين الجيدين يمكنهم العثور على أكبر عدد ممكن من الأخطاء من خلال الاختبار. كلما قمت باختبار الأخطاء بشكل أسرع، كلما وجدتها بشكل أسرع وكان العثور عليها وإصلاحها أرخص. وهذا ما يفسر سبب صعوبة اختبار البرامج قبل إصدارها مباشرةً. لم يتم العثور على معظم الأخطاء مطلقًا، وإصلاح الأخطاء التي تم العثور عليها أمر مرتفع للغاية بحيث يتعين عليك إعطاء الأولوية لإصلاح تلك الأخطاء فقط لأنك ببساطة لا تستطيع تحمل تكاليف إصلاحها جميعًا.
لا يعد الاختبار باستخدام PHPUnit شيئًا مختلفًا تمامًا عن الطريقة التي تستخدمها. لديهم فقط أساليب مختلفة. الفرق بين الاثنين هو أن التحقق مما إذا كان البرنامج يعمل بشكل صحيح يتم من خلال مجموعة من مقتطفات التعليمات البرمجية التي يمكن اختبارها تلقائيًا. تسمى مقتطفات التعليمات البرمجية هذه اختبارات الوحدة. في هذا الجزء، نقوم أولاً بإجراء اختبار تلقائي استنادًا إلى رمز الاختبار المطبوع. لنفترض أننا نريد اختبار مصفوفة المصفوفة المضمنة في PHP. إحدى الاختبارات التي يجب إجراؤها هي الدالة sizeof(). يجب أن تُرجع الدالة sizeof() القيمة 0 لأي مصفوفة تم إنشاؤها حديثًا. عندما نضيف عضوًا جديدًا في المصفوفة، يجب أن يُرجع sizeof() القيمة 1. يوضح المثال 1 ما نريد اختباره.
مثال 1. اختبار المصفوفة وsizeof()
<?php
$fixture = Array() ;
// $fixture يجب أن يكون فارغًا.
$fixture[] = "العنصر";
// $fixture يجب أن يحتوي على عضو مصفوفة.
?>
إن أبسط طريقة اختبار هي طباعة نتائج عملية sizeof() قبل وبعد إضافة أعضاء المصفوفة. إذا تم إرجاع 0 و1، فهذا يعني أن المصفوفة وsizeof() تعملان بشكل طبيعي.
مثال 2. استخدم عبارات الطباعة لاختبار Array وsizeof()
<?php
$fixture = Array() ;
حجم الطباعة($fixture) "n"
;
حجم الطباعة($fixture) "n";
?>
0
1
الآن، ننقل برنامج الاختبار من طلب الترجمة اليدوية إلى تشغيله تلقائيًا. في المثال 3، نقارن القيمة المتوقعة بالقيمة الفعلية ونطبع موافق إذا كانتا متساويتين. إذا وجدنا أن بعض النتائج ليست على ما يرام، فإننا نعلم أن هناك مشكلة.
مثال 3. قارن بين القيم المتوقعة والفعلية لـ Array و sizeof()
<?php
$fixture = Array() ;
حجم الطباعة($fixture) == 0 ? "okn" : "not okn"
;
حجم الطباعة($fixture) == 1 ? "okn" : "not okn";
?>
نعم
حسنًا،
نقدم الآن عنصرًا جديدًا، إذا كانت القيمة المتوقعة مختلفة عن القيمة الفعلية، فإننا نطرح استثناءً. بهذه الطريقة يكون إخراجنا أبسط. إذا نجح الاختبار، فلن يتم فعل أي شيء، وإذا كان هناك استثناء لم تتم معالجته، فسنعلم أن هناك خطأ ما.
مثال 4. استخدام وظائف التأكيد لاختبار Array وsizeof()
<?php
$fixture = Array() ;
AssureTrue(sizeof($fixture) = = 0);
$fixture[] = "element";
تأكيدTrue(sizeof($fixture) = = 1)
;
إذا (!$الشرط) {
طرح استثناء جديد("فشل التأكيد.");
}
}
?>
الآن الاختبار مؤتمت بالكامل. على عكس الإصدار الأول، فإن هذا الإصدار يجعل الاختبار آليًا بالكامل.
الهدف من استخدام الاختبار الآلي هو ارتكاب أقل عدد ممكن من الأخطاء. على الرغم من أن الكود الخاص بك ليس مثاليًا بعد، إلا أنه مع الاختبار الآلي الجيد ستجد أنه سيتم تقليل الأخطاء بشكل كبير. يمنحك الاختبار الآلي الثقة في أن الكود الخاص بك عادل. بهذه الثقة، يمكنك تحقيق قفزات جريئة في التصميم، والشراكة بشكل أفضل مع فريقك، وتحسين العلاقات بينك وبين عملائك، والنوم بسلام كل يوم لأنه يمكنك إثبات أن النظام أفضل بفضل جهودك.