دو مورد از دستهبندیهای اصلی تست در فرایند توسعه نرمافزار، تست عملکردی و غیر عملکردی هستند. این تستهای دوگانه همانطور که از نام آنها مشخص است، بر بخشهای عملکردی نرمافزار و بخشهای غیر عملکردی آن تمرکز میکنند. این گروه از تستها شامل تعدادی از تستهای نرمافزاری دیگر میشوند. در این مقاله قصد داریم درباره انواع و تفاوتهای دقیق بین هر دو تست عملکردی و غیر عملکردی به تفصیل صحبت کنیم. با ما همراه باشید.
تست عملکردی چیست؟
تست عملکردی همانطور که از نامش پیداست، نحوه عملکرد یک نرمافزار یا برنامه را بررسی میکند. رفتار نرمافزار مورد بررسی بر اساس نیاز مشتری تست میشود؛ یعنی با استفاده از سندی به نام مشخصات نرمافزار یا مشخصات مورد نیاز به عنوان راهنما، مورد آزمایش قرار میگیرد.
برای مثال، دادههای تست بر اساس سند راهنما تهیه و سپس مجموعهای از تست کیسها آماده میشوند. در مرحله بعد، نرمافزار در یک محیط واقعی آزمایش میشود تا همخوانی نتیجه به دست آمده با نتیجه مورد انتظار بررسی شود. این تکنیک Black Box Technique یا تست جعبه سیاه نام دارد و یک نوع تست عملکردی است که بیشتر به صورت دستی انجام میشود و در یافتن باگها نیز بسیار موثر است.
انواع تست عملکردی
در ادامه به معرفی انواع مختلف تستهای عملکردی میپردازیم.
تست دود (Smoke Testing)
این نوع تست قبل از تست واقعی سیستم انجام میشود تا بررسی شود که آیا عملکردهای حیاتی به خوبی کار میکنند یا خیر؛ پس از این تست، تستهای گستردهتر و بیشتری انجام میشود.
انجام این کار در نصب مجدد بیلد جدید صرفهجویی و در صورت عدم کارکرد عملکردهای حیاتی، از تست بیشتر جلوگیری میکند. آزمون دود یک روش عمومی برای تست برنامه است.
تست سلامت (Sanity Testing)
نوعی تست است که در آن فقط یک عملکرد خاص یا یک باگ بررسی میشود تا کیفیت عملکرد و درستی آن تست شود. این تست همچنین بررسی میکند که به دلیل تغییرات انجام شده، سایر اجزای مربوطه دچار مشکل نشده باشند. آزمون سلامت یک روش ویژه برای تست برنامه است.
تست یکپارچهسازی (Integration Testing)
آزمون یکپارچهسازی زمانی انجام میشود که دو یا چند تابع یا اجزای مختلف نرمافزار، برای تشکیل یک سیستم یکپارچه شده باشند. در حقیقت این تست، عملکرد صحیح نرمافزار را هنگامی که مؤلفهها ادغام میشوند تا به عنوان یک واحد یکتا کار کنند، بررسی میکند.
تست رگرسیون (Regression Testing)
تست رگرسیون پس از دریافت بیلد نرمافزار و برطرف کردن باگهایی که در دور اولیه تستها پیدا شدند، انجام میشود. این تست برطرف شدن یا نشدن باگ را نشان میدهد و بررسی میکند که آیا کل نرمافزار با تغییرات به خوبی کار میکند یا خیر.
تست بومیسازی (Localization Testing)
تست بومیسازی، نوعی تست است که عملکرد نرمافزار را در زمان تغییر زبان برنامه و استفاده از یک زبان متفاوت برای نیاز مشتری، بررسی میکند.
برای مثال یک وب سایت در هنگام راهاندازی به زبان انگلیسی خوب کار میکند و اکنون به تنظیمات زبان فارسی بومیسازی شده است. تغییرات در زبان ممکن است بر رابط کاربری و عملکرد کلی سایت تاثیر بگذارد. این تست برای بررسی تأثیر تغییرات زبانی روی نرمافزار انجام میشود.
تست پذیرش کاربر (User Acceptance Testing)
در تست پذیرش کاربر، برنامه بر اساس راحتی و پذیرش کاربر و با در نظر گرفتن سهولت استفاده تست میشود. در این تست، به کاربران نهایی واقعی یا مشتریان یک نسخه آزمایشی داده میشود تا در محیط کنترل شده از آنها استفاده کنند؛ سپس بررسی میشود که آیا نرمافزار مطابق با نیازهایشان در یک محیط واقعی کار میکند یا خیر. این تست قبل از راهاندازی نهایی انجام میشود و به عنوان تست بتا (Beta Testing) یا تست کاربر نهایی (End-user Testing) نیز شناخته میشود.
تست غیر عملکردی چیست؟
در کنار پارامترهای کمی و عملکردی، تعاریفی نیز وجود دارند که کیفی هستند و مستقیم به عملکرد نرمافزار مربوط نمیشوند. تست غیر عملکردی به همین منظور ایجاد شده است تا جنبههای کیفیتر نرمافزار را بررسی کند. کیفیت به طور عمده به زمان، دقت، ثبات، درستی، قابلیت اعتماد و دوام یک محصول در شرایط نامطلوب مختلف بستگی دارد.
به بیان نرمافزاری، هنگامی که یک برنامه راحت، موثر و تحت هر شرایطی مطابق انتظار کاربر کار میکند، از آن به عنوان یک برنامه قابل اعتماد یاد میشود. بر اساس این جنبههای کیفی، انجام تست تحت این پارامترها بسیار حیاتی است. به این نوع تست، تست غیر عملکردی میگویند. در این تست از ابزارهایی مثل LoadRunner، JMeter و… استفاده میشود.
انواع تستهای غیر عملکردی
در ادامه به معرفی انواع مختلف تستهای غیر عملکردی میپردازیم.
تست کارایی (Performance Testing)
تست کارایی به تنهایی شامل ۴ مرحله تست است:
۱- تست لود (Load Testing)
برنامهای که قرار است یک حجم کاری (Workload) مشخص را انجام دهد، به این صورت تست میشود که در دنیای واقعی و تحت حجم کاری مشخص چگونه کار میکند. تست لود، توانایی برنامه را برای انجام عملکرد صحیح در زمان تعیین شده و توانایی تحمل حجم بار کاری میسنجد.
۲- تست استرس (Stress Testing)
در این تست، برنامه با حجم کاری اضافی تحت فشار قرار میگیرد تا بررسی شود که آیا میتواند به طور موثر کار کند و استرس را مطابق با نیاز مدیریت کند یا خیر.
برای مثال، وبسایتی را در نظر بگیرید که برای بررسی رفتارش در زمانی که کاربران در پیک دسترسی هستند، تست میشود. ممکن است شرایطی وجود داشته باشد که حجم کار فراتر از حجم کار مشخص شده اولیه باشد. در این صورت ممکن است وبسایت از کار بیفتد، کند شود یا حتی کرش کند.
آزمون استرس برای بررسی این شرایط با استفاده از ابزارهای اتوماسیونی است که از آنها برای ایجاد یک وضعیت واقعی در حجم کار بالا و پیدا کردن نقایص استفاده میشود.
۳- تست حجم (Volume Testing)
در تست حجم، توانایی نرمافزار برای پردازش صحیح دادهها در حجم ارائه شده، در یک محیط واقعی مورد آزمایش قرار میگیرد. در این مواقع برنامه برای سنجش صحت و قابلیت اطمینان، تحت شرایط نامطلوب تست میشود.
۴- تست پایداری (Endurance Testing)
در تست پایداری، دوام نرمافزار با یک جریان حجم مکرر و ثابت در یک الگوی مقیاسپذیر آزمایش میشود. این تست، قدرت پایداری نرمافزار را هنگامی که با حجم کاری ثابت روبرو میشود، بررسی میکند.
انجام همه این تستها برای این است که نرمافزار بدون اشکال کار کند. از این تستها برای اجرای برنامه بدون خرابی در هر لحظه، یافتن مشکلات و باگها و راه حل آنها و در نهایت توسعه یک محصول باکیفیت استفاده میشود.
تست قابلیت استفاده (Usability Testing)
در این نوع تست، رابط کاربری برای سهولت در استفاده تست میشود تا مشخص شود چقدر کاربر پسند است.
تست امنیتی (Security Testing)
تست امنیتی بررسی میکند که چگونه نرمافزار در محیط شبکه و در مقابل حملات مخرب ایمن است. حوزههای کلیدی که باید در این تست سنجیده شوند عبارتند از: اعتبارسنجی، تایید هویت کاربران و دسترسی آنها به دادهها براساس نقشهایی مانند مدیریت، تعدیلکننده (moderator)، سازنده (composer) و کاربر معمولی.
جدول تفاوت بین تستهای عملکردی و غیر عملکردی
با توجه به مطالبی که تاکنون گفته شد، به احتمال زیاد شما حالا تصویر روشنتری از تفاوتهای بین تست عملکردی و غیر عملکردی بدست آوردهاید. برای مقایسه راحتتر یک جدول نیز برای شما آماده کردهایم:
جمعبندی
همانطور که در ابتدای مقاله گفتیم، تست عملکردی و غیر عملکردی دو مورد از تستهای گسترده در توسعه نرمافزار هستند که خود شامل چندین تست زیرمجموعه میشوند. در حالت کلی تستهای نرمافزاری که به عملکرد سیستم مربوط میشوند، میتوانند در دسته عملکردی و تستهایی که به کیفیت عملکرد و شاخصهای کیفی مربوط میشوند، میتوانند در دسته غیر عملکردی قرار بگیرند.
از این رو موارد متعددی را داریم که در این دستهبندیهای قرار میگیرند و در این مقاله به شناخته شدهترین انواع هر تست اشاره کردیم. شما میتوانید با توجه به نرمافزاری که در حال توسعه آن هستید، تصمیم بگیرید که کدام تستهای عملکردی و غیر عملکردی میتوانند برای شما کارآمد باشند.
منبع:
https://www.softwaretestinghelp.com/functional-testing-vs-non-functional-testing/
دیدگاهتان را بنویسید