Apache Jmeter؛ ابزاری برای تست بار و تست فشار

 

Apache Jmeter

 

آپاچی جی‌متر (Apache Jmeter)، ابزاری متن‌باز و رایگان است که نخستین بار توسط استفانو مازوچی (Stefano Mazzocchi) به‌عنوان یکی از اعضای بنیاد نرم‌افزار آپاچی (Apache Software Foundation) با هدف تست نرم‌افزار طراحی شد. با استفاده از این ابزار، می‌توان عملکرد یک نرم‌افزار وب را تجزیه و تحلیل کرد و رفتار آن را در شرایط مختلف مورد سنجش قرار داد. امروزه از این نرم‌افزار در دسته‌های مختلفی از مبحث تست نظیر: تست بار (Load Testing)، تست عملکرد (Functional Testing)، تست فشار (Stress Testing) و ... استفاده شده و امکانات گسترده آن، جنبه‌های مختلفی از فرایند تست یک نرم‌افزار یا اپلیکیشن وب را تحت پوشش قرار می‌دهد.

شمار زیادی از کارشناسان فعال در زمینه تست نرم‌افزار، حاضر به پذیرش نقش مهم و پررنگ ابزارهای تست در کنترل کیفیت یک محصول نرم‌افزاری نیستند. به عقیده این دسته از افراد، بهترین راهکار موجود برای تست رفتار یک نرم‌افزار استفاده واقعی از آن بوده و نتایج یک آزمون تست به کمک ابزار چندان قابل استناد نیست. اما این ادعا تا چه اندازه می‌تواند صحیح باشد؟ سناریویی را در نظر بگیرید که مدیر بخش از شما می‌خواهد تست کارایی وب‌سایت گوگل را به ازای درخواست همزمان تعداد صد کاربر مورد سنجش قرار داده و نتیجه را به وی ارائه کنید. برای اجرای این سناریو، دو راهکار پیش روی شماست:

  1. صد کاربر متخصص را جمع‌آوری کرده و یک سیستم کامپیوتری متصل به شبکه اینترنت را در اختیار هرکدام از آنان قرار دهید. در ادامه، زمان‌بندی دقیقی را برای اجرای دستور به‌طور همزمان از سوی افراد تنظیم کنید.
  2. از یک ابزار تست استفاده کنید!

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

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

تست بار (Load Testing): آزمونی است که از آن برای سنجش عملکرد یک سیستم در برابر تعداد مشخصی از درخواست‌های همزمان استفاده می‌شود. درصورتی‌که نرم‌افزاری بتواند تست بار را با موفقیت پشت سر بگذارد، می‌توان اطمینان حاصل کرد که محصول نرم‌افزاری قادر است در برابر حجم مشخصی از ترافیک درخواست‌ها، رفتار قابل‌قبولی از خود نشان داده و دچار افت سرعت محسوس نشود.

تست فشار (Stress Testing): در سناریوی این آزمون، تعداد کاربران و درخواست‌های همزمان به حداکثر ظرفیت سیستم افزایش پیدا کرده و گاهی تا نقطه شکست نیز ادامه پیدا می‌کند. در واقع زمانی که تست بار به ازای تعداد بیشتری از کاربران انجام شود، منجر به وقوع تست فشار می‌شود. در این حالت، ابزار تست سعی می‌کند که سیستم را در یک حالت ناتوانی بالقوه قرار دهد تا رفتار آن در راستای بازیابی و بهبود ظرفیت مورد سنجش قرار گیرد. 

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

آپاچی جی‌متر به‌عنوان یک ابزار تست قدرتمند در این زمینه، امکانات متعددی دارد که در زیر به آن‌ها اشاره می‌کنیم:

 

