ماهو الـ unite testing و كيف تستخدمه مع codeigniter

ال unit testing أصبح الآن من المتطلبات الأساسية الواجب على المبرمج الإلمام بها ليتم قبوله للعمل فى معظم الشركات , فما هو ؟

إختبار الوحدة : هو عبارة عن دالة إضافية تضعها داخل كل class تقوم بكتابته و مهمتها إختبار عمل أجزاء هذا ال class بالشكل المطلوب و الآداء المرجو منه

 

فعلى سبيل المثال لدينا class بإسم cars و يوجد به دالة بإسم get_car تأخذ id و تقوم بإرجاع array تحتوى على مواصفات السيارة المطلوبة

إذن عند إختبار هذه الوحده : يتم تمرير قيمة إفتراضية 1 مثلاً ك id و يتم عمل check على ما ترجعه الداله فإن كان من نوع array فإن الدالة تعمل ولا مشكلة فيها

 

وقد يسأل سائل لماذا أتعب نفسى هكذا ؟؟ يمكننى فقط الذهاب إلى الرابط الخاص بهذه الدالة و تمرير متغير id=1 إلى العنوان مثلاً و لذلك يجب علينا توضيح هذه النقاط :

 

ماذا إن كان ال class الخاص بك له 20 دالة مترابطه مع بعضها مثلاً , هل لديك الوقت الكافى عند حدوث كل مشكلة أن تقوم بمراجعة ال 20 دالة ؟

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

ماذا إن كانت الدالة تأخذ القيم من خلال post و ليس get ؟

ماذا إن أردت أن تجرب دالة موجوده بداخل model مثلاً .. إن كنت تعمل على MVC pattern ؟ و كما نعلم أن ال models لا تستدعى عبر ال URL

هذه الأسئلة و الإجابة عليها كافية لتجعلك تتجه فى أعمالك لإستخدام ال unit testing . على الأقل فى الأجزاء المعقدة التى فيها إعتمادية كبيره

و هذا مثال توضيحى لتطبيق ال unit testing بإستخدام فريمورك codeigniter 2.x

 

 

وهذا مثال لخرج عملية الإختبار

 

Test Name get_car
Test Datatype Array
Expected Datatype Array
Result Passed
File Name C:\wamp\www\company_script_v3.0_3.1.x\Script\application\controllers\home.php
Line Number 28
Notes
Test Name save_car
Test Datatype Boolean
Expected Datatype bool
Result Passed
File Name C:\wamp\www\company_script_v3.0_3.1.x\Script\application\controllers\home.php
Line Number 33
Notes
Test Name valid_email_format
Test Datatype Integer
Expected Datatype int
Result Passed
File Name C:\wamp\www\company_script_v3.0_3.1.x\Script\application\controllers\home.php
Line Number 37
Notes