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

Listenerهای متنوعی در پکیج جیمیتر وجود دارند و همراه جیمیتر نصب شدهاند. برخی از پرکاربردترین آنها عبارتند از:
در جیمیتر listenerهای دیگری مانند JSR223 Listener و BeanShell Listener وجود دارند که میتوان با اسکریپت نویسی نتایج استخراج شده را پردازش کرد و بر اساس نیاز خود یک listener شخصی شده ساخت.
میتوان listenerها را به کامپوننتهای مختلفی اضافه کرد. در نتیجه فقط نتایج بخشهایی که در حوزه آنها قرار دارند را نمایش میدهند. برای فهم بهتر این موضوع مثال زیر در جیمیتر را در نظر بگیرید.

در شکل بالا، سه listener در حوزههای مختلف تعریف شدند؛ بنابراین هر کدام نتایج و دادههای مختلفی نمایش میدهند:
بنابراین listener میتواند بر اساس جایگاه خود موارد مختلفی را جمع آوری کرده و نشان دهد. به عبارتی listenerها نتایج را از عناصر هم سطح خود و سطوح داخلی جمع آوری کرده و نمایش میدهند. به همین خاطر، توصیه میشود که listener در سطح تست پلن تعریف شود تا نتیجه همه thread groupها و عناصر داخلی آنها را بتوان جمع آوری و ذخیره کرد.
listenerها را میتوان به عناصر زیر اضافه کرد:
در نظر داشته باشید که هیچ عنصری را نمیتوان به listener اضافه کرد، بنابراین فرزندی نخواهد داشت.
برای اضافه کردن یک listener در جیمیتر، با توجه به نیاز خود روی Test Plan، Thread Group، Samplers و یا … کلیک راست کنید و از منوی باز شده گزینه listener را انتخاب کرده و در نهایت listenerهای مورد نیاز خود را اضافه کنید.

در این بخش با ذکر یک مثال به بررسی انواع listenerهای مختلف و کاربرد آنها در جیمیتر میپردازیم. در این مثال سعی داریم درخواستهای زیر را اجرا کرده و نتایج را مشاهده کنیم:


View Results Tree یکی از مهمترین و پرکاربردترین listenerهایی است که در جیمیتر استفاده میشود. این listener درخواستها و پاسخهای آنها را به صورت درخت نمایش میدهد. در واقع View Results Tree درخواست ارسالی به سمت سرور، پاسخ دریافتی از سرور، headerها و به طور کلی یک ارزیابی از API را نمایش میدهد.
با استفاده از قسمت drop down میتوان پاسخ API را در قالب فرمتهای زیر مشاهده کرد:

در View Results Tree، اگر درخواست به درستی ارسال نشود و یا پاسخ دریافتی با پاسخ مورد انتظار ما متفاوت باشد با رنگ قرمز و در غیر این صورت با رنگ سبز مشخص میشود:

در تصویر بالا، درخواست اول به درستی اجرا شده (رنگ سبز) و برای درخواست دوم خطای " 404 Not Found" دریافت شده است که با رنگ قرمز نمایش داده شده است.
همچنین این listener شامل تبهای زیر است:



میتوانید نتیجه تست شامل مواردی مانند URL، Response Code، Response Message و … را در یک فایل ذخیره کنید. با کلیک روی Browse… فایلی را که میخواهید نتایج تست روی آن ذخیره شوند را انتخاب کنید. سپس مشخص کنید که میخواهید خطاها و یا نتایج درخواستهای با اجرای موفق را ذخیره کنید. همچنین با استفاده از دکمه Configure میتوانید موارد بیشتری را انتخاب کنید که در فایل مورد نظر ذخیره شوند:

مزیت:
مزیت این listener این است که میتوانیم با استفاده از آن همزمان جزئیات درخواست ارسال شده و پاسخ دریافت شده را مشاهده کنیم که این باعث میشود هر گاه تستی به درستی اجرا نشد، علت آن را پیدا کنیم.
عیب:
این listener برای تستهای load/stress که چندین کاربر همزمان سناریوها را اجرا میکنند مناسب نیست. در واقع این listener حافظه و CPU بسیاری را مصرف میکند زیرا همه نتایج را در حافظه اصلی نگه میدارد.
بنابراین این listener برای دیباگ کردن مناسب است، که با استفاده از آن میتوان مطمئن شد که درخواست درستی به سمت سرور ارسال شده و پاسخ درستی نیز از سمت سرور دریافت شده است. بنابراین در اجرای نهایی باید این listener را حذف یا غیرفعال کرد.
با استفاده از save response to a file میتوان به راحتی نتایج تست را در یک یا چندین فایل ذخیره کرد. طبق شکل زیر، میتوانید تنظیمات مربوطه را انجام دهید تا فقط نتایج مورد انتظار شما در فایل ذخیره شود:
برای درک بهتر به شکلهای زیر توجه کنید:

اگر در قسمت Filename prefix مسیر ذخیره فایل را مشخص نکنید و تنها پیشوند نام فایلها را وارد کنید، فایلها در دایرکتوری bin جیمیتر ذخیره خواهند شد. در این جا مسیر ذخیره فایلها را مشخص کردیم و طبق شکل زیر در همین مسیر ذخیره شدند:

همانطور که پیشتر گفتیم، در مثال این آموزش 2 API داریم؛ بنابراین پس از اجرا، طبق تنظیماتی که در بالا انجام دادیم، برای هر درخواست یک فایل مجزا ایجاد شده که حاوی نتیجه اجرای این درخواستهاست.
همچنین در تنظیمات این listener گزینههای Don’t add number to prefix و Don’t add content type suffix را تیک نزده ایم. بنابراین همانطور که در شکل بالا مشخص است، در ادامه پیشوند اسم فایل، عدد و نوع محتوای فایل را هم داریم.
اگر گزینه Add timestamp را انتخاب کرده باشید، تاریخ لحظه اجرای درخواستها را هم در ادامه پیشوند اسم فایلها خواهید داشت:

سپس میتوانید این فایلها را با استفاده از notepad++، مرورگر و … باز کنید و محتوای آنها را مشاهده و استفاده کنید:

Summary Report نتایج مورد نیاز برای تجزیه و تحلیل تست را در قالب جدول نمایش میدهد. اطلاعاتی مانند:

Aggregate Report همانند Summary Report نتایج را در قالب جدول نمایش میدهد. با این تفاوت که حافظه مصرفی این Listener از Summary Report بیشتر است، زیرا یک کپی از هر نمونه را در حافظه ذخیره میکند. بنابراین توصیه میشود برای تست کارایی از Aggregate Report استفاده نشود.
همانطور که در شکل زیر مشاهده میکنید، aggregate report اطلاعات زیر را نمایش میدهد:

معمولا از median به عنوان میانه زمان پاسخ و از 99 یا 95 درصد به عنوان بیشینه زمان پاسخ در نتایج تستهای کارایی استفاده میشود.
در این listener هم مانند View Result Tree میتوان نتایج را در یک فایل ذخیره کرد.
listenerهای دیگری نیز طراحی شدهاند که در پکیج اصلی خود جیمیتر وجود ندارند و میتوانید آنها را به راحتی به جیمیتر اضافه و استفاده کنید. پلاگینهایی مانند: