در پاسخ به این پرسش که چرا باید از ابزارهای اپنسورس جهت بررسی پرفورمنس یک وب اپلیکیشن استفاده کرد، میتوان گفت که مسلماً اولین دلیل رایگان بودن است. در واقع، ابزارهای پریمیوم هزینهبر هستند به ویژه زمانی که برای تست به تعداد زیادی ویرچوال یوزر احتیاج داشته باشیم. دلیل دوم هم به نوعی به دلیل اول وابسته است به این معنی که وقتی از ابزارهای اپنسورس استفاده میکنیم، نگران هزینهٔ تعداد یوزرهای اضافی نیستیم و به عبارتی شدت سنگینی تست دست خودمان است و میتوانیم به میزان دلخواه آن را افزایش یا کاهش دهیم. قابلیت کاستومایز کردن را میتوان دلیل سوم دانست چرا که با استفاده از ابزارهای اپنسورس به راحتی میتوانیم پلاگینهایی که میخواهیم را اضافه کنیم. در این پست قصد داریم تعدادی از ابزارهایی که برای تست وب اپلیکیشنها استفاده میشوند را معرفی کنیم که علاوه بر اپنسورس بودن، رایگان نیز میباشند.
JMeter
این ابزار یک نرمافزار دسکتاپ است که کاملاً با جاوا نوشته شده است که برای سنجش پرفورمنس و همچنین بررسی عملکرد اپلیکیشن تحت ریکوئستهای بالا طراحی شده است. در JMeter میتوان شرایطی را شبیهسازی کرد که لودهای سنگین بر روی سرور، نتورک و یا یک آبجکت قرار گیرد تا در این شرایط قدرت اپلیکیشن را اندازهگیری و همچنین عملکرد کلی سیستم در لودهای مختلف را تحلیل کرد.
JMeter در اصل برای تست وب اپلیکیشنها و افتیپی اپلیکیشنها بوده است اما امروزه برای تست دیتابیس سرورها و همچنین تستهای فانکشنال نیز مورد استفاده قرار میگیرد (لازم به توضیح است که فانکشنال تستینگ به بررسی عملکرد بخشی از سیستم در مواجهه با سایر سرویسها و آبجکتها گفته میشود.) که از جمله مزایای این ابزار میتوان به موارد زیر اشاره کرد:
- سبک میباشد و نصب آن آسان است.
- اپنسورس بوده و نگرانی از یافتن لایسنس نخواهید داشت.
- دارای پلاگینهای متعدد است که به راحتی میتوان با توجه به نیاز آنها را نصب کرد.
- میتوانید آن را به صورت آفلاین اجرا و آنالیز کنید.
در عین حال، یکسری نقاط ضعف هم میتوان برای این ابزار برشمرد که برخی از شاخصترین آنها عبارتند از:
- محدود به وب است و برای تست سایر اپلیکیشنها کاربرد ندارد.
- در مُد GUI مقدار قابلتوجهی مموری مصرف میکند. بهتر است زمانی که میخواهید تستی بگیرید که تعداد یوزرهای آن زیاد بوده و لود سنگینی را روی سیستم ایجاد میکند، در مُد GUI نباشید.
- سناریوهای خیلی پیچیده را به درستی نمیتوان آنالیز کرد.
- ثبت رخدادها کمی پیچیده است و باید به صورت دستی پروکسی نصب کنید.
- برای کاستومایز کردن، فقط باید جاوا کد بزنید و از این جهت ممکن است کمی محدود شوید.
Capybara
این فریمورک تحت وب بیشتر برای تستهای فانشکنال استفاده میشود که از آن طریق میتوانید نحوهٔ تعامل کاربران با اپلیکیشن را با جزئیات دقیق شبیهسازی کنید. Capybara در واقع باید مکمل یک وب درایور باشد به این صورت که هنگامی که یکی از پیجهای اپلیکیشن شما ران میشود، این ابزار سعی میکند به همراه وب درایور، یک اِلِمنت مناسب در DOM پیج شما قرار دهد تا عملیات مربوطه مثل کلیک کردن روی دکمه و یا لینک انجام شده و نتیجه را بررسی کند (لازم به توضیح است که وب درایور در واقع نقش مرورگرهای مختلف را بازی میکند تا نتیجهٔ تستها جامعتر باشد.)
شاید بتوان گفت که تنها نقطه ضعف Capybara پیچیده بودن فرایند دیباگینگ باشد اما در عین حال مزایای بسیاری دارد که برخی از مهمترین آنها عبارتند از:
- برای اپلیکیشنهایی که با روبی نوشته شده باشند نیاز به نصب ندارد.
- API هوشمندی دارد که به مرور خودش را با زبان کاربر هماهنگ میکند.
- قدرت هماهنگسازی آن بالا است و هیچگاه لازم نیست برای فرایندهای آسِنکرون به صورت دستی کاری انجام دهید.
- از DSL مخصوص به خودش برای ارتباط با وب درایور و هندل کردن مرورگرهای مختلف استفاده میکند (DSL به زبانهای خاص منظوره مثل SQL و VERILOG گفته میشود که برای آشنایی بیشتر میتوانید به آموزش DSL چیست و چرا آشنایی با آن در حوزهٔ برنامهنویسی اهمیت دارد؟ مراجعه نمایید.)
Selenium
این ابزار در واقع مجموعهٔ کاملی از ابزارهای مختلف مانند IDE ،Remote Control و ... است که از ادیتور آن بیشتر برای نوشتن اسکریپتهای Selenium استفاده میشود که از این اسکریپتها میتوان به عنوان اِکستنشن فایرفاکس استفاده کرده و تستهای مختلفی را ادیت، ذخیره، پِلیبک و یا دیباگ کرد. برخی از مزایای این ابزار عبارتند از:
- بسیار کمهزینه است.
- میتواند سازگاری اپلیکیشن را با مرورگرهای مختلف بررسی کند.
- از زبانهای مختلف پشتیبان میکند.
- فریمورکهای مختلفی برای تست دارد.
- برای تستهای واقعی به راحتی یکپارچه میشود.
- برای کاستومایز کردن دست دولوپر باز است.
- روند توسعهٔ آن تست-محور است و برای تستهای جامع انتخاب خوبی است.
در کنار مزایای فوقالذکر، برخی از نقاط ضعف این ابزار عبارتند از:
- در فرایند تست بعضاً دچار مشکلاتی میشود.
- برخی از مرورگرها را ساپورت نمیکند.
- اجازهٔ اجرای اسکریپتهایی که به صورت دستی نوشته میشوند را نمیدهد.
- پرفورمنس آن نسبتاً پایین است و بعضاً کند است.
Sahi
این ابزار اپنسورس میتواند وب اپلیکیشنها را به صورت اتوماتیک تست کند به طوری که میتوانید آن را هم به صورت رایگان و هم به صورت پریمیوم به کار گیرید. در ورژن اپنسورس میتوانید ریپورتهای HTML را در هر مرورگری ذخیره کرده، اَکشنهای کاربر را ذخیره نمایید و پِلیبک کنید و به این ترتیب تستهای اتوماتیک بسازید مضاف بر اینکه میتوان چندین پِلیبک و یا چندین اسکریپت را به صورت همزمان اجرا کرد.
در نسخهٔ پریمیوم و غیررایگان قابلیتهای اضافهتری مانند تستهای توزیعشده و ریپورتهای کاستومایزشده وجود دارد. به طور کلی، از جمله مزایای این ابزار میتوان به موارد زیر اشاره کرد:
- دارای API قوی برای خودکارسازی تستها است و میتواند سناریوهای خیلی پیچیده را اجرا کند.
- مرورگرهای مختلف را ساپورت میکند.
- نیاز به نصب هیچگونه ابزار اضافی برای تست ندارد و همهٔ تستها را از طریق کنترلر خودش انجام میدهد.
در عین حال، این ابزار از یکسری نقطه ضعف هم برخوردار است که برخی از شاخصترین آنها عبارتند از:
- در مقایسه با Selenium، فرایند نصب آن بسیار سختتر است و همچنین اینترفیس مناسبی ندارد و ممکن است کاربر را گیج کند.
- از ساپورت خیلی خوبی برخوردار نیست.
WebLOAD
این ابزار تست برای مقیاسهای بزرگ و سازمانی است که به خاطر یک ادیتور کامل، کنسول لود جنریتور و داشبورد پیشرفتهاش برای نشان دادن آمار مورد توجه دولوپرها قرار گرفته است. این فریمورک به راحتی به تیمهای DevOps و R&D اجازه میدهد تا برای تستهای پیچیده از آن استفاده کنند که این تستها عموماً باید با جاوااسکریپت نوشته شوند. به طور کلی، WebLOAD صدها تکنولوژی، از پروتکلهای وب و محصولات سازمانی گرفته تا تکنولوژیهای مرتبط با سرور و شبکه، را ساپورت میکند و از جمله مزایای این ابزار میتوان به موارد زیر اشاره کرد:
- برای افزودن اسکریپت، یک ویزارد گرافیکی در اختیار دولوپر قرار میدهد.
- تکنولوژیهای زیادی را ساپورت میکند.
- پشتیبانی مناسبی دارد.
اما برخی معایباش ممکن است آن را به گزینهٔ مناسبی برای برخی دولوپرها مبدل نکنند که عبارتند از:
- Citirix که یک نرمافزار مجازیساز است را ساپورت نمیکند.
- SAP GUI که یک نرمافزار مدیریت سازمانی است را ساپورت نمیکند.
- RDP و RTE که دو مورد از پروتکلهای شبکه است را ساپورت نمیکند.