تست بار (Load Testing) چیست؟

آیا از اهمیت و نحوه انجام آن اطلاع دارید؟

تست بار یک نوع تست غیر عملکردی می باشد. یعنی در این فرایند صحت عملکرد سامانه تست نمی شود. تست بار نوعی از تست نرم افزاری است که برای مشاهده واکنش یک برنامه تحت یک حجم بارمشخص و مورد انتظار صورت می گیرد.  تست بار برای تعیین واکنش سیستم در دو حالت عادی و غیر معمول انجام می شود.

همچنین تست بار یکی از انواع مختلف تست عملکرد است که عملکرد سیستم را در حالت Real-Time مشخص می کند. این مورد در زمانی که چند کاربر به طور همزمان قصد دسترسی یا استفاده از برنامه را داشته باشند، کاربرد دارد.

 

تست بار برای بررسی موارد زیر مورد استفاده قرار می گیرد:

  • آیا زیرساخت های مورد استفاده برای برنامه مناسب است یا خیر؟
  • آیا عملکرد برنامه در زمانی که بیشترین استفاده از آن صورت می‌گیرد، مناسب است یا خیر؟
  • تعیین اینکه برنامه پذیرای چند کاربر همزمان می باشد و مقیاس مورد نظر برنامه با توجه به منابع سخت افزاری، ظرفیت شبکه و عوامل دیگر به منظور دسترسی تعداد کاربر بیشتر به چه صورت است.
  • کمک به شناسایی حداکثر ظرفیت عملیاتی یک برنامه در مقابل موانع و عناصر مخرب. برای مثال اگر تعداد کاربران افزایش یابد، چه مقدار از CPU و حافظه استفاده خواهد شد.
  • تست بار اکثرا در محیط‌های آزمایشگاهی و کنترل شده انجام می شود تا از طریق آن قابلیت‌های سیستم‌های مختلف را مقایسه کنند و همچنین قابلیت‌های یک سیستم مستقل را به طور مشخص ارزیابی کنند.
  • تست بار یک محیط واقعی را برای برنامه مورد نظر شبیه‌سازی می‌کند. از این طریق می‌توان واکنش برنامه را در مقابل چندین کاربر که به طور همزمان وارد می شوند، مورد بررسی قرار داد.
  • تست بار با تست استرس متفاوت است بدین صورت که تست بار برای سنجش اینکه کدام سیستم توانایی حجم بار بالایی دارد و همچنین این که از کدام منابع سخت افزاری یا نرم افزاری استفاده بیشتری می کند مورد استفاده قرار می گیرد .
  • هدف اصلی از تست بار، بیشترین مقداری است که یک سیستم می‌تواند آن را مدیریت کند.
  • تست بار در دسته بندی تست‌های غیر عملیاتی قرار می گیرد. اساسا، این تست برای ارزیابی عملکرد برنامه های Client/Server و برنامه های تحت وب استفاده می شود.
  • در بسیاری از سازمان ها، تست بار در مرحله ای که SDLC (چرخه ی حیات تولید نرم افزار) تمام می شود، شروع خواهد شد. همچنین بعضی از سازمان‌ها هم تست بار را انجام نمی دهند که در این صورت ممکن است مشکلاتی در عملکرد برنامه پیش آید که در نهایت منجر به کاهش درآمد خواهد شد.

 

تست بار شامل موارد زیر می‌شود:

  • دانلود فایل‌های حجیم از اینترنت
  • اجرای همزمان چند برنامه بر روی کامپیوتر یا سرور
  • قرار دادن چندین سند در صف پرینتر
  • ایجاد ترافیک زیاد بر روی سرور
  • خواندن و نوشتن (Read & Write) مداوم بر روی یک هارد دیسک

انواع ابزارهای تست بار:

تست بار از طریق ابزارهای تست و ارزیابی به صورت دستی انجام خواهد شد:

  • تست بار به صورت دستی:

این نوع از تست به صورت دستی انجام می شود که بار زیادی نمی تواند برای برنامه به همراه داشته باشد به نوعی برنامه را در شرایط سخت قرار نمی دهد. همچنین، این نوع تست بار بسیار گران می باشد و به نیروی انسانی زیادی نیاز دارد.

  • ابزارهای تست بار در داخل سازمان توسعه پیدا کنند:

سازمان می تواند ابزار مورد نیاز خود جهت تست بار برنامه را توسعه دهد و از آن استفاده کند.

  • ابزارهای تست بار متن باز (Open Source)

این ابزارها به صورت رایگان هستند و هزینه ای در بر ندارند اما کارایی ابزارهایی که در زیر به آنها اشاره شده و برای آنها لایسنس تهیه می شود را هم ندارند. رایج ترین ابزار متن بازی که استفاده می شود Jmeter می باشد.

  • ابزارهای تست بار که نیاز به لایسنس دارند:

