تست نرمافزار: تعاریف، مبانی و انواع آن
به عنوان ساده ترین تعریف برای تست میتوانیم بگوئیم: هنگامی که مشغول تست چیزی هستیم، درست بودن آن را چک می کنیم. تست ضروریست زیرا همهی ما دچار اشتباه میشویم. برخی از این اشتباهات مهم نیستند، اما بعضی از آنها میتوانند خطرناک باشند و برایمان گران تمام میشوند. پس هر آنچه تولید میکنیم باید چک کنیم زیرا همیشه امکان خطا وجود دارد. برخی از این خطاها ناشی از فرضیات اشتباه یا دید کور هستند و در نتیجه ممکن است هنگام چک کردن کار خودمان، مجدد دچار همان خطاها شویم و احتمال این که شخص دیگری قادر به تشخیص آن خطاها باشد بیشتر است.
نقش تست در توسعه و نگهداشت نرمافزار
تست نرمافزار فرآیندی است به منظور کسب اطمینان از اینکه آیا نرمافزار تولیدشده پاسخگوی نیازهای موردانتظار هست و آیا نرمافزار بدون نقص (defect free) است. (بدون نقص بودن به این معنا نیست که نرمافزار هیچ ایرادی ندارد، چرا که عملا چنین چیزی ممکن نیست.) فرآیند تست شامل اجرای اجزای مختلف نرم افزار به روش دستی یا با کمک ابزارهای تست اتومات میباشد. هدف از تست نرمافزار تشخیص خطاها، شکافها یا نیازهای رفع نشده در قیاس با الزامات مورد انتظار است.
نرمافزاری که به شکل مناسبی تست شده باشد، قابلیت اطمینان، امنیت و عملکرد بالایی دارد که به صرفه جویی در زمان، هزینه و رضایت مشتری میانجامد. همچنین باگهای موجود در نرمافزارها میتوانند منجر به ضرر و زیان مالی یا حتی انسانی غیرقابل جبران شوند. به عنوان مثال در سال ۱۹۹۹ یک باگ نرمافزاری باعث خسارت ۱٫۲ میلیارد دلاری در پرتاب یک ماهواره نظامی شد. یا در آوریل ۲۰۱۵، ترمینال مالی بلومبرگ در لندن به علت ایراد کوتاه مدت نرمافزاری مختل شد که در نتیجه بیش از ۳۰۰،۰۰۰ معاملهگر در بازارهای مالی را متاثر نمود.
انواع تست نرمافزار
تست نرمافزار به سه دسته کلی تقسیم میشود:
• تست کارکردی (Functional)
• تست غیرکارکردی (Non-Functional)
• تست نگهداشت (Maintenance)
هفت اصل کلی تست نرمافزار:
• اصل اول: تست کامل امکان پذیر نیست.
تست کامل ممکن نیست؛ اما براساس ارزیابی ریسک نرم افزار به اندازه ی بهینه ای از تست نیاز داریم.
• اصل دوم: دستهبندی عیب ها
این قاعده یعنی تعداد کمی از ماژول های سیستم نرم افزاری بیشترین عیب ها و اشکالات را در خود دارند. این قاعده یک کاربرد از قاعده معروف 20-80 پارتو در زمینه تست نرم افزار است: تقریبا 80 درصد مشکلات در 20 درصد ماژول ها یافت میشوند. به تجربه شما می توانید این ماژول ها را شناسایی کنید. اما این رویکرد مسائل مربوط به خودش را دارد. اگر تستهای یکسان پشت سر هم اجرا شوند آنگاه بعد از مدتی دیگر توسط آن تستها خطایی پیدا نمیشود که این وضعیت ما را به اصل بعدی هدایت میکند.
• اصل سوم: پارادوکس آفتکش
در صورتی که مرتب از یک آفت کش (سم) برای از بین بردن حشرات یک زمین کشاورزی استفاده شود، آنگاه حشرات موجود بعد از مدتی نسبت به آفت کش استفاده شده مقاوم میشوند که همین رویه برای تست نرمافزار نیز وجود دارد. اگر مرتبا شما از تستهای تکراری استفاده کنید آنگاه بعد از مدتی دیگر خطای جدیدی پیدا نمیشود زیرا سیستم نسبت به آن تستها مقاوم میشود. برای رفع این مشکل موارد تست باید مرتب مورد بررسی و اصلاح قرار گیرند و در صورت نیاز موارد تست جدید و مختلف اضافه شوند.
آزمونگران نرمافزار نمیتوانند تنها به یک تعداد متد تست نرمافزار وابسته شده و تنها همان را انجام دهند، بلکه باید متدهای خورد را بروزرسانی کرده یا از متدهای جدید استفاده کنند. البته در بهترین حالت پس از ساعتها کار همچنان شما نمیتوانید با اطمینان بگویید که سیستم کاملا بدون خطا است!
• اصل چهارم: تست وجود نقص یا خطا را نشان می دهد و نه عدم وجود آن
تست کردن باعث مشاهده خطاهای موجود میشود و نه خطاهایی که وجود ندارد. تست نرمافزار احتمال وجود خطاهای کشف نشده را کاهش میدهد اما حتی اگر هیچ خطایی کشف نشود دلیل بر صحت و درستی کارکرد برنامه نیست. در صورتی که شما تمام خطاهای ممکن را کشف کنید و سیستم 99 درصد بدون خطا باشد، آنگاه اگر سیستم نیازمندیهای مورد نظر را رعایت نکند چه اتفاقی رخ میدهد؟ این سوال اصل بعدی را بوجود میآورد.
• اصل پنجم: نبود خطا – استدلال غلط
این امکان وجود دارد که یک برنامه 99 درصد بدون خطا باشد اما هنوز غیر قابل استفاده باشد. این اتفاق در صورتی رخ میدهد که سیستم توسط نیازمندیهای اشتباه مورد تست قرار گیرد. تست نرمافزار تنها پیدا کردن خطاها نیست و بررسی رعایت شدن نیازمندیهای سیستم نیز بسیار مهم است.
• اصل ششم: تست زودهنگام
تست کردن باید در سریعترین زمان ممکن در چرخه عمر توسعه نرمافزار رخ دهد. بنابراین بهتر است هر گونه نقص در مراحل اولیه فاز نیازمندی یا طراحی کشف شود. رفع این نقایص در مراحل اولیه تست دارای هزینه بسیار کمتری است. این سوال پیش میآید که چه زمانی تست باید آغاز شود؟ بهترین زمان برای تست زمانی است که نیازمندیها تعریف شده است.
• اصل هفتم: تست وابسته به زمینه نرم افزار است
تست کردن وابسته به زمینه برنامه است، به این معنا که به طور اساسی روش تست یک برنامه تجاری با تست یک برنامه غیر تجاری کاملا متفاوت است زیرا برنامههای توسعه یافته یکسان نیستند. ممکن است شما یک اصل، متدولوژی، روش یا نوع متفاوت تست را برای اساس نوع برنامهای که قرار است تست کنید انتخاب کنید. به طور مثال تست دستگاههای POS با دستگاهای ATM بانکی بسیار متفاوت است.
مرسی آوا جان خیلی خوب بود
مرسی از لطفتون.