مقدمه
فرآیندهای نرم افزار
توسعه نرم افزارهای چابک
مهندسی نیازمندی
مدل سازی سیستم
طراحی معماری
طراحی و پیاده سازی
تست نرم افزار
تکامل نرم افزار
سیستمهای اجتماعی فنی
https://sokanacademy.com/blog/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-54-%D9%86%D9%88%D8%B9-%D8%AA%D8%B3%D8%AA-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1
Paul Ammann, Jeff Offutt - Introduction to Software Testing-Cambridge University Press (2008)
۴ دلیل برای آنکه اهمیت تست نرم افزار را جدی بگیریم!
تست نرم افزار یکی از مراحل مهم در زمینه توسعه و ارائه یک محصول نرم افزاری به بازار است. در بسیاری از پروژهها، اهمیت این مرحله تا حد لازم جدی به شمار نرفته و از اجرای آن توسط تیم تخصصی تست صرفنظر میشود. همین امر سبب میشود که در صورت بروز اشکال در محصول، اعتبار مجموعه آن زیر سوال برود. برای درک بهتر اهمیت تست نرم افزار، در اینجا سعی داریم چند نکته مهم و کلیدی را تشریح کنیم.
1) صرفهجویی در هزینهها
تست مزایای بسیار زیادی دارد و یکی از مهمترین آنها، بهرهوری هزینهها در درازمدت است. توسعه یک محصول نرم افزاری از مراحل مختلفی تشکیل شده و هرچقدر که اشکالات محصول زودتر از دل آن بیرون کشیده شود، هزینه کمتری به مجموعه تولیدکننده آن تحمیل خواهد شد. از همین جهت، کارشناسان تست نرم افزار معتقدند که تست مرحلهای است که باید در زمان درست آن انجام شود. استخدام و بهرهگیری از تجربیات کارشناسان تضمین کیفیت نرم افزار، یک سرمایهگذاری پرسود برای محصول نرم افزاری به حساب آمده و کمک میکند تا پروژه شما از سوددهی مناسبی در قیاس با بودجه صرف شده برخوردار باشد.
به عنوان مثال، تصور کنید که یک اپلیکیشن بانکی را دانلود و بر روی گوشی خود نصب کردهاید. از آنجا که بانک انتخابی شما کمترین میزان کارمزد را در قیاس با دیگر رقبا دارد، شمار بسیاری از کاربران در هر لحظه از شبانهروز با سرویسهای آن کار میکنند. حال اگر فرآیند ثبتنام اولیه این بانک در اپلیکیشن با خطایی سمت سرور مواجه شود، در هر لحظه صدها هزار کاربر مختلف از سراسر کشور با این مشکل دست و پنجه نرم خواهند کرد. این موضوع منجر به سلب اعتماد مشتریان نسبت به سیستم خواهد شد؛ زیرا که سیستم موجود حتی از امکان ثبت نام اولیه کاربران هم جلوگیری کرده و کاربران را به سراغ دیگر سیستمهای مشابه روانه خواهد کرد. تجربه بدی که کاربران از اپلیکیشن قبل داشتهاند، سبب میشود که دیگر به سرویسدهی آن اعتماد نکرده و استفاده از آن را به دوستان خود حتی توصیه هم نکنند! تست نرم افزار، اساسا کمک میکند تا یک شرکت تولیدی نرم افزار بتواند با صرفهجویی در هزینهها، مشکلات را در همان بدو وقوع حل کند؛ زیرا که در این مرحله با هزینه بسیار کمتری میتوان مشکلات احتمالی محصول ساخته شده را برطرف ساخت و سپس با ارائه به بازار، مشتریان را نیز راضی نگه داشت.
در میماه سال 1996، وجود یک اشکال نرم افزاری، حساب 823 مشتری در یکی از بانکهای بزرگ ایالات متحده آمریکا را تحت تاثیر قرار داد و این بانک رقمی بالغ بر 920 میلیون دلار متضرر شد.
وقوع خرابی در حین ارتقای سیستم نرم افزاری بانک سانکورپ (Suncorp Bank) در فوریه سال گذشته، منجر به ناپدید شدن رقم قابل توجهی از حسابهای مشتریان شد و بسیاری از آنان را با مشکلاتی نظیر قفل شدن حساب و یا برگشت خوردن چکها مواجه کرد.
2) امنیت
نکته دیگری که اهمیت بالای تست نرم افزار بر آن تکیه دارد، مسئله "امنیت" است. این بخش، یکی از حساسترین موضوعات مطرح در زمینه تست و در عین حال آسیبپذیرترین آنها به شمار میرود.
موقعیتهایی متعددی وجود داشتهاند که اطلاعات شخصی شماری از کاربران دزدیده شده و یا اینکه هکرها از این اطلاعات به نفع خود بهره برده باشند. از این جهت، مشتریان یک محصول نرم افزاری به دنبال ابزاری هستند که بتوان از لحاظ امنیتی به آن تکیه کرد. در واقع کاربران ترجیح میدهند اپلیکیشنهایی را بر روی کامپیوتر یا گوشی موبایل خود نصب کنند که بتواند از اطلاعات آنان به خوبی نگهداری کرده و تحت هیچ شرایطی آن را با دیگران به اشتراک نگذارد. این حساسیت زمانی اهمیت خود را نشان میدهد که به عنوان مثال، صحبت از اطلاعات شخصی مشتریان در یک حساب بانکی مطرح باشد. در جمعبندی این موضوع، باید گفت که تست نرم افزار از لحاظر امنیت، جلب اعتماد مشتری را در پی دارد و بر طبق همین اصل، مجموعه مشتریان با اطمینان بیشتری اطلاعات خود را در اختیار سیستم و یا محصول نرم افزاری شما قرار خواهند داد.
گاها وجود حتی کوچکترین مسئله امنیتی، باعث ایجاد مشکلاتی بزرگ برای کسب و کارهای مطرح در سراسر جهان شده است. بنابراین، تست امنیت نرم افزار مسئلهای است که باید بیش از سایر موارد به آن پرداخته شود تا محصول نهایی به عنوان یک محصول باکیفیت و قابل اطمینان به دست مشتری برسد.
در چند سال گذشته، اتحادیه اروپا مجموعه قوانینی را تحت عنوان « مقررات عمومی حفاظت از داده» (The General Data Protection Regulation) به تصویب رساند که شرکتها را وادار میکند تا با دقت بیشتری از اطلاعات شخصی مشتریان خود محافظت کنند. هرگونه خطا که منجر به نشت اطلاعات کاربران شده باشد، جریمه سنگینی را برای کسب و کارها در پی خواهد داشت.
وقوع یک خطا در سیستمهای نرم افزاری 5 بیمارستان در استرالیا، سوابق هزاران بیمار مختلف در طی تاریخ فعالیت این مجموعه را در معرض نابودی قرار داد. فرآیند بازیابی سیستمها، بیش از 2 هفته به طول انجامید و خسارات بسیاری را برای آنها در پی داشت.
وقوع یک اشکال (باگ) نرم افزاری در سیستم هواپیمایی کشور چین در 26 آوریل 1994، سقوط یک فروند هواپیمای ای300 (A300) و کشته شدن 264 فرد بیگناه را در پی داشت.
3) کیفیت محصول
به منظور کسب نتایج موفق یک محصول نرم افزاری در بازار، لازم است که عملکرد آن درست مطابق با انتظارات باشد. محصولات همواره به نوعی در حال خدمت به کاربران هستند. بنابراین، بسیار مهم است که ارزشهای وعده داده شده برای مشتریان قابل دستیابی باشد. تولید و ارائه یک محصول نرم افزاری، فرآیندی است که مراحل متعددی را در خود جای داده و در مرحله تست، تمامی قابلیتها باید مورد آزمایش قرار گیرند. به عنوان مثال، رابط گرافیکی محصول نرم افزاری شما باید تا حد ممکن ساده و از لحاظ جذابیت، توجه کاربر را به خود جلب کند.علاوه بر این، عملکرد قسمتهای اصلی نرم افزار مورد آزمایش قرار میگیرد تا با شناسایی اشکالات موجود، مراتب به واحد توسعه گزارش شوند. توسعهدهندگان با بررسی نتایج تست، اشکالات گزارش شده را برطرف و مجددا آن را به بخش کنترل کیفیت ارجاع میدهند. در برخی مواقع، رفع یکی از اشکالات نرم افزار منجر به بروز شمار دیگری از مشکلات در دیگر بخشها میشود که در این شرایط، کارشناس بخش تست باید هر قابلیت را چندین مرتبه مورد آزمایش قرار دهد تا از عملکرد صحیح آن بتوان اطمینان حاصل کرد. بدین ترتیب میتوان گفت که چالش اصلی برای یک کارشناس تست، کشف اشکالات نیست؛ بلکه هنر اصلی در تست چندین باره قابلیتها و تضمین کیفیت کلی محصول در زمان انتشار است.
4) رضایت مشتریان
هدف نهایی برای یک شرکت تولیدکننده محصولات نرم افزاری، این است که بتواند رضایت مشتریان خود را به بهترین شکل ممکن جلب کند. به منظور فراهم ساختن تجربه کاربری مناسب توسط مشتریان، لازم است که مرحله تست نرم افزار با دقت و کیفیت مناسبی به انجام برسد. بهترین محصول در بازار اشباع شده فعلی، محصولی است که بتواند اعتماد مشتریان جلب کند. در صورتی که این شرط در هنگام انتشار نرم افزار رعایت شده باشد، محصول نرم افزاری شما بدون صرف هیچگونه هزینهای و توسط مشتریان شما به دیگر افراد نیز توصیه شده و سهم قابل توجهی در بازار را به دست خواهد آورد.
البته باید توجه داشت که جلب اعتماد مشتری کار آسانی نیست؛ زیرا که حتی کوچکترین اشکالات مشاهده شده توسط مشتری، مضرات متعددی را برای یک مجموعه تولیدی در پی داشته باشد. به عنوان مثال، همه ما تجربه استفاده از اپلیکیشنهایی با کیفیت نامطلوب را داشته و معمولا پس از صرف چند دقیقه از زمان نصب، آنان را از روی کامپیوتر یا گوشی موبایل خود حذف کردهایم. بازار فعلی محصولات نرم افزاری اشباع شده و برای هر نیازی، چندین نمونه مختلف برای انتخاب کاربر وجود دارد. از این روی به عنوان تولید کننده یک محصول نرم افزاری، همواره باید تاثیر "اولین برخورد" را مدنظر قرار دهید؛ زیرا به محض اینکه کاربر با اپلیکیشن شما ارتباط خوبی برقرار نکند، ممکن است سریعا یک نرم افزار رقیب جایگزین محصول نرم افزاری شما بر روی موبایل یا کامپیوتر او شود.
سال گذشته، شرکت هواپیمایی بریتانیا (British Airways)، برای ششمین بار با یک مشکل نرم افزاری بزرگ دست و پنجه نرم میکرد. این اشکال سبب لغو شمار بسیاری از پروازهای محلی و تاخیرهای طولانی مدت در پروازهای بینالمللی شد. گزارشات حاکی از آن بود که رفع این مشکل نرم افزاری، مجموعا سه روز لغو پرواز را برای این شرکت هواپیمایی در پی داشت و ضرر وزیان بسیاری را به صاحبان این مجموعه تحمیل کرد.