تست Non-Functional چیست؟
تست Non-Functional یا غیرکارکردی به عنوان یکی از انواع تست نرمافزار شناخته میشود که برای بررسی جنبههای غیرکارکردی(Performance, Usability, Reliability و غیره) یک اپلیکیشن نرمافزاری تعریف شده است. این تست طراحی شده است تا آمادگی سیستم را برای بررسی پارامترهای غیرکارکردی که هیچگاه توسط تست Functional تحت آزمون قرار نمیگیرند، تست کرده و بررسی نماید.
یک نمونه عالی از تست غیرکارکردی بررسی این موضوع است که چه تعداد از افراد(کاربران) میتوانند به طور همزمان به نرمافزار لاگین کنند.
تست غیرکارکردی به اندازه تست کارکردی(Functional) اهمیت داشته و بر رضایت مشتری تاثیرگذار است.
این آموزش مشتمل بر قسمتهای زیر است:
- اهداف تست Non-Functional
- مشخصات تست Non-Functional
- پارامترهای Non-Functional
- انواع تست نرمافزار
- انواع تست Non-Functional
- Test Caseهای مثالی برای Non-Functional Testing
اهداف تست Non-Functional
- تست غیرکارکردی باید Usability(کاربردپذیری)،Efficiency(کارایی)، Maintainability(نگهداشتپذیری) و Portability(حملپذیری) محصول را افزایش دهد.
- به کاهش ریسک Production و هزینههای مربوط به جنبههای Non-Functional محصول کمک کند.
- بهبود روش نصب، راهاندازی، اجرا، مدیریت و نظارت بر محصول.
- جمعآوری و ایجاد سنجهها و متریکهای تحقیق و توسعه داخلی.
- بهبود و افزایش دانش رفتار محصول(Product Behavior) و فنآوریهای در حال استفاده.
مشخصات تست Non-Functional
- تست غیرکارکردی باید قابل اندازهگیری باشد، بنابراین هیچ جایی برای توصیف ذهنی مانند خوب، بهتر، بهترین و غیره وجود ندارد.
- درک تعداد دقیق تستهای غیرکارکردی در آغاز فرآیند Requirement بعید است.
- اهمیت دادن به اولویتبندیِ Requirementها.
- حصول اطمینان از اینکه ویژگیهای کیفی(Quality Attributeها) در مهندسی نرم افزار به درستی شناسایی شدهاند.
پارامترهای تست Non-Functional
۱- Security(امنیت): این پارامتر تعریف میکند که چگونه یک سیستم از حملات عمدی و ناگهانی از منابع داخلی و خارجی محافظت میشود. این پارامتر از طریق تست امنیت، تحت تست قرار میگیرد.
۲- Reliability(اطمینانپذیری): عبارتست از میزانی که هر سیستم نرمافزاری به طور پیوسته و بدون نقص، کارکردهای(Function) مشخص را انجام میدهد. این پارامتر توسط تست اطمینانپذیری تحت تست قرار میگیرد.
۳- Survivability(بقاپذیری): این پارامتر بررسی میکند که آیا سیستم نرمافزاری در شرایط بغرنج همچنان به کارکارد(Function) خود ادامه میدهد و آیا میتواند در صورت شکست سیستم، خود را بازیابی کند. این پارامتر توسط تست بقاپذیری تحت تست قرار میگیرد.
۴- Availability(دسترسپذیری): این پارامتر درجهای را تعیین میکند که کاربر در خلال بهرهبرداری از اپلیکیشن، به سیستم وابسته است. این پارامتر توسط تست ثبات(Stability) تحت تست قرار میگیرد.
۵- Usability(کاربردپذیری): عبارتست از سهولت در یادگیری، بهرهبرداری، فراهمسازی ورودیها و خروجیها(در تعامل یک سیستم) برای کاربر. این پارامتر توسط تست کاربردپذیری تحت تست قرار میگیرد.
۶- Scalability(مقیاسپذیری): این پارامتر درجهای را تعیین میکند که هر برنامه نرمافزاری میتواند بر اساس آن درجه ظرفیت پردازش خود را برای رفع افزایش تقاضا گسترش دهد. این پارامتر توسط تست مقیاسپذیری تحت تست قرار میگیرد.
۷- Interoperability(قابلیت همکاری): این پارامتر غیرکارکردی رابطهای سیستم نرمافزاری با دیگر سیستمهای نرمافزاری را بررسی میکند. این پارامتر توسط تست قابلیت همکاری تحت تست قرار میگیرد.
۸- Efficiency(بهرهوری): عبارتست از میزانی که هر سیستم نرمافزاری میتواند ظرفیت، مقدار و زمان پاسخ را اداره کند.
۹- Flexibility(انعطافپذیری): این پارامتر اشاره دارد به این موضوع که یک اپلیکیشن با چه میزان سهولتی میتواند با پیکربندیهای مختلف نرمافزاری و سختافزاری کار کند، همانند حداقل RAM، و پردازنده.
۱۰- Portability(حملپذیری): انعطافپذیری نرمافزار برای انتقال از محیط سختافزاری یا نرمافزاری فعلی.
۱۱- Reusability(قابلیت استفاده مجدد): این پارامتر به بخشی از سیستم نرمافزاری اشاره دارد که میتواند برای استفاده در دیگر برنامهها، Convert(تبدیل) شود.
انواع تست نرمافزار
به طور کلی، سه نوع تست وجود دارد:
- Functional
- Non-Functional
- Maintenance
ذیل این انواع تست، شما چندین سطح جداگانه در تست دارید، اما معمولا، افراد آنها را انواع تست(Testing Types) مینامند. ممکن است شما در رابطه با طبقهبندی بالا در کتابهای مختلف و منابع مرجع تفاوتهایی بیابید.
لیست فوق کامل نیست زیرا بیش از ۱۰۰ نوع تست وجود دارد. شما بالتبع درگیر آنهایی میشوید که بدانها احتیاج دارید. بنابراین توجه داشته باشید که همه انواع تست در تمام پروژهها اعمال نمیشوند، چرا که استفاده از انواع تست بستگی به ماهیت و دامنه پروژه دارد. طی آموزشهای بعدی بیشتر در این مورد صحبت خواهیم کرد.
انواع تست Non-Functional
- Performance Testing(تست کارایی)
- Load Testing(تست بار)
- Failover Testing(تست غلبه بر خرابی)
- Compatibility Testing(تست سازگارپذیری)
- Usability Testing(تست کاربردپذیری)
- Stress Testing(تست فشار)
- Maintainability Testing(تست نگهداشتپذیری)
- Scalability Testing(تست مقیاسپذیری)
- Volume Testing(تست حجم)
- Security Testing(تست امنیت)
- Disaster Recovery Testing(تست بازیابی از فاجعه)
- Compliance Testing(تست تطابق)
- Portability Testing(تست حملپذیری)
- Efficiency Testing(تست بهرهوری)
- Reliability Testing(تست اطمینانپذیری)
- Baseline Testing(تست مبنا)
- Endurance Testing(تست استقامت)
- Documentation Testing(تست مستندات)
- Recovery Testing(تست بازیابی)
- Internationalization Testing(تست جهانیسازی)
- Localization Testing(تست محلیسازی)
Test Caseهای مثالی برای Non-Functional Testing
موارد زیر مثالهایی از Test Caseهای Non-Functional هستند:
شماره Test Case | Test Case | دامنه |
---|---|---|
1 | زمان بارگذاری اپلیکیشن(Load Time) برای حداکثر 1000 کاربر که به طور هزمان به سیستم دسترسی دارند نباید بیشتر از 5 ثانیه باشد | Performance Testing |
2 | نرمافزار باید روی تمام نسخ ویندوز و مک قابل نصب باشد | Compatibility Testing |
3 | تمام تصاویر وب باید دارای alt tag باشند | Accessibility testing |
این مطلب بخشی از دوره آموزشی رایگان تست نرمافزار بود، که میتوانید تمامی مطالب این دوره رایگان را در اینجا مشاهده نمایید.
خیلی عالی بود.
مختصر و مفید
دست شما درد نکنه