10 أدوات اختبار PHP لملحقات WordPress
نشرت: 2022-08-05لا يوجد برنامج خالي من الأخطاء. هذه بديهية تنطبق على كل لغة برمجة وكل تطبيق.
عندما يتم نشر هذه الأخطاء في موقع الويب الخاص بك في الإنتاج ، يمكن أن تعاني من عواقب وخيمة متفاوتة الخطورة. هذه بعض الأمثلة التي تتراوح من الإزعاج إلى الضرر الاقتصادي:
- معتدل: عدم قدرة المستخدم على النقر فوق ارتباط معطل.
- خطيرة: لا يعمل زر "إرسال" في نموذج الاتصال ، والذي يكتشفه المستخدم فقط بعد كتابة رسالته.
- شديد: بوابة دفع لم يتم تكوينها بشكل صحيح ، مما يجعل المستخدمين غير قادرين على شراء المنتجات في متجر التجارة الإلكترونية الخاص بك ، وبالتالي التخلي عن الموقع.
لا توجد أداة واحدة كافية للتعامل مع جميع جوانب اختبار التطبيق من جميع الزوايا المختلفة الممكنة. في الواقع ، بالإضافة إلى اكتشاف الأخطاء ، من الضروري إجراء اختبارات إضافية للتحقق من صحة الوظائف الأخرى للتطبيق ، مثل:
- سهولة الوصول والاستخدام
- أداء مقبول
- التعامل مع حركة المرور والحمل
في هذه المقالة ، سنراجع 10 أدوات تم إنشاؤها بواسطة مجتمع المصدر المفتوح والتي يمكن أن تساعد في تكوين مكدس لاختبار كود PHP في مكونات WordPress الإضافية. تم تصميم بعض هذه الأدوات خصيصًا لاختبار كود PHP ؛ البعض الآخر مخصص لاختبار كود WordPress ؛ وتم إنشاء عدد قليل من الأدوات الأخرى للتعامل مع بعض الوظائف العامة المفيدة للاختبار.
1. DevKinsta
DevKinsta عبارة عن مجموعة تطوير محلية لمواقع WordPress. فقط من خلال تقديم بعض التفاصيل الأساسية ، يتم تثبيت مثيل محلي لموقع WordPress على الفور ، ويأتي مرفقًا مع العديد من أدوات التطوير المفيدة مثل صندوق الوارد للبريد الإلكتروني ، ومدير قاعدة البيانات ، والتسجيل لتسهيل استكشاف الأخطاء وإصلاحها.
يتم استخدام DevKinsta عادةً بواسطة المطورين والمصممين عند إنشاء سمات WordPress والإضافات الخاصة بهم. ولكن يمكن أيضًا استخدامه كخادم ويب محلي لتنفيذ اختبارات التكامل والوظائف. يتم تحقيق ذلك جنبًا إلى جنب مع أداة HTTP التي تساعدك على التحقق من صحة محتوى الاستجابة والعناوين.
أهم ميزات DevKinsta هي:
- من السهل إنشاء بيئة WordPress جديدة وحذفها بمجرد عدم الحاجة إليها بعد الآن
- يسمح باختبار أي إصدار مدعوم من PHP و WordPress وأي مزيج منهما
- يتكامل بسلاسة مع MyKinsta حيث يمكن للمستخدمين إنشاء نسخة احتياطية خارجية لمواقعهم وبياناتهم
2. PHPUnit
PHPUnit عبارة عن إطار عمل اختبار موجه للمبرمجين لـ PHP. إنه الإطار الأكثر شيوعًا لتنفيذ اختبارات الوحدة في كود PHP ، بهدف التحقق من صحة الوحدات الفردية من الكود المصدري.
تسمح اختبارات PHPUnit للمطورين بالعثور على المشكلات في أقرب وقت ممكن خلال دورة التطوير ، مما يساعد على ضمان عدم إدخال أي تراجع في الكود (على سبيل المثال ، لم تتسبب التغييرات في جزء من التعليمات البرمجية في حدوث مشكلات في مكان آخر).
أهم ميزات PHPUnit هي:
- اختبار الميزات الجديدة
- التحقق من صحة التعليمات البرمجية المعاد تصميمه حديثًا
- يمكن أن تكون مؤتمتة بالكامل ويتم تنفيذها ضمن عملية التكامل المستمر المختارة
- التصحيح
- التوثيق التلقائي للاستخدام المتوقع من خلال الاستدعاء الوظيفي والقيود
- يسمح بنهج التطوير المستند إلى الاختبار (TDD) حيث يقوم المطورون أولاً بإنشاء الاختبارات الأولى ، ثم الوظائف
3. قرد الدماغ
Brain Monkey هي أداة مساعدة لاختبار PHP و WordPress. يوفر أدوات حيادية لإطار العمل تسمح لك بإعادة تعريف طرق PHP واختبار سلوك أي تطبيق PHP. كما يوفر أدوات خاصة باختبار كود WordPress.
أهم ميزات Brain Monkey هي:
- يسمح لاختبارات الوحدة بالتفاعل مع المكتبات الخارجية غير المحملة
- يسمح باستدعاء وظائف WordPress دون الحاجة إلى تحميل بيئة WordPress
- يمكن التأكيد على أن وظائف WordPress (مثل
add_filter
أوdo_action
) تستدعي الوظائف كما هو متوقع
4. الدماغ فاكر
يستخدم Brain Faker Faker (مكتبة PHP شائعة لإنشاء بيانات مزيفة) و Brain Monkey لتوفير سهولة إنشاء كائنات WordPress المزيفة والوظائف ذات الصلة لتختبرها ، بما في ذلك:
-
WP_Post
مثيلات ووظائف وهمية ذات صلة مثلget_post
وget_post_field
- حالات
WP_User
المزيفة ذات الصلة مثلget_userdata
وget_user_by
وuser_can
والمزيد -
WP_Term
، والوظائف ذات الصلة المزيفة مثلget_term
وget_term_by
-
WP_Comment
مثيلات -
WP_Site
مثيلات والوظائف ذات الصلة الزائفة مثلget_site
-
WP_Post_Type
مثيلات ، ووظائف وهمية ذات صلة مثلget_post_type_object
وpost_type_exists
-
WP_Taxonomy
مثيلات ووظائف وهمية ذات صلة مثلget_taxonomy
وtaxonomy_exists
-
WP_Error
المثيلات
أهم ميزات Brain Faker هي:
- إدخال بيانات WordPress وهمية ولكن واقعية في اختبار الوحدة - الوصول إلى تاريخ تعديل منشور وهمي سيعمل كتاريخ (على سبيل المثال
2022-04-17T13:06:58+00:00
) ، سيكون اسم المستخدم مناسبًا (على سبيل المثال"John Smith"
) ، تم تأليف مثيل منشور وهمي بواسطة مثيل مستخدم وهمي ، وما إلى ذلك - يمكن تقديم البيانات المزيفة مسبقًا أو إنشاؤها عشوائيًا
- قابل للتوسعة - يمكن للمطورين محاكاة الفئات والوظائف من مكونات WordPress الإضافية الخاصة بهم
5. الاستهزاء
Mockery عبارة عن إطار عمل كائن PHP نموذجي بسيط ولكنه مرن يهدف إلى استخدامه مع PHPUnit أو PHPSpec أو أي إطار اختبار وحدة آخر. يوفر إطارًا مزدوجًا للاختبار قادرًا على تحديد جميع عمليات الكائن والتفاعلات الممكنة باستخدام لغة محددة المجال (DSL) يمكن قراءتها.
أهم ميزات Mockery هي:
- يتيح الإنشاء المرن للكائنات الوهمية والأوتار (التي توفر إجابات جاهزة محددة مسبقًا لمكالمات محددة يتم إجراؤها أثناء الاختبارات)
- يعزز قدرات عزل الاختبار في PHPUnit
- واجهة برمجة تطبيقات مرنة للتعبير عن التوقعات السخرية ، ومحاكاة قدر الإمكان وصف اللغة الطبيعية (على سبيل المثال
$mock->shouldReceive('myMethod')->once()->andReturn('Hello world!');
) - اختبارات الوحدة باستخدام كائنات وهمية في الذاكرة لتجنب الحاجة إلى الوصول إلى أنظمة أبطأ (مثل قواعد البيانات أو أنظمة الملفات أو الخدمات الخارجية)
- يمكن أن يسخر من كل من السلوك الحتمي وغير الحتمي
6. أداة التصدير الأصلية لـ WordPress
تقوم أداة التصدير الأصلية لـ WordPress بتنزيل بيانات WordPress الخاصة بالموقع على جهازك كملف XML ، بما في ذلك المنشورات والصفحات وأنواع المنشورات المخصصة والتعليقات والحقول المخصصة والفئات والعلامات والتصنيفات المخصصة والمستخدمون والوسائط. يتميز ملف XML بتنسيق مخصص (يسمى WordPress eXtended RSS أو ملف WXR) يمكن استيراده إلى أي موقع WordPress.
هذه الأداة ليست مصممة خصيصًا للاختبار. ومع ذلك ، تأتي فائدته من القدرة على إنشاء لقطات من قاعدة بيانات WordPress التي تحتوي على مجموعة بيانات مناسبة ، والتي يمكن استخدامها بعد ذلك للاختبار. هذا يعني أن موقع WordPress قيد الإنتاج ، والذي يحتوي على بيانات حقيقية ، يمكن تصديره واستيراده إلى مثيل تطوير أو مرحلي لاختبار وظائف جديدة.
أهم ميزات أداة تصدير WordPress هي:
- إنشاء بيانات الاختبار باستخدام موقع WordPress حقيقي
- ملف تصدير قابل للمشاركة لقاعدة البيانات بأكملها
- مفيد للتكامل واختبار الوحدة
7. أسرف في الكلام
Guzzle هو عميل PHP HTTP يسهل إرسال طلبات HTTP والتكامل مع خدمات الويب.
Guzzle هي أداة عامة ، لذا فإن الاختبار هو مجرد واحدة من حالات الاستخدام المحتملة لها. جنبًا إلى جنب مع خادم ويب محلي مثل DevKinsta ، يتيح Guzzle إمكانية تنفيذ اختبارات التكامل: يمكنك استخدام Guzzle لإرسال طلب HTTP ضد خادم الويب للتطوير ، ثم تمرير الاستجابة لاختبار الوحدة في PHPUnit الذي يتحقق من المحتوى والرؤوس كما هو متوقع.
أهم ميزات Guzzle هي:
- يفي بتوصية PHP القياسية "PSR-7" (لواجهات رسائل HTTP) ، مما يحول دون قفل البائع
- بسيط وسريع
- يتم تنفيذ الاختبارات على موقع WordPress حقيقي ، مما يزيد من الموثوقية
- يمكن تنفيذه من داخل PHPUnit لسهولة وسرعة
- يمكن أتمتة اختبارات التكامل وإضافتها إلى عملية التكامل المستمر
8. WP-CLI
WP-CLI هي واجهة سطر الأوامر لبرنامج WordPress. باستخدامه ، يمكنك تحديث المكونات الإضافية وتكوين عمليات التثبيت متعددة المواقع وغير ذلك الكثير ، دون استخدام متصفح الويب.
WP-CLI ليس أداة اختبار على وجه التحديد ، ولكن الاختبار من بين العديد من حالات الاستخدام. على سبيل المثال ، بعد تشغيل خادم ويب تطوير جديد ، يمكنك تنفيذ برنامج نصي bash يحتوي على أوامر WP-CLI لاستيراد بيانات الاختبار إلى موقع WordPress ، وإنشاء المستخدمين بالأدوار والقدرات المناسبة ، وتثبيت المكونات الإضافية اللازمة لجهات خارجية ، و مهام أخرى من هذا القبيل.
نظرًا لأنه يمكن تخزين البرنامج النصي الذي يحتوي على أوامر WP-CLI في مستودع Git الخاص بك ، يمكن بعد ذلك أتمتة عملية تنفيذ اختبارات التكامل ودمجها في عملية التكامل المستمر:
- استخدم أداة تصدير WordPress لإنشاء بيانات اختبار حقيقية وتخزينها في مستودع Git.
- استخدم DevKinsta لبدء تشغيل خادم ويب باستخدام مثيل WordPress جديد.
- استخدم WP-CLI لاستيراد بيانات الاختبار إلى موقع WordPress (يمكن تشغيل DevKinsta عبر WP-CLI).
- قم بإنشاء اختبار وحدة في PHPUnit مع قيام Guzzle بتنفيذ طلب HTTP ضد خادم الويب للتحقق من محتوى الاستجابة والعناوين.
أهم ميزات WP-CLI هي:
- يسمح بالتنفيذ عن بعد للأوامر ضد مثيل WordPress عبر واجهة سطر الأوامر
- قابل للتوسيع مع أدوات أخرى
- يعزز قدرات مجموعة الاختبار
- يسمح بالتشغيل الآلي الكامل للعملية
9. XDebug
XDebug هو امتداد لـ PHP يوفر مجموعة من الميزات لتحسين تجربة تطوير PHP ، بما في ذلك تصحيح الأخطاء وتحسين الإبلاغ عن أخطاء PHP والتتبع والتنميط وتحليل تغطية الكود.
لن يساعدك XDebug في اختبار التعليمات البرمجية الخاصة بك ، ولكنه سيساعدك في معرفة مكان الخطأ. يعد الجمع بين XDebug و PHPUnit فعالاً بشكل خاص: إذا فشل الاختبار ولم تتمكن من العثور على مصدر المشكلة ، يمكنك استخدام XDebug لإضافة نقاط توقف في كود اختبار الوحدة. عند تشغيل اختبار الوحدة مرة أخرى ، سيتم إيقاف نص PHP مؤقتًا عند كل نقطة من نقاط التوقف هذه ، مما يسمح لك بفحص الحالة الحالية للتنفيذ (مكدس الاستدعاءات وقيم الخصائص والعناصر وما إلى ذلك) ومحاولة اكتشاف الخطأ.
أهم ميزات XDebug هي:
- تكامل الميزات لمحرري PHP المشهورين ، بما في ذلك VS Code و PHPStorm و Sublime
- يحدد مقدار الوقت المنقضي في كل استدعاء وظيفة ومقدار الذاكرة التي تستهلكها
- أقوى بكثير من مجرد استخدام
var_dump
لتصحيح الأخطاء البرمجية - يسمح بتعديل القيم المتغيرة بشكل سريع عند التوقف عند نقاط التوقف
10. PHPStan
PHPStan هي أداة تحليل ثابتة لـ PHP ، مصممة للعثور على الأخطاء في الكود حتى قبل كتابة الاختبارات.
هدف PHPStan هو تقليل عدد الاختبارات التي يتعين على المطورين كتابتها. هذه الأداة هي الأولى التي يتم تنفيذها في مكدس الاختبار ، حيث تلتقط بشكل استباقي أكبر عدد ممكن من الأخطاء. فقط تلك الأخطاء التي لا يمكن استنتاجها من التحليل الساكن (مثل تلك التي بها منطق معيب) يجب التحقق منها عبر اختبارات الوحدة.
يعمل PHPStan عن طريق مسح قاعدة التعليمات البرمجية بأكملها والبحث عن عدم التطابق. على سبيل المثال ، لا يمكن تعيين قيمة الاستجابة من دالة تقوم بإرجاع عدد عشري إلى معلمة دالة من نوع عدد صحيح. كلما احتوت الشفرة على مثل هذا الحدوث ، فهذا خطأ محتمل ، وسيقوم PHPStan بتنبيهك به أثناء مرحلة التطوير ، مباشرة أثناء كتابة كود التطبيق.
أهم ميزات PHPStan هي:
- الأتمتة والتكامل ضمن عملية التكامل المستمر الحالية
- يحدد موقع العديد من الأخطاء الخادعة ، مثل عدم تطابق الكتابة
- يقوم بمسح قاعدة التعليمات البرمجية بالكامل ، وإيجاد الأخطاء في أجزاء من التعليمات البرمجية التي نادرًا ما يتم تنفيذها
- منظمة في مستويات متزايدة التعقيد للسماح بالتكامل التدريجي
- ميزات امتدادات لأطر PHP وأنظمة إدارة المحتوى الأكثر شيوعًا ، بما في ذلك Symfony و Laravel و Doctrine و Nette و WordPress
ملخص
قد تتسبب تكلفة وجود أخطاء في تطبيقك في الإنتاج دون أن يلاحظها أحد في الإضرار بسمعتك ودخلك ، لذلك يجب أن تحاول القضاء عليها قبل أن تؤثر على المستخدمين لديك.
في التطبيقات المعقدة ، يكاد يكون من المستحيل أن تكون لديك ثقة بنسبة 100٪ في أنها لن تحتوي على أخطاء. لهذا السبب ، يجب عليك إعداد عملية للعثور على أكبر عدد ممكن من الأخطاء وإزالتها أثناء دورة التطوير الأولية.
باستخدام مجموعة أدوات الاختبار المصممة جيدًا ، يمكنك تقليل فرص تطبيقك بشكل كبير في التصرف بطرق غير متوقعة. قام مجتمع المصادر المفتوحة بإنشاء وإتاحة الكثير من الأدوات لاختبار الجوانب المختلفة للتطبيق ، والتي يمكنك - ويجب عليك! - الاستفادة من إنتاج كومة اختبار شاملة.
في هذه المقالة ، قمنا بمراجعة 10 أدوات لمساعدتك على تحقيق أهدافك لاختبار كود PHP في مكون WordPress الإضافي.
أي من هذه الأدوات استخدمتها في مشروعك الأخير؟ أخبرنا بما قمت ببنائه به في قسم التعليقات أدناه!