آشنایی با Jmeter

این ابزار یکی از حرفه ای ترین ابزارهای تست هست که سه تا از مشخصات نرم افزارهای محبوب من رو داره:

  • اول اینکه Opensource هست
  • دوم اینکه رایگان هست
  • سوم هم توی سیستم عامل های مختلف قابل نصب و اجرا هست
Jmeter چیست
Jmeter چیست


اکثر مواقعی که وب سرور راه اندازی می کنم، یک بار با Jmeter سرور رو تست می گیرم تا بدونم که چند تا کاربر همزمان میتونن سایت رو ببینند.

با Jmeter ما می تونیم پروتکل های زیاد از جمله HTTP، SMTP ، LDAP و FTP رو تست کنیم، حتی می تونیم با JDBC یک سرور دیتابیس رو تست کنیم.

لیست listener های Jmeter
لیست listener های Jmeter


اجزاء Jmeter

تصمیم گرفتم بخاطر وابستگی زیادی که قسمت های مختلف Jmeter بهم دارن، دو قسمت اصلی یعنی Test plan و thread group رو انتها معرفی کنم که مفاهیم رو بهتر متوجه بشیم.

  • Samplers

از سمپلرها برای این که ریکوئست بزنیم به سرور مقصد استفاده می کنیم ، که بالاتر توضیح دادم میتونیم ریکوئست های مختلف بزنیم.

سمپلری که برای ارسال درخواست HTTP استفاده می کنیم اسمش هم به همین نام هست HTTP Request


  • Listeners

با استفاده از Listener ها،‌نتیجه کل جوابهایی که از سرور گرفتیم رو میتونیم مشاهده کنیم.

بهمون کمک میکنه به شکل های مختلف خروجی رو ترسیم کنیم و یک گزارش خوب از سرور داشته باشیم.

انواع Listener ها
انواع Listener ها

کارآمد ترین Listener ها برای من این سه تا هستن:

- View Results Tree

- Summary Report

- Graph Results


  • Assertions

از Assertions ها برای این استفاده می کنیم که مطمئن بشیم Response برگشتی از سرور درست هست یا نه

که بر اساس همین قسمت، توی Samplers میتونیم اطلاعات دقیق تری داشته باشیم.

بیشترین استفاده رو از Response Assertion داشتم که میتونه اجزاء مختلف ریسپانس برگشتی از سرور مقصد رو چک کنه و بر اساس اون بهمون بگه که هر ریکوئست ما به سرور جواب درستی گرفته یا نه


فیلدهایی مثل Response code که وقتی Sampler ما http request باشه این Response code میشه یکی از همون http response code های معروف (۲۰۰و۴۰۴و۵۰۰و...)


یکی از دیگه از Assertion های خوبی که داریم هم Duration Assertion هست، که مدت زمانی که یک سرور پاسخ میدهد رو به عنوان فاکتور تایید صحت کارکرد استفاده می کنه

مثلا سرور API من نیاز هست حداکثر ۲ ثانیه جواب به کاربر بدهد و بیشتر از ۲ ثانیه رسما هیچ کارایی ندارد.

پس از Duration Assertion استفاده می کنم و مقدار Duration in miliseconds رو ۲۰۰۰ میلی ثانیه می دم.

تصویری از Response Assertion
تصویری از Response Assertion


  • Timer

از تایمر برای تاخیر انداختن بین Sampler ها استفاده میشه

انواع مختلفی هم داره مثل Constant timer که یک تایم ثابت بین هر ریکوئست وقفه میندازه یا Gaussian Random Timer که یک زمان شانسی برای وقفه بین هر Request در نظر میگیره

انواع تایمرها در Jmeter
انواع تایمرها در Jmeter


  • Thread group

مهمترین قسمت تست ما همین Thread group هست، که نقطه شروع تست هم محسوب می شود.

توی این قسمت میتونیم تعداد Thread ها که همون کاربرهای مجازی هستند رو تعریف کنیم، شیب اضافه شدن کاربرها و تعداد دفعاتی که تست اجرا بشه رو تعریف کنیم.

تمام Controller ها و Sampler ها باید زیر thread group باشند.

بقیه المنت ها مثل Listener ها میتونن مستقیما زیر Test Plan تعریف بشوند.


  • Test Plan

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

تنظیمات مربوط به Test Plan
تنظیمات مربوط به Test Plan


اگر توی کل تست نیاز باشه از کتابخانه ها یا متغییرهای مختلفی استفاده کنیم توی Test Plan باید اضافشون بکنیم.

یک گزینه مهم که توی Test Plan هست استفاده از حالت Functional Test mode هست، توی این حالت دیتای مربوط به ریسپانس ها و سمپلرها ذخیره میشه که از نظر پرفورمنس سرعت کمتری نسبت به حالت عادی داره.

اطلاعات کاملتر درباره تست پلن رو توی این صفحه های سایت آپاچی ببینید:

build-test-plan.html

test_plan.html



لطفا اگر چیزی جا افتاده بود یا نیازی بود چیزی رو بیشتر توضیح بدم و نظر خاصی داشتید حتما کامنت بذارید

ممنونم