ضبط در جیمیتر

به منظور شبیهسازی فعالیت کاربر به جای ساختن دستی سناریو مورد نظر، میتوان با استفاده از روشهای مختلف، مراحلی را که کاربر در یک وبسایت طی میکند را ضبط کرده و چارچوب سناریو تست را ایجاد کرد. همچنین در صورتی که API سامانه تحت تست در دسترس نباشد این روشها بسیار کارآمد هستند. در واقع با استفاده از این ویژگی، با کلیک بر روی هر دکمه یا رفتن به صفحات مختلف، تمامی درخواستها به راحتی ذخیره میشوند.
بنابراین با استفاده از روشهای زیر میتوان سناریوهای مورد نظر را ضبط کرد:
- استفاده از امکان Recording جیمیتر
- استفاده از افزونه Blazemeter کروم
در این مقاله به آموزش ضبط سناریو با استفاده از جیمیتر میپردازیم و برای آشنایی با ضبط با استفاده از Blazemeter میتوانید به مقاله ضبط کردن سناریوها با استفاده از افزونه Blazemeter گوگل کروم مراجعه کنید.
آشنایی کلی با عملکرد Recording جیمیتر
زمانی که از جیمیتر برای ضبط استفاده میشود، جیمیتر مانند پروکسی بین کلاینت و سرور عمل میکند. به عبارتی جیمیتر بین کلاینت و سرور قرار میگیرد و درخواستها را از سمت کلاینت دریافت کرده و به سرور ارسال میکند. در ادامه پاسخ را از سرور دریافت و به سمت کلاینت ارسال میکند و درخواستها و پاسخهای ردوبدل شده را در قالب تست اسکریپت ذخیره مینماید (در واقع مانند حمله Man-In-The-Middle است، با این تفاوت که خودتان ارتباطات خود را شنود میکنید). پس از این مرحله میتوانید براساس نیازهای خود تنظیمات و مقادیر هر درخواست را تغییر داده و تستهای خود را اجرا کنید.

پیشنیاز ضبط سناریوها توسط جیمیتر
پیش از شروع کار لازم است که نرمافزار جیمیتر بر روی سیستم شما نصب شده باشد. برای دیدن نحوه نصب جیمیتر، میتوانید به مقاله دانلود و پیکربندی جیمیتر مراجعه کنید.
در جیمیتر به منظور ایجاد سریعتر سناریوها، موارد پرکاربرد مانند ضبط کردن سناریو، در قالب Template در دسترس هستند. که در این آموزش برای ضبط کردن سناریوها از Recording Template استفاده میکنیم.
برای اضافه کردن Recording Template، در منوی اصلی جیمیتر، روی File کلیک کرده و گزینه Templates را انتخاب کنید.

سپس لیست تمام Templateها مانند شکل زیر نمایش داده میشود. Recording را یافته و روی دکمه Create کلیک کنید:

پس از ایجاد Recording Template، عناصر مورد نیاز برای ضبط کردن سناریوها مانند HTTP(S) Test Script Recorder، Recording Controller و … به Test Plan اضافه خواهند شد که در ادامه هر عنصر به طور خلاصه توضیح داده شده است:

- User Defined Variables: در این قسمت میتوانید متغیرهای مختلفی برای ذخیره داده تعریف کرده و در طراحی خود استفاده کنید.
- HTTP Request Defaults: میتوانید به صورت پیش فرض مقادیری را تعریف کنید که Http Request Controller ها از آن استفاده کنند.
- HTTP Cookie Manager: ذخیره و ارسال کوکیها
- Recording Controller: شامل درخواستهای ضبط شده
- HTTP(S) Test Script Recorder: فراهم کردن امکان ضبط کردن، تنظیمات مربوط به پروکسی و …
در فرایند ضبط کردن ارتباط بین کلاینت و سرور، نیاز است که جیمیتر خود را به عنوان سرور به مرورگر معرفی کند تا بتواند درخواستهای کلاینت را دریافت و ذخیره کند. برای برقراری ارتباط HTTPS، سرور یک certificate به مرورگر ارائه میدهد و مرورگر مواردی مانند اعتبار (توسط Certificate Authority (CA) امضا شده باشد)و تاریخ انقضای آن را بررسی میکند. در صورت معتبر بودن، ارتباط HTTPS بین کلاینت و سرور برقرار میشود. بنابراین برای ضبط کردن ارتباط HTTPS نیاز است جیمیتر به عنوان سرور certificate مربوط به خود را به مرورگر ارائه دهد. برای ایجاد این certificate روی دکمه Start در HTTP(S) Test Script Recorder کلیک کنید:

