هیچ نرم افزاری بدون باگ یا مشکل نیست و این موضوع برای هر زبان برنامه نویسی و نرم افزاری صدق می کند. بنابراین باید به طور منظم تست کدهای PHP در افزونه های وردپرس را انجام دهید. هنگامی که مشکلاتی در صفحات وب سایت مشاهده شوند با پیامدهای مختلفی و در چند سطح روبرو خواهید داشت:
- خفیف: کاربر نمی تواند روی یک لینک کلیک کند.
- جدی: دکمه "ارسال" فرم تماس کار نمی کند و کاربر تنها پس از نوشتن پیام خود متوجه آن می شود.
- شدید: درگاه پرداخت به درستی پیکربندی نشده و باعث میشود کاربران نتوانند محصولات فروشگاه را خریداری نمایند، در نتیجه بدون خرید از سایت خارج می شوند.
هیچ ابزاری به تنهایی برای بررسی و آزمایش تمام جنبه های یک برنامه کافی نیست. در واقع، علاوه بر یافتن باگها، اجرای تست ها و بررسی های اضافی جهت تایید عملکرد صحیح برنامه، بسیار ضروری است، مانند:
- قابلیت دسترسی و استفاده
- عملکرد قابل قبول
- مدیریت ترافیک و لود
در این مقاله، 10 ابزار متن باز بررسی می شود که می توانند به تست کدهای PHP در افزونه های وردپرس کمک کنند. برخی از این ابزارها به طور خاص جهت آزمایش کدهای PHP و برخی نیز برای آزمایش کدهای وردپرس طراحی شده اند. چند ابزار دیگر نیز جهت کنترل برخی از عملکردهای عمومی که برای آزمایش مفید هستند، معرفی شده اند.
- DevKinsta
- PHPUnit
- Brain Monkey
- Brain Faker
- Mockery
- WordPress Native Export Tool
- Guzzle
- WP-CLI
- XDebug
- PHPStan
1. DevKinsta
تصویر(1)
DevKinsta یک ابزار توسعه برای سایت های وردپرسی می باشد که یک نمونه از سایت موردنظر را ایجاد می کند. همچنین چندین ابزار دیگر مانند مدیریت ایمیل، مدیریت پایگاه داده و ثبت گزارش برای عیب یابی آسان تر را نیز ارائه می دهد.
به طور معمول DevKinsta توسط توسعه دهندگان و طراحان قالب ها و افزونه های وردپرسی استفاده می گردد اما می تواند به عنوان یک وب سرور محلی برای اجرای انواع تست کدهای PHP در افزونه های وردپرس نیز بکار گرفته شود. این اقدام از طریق یک ابزار HTTP صورت می گیرد که کمک می کند محتوای برگشتی و صحت هدرها را بررسی و اعتبارسنجی کنید.
امکانات برتر DevKinsta عبارتند از:
- می توان برای انواع تست ها یک محیط وردپرس جدید ایجاد و پس از انجام تست ها، آن را حذف نمود.
- امکان تست در هر نسخه از PHP و وردپرس و همچنین هر ترکیبی از آنها را ارائه می دهد.
2. PHPUnit
تصویر(2)
PHPUnit یک فریم ورک تست PHP برنامه نویس محور می باشد که محبوب ترین فریم ورک برای اجرای unit test ها (تستی که کوچکترین بخش از کد یک نرم افزار را بررسی می کند) در کدهای PHP است و هدف آن اعتبارسنجی بخش های جداگانه کدهای منبع می باشد.
تست کدهای PHP در افزونه های وردپرس به وسیله PHPUnit به توسعهدهندگان اجازه میدهد تا مشکلات را هنگام توسعه، در سریعترین زمان ممکن پیدا کنند و از اینکه تغییرات در برخی کدها باعث ایجاد مشکل در بخش دیگری نشده، اطمینان حاصل نمایند.
ویژگی های برتر PHPUnit عبارتند از:
- امکان تست ویژگی جدید
- اعتبارسنجی کدهای اصلاح شده
- کاملا قابل اجرا و برنامه ریزی در پردازش های یکپارچه
- دارای قابلیت اشکال زدایی
- امکان مستند سازی خودکار در هنگام فراخوانی توابع و محدودیت ها
- به رویکرد توسعه تست محور (Test-Driven Development یا TDD) اجازه می دهد که توسعه دهندگان ابتدا تست ها و سپس توابع را ایجاد کنند.
3. Brain Monkey
تصویر(3)
Brain Monkey یک ابزار تست کدهای PHP در افزونه های وردپرس می باشد که در آن ابزارهای مستقل از فریم ورک ارائه شده است. این ابزار، امکان تعریف مجدد متدهای php، تست و بررسی عملکرد برنامه های php را فراهم می کند. در Brain Monkey ابزارهای مخصوص بررسی کدهای وردپرس نیز در دسترس می باشد.
مهمترین ویژگی های Brain Monkey عبارتند از:
- به تست ها اجازه می دهد تا با کتابخانه های خارجی بدون نیاز به لود آنها، تعامل داشته باشند.
- فراخوانی توابع وردپرس را بدون نیاز به لود محیط وردپرس امکان پذیر می کند.
- می تواند توابع وردپرس مانند add_filter یا do_action را فراخوانی نماید.
4. Brain Faker
تصویر(4)
Brain Faker از Faker (کتابخانه محبوب PHP برای تولید داده های جعلی) و Brain Monkey استفاده می کند تا امکان ایجاد آسان آیتم های جعلی و توابع مرتبط وردپرس را فراهم نماید. از جمله:
- نمونههای 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
امکانات برتر ابزار تست کدهای PHP در افزونه های وردپرس به وسیله Brain Faker عبارتند از:
- دادههای جعلی اما مرتبط را به unit test وردپرس اضافه میکند. به عنوان مثال، یک دسترسی جعلی می تواند تاریخ انتشار مطلب را تغییر دهد یا تحت یک نام کاربری جعلی مانند "John Smith"، یک پست جعلی منتشر کند و اقداماتی مشابه آن.
- داده های جعلی را می توان از قبل تهیه یا به صورت تصادفی تولید نمود.
- توسعه دهندگان می توانند کلاس ها و توابع را از افزونه های وردپرس خود تقلید کنند.
5. Mockery
تصویر(5)
Mockery یک "فریم ورک اشیا" ساده php و ابزار تست کدهای PHP در افزونه های وردپرس می باشد که بسیار انعطاف پذیر است و همراه با PHPUnit، PHPSpec یا هر فریم ورک تست دیگری استفاده می شود. هدف اصلی آن ارائه یک فریم ورک تست دوگانه می باشد که قادر به تعریف دقیق تمام عملیاتها و تعاملات اشیا با استفاده از یک "زبان خاص دامنه" (Domain Specific Language یا DSL) است.
ویژگی های برتر Mockery عبارتند از:
- تولید انعطافپذیر اشیا ساختگی را امکان پذیر میکند تا پاسخهای از پیش تعریفشدهای را به اتصالات خاص در طول تست، ارائه دهد.
- قابلیت های ایزوله سازی تست PHPUnit را تقویت می کند.
- API انعطافپذیر برای شبیه سازی انتظارات
- امکان unit test ها با استفاده از اشیا ساختگی در حافظه، برای جلوگیری از دسترسی اجباری در سیستم های کندتر (مانند پایگاه داده ها، سیستم های فایل یا سرویس های خارجی) را امکان پذیر می کند.
- می تواند رفتارهای قطعی و غیر قطعی را شبیه سازی نماید.
6. ابزار برون بری وردپرس
تصویر(6)
ابزاری جهت تهیه خروجی از دادههای سایت وردپرسی می باشد که اطلاعات پستها، برگه ها، پست های سفارشی، نظرات، فیلدهای سفارشی، دستهها، برچسبها، کاربران و رسانهها را تحت یک فایل XML ارائه می دهد. فایل XML دارای یک فرمت خاص می باشد که می توان آن را به هر سایت وردپرسی دیگر منتقل نمود.
این ابزار برای تست کدهای PHP در افزونه های وردپرس طراحی نشده است اما می تواند بکاپی سریع از پایگاه داده وردپرس تهیه کند که از آن جهت تست و بررسی ها استفاده شود. در واقع می توانید از وردپرسی که در حال اجرا می باشد یک خروجی تهیه و جهت تست و بررسی آن را درون یک وردپرس در حال توسعه، ایمپورت یا درون ریزی نمایید.
ویژگی های برتر ابزار برون بری وردپرس عبارتند از:
- امکان تهیه خروجی از داده های وردپرس برای انجام تست ها
- امکان تهیه فایل خروجی از تمامی اطلاعات پایگاه داده
- برای ادغام و تست اجزای وردپرس مناسب است.
7. Guzzle
تصویر(7)
Guzzle یک زیر مجموعه از PHP HTTP می باشد که ارسال درخواست های HTTP و ادغام با سرویس های وب را آسان می کند. Guzzle یک ابزار جامع است که انجام تست کدهای PHP در افزونه های وردپرس، تنها یکی از قابلیت های آن می باشد. Guzzle اجرای تست های ادغامی را از طریق یک وب سرور لوکال امکان پذیر می کند. می توانید از Guzzle برای ارسال یک درخواست HTTP علیه وب سرور استفاده نمایید و سپس پاسخ را به یک unit test در PHPUnit ارسال کنید که محتوا و هدرها را بررسی و تایید کند.
ویژگی های برتر Guzzle عبارتند از:
- ساده، سریع و مطابق با پیشنهادات استاندارد PHP با نام "PSR-7" می باشد.
- تست ها را روی وردپرس واقعی انجام می دهد که قابلیت اطمینان را افزایش خواهد داد.
- برای سهولت و سرعت، می توان آن را از داخل PHPUnit اجرا نمود.
- می توان تست های ادغامی را کاملا خودکار انجام و به فرآیند یکپارچه سازی مداوم، اضافه نمود.
8. WP-CLI
تصویر(8)
WP-CLI یک رابط command-line یا "خط فرمان" برای وردپرس است که به عنوان مثال میتوانید با استفاده از آن، افزونهها را بدون مرورگر بروزرسانی نمایید. WP-CLI به طور خاص یک ابزار تست کدهای PHP در افزونه های وردپرس نیست اما یکی از قابلیت های آن می باشد. به عنوان مثال، پس از توسعه وب سرور جدید، می توانید یک اسکریپت bash (دستوراتی مرتبط با هسته و زبان برنامه نویسی Unix) که حاوی دستورات WP-CLI برای وارد کردن داده های تستی به سایت وردپرسی می باشد را اجرا نمایید. همچنین کاربرانی را با نقش ها و قابلیت های متفاوت ایجاد یا افزونه های جانبی مورد نیاز را نصب کنید.
از آنجایی که اسکریپت با دستورات WP-CLI میتواند در مخزن Git ذخیره شود، فرآیند اجرای تستهای ادغامی را میتوان به صورت خودکار یکپارچه سازی کرد:
- می توانید از ابزار برون بری وردپرس برای تولید داده های آزمایشی استفاده نمایید و آن را در مخزن Git ذخیره کنید.
- WP-CLI را برای وارد کردن داده های آزمایشی به وردپرس بکار بگیرید.
- یک unit test در PHPUnit ایجاد نمایید تا Guzzle یک درخواست HTTP را علیه وب سرور اجرا کرده و محتوای بازگشتی و هدرها را تایید کند
امکانات برتر WP-CLI عبارتند از:
- اجرای دستورات از راه دور را از طریق یک رابط خط فرمان، در وردپرس امکان پذیر می کند.
- قابل توسعه با ابزارهای دیگر می باشد.
- قابلیتهای testing stack یا "پشته آزمایشی" را افزایش میدهد.
- دسترسی به تمام فرآیندها را امکان پذیر می کند.
9. XDebug
تصویر(9)
XDebug افزونهای برای PHP می باشد که طیف وسیعی از امکانات از جمله اشکالزدایی، بهبود گزارش خطای های PHP، پروفایلسازی و تجزیه و تحلیل و تست کدهای PHP در افزونه های وردپرس را برای بهبود توسعه PHP ارائه می دهد.
XDebug کمکی در تست کد نمی کند اما نشان می دهد که مشکل دقیقا از کدام قسمت می باشد. ترکیب XDebug با PHPUnit بسیار مؤثر است. اگر یک تست ناموفق بود و نمیتوانید منشا مشکل را پیدا کنید، میتوانید از XDebug برای یافتن نقاط ضعف در کد تستی، استفاده نمایید. هنگام اجرای مجدد unit test، اسکریپت PHP در هر یک از آن نقاط ضعف، متوقف می شود و این امکان را فراهم می کند تا وضعیت فعلی اجرا را بررسی و مشکل را بیابید.
امکانات برتر XDebug عبارتند از:
- امکان ادغام با ویرایشگرهای محبوب PHP، از جمله VS Code، PHPStorm و Sublime را دارد.
- مشاهده زمان صرف شده برای فراخوانی تابع و میزان مصرف حافظه آن را امکان پذیر می کند.
- بسیار قدرتمندتر از var_dump جهت اشکال زدایی کدها می باشد.
- امکان تغییر متغیر ها را در زمان نمایش نقاط ضعف فراهم می کند.
10. PHPStan
تصویر(10)
PHPStan یک ابزار تجزیه و تحلیل استاتیک برای PHP می باشد که قبل از انجام تست، امکان یافتن خطاها و اشکالات کد را امکان پذیر می کند.
هدف PHPStan کاهش تعداد تست هایی می باشد که باید توسط توسعه دهندگان انجام گردد. این ابزار اولین ابزاری است که در "پشته آزمایشی" اجرا می شود و تا آنجا که امکان دارد اشکالات بسیار زیادی را پیدا می کند. صرفا آن دسته از اشکالاتی که از طریق تجزیه و تحلیل استاتیک قابل استنباط نیستند، مانند مواردی که منطق آن ها اشتباه می باشد، نیاز است تا از طریق unit test ها تأیید شوند.
PHPStan با بررسی تست کدهای PHP در افزونه های وردپرس و جستجو برای عدم تطابق، کار می کند. به عنوان مثال، مقدار بازگشتی از تابعی که یک عدد اعشاری را برمی گرداند، نمی تواند به پارامتر تابعی که از نوع عدد صحیح است، اختصاص داده شود. زمانی که چنین اتفاقی بیفتد، یک اشکال پنهان خواهد بود و PHPStan در حین نوشتن کد برنامه، آن را به شما هشدار می دهد.
ویژگی های برتر PHPStan عبارتند از:
- اتوماسیون و امکان ادغام در فرآیند یکپارچه سازی مداوم را ارائه می دهد.
- بسیاری از باگ های پیچیده مانند عدم مطابقت در نوع را پیدا می کند.
- کد را به صورت کامل اسکن و اشکالات را در بخش هایی از کد که به ندرت اجرا می شوند نیز پیدا می کند.
- در سطح پیچیده ای سازماندهی شده تا امکان ادغام تدریجی را فراهم نماید.
- دارای ابزارهای اضافی برای فریم ورک های محبوب و CMS های PHP، از جمله Symfony، لاراول، Doctrine، Nette و وردپرس می باشد.
نتیجه گیری
هزینهای که باگها به برنامه ها تحمیل می کنند، میتوانند بر شهرت و درآمد تاثیر منفی زیادی داشته باشند. بنابراین باید قبل از اینکه روی کاربران تأثیر منفی بگذارد، آنها را برطرف نمایید.
در برنامه های پیچیده، تقریباً غیرممکن است که 100٪ مطمئن شوید هیچ مشکلی وجود ندارد. به همین دلیل، باید فرآیندی را برای یافتن و حذف هر چه بیشتر باگ ها در طول چرخه توسعه، راه اندازی نمایید.
از طریق یک مجموعه ابزار تست خوب، می توانید رفتار غیرمنتظره برنامه خود را به حداقل برسانید. جامعه متن باز ابزارهای زیادی را برای آزمایش جنبه های مختلف یک برنامه و تست کدهای PHP در افزونه های وردپرس ایجاد و در دسترس قرار داده است که می توانید از آن ها جهت تولید یک پشته آزمایشی جامع استفاده کنید.