معمولا وقتی میخواهیم یک راهکار آزمون کارایی (Performance Testing) راهاندازی کنیم، سراغ چارچوبهای آماده مثل JMeter و k6 میرویم. اگر نرمافزار تحت آزمون یک RESTful API باشد، همین ابزارها به خوبی پاسخگوی نیاز ما خواهد بود اما گاهی مساله سختتر میشود؛ مثلا هنگامی که سامانهی شما نیازمندی کارایی خاصی دارد که ابزارهای آمادهی آزمون کارایی به کلی یا در نسخهی رایگان خود، آن را پشتیبانی نمیکند. برای مثال شرایط زیر را در نظر بگیرید.
در شرایطی که ابزارهای آماده پاسخگوی نیاز ما نیست، ناچاریم یک راهکار آزمون کارایی را از پایه پیادهسازی کنیم. در این صورت آشنایی با معماری یک ابزار آزمون کارایی نقطهی شروع خوبی محسوب میشود. برای این کار قسمتی از کتاب «هنر آزمون کارایی اپلیکیشن» در ادامه آمده است.
معماری یک ابزار آزمون کارایی به طور معمول دارای این سازههاست:
هدف این مولفه شبیهسازی رفتار کاربر نهایی با استفاده از کد است، حال ممکن است این شبیهسازی به شکل ضبط کردن فعالیت واقعی انجام گیرد یا با برنامهنویسی پیادهسازی شود. بنابراین این مولفه امکان ضبط کردن فعالیت کاربر نهایی را فراهم میآورد و بنا به نیاز ممکن است از پروتکلهای میانافزارهای گونهگونی پشتیبانی کند. اجازه میدهد تا کد را تغییر دهیم تا مثلا با دادههای دلخواه اجرا شود، همچنین امکان تنظیم مقیاس اندازهگیری زمان پاسخ را فراهم میآورد.
توضیح این که عبارت میانافزار به پروتکلی اشاره دارد که اپلیکیشن از آن برای ارتباط میان کلاینت و سرور استفاده میکند. مثلا برای اپلیکیشنهای تحت وب پروتکل HTTPS به عنوان میانافزار مفروض است.
امکان ایجاد و اجرای نشستها (Session) و سناریوهای مختلف را که بیانگر ترکیبهای گوناگون رفتارهای کاربران است برای آزمون کارایی فراهم میآورد. این نشستها هر کدام یکی از اسکریپتهای برگزیدهی آزمون را انتخاب کرده و بنا به پیکربندی آزمون و استفاده از مولفهی تزریق بار، بار مناسب را به سرور تحت آزمون تزریق میکنند.
بار لازم را تولید میکنند. این کار بنا به بار مورد نیاز، معمولا از یک یا چند ایستگاه کاری (Workstation) یا سرور تولید میشود. هر تزریقکنندهی بار چندین کاربر مجازی تولید میکند تا بتواند رفتار تعداد بسیار زیادی از کاربران را تنها با استفاده از یک یا چند ماشین مجازی یا فیزیکی شبیهسازی نماید. طبیعتا ظرفیتهای ماشینهای میزبانیکننده از مولفهی تزریق بار مثل حافظه و پردازندههای آن تاثیر مستقیمی روی حداکثر باری که قابل تولید است یا حداکثر تعداد کابران مجازی همزمان که قابل شبیهسازی باشد، دارد.
این مولفه نتایج جمعآوری شده هر بار اجرای آزمون را تحلیل میکند. نتیجهی این تحلیل معمولا ترکیبی است از گزارشهایی که به نحو خودکار تولید میشود و نمودارهای گرافیکی قابل تنظیم و داشبوردهای مصور دستهبندیشده. همچنین ممکن است یک سطح تحلیل تخصصیتر نیز پیاده شود به نحوی که نتایج را دقیقتر بررسی کرده و موارد نگران کننده را پررنگ کند.
این مولفهها بنا به نیاز برای پایش (Monitoring) سرورهای دخیل در فرایند آزمون، نظارت کردن بر شبکه و یکپارچهسازی با نرمافزارهای کمکی دیگر ممکن است استفاده شوند.