معرفی ابزارهای اپن‌سورس جهت بررسی پرفورمنس وب اپلیکیشن‌ها

معرفی ابزارهای اپن‌سورس جهت بررسی پرفورمنس وب اپلیکیشن‌ها

در پاسخ به این سؤال که چرا بایستی از ابزارهای اپن‌سورس جهت بررسی پرفورمنس یک سایت استفاده کرد، بایستی گفت که مسلماً اولین دلیل، رایگان بودن است. در واقع، ابزارهای تجاری دارای هزینه هستند؛ به ویژه زمانی که برای تست به تعداد زیادی ویرچوال یوزر احتیاج داشته باشیم، باید هزینه‌های هنگفتی بپردازیم. دلیل دوم هم به نوعی به دلیل اول وابسته است؛ به عبارت دیگر، هنگامی که از ابزارهای اپن‌سورس استفاده می‌‌کنیم، نگران هزینهٔ تعداد یوزرهای اضافی نیستیم و به عبارتی شدت سنگینی تست دست خودمان است و می‌توانیم به میزان دلخواه آن را افزایش دهیم. قابلیت کاستومایز کردن را می‌توان دلیل سوم دانست؛ در ابزارهای اپن‌سورس به راحتی می‌توانیم پلاگین‌هایی که می‌خواهیم را اضافه کنیم و اما دلیل آخر یکپارچه بودن آن با سیستم‌های اپن‌سورس و حتی تجاری دیگر است و این برای System Testing یک وب اپلیکیشن، بسیار مناسب است (در System Testing قرار است ابتدا اپلیکیشن را در یک سیستم در تعامل با سایر اپلیکیشن‌ها قرار دهیم و سپس فلوی رفتار آن را از ابتدا تا انتها بررسی کنیم تا از صحت عملکرد آن مطمئن شویم).

در ادامه قصد داریم 5 مورد از محبوب‌ترین ابزارهای اپن‌سورسی که برای تست وب اپلیکیشن‌ها استفاده می‌شوند را معرفی کنیم:

JMeter (تستر لود و پرفورمنس)
JMeter یک دستکاپ اپلیکیشن ۱۰۰٪ نوشته شده با جاوا است که برای اندازه‌گیری پرفورمنس و همچنین بررسی عملکرد اپلیکیشن در لودهای بالا طراحی شده است. برای تست پرفورمنس، قابلیت استفادهٔ هم‌زمان از ریسورس‌های استاتیک و داینامیک (مانند فایل‌ها، جاوا سرولت‌ها، اسکریپت‌ها، دیتابیس، اف‌تی‌پی سرور و ...) را خواهید داشت.

در JMeter می‌توان شرایطی را شبیه‌سازی کرد که لودهای سنگین بر روی سرور، نتورک و یا یک آبجکت قرار داد تا در این شرایط قدرت اپلیکیشن را اندازه‌گیری کرد و همچنین عملکرد کلی سیستم در لودهای مختلف را تحلیل کرد.

JMeter در اصل برای تست وب اپلیکیشن‌ها و اف‌تی‌پی اپلیکیشن‌ها بوده است اما امروزه برای تست دیتابیس سرورها و همچنین تست‌های فانکشنال نیز مورد استفاده قرار می‌گیرد (لازم به توضیح است که فانکشنال تستینگ به بررسی عملکرد بخشی از سیستم در مواجهه با سایر سرویس‌ها و آبجکت‌ها گفته می‌شود. این بخش از سیستم لزوماً یک متد نیست بلکه می‌تواند شامل مجموعه‌ای از متدها باشد).

مزایای JMeter
- بسیار سبک همراه با نصب آسان است.
- اپن‌سورس بوده و نگرانی از یافتن لایسنس ندارید.
- دارای پلاگین‌های متعدد است که به راحتی می‌توان با توجه به نیاز آنها را نصب کرد.
- می‌توانید آن را به صورت آفلاین اجرا و آنالیز کنید.