نقاط قوت:

  • لایسنز متن‌باز: JMeter کاملا رایگان است و از طرفی توسعه‌دهندگان نیز می‌توانند از سورس کد این نرم‌افزار برای توسعه استفاده کنند.
  • رابط گرافیکی کاربر پسند: JMeter به‌گونه‌ای طراحی شده که یادگیری آن تا حد ممکن ساده و سریع باشد.
  • عدم وابستگی به سیستم‌عامل: JMeter یک اپلیکیشن دسک‌تاپ جاوا است. بنابراین، می‌توان آن را روی هر نوع پلتفرم به اجرا درآورد.
  • تست چند کاربره: JMeter قادر است چندین تابع در گروه‌های مختلف را به‌طور همزمان به اجرا درآورد و از این حیث، کارایی بسیار مناسبی را از خود نمایش دهد.
  • گزارشات بصری: نتایج هر آزمون در نرم‌افزار را می‌توان روی نمودار، جداول و یا گزارشات نوشتاری مشاهده کرد.
  • نصب و راه‌اندازی آسان: تنها با نصب محیط اجرایی جاوا (Java Runtime Environment) روی سیستم، می‌توان این ابزار را اجرا و از امکانات آن بهره‌مند شد.
  • انعطاف‌پذیری بالا: در محیط این برنامه، کاربر می‌تواند تست دلخواه خود را طراحی کرده و از افزونه‌های موجود نیز برای گسترش ابعاد آزمون‌ها بهره ببرد.
  • سازگاری استراتژی‌های مختلف تست: آزمون‌های طراحی شده در این نرم‌افزار، هریک برای هدف خاصی طراحی می‌شوند. به‌عنوان مثال، یک آزمون برای سنجش عملکرد و آزمونی دیگر برای سنجش بار، فشار یا ... مورد استفاده قرار می‌گیرد.
  • همزمانی: JMeter را می‌توان به‌عنوان راهکاری قابل‌اطمینان برای آزمون‌های همزمانی و چندکاربره به‌طور همزمان مورد استفاده قرار داد.
  • پشتیبانی از پروتکل‌های مختلف شبکه: JMeter علاوه بر فراهم‌سازی امکان تست وب اپلیکیشن، برای ارزیابی کارایی پایگاه‌داده در شبکه نیز مورد استفاده قرار می‌گیرد؛ چراکه این برنامه از انواع پروتکل‌های HTTP/JDBC/LDAP/SOAP/JMS/FTP به‌طور کامل پشتیبانی می‌کند.
  • امکان رکورد و اجرای آزمون‌ها به‌صورت خودکار: JMeter قادر است فعالیت کاربر در مرورگر وب را ضبط کرده و مراحل انجام شده را عینا و به تعداد مشخص اجرا کند. این قابلیت، غالبا تحت عنوان ماکرو (Macro) شناخته شده و مورد استفاده قرار می‌گیرد.
  • تست اسکریپت: JMeter با ابزار بین شل (Bean Shell) و سلنیوم (Selenium) سازگاری داشته و می‌توان از این ابزار برای اجرای تست اسکریپت‌های مذکور استفاده نمود.

نقاط ضعف:

  • مصرف حافظه: نرم‌افزار JMeter قادر است بار سنگینی از کاربران و درخواست‌های متعدد آن‌ها را شبیه‌سازی کند. همین امر، در برخی سناریوها منجر به مصرف بیش از اندازه حافظه رم و افت محسوس سرعت سیستم شود.
  • محدودیت به اپلیکیشن‌های وب: JMeter یک ابزار تست برجسته منحصر به اپلیکیشن‌های وب است و امکان استفاده از آن برای تست برنامه‌های دسک‌تاپ وجود ندارد.
  • عدم پشتیبانی از جاوا اسکریپت (JavaScript) و ای‌جکس (Ajax): از آنجایی که JMeter یک مرورگر وب نیست، از جاوا اسکریپت و ای‌جکس پشتیبانی نمی‌کند. محدودیت در سازگاری با این تکنولوژی‌ها، کاهش دقت تست را در پی خواهد داشت.

 

ترجمه و گردآوری: آرش صابری

{{ message_need_to_login }}
{{language.message_not_empty}}
{{count_of_comments}} 
{{massage_and_class_chat.message}}
{{massage_and_class_tariff.message}}