ابزارهایی که نیاز به لایسنس دارند، از تمامی پروتکل هایی که بر روی تست بار برنامه هایی مانند ERP یا CRM اجرا می شوند پشتیبانی می کنند. همچنین آنها می‌توانند تعداد بالایی از کاربران مجازی را بر روی برنامه پیاده سازی کنند تا واکنش آن برنامه را مورد ارزیابی قرار دهند. رایج ترین ابزاری که با لایسنس کار می کند، Loadrunner می باشد.

  • نصب محیط تستی:

در ابتدا یک محیط تستی نصب می گردد. عناصر محیط تستی مانند سخت افزار، شبکه و نرم افزار باید بسیار نزدیک عناصر به محیط واقعی باشد.

  • تعریف معیارهای عملکرد:

معیارهای عملکرد برای تست بار در این مرحله تعریف می شود و همچنین معیار های موفقیت تست نیز در این مرحله نهایی خواهد شد که این می تواند شامل تعریف محدوده‌های قابل قبول برای میزان گذردهی (Throughput) ، زمان پاسخ (Response Time) و تراکنش‌ها شود.

  • طرح ریزی تست بار:

این مرحله شامل توسعه طرح و برنامه ی تست و همچنین تثبیت محیط تست می شود.

  • ساخت کاربران مجازی:

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

  • تولید سناریو:

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

  • اجرای سناریو:

حجم بار روی سرور از طریق کارهایی که کاربران مجازی به طور همزمان انجام می دهند، شبیه سازی می شود. قبل از اجرای سناریو، برنامه ریزی و تنظیمات سناریو باید انجام شود سپس می توان سناریو و کاربران را در این مرحله به اجرا درآورد.

  • پایش سناریو:

سناریوها اکثرا از طریق ناظرهای آنلاین Loadrunner مانند منابع سیستم، منابع وب، تاخیر شبکه و … پایش می شوند.

  • بررسی نتایج:

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

تست بار، کاربرهای واقعی سناریو را شبیه سازی می‌کند:   

هنگامی که یک برنامه یا یک وبسایت تحت بار قرار دارد، تست بار زمانی را که صدها، هزاران و حتی میلیون ها کاربر را شبیه سازی می کند.

زمانی که یک کاربر در تست عملیاتی قرار می گیرد، برنامه می تواند در برابر آن واکنش قابل قبولی داشته باشد اما اگر تعداد کاربران همزمان افزایش پیدا کند، ممکن است برنامه کارایی اولیه خود را به دلیل کمبود منابع سیستمی نداشته باشد.

بنابراین، بهتر است که تست بار صورت گیرد تا قبل از این که این مشکلات در محیط واقعی رخ دهد، بررسی و رفع شوند.

تاثیرگذاری تعویض کد بر روی عملکرد برنامه:

حتی اگر تست بار را چند ماه قبل انجام داده باشید و بعد از آن، کد برنامه را چندین بار تعویض کنید بهتر است یکبار دیگر تست بار را انجام دهید. تمامی تغییراتی که بر روی کد ایجاد می شود، بر روی توانایی بار سیستم تاثیر می گذارد.

درآمدزایی و کاهش هزینه های اضافی:

قطعا استخدام تستر هایی که تست بار انجام می دهند، هزینه های اضافی در بر دارد اما هزینه های تعمیر وبسایتی که در محیط واقعی کارایی خود را از دست داده، خیلی گرانتر خواهد بود.

اهمیت تست بار:

    • سایت com در سال 2015، به دلیل تخفیفی که در فروش های خود گذاشته بود، با افزایش بار شدید سایت مواجه شد و در 3 ساعت مبلغ 780,000 دلار را از دست داد.
    • در سال 2013، سرور های آمازون با ترافیک و بار شدیدی مواجه شدند که در نهایت این سرور ها به مدت 30 دقیقه در دسترس نبودند. پیرو این مشکل، آمازون در هر دقیقه 66,240 دلار از دست داد.
    • در سپتامبر 2010، سیستم های خطوط هوایی Virgin Blue، 11 روز با مشکل حجم بار شدید مواجه شدند که در نهایت، این شرکت علاوه بر ضرر 20 میلیون دلاری، با موج شدیدی از نارضایتی مردم نیز مواجه شد.
    • طبق یک بررسی گفته شد که 75% از کاربران هنگامی که با سایت کند مواجه می شوند، آن سایت را ترک میکنند.
    • 50% کاربران گفتند که اگر سایت یا برنامه ای در عرض 3 ثانیه بارگذاری نشود، خرید خود را در سایتی دیگر انجام خواهند داد.
    • همانطور که می بینید، بیشتر مردم تمایل دارند محصولات مورد نیاز خود را در زمان تخفیف تهیه کنند برای مثال در Black Friday، Cyber Monday یا Diwali.
    • بیشتر مردم تمایل دارند بلیط پرواز خود را در تعطیلات یا روزهایی که خطوط هوایی بلیط های خود را برای تخفیف گذاشتند، خریداری کنند.
    • اگر وبسایت شما در دسترس نباشد، بازدیدکنندگان سایت شما را ترک خواهند کرد و ممکن است وبسایت رقبای تجاری شما را باز کنند. این موضوع باعث از دست رفتن درآمد خواهد شد.
    • قطعا تست بار می تواند از به وجود آمدن این مشکلات جلوگیری کند و تمامی این مشکلات را مرتفع سازد.