معایب JMeter
- محدود به وب است و برای تست سایر اپلیکیشن‌ها کاربرد ندارد.
- در مُد GUI، مقدار قابل‌توجهی مموری مصرف می‌کند. بهتر است زمانی که می‌خواهید تستی بگیرید که تعداد یوزرهای آن زیاد بوده و لود سنگینی را روی سیستم ایجاد می‌کند، در مُد GUI نباشید.
- سناریوهای خیلی پیچیده را به درستی نمی‌توان آنالیز کرد.
- ثبت رخدادها کمی پیچیده است و باید به صورت دستی پروکسی نصب کنید.
- برای کاستومایز کردن، فقط باید جاوا کد بزنید و از این جهت ممکن است کمی محدود شوید.

Capybara (فریمورکی قابل قبول برای وب اپلیکیشن‌ها)
Capybara یک فریمورک تحت وب است که بیشتر برای تست‌های فانشکنال استفاده می‌شود. در این فریمورک می‌توانید نحوهٔ تعامل کاربران با اپلیکیشن را با جزئیات دقیق شبیه‌سازی کنید.  Capybara در واقع باید مکمل یک وب درایور باشد به این صورت که هنگامی که یکی از پیج‌های اپلیکیشن شما ران می‌شود، Capybara سعی می‌کند به همراه وب درایور، یک اِلِمنت مناسب در DOM پیج شما قرار دهد تا عملیات مربوطه -مثل کلیک کردن روی دکمه و یا لینک- انجام شده و نتیجه را بررسی کند (لازم به توضیح است که وب درایور در واقع نقش مرورگرهای مختلف را بازی می‌کند تا نتیجهٔ تست‌ها جامع‌تر باشد. DOM مخفف Document Object Model برای مدل‌سازی صفحات HTML به منظور دستیابی بهتر به عناصر داخلی آن به کار می‌رود).

مزایای Capybara
- برای اپلیکیشن‌هایی که با روبی نوشته شده باشند نیاز به نصب ندارد و به اصطلاح Out Of The Box است (Out Of The Box به معنای آماده به کار بوده و یکی از فیچرهای هر نرم‌افزار کاربردی به شمار می‌رود).
- API هوشمندی دارد که به مرور خودش را با زبان کاربر هماهنگ می‌کند.
- قدرت هماهنگ‌سازی (Synchronization) آن بالا است و هیچ‌گاه لازم نیست برای فرایندهای Asynchronous (نامتقارن) به صورت دستی کاری انجام دهید.
- از DSL مخصوص به خودش برای ارتباط با وب درایور و هندل کردن مرورگرهای مختلف استفاده می‌کند. ضمناً DSL آن بسیار راحت و کاربرپسند است (DSL به زبان‌های خاص منظوره مثل SQL ،VERILOG و ... گفته می‌شود. برای آشنایی بیشتر، به آموزش DSL چیست و چرا آشنایی با آن در حوزهٔ برنامه‌نویسی اهمیت دارد؟ مراجعه نمایید).

معایب Capybara
- تنها نقطه ضعف آن پیچیده بودن فرایند دیباگینگ آن است که آن هم به خاطر اضافه کردن یک لایه به فرایند واقعی اجرا به وجود می‌آید.

Selenium (تستر وب اپلیکیشن‌ها)
Selenium در واقع مجموعهٔ کاملی از ابزارهای مختلف مانند IDE ،Remote Control و ... است. از IDE آن بیشتر برای نوشتن اسکریپت‌های Selenium استفاده می‌شود که از این اسکریپت‌ها می‌توان به عنوان اکستنشن فایرفاکس استفاده کرده و تست‌های مختلفی را ادیت، ذخیره، پِلی‌بک و یا دیباگ کرد.

مزایای Selenium
- بسیار کم هزینه است.
- می‌تواند سازگاری اپلیکیشن را با مرورگرهای مختلف بررسی کند.
- از زبان‌های مختلف پشتیبان می‌کند.
- فریمورک‌های مختلفی برای تست دارد.
- برای تست‌های واقعی به راحتی یکپارچه می‌شود.
- برای کاستومایز دست شما باز است.
- روند توسعهٔ آن تست-محور است.
- برای تست‌های جامع انتخاب خوبی است.

