تست عملکرد (Load-Stress)
تست Performance عملکرد یک نرمافزار و ویژگیهای کیف آنرا ارزیابی میکند.در این نوع تست کارهایی که کاربران واقعی در هنگام کار با نرمافزار انجام دهند را تحت شرایط خاص بر روی یک سیستم در حال آزمایش اعمال میکنند. هدف اصلی از این کار تعیین کارایی برنامههای کاربردی و تعیین حداکثر باری است که سیستم میتواند در برابر آن مقاومت کند. برای انجام تست Performance برنامههای کاربردی، تستهای زیر انجام میشود:
تست بار (Load Testing): تست بار به ما کمک میکند تا بتوانیم کارایی سیستم را بر اساس رفتار واقعی کاربران با استفاده از شبیهسازی آن در محیط آزمایشگاهی اندازهگیری کنیم.
تست فشار (Stress Testing): تست فشار به ما کمک میکند که وضعیت بار نهایی که در آن عملکرد سیستم غیرقابل قبول است را تعیین کنیم. در واقع با این تست میتوان به نقطهای که در آن نرمافزار Fail میشود دست یافت.
یکی از مهمترین مراحل تولید نرمافزار، فاز تست و رفع اشکال سیستم است که در تمام معماریهای تولید سیستمهای نرمافزاری در نظر گرفته میشود. تعریف تست یک نرمافزار را میتوان فرآیندی جهت کشف خطاهای پنهان نرمافزار در جهت مرتفع نمودن آنها عنوان نمود. انواع مختلف تست نرمافزار عبارتند از تست عملکرد، تست استرس، تست اکتشافی، تست تطبیقپذیری با محیط و تست امنیت.
تست فشار (Stress Test)
تست استرس ترکیبی از آزمونهای کمی و کیفی است. انجام این آزمایشات عملکردی، میتواند به اندازهگیری میزان سقوط سیستم و دسترسی به نرمافزار و یا مقاومت در برابر حملاتDoS (Denial-of-Services) و یا DDoS کمک کند. به عبارت سادهتر، آزمون استرس با افزایش یا کاهش منابع برای افزایش قابلیت بازیابی نرمافزار، تحت آزمایش دقیق قرار می گیرد تا اطمینان کامل از صحت و مقاومت آن حاصل شود.
در واقع تست استرس یا تست فشار به ما این اجازه را میدهد که وضعیت بار نهایی که در آن عملکرد سیستم غیرقابل قبول است را تعیین کنیم. در این نوع تست، کارایی سیستم، تحت بارهای افزایشی تدریجی اندازهگیری میشود و این موضوع به افراد متخصص کمک میکند که نقطه نهایی، که سیستم در آن fail میشود را تعیین کنند. بار سنگینی که میتوان به برنامه وارد کرد میتواند شامل موارد زیر باشد:
مقادیر عددی پیچیده و سنگین
تعداد زیادی ورودی
تعداد زیادی پرسوجوی پشت سرهم
زمینههای استفاده تست استرس
نرمافزار: تست استرس بر روی در دسترس بودن و خطاها در بارگیری بسیار سنگین تأکید میکند تا اطمینان حاصل شود که نرمافزار به علت منابع کافی، خراب نشده است. تست استرس نرمافزاری، بر روی تبادلات مشخص شده برای درهمشکستن آنهاست که در حین آزمایش بسیار تحت تأثیر قرار میگیرند، حتی زمانی که یک پایگاه داده بدون بار باشد.
سختافزار: تست استرس ثبات را در محیط محاسبات طبیعی تضمین میکند.
وبسایتها: تست استرس محدودیتهای هر یک از ویژگیهای سایت را تعیین میکند.
CPU: تغییراتی مانند overvolting، undervolting، blocklocking و overlocking را برای تعیین اینکه آیا آنها میتوانند در برابر بارهای سنگین با اجرای یک برنامه سنگین برای تست سقوط سیستم یا قطع شدن سیستم، مقاومت کنند، تأیید میشوند.
هدف از انجام تست استرس
هدف از این تست، شبیهسازی محیطی مخربتر از محیطی که برنامه در دنیای واقعی و در شرایط نرمال با آن روبه رو میشود، میباشد تا ضعفهایی نهایی آن معلوم و تا جایی که امکان دارد مرتفع گردد.
انواع آزمون استرس
تست استرس برنامه: تمرکز در یک سیستم تحت استرس، بدون اجزای جدا شدهی آن. در حقیقت این تست کمک میکند تا نقصهایی مانند تراکم شبکه، مسدودکردن دادهها و قفلشدن عملکرد در روشهای مختلف در برنامه کاربردی کشف شود.
تست استرس عملیاتی: این نوع آزمون استرس با هدف تست قابلیت کارکرد برنامه در یک سطح تبادلات با حجم باری که فراتر از عملیات پیشبینیشده آن است، میباشد. چنین تستی در بهینهسازی، تنظیم و پیداکردن شرایط خطا در سطح جزئی کمک میکند.
تست سیستمیک استرس: این تست با عنوان تست یکپارچگی یا تست تثبیتشده هم شناخته میشود، تست سیستمیک استرس شامل تسریع قابلیتهای مورد انتظار چند برنامه کاربردی است که با ایجاد شرایط بارگذاری شدید در یک سیستم مشابه اجرا میشوند. هدف اصلی این فرآیند کشف نقص در شرایطی است که برنامههای مختلف از یکدیگر برای استفاده از منابع سیستم مانند حافظه، فضای دیسک، پهنای باند شبکه و چرخه پردازنده استفاده میکنند.
فرآیند تست استرس
شناسایی اهداف تست: گام اول شامل تعریف هدف اصلی پشت تست استرس برنامه است.
ایجاد مراحل مهم: گام دوم این است که سناریوهای تمرکز کلیدی که عمدتا به موفقیت برنامه کمک می کند را را شناسایی میکند.
شناسایی حجم کار: این مرحله شامل برآورد میزان حجم کار است که باید در یک سناریوی خاص برای استرس بر سیستم بیش از حد آستانه اعمال شود، به این ترتیب تستر قادر به مشاهده عواقب وضعیت تنش است. آزمایشکنندگان میتوانند بار را به صورت افزایشی افزایش دهند تا زمانی که یک شکست مهم ایجاد شود و سپس رفتار برنامه را تحت شرایط بارهای مختلف مشاهده نمایند.
شناسایی معیارها: در این مرحله با استفاده از ویژگیهای عملکرد مطلوب که در مرحله اول شناسایی شد، معیارهایی که بر احتمالهای هر سناریو تمرکز میکنند، مشخص میشود. این معیارها همچنین میتوانند اطلاعاتی را در مورد مشکلات احتمالی ارائه دهند.
ایجاد موارد آزمایش: در این مرحله، موارد آزمون با جمعآوری تمام اطلاعات مانند پروفایلهای کار و ویژگیها، اهداف عملکرد، دادههای آزمون و محیط، و معیارهای مشخص شده طراحی میشود.
ایجاد بار: پس از اتمام تمام مراحل فوق، بار باید شبیهسازی شود.
تجزیه و تحلیل نتایج: تجزیه و تحلیل دادههای گرفتهشده و مقایسه نتایج با سطح پذیرفتهشده معیارها در این مرحله انجام میشود.
مزایای تست استرس:
کمک به تعیین ثبات یک سیستم معین، فراتر از ظرفیت عملی عادی
گزارش موارد خرابی، در مواردی که منابع محاسباتی کافی نیست
برای یافتن شرایط رقابتی و موارد خرابی احتمالی در مواقع بحرانی، ضروری است
تست همزمان یک برنامه را آسانتر میکند
در حوزه تست و ارزیابی نرمافزارها و تستهای حوزه Load/Stress/Performance استانداری به صورت معین برای هر یک وجود ندارد و یک Baseline Standard کلی برای تمامی تستهای این حوزه در نظر گرفته شده است که میتوان به روال تست SDL مایکروسافت، روال تست شرکت IBM تحت عنوان SPT، شرکت Guidance Software که استانداردهای حوزه خود را داراست و استانداردهای نهاد IEEE به نام STD که نیز در زمینه مستندسازی تستهای این حوزه استفاده میگردد.
شرکت امنافزار گستر آپادانا از IEEE STD 829-1998 در آزمونها بهره برده است. در این استاندارد دسته LTP/LTC برای بیان جزئیات و آیتمها و نیز حوزه و روش ارزیابی استفاده شده است.
اهداف استاندارد IEEE STD 829-1998
اهداف این استاندارد در حوزه تست کارایی شامل موارد زیر است:
ایجاد یک چارچوب مشترک برای فرآیندهای تست، فعالیتها و وظایف در حمایت از تمام نرمافزارها
استفاده از محتویات Master Test Plan و سطوح تست
تعریف وظایف مورد انجام در هر تست شامل ورودیهای مورد نیاز، خروجیهای مورد نیاز و ...
شناسایی حداقل فعالیتها و وظایف توصیه شده مرتبط با سطوح یکپارچگی نرمافزار
تست بار یا Load Testing
Load Testing یک فرآیند تست نرم افزار غیر کاربردی است که در آن عملکرد برنامه های نرم افزاری تحت بارمشخص که انتظار میرود تاب آوری آن را داشته باشد، آزمایش می شود. این ارزیابی نحوه عملکرد برنامه نرم افزاری را در حداکثر حجم تراکنش در واحد زمان را تعیین می کند. هدف از Load Testing بهبود گلوگاه های عملکردی و اطمینان از ثبات و عملکرد صحیح نرم افزار قبل از استقرار است. این ارزیابی معمولاً مشخص می کند :
- حداکثر ظرفیت عملیاتی یک برنامه چقدر است؟
- آیا زیرساخت فعلی برای اجرای برنامه کافی است؟
- پایداری برنامه با توجه به حداکثر بار کاربران چقدر است؟
- تعداد کاربران همزمان که برنامه می تواند پشتیبانی کند و مقیاس پذیری برای اجازه دسترسی بیشتر کاربران به آن چه میزان است؟
در مهندسی نرم افزار، تست بار معمولاً برای کلاینت / سرور ، برنامه های مبتنی بر وب – در هر دو سطح اینترانت و اینترنت استفاده می شود.
متخصصین شرکت امن افزار گستر آپادانا با ارزیابی دقیق و محاسبه و آنالیز شرایط مختلف افزایش فشار برروی سیستم نقاط آسیبپذیر و بحرانی سرویس و سیستم مدنظر را شناسایی نموده و راهکار رفع مشکل را پیشنهاد مینمایند.