مزایای تست بار:

    • شناسایی مشکلات مربوط به عملکرد سیستم قبل از تولید آن.
    • بهبود مقیاس پذیری سیستم از نظر پایگاه داده، نرم افزار و شبکه.
    • به حداقل رساندن ریسک down time برنامه و سیستم.
    • کاهش هزینه های خرابی و افزایش سطح رضایت مشتری.

معایب تست بار:

    • کسانی که تست بار انجام می دهند باید دانش کافی در رابطه با ابزار های تست بار داشته باشند و همچنین در زمینه های پیچیده، نیاز به زبان های برنامه نویسی دارند.
    • با توجه به اینکه ابزار های تست بار گران قیمت هستند و همچنین در بعضی مواقع نیاز به منابع با دانش تخصصی داریم ممکن است این پروسه با هزینه های زیادی همراه شود.

 ابزار های تست بار:

ابزار هایی که در زیر به آنها پرداخته می شود، ابزار هایی هستند که یا متن باز (Open Source) هستند یا اینکه نیاز به لایسنس دارد. کاربران برای انتخاب بین این ابزار ها می توانند از نسخه های آزمایشی (Trial Versions)  برنامه ها استفاده کنند.

  • Webload

این برنامه برای تست بار گسترده سازمان ها در زمینه ی برنامه های تحت وب استفاده می شود.

  • LoadUI NG Pro

این برنامه با محیط گرافیکی خود به کاربران این امکان را می دهد که راحت تر سناریو های خود را اجرا کنند.

این برنامه با هسته ی Jmeter، تست بار پیشرفته انجام می دهد.

  • Triscentis Flood

این ابزار توزیع شده و تحت فضای ابری عمل می کند.

  • Loadview

این برنامه به صورت کامل مدیریت خواهد شد و یک تست بار و تست استرس جامع ارائه می دهد.

این برنامه یک برنامه ی متن باز می باشد که مبتنی بر پلتفرم ـJava عمل می کند.

این برنامه محصول شرکت HP می باشد که می تواند هزاران کاربر مجازی را همزمان مدیریت کند.

تست بار آنلاین (از طریق فضای ابری)

از مزایای تست بار آنلاین می توان به هزینه ی کمتر آن و همچنین پشتیبانی از طریق یک تیم متمرکز اشاره کرد. همچنین امکان شبیه سازی میلیون ها کاربر همزمان از چند مکان جغرافیایی را دارد.

در قسمت زیر به 7 ابزار تست بار آنلاین اشاره می کنیم:

  • Load Impact

عملکرد این برنامه بر پایه SaaS (Software as a Service) می باشد که برای تیم های توسعه و اجرا (DevOps Teams)  استفاده می شود.

  • Flood IO

این برنامه به صورت متمرکز و تحت فضای ابری کار می کند که از قابل اطمینان بودن کارکرد برنامه در قبل و بعد از DevOps اطمینان حاصل می کند.

  • Loader

این ابزار تست بار رایگان می باشد که به شما این امکان را می دهد که برنامه های تحت وب خود را با هزاران ارتباط همزمان تست کنید.

  • Load Storm

این برنامه با کاربری آسان و هزینه های کم، تست بار برای برنامه های وب و موبایل انجام میدهد.

  • Blazemeter

این ابزار کاملا با Apache Jmeter و دیگر برنامه های متن باز مانند Jenkins و Selenium Webdriver سازگاز می باشد.

  • Load Focus

این برنامه با کاربری آسان و هزینه های اندک، به تست برنامه های وب و موبایل، وبسایت ها و سرویس های وب می پردازد.

  • Octoperf

این برنامه که بر پایه SaaS می باشد و تست بار  برای وب و برنامه های موبایل انجام می دهد توسط Jmeter طراحی شده است.

تفاوت بین  تست بار و تست استرس

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

در تست بار تعداد کاربران همزمان به اندازه معقول افزایش پیدا میکند در تست استرس تعداد کاربران تا زمانی که منابع سیستم پر شود افزایش می یابد

تست بار و تست استرس به طور کامل از هم مستقل نیستند و به نوعی به هم وابسته انددر اغلب اوقات ابتدا یک تعداد بار مشخص بر روی سیستم تست می شود سپس تست استرس برای گذشتن از تعداد  منابع در دسترس اعمال می گردد.