سپس دیالوگ زیر نمایش داده میشود. همانطور که در این دایالوگ مطرح شده تاریخ انقضای certificate ایجاد شده 7 روز است. پس از 7 روز باید از فایل certificate جدید استفاده کنید.

روی OK کلیک کنید. سپس فایلی با نام ApacheJMeterTemporaryRootCA.crt در پوشه bin جیمیتر ساخته میشود.

certificate تولید شده توسط جیمیتر، عموما مورد تائید مرورگرها نیست. بنابراین باید آن را به عنوان یک certificate قابل اعتماد بر روی مرورگر نصب کنیم. این مراحل در مرورگرهای مختلف ممکن است متفاوت باشد (در این مقاله از مرورگر گوگل کروم استفاده شده است.) ابتدا به بخش setting مرورگر رفته و certificate را جستجو کنید. سپس به بخش Manage Certificates رفته و فایل certificate ایجاد شده توسط جیمیتر را اضافه کنید.

سپس برای تنظیم پروکسی، به قسمت تنظیمات پروکسی رفته و مانند شکل زیر Address و Port را وارد کنید. برای پورت دقیقا همان پورتی را که در HTTP(S) Test Script Recorder جیمیتر استفاده کردید وارد کنید که در اینجا از 8888 استفاده شده است.


ضبط و اجرای سناریوها
به عنوان مثال قصد داریم سناریو دریافت لیست خودروهای شهر تهران را در سایت دیوار ضبط کنیم. بنابراین برای شروع فرایند ضبط، روی دکمه Start در HTTP(S) Test Script Recorder کلیک کرده و سپس درخواستهای مورد نظر خود (ورود به سایت دیوار، انتخاب گزینههای شهر تهران و وسایل نقلیه) را در مرورگر اجرا کنید تا توسط جیمیتر ضبط شده و به ازای هر درخواست یک HTTP Request Sampler در Recording Controller ایجاد شود. پس از اجرای سناریوها روی دکمه Stop کلیک کرده تا رکورد کردن متوقف شود.

سپس میتوانید درخواستهای ضبط شده را در قسمت Recording Controller مشاهده کنید:

اکثر اوقات نیاز است که پس از ضبط، بخشهایی را ویرایش کنید. مانند:
- گاهی اوقات درخواستهای اضافهتری ضبط میشوند که در تست تاثیری ندارند، میتوانید با توجه به تست آنها حذف کنید.
- زمان ضبط با یک نام کاربری و گذرواژه لاگین میکنید، ولی به عنوان مثال برای اجرای تست کارایی نیاز است که با چندین نام کاربری و گذرواژه لاگین کنید. بنابراین باید همه نامهای کاربری و گذرواژهها را در یک CSV file ذخیره کرده و از آن فایل در سناریوهای خود استفاده کنید.
- گاهی اوقات لازم است که بعضی از متغیرهای مورد نیاز مانند توکن برای احراز هویت و ... را از پاسخ APIها با استفاده از المنتهایی مانند JSON Extractor و … استخراج کرده و در APIهای بعدی استفاده کنید.
- گاهی نیاز است که برای ارزیابی درخواستها از
تائیدیه یا asserionاستفاده میکنیم که در مقاله «Assertion در جیمیتر چیست؟ کاربرد و انواع آن» نحوه کار با آنها بررسی شده است.
پس از اعمال تغییرات مورد نظر، تست را اجرا کرده و نتایج را با استفاده از شنودگر یا listener مناسب مشاهده کنید. که در شکل زیر از View Results Tree برای نمایش درخواستهای ارسالی به سرور و پاسخهای دریافتی از سرور استفاده کردیم.

برای آشنایی بیشتر با انواع Listenerها میتوانید به مقاله Listener و نحوه رصد نتایج تست در جیمیتر مراجعه کنید.