تاریخ انتشار نسخه اصلی نوامبر 5, 2016
در پست قبل راجع به ابزارهای اتوماسیون تست برای برنامه های تحت وب نوشتم و اشاره کردم که webdriver از درایورهای مخصوص برای مرورگرهای متفاوت استفاده میکند. حالا دراین پست میخواهم درباره مرورگرهای headless و نقش آنها در Web automation توضیح بدهم. تفاوت مرورگر headless با سایر مرورگرها تنها نداشتن رابط کاربری گرافیکی یا GUI است که استفاده از آن توسط کاربر غیرحرفه ای را غیرممکن میکند. اما تمامی کارهای یک مرورگر گرافیکی مثل render کردن HTML به DOM (مهمترین اصل برای اتوماسیون وب) و تفسیر کدهای JavaScript را انجام میدهد. علاوه بر اتوماسیون وب این مرورگرها استفاده های دیگری مثل تست کارایی شبکه یا حمله های DDoS دارند که همگی درواقع برپایه تکرار ارسال درخواست http و render پاسخ هاست.
اما وقتی راجع به اتوماسیون تست وب صحبت میکنیم، این مرورگرها چه کمکی میکنند؟ مهمترین و شاید تنها مزیت آنها سرعتشان است. در این مورد مقایسه ای میان درایور PhanjomJS (یعنی GhostDriver) و درایورهای Firefox و Chrome انجام شده که نشان میدهد با اجرای تستی مشابه برروی سخت افزار واحد سرعتها به این صورت است:
سرعت اجرا در تست زمانی اهمیت پیدا میکند که Continuous Integration برای release ها و بازخوردهای سریع تنظیم شده باشد که در آینده درباره اش بیشتر مینویسم. خب، با وجود چنین مزیتی پس چرا سهم این مرورگرها در اتوماسیون مانند سایر درایورها زیاد نیست. مهمترین علل را میشود به این صورت دسته بندی کرد:
تمامی موارد بالا میتواند بکارگیری مرورگرهای headless را که توسط کاربر غیر حرفه ای استفاده نمیشود را محدود میکند. در بسیاری از سناریو ها ما میخواهیم که تجربه واقعی استفاده از برنامه تحت وب نوشته شده را در تست شبیه سازی کنیم. نگاهی به بازار نشان میدهد که Chrome، FireFox و بیشترین سهم را دارند. در نتیجه کسانی که به دنبال شبیه سازی تجربه کاربر هستند به chromedriver یا Firefoxdriver روی میاورند. ولی به هر صورت همیشه هم این نگاه در تست وجود ندارد.
در دنیای مرورگرها، headless های فراوانی وجود دارند که تنوع آنها بیشتر به دو نکته باز میگردد: 1) زبان برنامه نویسی مورد حمایت و 2) تکنولوژی rendering کد HTML و تفسیر JavaScript. در اینجا دو مرورگر را به اختصار توضیح میدهم
من شخصا از آنجایی که تا بحال نزدیکی به تجربه کاربر نهایی سیستم و نگهداری و عیب یابی تست برایم اهمیت داشته و خوشبختانه سرعت اجرای تست در محیط کارم مشکل ساز نشده است، سعی کردم از chromedriver و IEdriver استفاده کنم ولی اگر روزی لازم شد حتماً از PhantomJS استفاده میکنم ? در این ویدئو میتوانید با نحوه استفاده از آن در Python آشنا شوید.