بررسی عملکرد API با ابزار JMeter
۲۲ اردیبهشت ۱۴۰۰
Apache JMeter یک ابزار است که با زبان برنامهنویسی Java توسعه داده شده و بهمنظور load testing از آن استفاده میشود بنابراین شما میتوانید تستهای خود را بر روی هر سیستمعاملی که از زبان Java پشتیبانی میکند، اجرا کنید. همچنین این ابزار بهصورت multithread اجرا میشود و قادر است تعداد زیادی کاربر مجازی را شبیهسازی کند و با پیکربندی این ابزار بهصورت distributed میتوانید عملکرد نرمافزار را در مقیاسهای مختلفی اندازهگیری کنید.
حال در ادامه این مقاله به شما آموزش میدهیم که چگونه عملکرد APIهای خود را با استفاده از JMeter مورد بررسی و آزمایش قرار دهید.
نصب ابزار JMeter
قبل از نصب ابزار JMeter باید مطمئن شوید که Java بر روی سیستم شما نصب شده باشد:
java -version
در مرحلهی بعد باید وارد صفحهی دانلود ابزار JMeter شوید و آخرین نسخهی باینری آن را بهصورت فایل zip
یا tgz
دانلود کنید. پس از اتمام بارگیری فایل باینری نرمافزار باید آن را در مسیر دلخواه خود extract کنید و با وارد شدن به پوشهی bin
این نرمافزار فایلهای مختلفی را مشاهده خواهید کرد که برای اجرا این برنامه در سیستم عامل ویندوز کافی است فایل jmeter.bat
را اجرا کنید تا ابزار JMeter اجرا شود.
درک مفاهیم اولیه برای کار با ابزار JMeter
بهتر است قبل از شروع کار با ابزار JMeter با برخی اصطلاحها آشنا شویم.
Test Plan
هر آنچه که میخواهید انجام دهید را باید در Test Plan ذخیره کنید. برای مثال میتوان به کامپوننتهای Thread Group، Pre-processor، Post-processor، assertion و listerner اشاره کرد. همچنین توجه داشته باشید که هر Test Plan میتواند شامل چندین Thread Group باشد و همهی آنها میتوانند بهطور پیشفرض اجرا شوند.
Thread Groups
پس از Test Plan باید به پیکربندی Thread Group بپردازیم. Samplerها که برای load testing از آنها استفاده میشود باید در Thread Group قرار بگیرند. همچنین علاوهبر قرار دادن Listenerها در Test Plan میتوانید آنها را در Thread Group قرار دهید زیرا اگر Listenerهای شما در Test Plan قرار بگیرند بر روی تمام Thread Groupها اعمال خواهند شد اما شما میتوانید Listenerهای خاصتر را فقط در Thread Group مربوطه قرار دهید.
Controllers
دو نوع Controller وجود دارد. Sampler Controllers درخواستهای HTTP، FTP، JDBC، LDAP و … را به سرور ارسال میکنند و در Logic Controllers منطق Controller تنظیم میشود.
Listeners
Listenerها کامپوننتهایی هستند که میتوانند نتایج را جمعآوری کرده و گزارشها را نمایش دهند. همچنین امکان ذخیرهسازی دادههای جمعآوری شده در فرمتهای CSV یا XML وجود دارد.
ایجاد و پیکربندی Thread Group
برای ارسال دو درخواست که یکی از آنها یک Task جدید به برنامه اضافه میکند و دیگری Taskها را نمایش میدهد باید در Test Plan فعلی یک Thread Group اضافه کنیم.
پس از ایجاد یک Thread Group جدید میتوانید آن را متناسب با نیاز خود پیکربندی کنید. برای مثال ما میخواهیم مقدار Number of Threads (users)
را به ۱۰ و مقدار Ramp-up period (seconds)
را به ۵ تغییر دهیم. علاوهبراین گزینهی infinite
را در بخش Loop Count
فعال میکنیم.
اضافه کردن HTTP Request به Thread Group
در این بخش میخواهیم دو HTTP Request که یکی از آنها برای ایجاد کردن Task جدید و دیگری که برای نمایش تمام Taskها استفاده میشود را به Thread Group اضافه کنیم.
برای پیکربندی HTTP Request اول که تمام Taskها را به ما نشان میدهد به شکل زیر عمل میکنیم.
مقدار protocol
را برابر با http
قرار میدهیم و در قدم بعد باید Server Name or IP
و Port Number
را براساس آدرس API خود پیکربندی کنیم. برای نمایش Taskها اگر برنامهی شما بهصورت استاندارد نوشته شده باشد باید از متد GET
استفاده کنید و مقدار path
نیز بر اساس Routeهای موجود در برنامه باید آدرسدهی شود.
برای HTTP Request دوم که برای ما یک Task جدید ایجاد میکند باید یک HTTP Request جدید به Thread Group اضافه و پیکربندی کنیم.
در نهایت Listenerهای مورد نیاز را برای ایجاد گزارشها به Thread Group فعلی اضافه خواهیم کرد.
اجرای Test Plan
برای اجرا و متوقف کردن Test Plan ایجاد شده میتوانید از دکمههای مشخص شده در تصویر زیر استفاده کنید.
درنهایت پس از اجرای Test Plan با باز کردن Summary Report که یک Listener است میتوانید گزارشهای مربوطه را مشاهده کنید.
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
vanenshi