معایب Selenium
- در فرایند تست بعضاً دچار مشکلاتی می‌شود.
- هنوز برخی مشکلات لوکیتورهای آن رفع نشده است (لوکیترها برای دسترسی به اِلِمنت‌های یک صفحهٔ HTML استفاده می‌شوند).
- برخی از مرورگرها را ساپورت نمی‌کند.
- اجازهٔ اجرای اسکریپت‌هایی که به صورت دستی نوشته می‌شوند را نمی‌دهد.
- پرفورمنس آن نسبتاً پایین است و دچار کندی می‌شود.

Sahi (ابزاری برای تست‌های اتوماتیک)
Sahi یکی از ابزارهایی است که به صورت اتوماتیک می‌تواند وب اپلیکیشن‌ها را تست کند. این فریمورک را می‌توانید هم به صورت اپن‌سورس و هم به صورت ورژن‌های اختصاصی به کار گیرید. در ورژن اپن‌سورس شما می‌توانید ریپورت‌های HTML را در هر مرورگری ذخیره کنید؛ می‌توانید اکشن‌های کاربر را ذخیره کرده و پِلی‌بک کنید و به این ترتیب تست‌های اتوماتیک بسازید؛ همچنین می‌توان چندین پِلی‌بک و یا چندین اسکریپت را به صورت هم‌زمان در آن اجرا کرد.

در نسخهٔ Pro، قابلیت‌های اضافه‌تری مانند تست‌های توزیع شده و ریپورت‌های کاستومایز شده وجود دارد. Sahi به صورت یک پروکسی سرور هندلرهای جاوااسکریپت را به صفحاتی که فراخوانی (Call) می‌شوند اصطلاحاً اینجِکت می‌کند.

مزایای Sahi
- دارای API قوی برای اتوماتیک کردن تست‌ها است و می‌تواند سناریوهای خیلی پیچیده را اجرا کند.
- مرورگرهای مختلف را ساپورت می‌کند.
- نیاز به نصب هیچ‌گونه ابزار اضافی برای تست ندارد و همهٔ تست‌ها را از طریق کنترلر خودش انجام می‌دهد.

معایب Sahi
- در مقایسه با Selenium، فرایند نصب آن بسیار سخت‌تر است و همچنین اینترفیس مناسبی ندارد و کاربر را گیج می‌کند.
- به اندازهٔ Selenium محبوب و پراستفاده نیست و به همین دلیل از پشتیبانی ضعیف‌تری برخوردار است.

WebLOAD (بهترین جایگزین برای لودرانر)
WebLOAD یک ابزار تست برای مقیاس‌های بزرگ و سازمانی است که به خاطر IDE کامل، کنسول لود جنریتور و داشبورد پیشرفته‌اش (برای نشان دادن آمار)، مورد توجه قرار گرفته است. این فریمورک به راحتی به تیم‌های دوآپس و تحقیق و توسعه (R&D) اجازه می‌دهد که برای تست‌های پیچیده از آن استفاده کنند که این تست‌ها عموماً باید با جاوااسکریپت نوشته شوند (برای آشنایی بیشتر با مفهوم دوآپس، به مقالهٔ دوآپس (DevOps) چیست؟ مراجعه نمایید). به طور کلی، WebLOAD صدها تکنولوژی از پروتکل‌های وب و محصولات سازمانی گرفته تا تکنولوژی‌های مرتبط با سرور و شبکه را ساپورت می‌کند.

مزایای WebLOAD
- باید از نیتیو جاوااسکریپت برای نوشتن اسکریپت در آن استفاده کرد (در کدنویسی نیتیو، از لایبرری‌هایی مثل جی‌کوئری و ... استفاده نمی‌شود).
- برای افزودن اسکریپت، یک ویزارد گرافیکی در اختیار شما قرار می‌دهد.
- تکنولوژی‌های زیادی را ساپورت می‌کند.
- پشتیبانی مناسبی دارد.

معایب WebLOAD
- Citirix (یک نرم‌افزار مجازی‌ساز) را ساپورت نمی‌کند.
- SAP GUI (یک نرم‌افزار مدیریت سازمانی) را ساپورت نمی‌کند.
- RDP و RTE (دو تا از پروتکل‌های شبکه) را ساپورت نمی‌کند.

 آیا به غیر از ابزارهای فوق، ابزار اپن‌سورس دیگری را می‌شناسید که برای تست اپلیکیشن‌های تحت وب کاربرد داشته باشد؟

منبع


محمد طاهری