ویرگول
ورودثبت نام
کیارش آذرنیا
کیارش آذرنیا
خواندن ۳ دقیقه·۴ سال پیش

معماری یک راهکار آزمون کارایی

مقدمه

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

  • نیاز دارید محصول خود را تحت بار کاری بسیار بالا (High Workload) در مقیاس چند میلیون تراکنش در ثانیه بیازمایید، نسخه‌ی رایگان k6 در زمان نوشتن این متن این امکان را پشتیبانی نمی‌کند. البته با خرید لایسنس ابری می‌توانید آن را همزمان روی چند ماشین استقرار داده و چنین باری را تولید کنید.
  • تاخیر صدکی ۹۹٪ دقت کافی را ندارد و شما می‌خواهید با دقت ۹۹.۹٪ زمان پاسخ (Response Time) را اندازه‌گیری کنید که چارچوب‌های یادشده هیچ‌کدام چنین دقتی ندارد. در مورد JMeter که وجود باگ چشم‌پوشی هم‌دستانه (Coordinated Omission) به طریق اولی آن را از گزینه‌های مناسب حذف می‌کند.

در شرایطی که ابزارهای آماده پاسخ‌گوی نیاز ما نیست، ناچاریم یک راهکار آزمون کارایی را از پایه پیاده‌سازی کنیم. در این صورت آشنایی با معماری یک ابزار آزمون کارایی نقطه‌ی شروع خوبی محسوب می‌شود. برای این کار قسمتی از کتاب «هنر آزمون کارایی اپلیکیشن» در ادامه آمده است.

تصویر جلد کتاب هنر آزمون کارایی اپلیکیشن
تصویر جلد کتاب هنر آزمون کارایی اپلیکیشن




معماری یک راهکار آزمون کارایی

معماری یک ابزار آزمون کارایی به طور معمول دارای این سازه‌هاست:

  • مولفه‌ی اسکریپت‌نویسی (Scripting Module)
  • مولفه‌ی مدیریت آزمون (Test Management Module)
  • مولفه‌ی تزریق بار (Load Injector Module)
  • مولفه‌ی تحلیل (Analysis Module)
  • مولفه‌های اختیاری (Optional Modules)


شمای مفهومی یک چهارچوب آزمون کارایی
شمای مفهومی یک چهارچوب آزمون کارایی

۱. مولفه‌ی اسکریپت‌نویسی (Scripting Module)

هدف این مولفه شبیه‌سازی رفتار کاربر نهایی با استفاده از کد است، حال ممکن است این شبیه‌سازی به شکل ضبط کردن فعالیت واقعی انجام گیرد یا با برنامه‌نویسی پیاده‌سازی شود. بنابراین این مولفه امکان ضبط کردن فعالیت کاربر نهایی را فراهم می‌آورد و بنا به نیاز ممکن است از پروتکل‌های میان‌افزارهای گونه‌گونی پشتیبانی کند. اجازه می‌دهد تا کد را تغییر دهیم تا مثلا با داده‌های دلخواه اجرا شود، همچنین امکان تنظیم مقیاس اندازه‌گیری زمان پاسخ را فراهم می‌آورد.

توضیح این که عبارت میان‌افزار به پروتکلی اشاره دارد که اپلیکیشن از آن برای ارتباط میان کلاینت و سرور استفاده می‌کند. مثلا برای اپلیکیشن‌های تحت وب پروتکل HTTPS به عنوان میان‌افزار مفروض است.

۲. مولفه‌ی مدیریت آزمون (Test Management Module)

امکان ایجاد و اجرای نشست‌ها (Session) و سناریوهای مختلف را که بیانگر ترکیب‌های گوناگون رفتارهای کاربران است برای آزمون کارایی فراهم می‌آورد. این نشست‌ها هر کدام یکی از اسکریپت‌های برگزیده‌ی آزمون را انتخاب کرده و بنا به پیکربندی آزمون و استفاده از مولفه‌ی تزریق بار، بار مناسب را به سرور تحت آزمون تزریق می‌کنند.

۳. مولفه‌ی تزریق بار (Load Injector Module)

بار لازم را تولید می‌کنند. این کار بنا به بار مورد نیاز، معمولا از یک یا چند ایستگاه کاری (Workstation) یا سرور تولید می‌شود. هر تزریق‌کننده‌ی بار چندین کاربر مجازی تولید می‌کند تا بتواند رفتار تعداد بسیار زیادی از کاربران را تنها با استفاده از یک یا چند ماشین مجازی یا فیزیکی شبیه‌سازی نماید. طبیعتا ظرفیت‌های ماشین‌های میزبانی‌کننده از مولفه‌ی تزریق بار مثل حافظه و پردازنده‌های آن تاثیر مستقیمی روی حداکثر باری که قابل تولید است یا حداکثر تعداد کابران مجازی همزمان که قابل شبیه‌سازی باشد، دارد.

۴. مولفه‌ی تحلیل (Analysis Module)

این مولفه نتایج جمع‌آوری شده هر بار اجرای آزمون را تحلیل می‌کند. نتیجه‌ی این تحلیل معمولا ترکیبی است از گزارش‌هایی که به نحو خودکار تولید می‌شود و نمودارهای گرافیکی قابل تنظیم و داشبوردهای مصور دسته‌بندی‌شده. همچنین ممکن است یک سطح تحلیل تخصصی‌تر نیز پیاده شود به نحوی که نتایج را دقیق‌تر بررسی کرده و موارد نگران کننده را پررنگ کند.

۵. مولفه‌های اختیاری (Optional Modules)

این مولفه‌ها بنا به نیاز برای پایش (Monitoring) سرورهای دخیل در فرایند آزمون، نظارت کردن بر شبکه و یکپارچه‌سازی با نرم‌افزارهای کمکی دیگر ممکن است استفاده شوند.

مهندسی نرم‌افزارتوسعه‌ی‌ نرم‌افزارآزمون کاراییکارایی نرم‌افزارُمعماری نرم‌افزار
یادگیرنده و مهندس نرم‌افزار
شاید از این پست‌ها خوشتان بیاید