تست نرم‌افزار

تست نرم افزار راهکاری است برای بررسی اینکه آیا محصول نرم افزاری پیاده سازی شده با نیازهای مورد انتظار مطابقت دارد یا خیر، و اطمینان حاصل می کند که محصول نرم افزاری بدون نقص باشد.

این کار شامل اجرای نرم افزار/مولفه‌های سیستم با استفاده از ابزارهای دستی یا خودکار برای ارزیابی یک یا چند ویژگی مورد هدف است.

هدف از تست نرم افزار شناسایی خطاها، شکاف ها یا الزامات از دست رفته ی نیازهای واقعی است.

این مقاله در جهت معرفی تست نرم افزار و بررسی میزان اهمیت آن تهیه شده است و شما اصول اولیه تست نرم افزار که شامل موارد زیر می‌شود را یاد خواهید گرفت:
 
  • تست نرم افزار چیست؟
  • چرا تست نرم‌افزار مهم است؟
  • مزایای تست نرم افزار چیست؟
  • تست در مهندسی نرم‌افزار
  • انواع تست نرم‌افزار
  • استراتژی های تست در مهندسی نرم‌افزار
  • تست برنامه

چرا تست نرم افزار مهم است؟

تست نرم افزار مهم است زیرا در صورت وجود هر گونه اشکال یا خطا در نرم افزار، می توان آن را به موقع شناسایی کرد و قبل از تحویل محصول موارد پیدا شده را حل نمود.

محصول نرم افزاری که به درستی تست شده باشد، قابلیت اطمینان، امنیت و عملکرد بالا را تضمین می کند و منجر به صرفه جویی در زمان، اثربخشی هزینه و رضایت مشتری خواهد شد.
 

الزام انجام تست در چیست؟

تست نرم افزار مهم است زیرا اشکالات نرم افزاری ممکن است پرهزینه یا حتی خطرناک باشند. اشکالات نرم افزاری به طور بالقوه می توانند باعث خسارات مالی و انسانی شوند و تاریخ پر از چنین نمونه هایی است که در ادامه به چند مورد که در شرکت‌های بزرگ اتفاق افتاده است اشاره خواهیم کرد.
 
  • در آوریل 2015، ترمینال بلومبرگ در لندن به دلیل نقص نرم افزاری که بیش از 300000 معامله گر را در بازارهای مالی تحت تأثیر قرار داد، سقوط کرد. دولت را مجبور کرد فروش وام 3 میلیارد پوندی را به تعویق بیندازد.
  • شرکت خودروسازی نیسان بیش از 1 میلیون خودرویی که وارد بازار شده بودند را به دلیل نقص نرم افزاری در آشکارسازهای حسی کیسه هوا فراخوانی کرد. دو تصادف نیز به دلیل خرابی این نرم افزار گزارش شده است.
  • استارباکس مجبور شد به دلیل نقصی که در نرم افزار سیستم POS شان ایجاد شد حدود 60 درصد از فروشگاه های خود را در ایالات متحده و کانادا ببندد. در یک نقطه، فروشگاه قهوه را به صورت رایگان سرو کرد زیرا آنها قادر به پردازش تراکنش خرید نبودند.
  • برخی از خرده فروشان آمازون به دلیل نقص نرم افزاری قیمت محصولشان به 1 پوند کاهش پیدا کرد و ضرر سنگینی را متقبل شدند.
  • آسیب پذیری در ویندوز 10. این باگ کاربران را قادر می‌سازد تا از طریق نقص در سیستم win32k از sandboxهای امنیتی فرار کنند.
  • در سال 2015 هواپیمای جنگنده F-35 قربانی یک باگ نرم افزاری شد که باعث شد اهداف را به درستی شناسایی نکند.
  • ایرباس A300 خطوط هوایی چین در 26 آوریل 1994 به دلیل یک باگ نرم افزاری سقوط کرد و 264 بیگناه کشته شدند.
  • در سال 1985، دستگاه پرتودرمانی Therac-25 کانادا به دلیل اشکال نرم افزاری دچار اختلال شد و دوزهای پرتوهای کشنده را به بیماران رساند که منجر به کشته شدن 3 نفر و مجروحیت شدید 3 نفر دیگر شد.
  • در آوریل 1999، یک باگ نرم افزاری باعث شکست پرتاب ماهواره نظامی 1.2 میلیارد دلاری شد که پرهزینه ترین حادثه در تاریخ بود.
  • در ماه مه 1996، یک اشکال نرم افزاری باعث شد که حساب های بانکی 823 مشتری یکی از بانک های بزرگ ایالات متحده، 920 میلیون دلار اعتبار داشته باشد.
 

مزایای تست نرم افزار چیست؟

در اینجا به مزایای استفاده از تست نرم افزار اشاره می‌کنیم:
 
  • مقرون به صرفه بودن: یکی از مزایای مهم تست نرم افزار است. آزمایش به موقع هر پروژه فناوری اطلاعات به شما کمک می کند تا در دراز مدت پول خود را ذخیره کنید. در صورتی که اشکالات در مرحله اولیه تست نرم افزار شناسایی شوند، هزینه رفع آن کمتر است.
  • امنیت: این آسیب پذیرترین و حساس ترین مزیت تست نرم افزار است. مردم به دنبال محصولات قابل اعتماد هستند. تست به از بین بردن زود هنگام خطرات و مشکلات کمک می کند.
  • کیفیت محصول: نیاز ضروری هر محصول نرم افزاری است. تست تضمین می کند که یک محصول با کیفیت به مشتریان تحویل داده شود.
  • رضایت مشتری: هدف اصلی هر محصول جلب رضایت مشتریان است. تست UI/UX بهترین تجربه کاربر را تضمین می کند.

تست در مهندسی نرم‌افزار

مطابق با ANSI/IEEE 1059، تست در مهندسی نرم افزار فرآیندی است برای ارزیابی یک محصول نرم افزاری برای یافتن اینکه آیا محصول نرم افزار فعلی شرایط مورد نیاز را برآورده می کند یا خیر. فرآیند تست شامل ارزیابی ویژگی‌های محصول نرم‌افزاری برای الزامات از نظر هرگونه نیاز، اشکال یا خطا، امنیت، قابلیت اطمینان و عملکرد است.
 

انواع تست نرم‌افزار

در اینجا انواع تست نرم افزار آورده شده است:
به طور معمول تست به سه دسته طبقه بندی می شود.
  • تست عملکردی
  • تست غیر عملکردی
  • تعمیر و نگهداری

جدول انواع تست نرم افزار در مهندسی نرم افزار

دسته ی تستنوع تست
تست عملکردی

Unit Testing

Integration Testing

Smoke

UAT ( User Acceptance Testing)

Localization

Globalization

Interoperability

 

تست غیر عملکردی

Performance

Endurance

Load

Volume

Scalability

Usability

 

تعمیر و نگهداری

Regression

Maintenance

 
این لیست کامل نیست زیرا بیش از 150 نوع آزمایش وجود دارد و هنوز نیز موارد جدیدی به آن اضافه می شود. همچنین، توجه داشته باشید که همه انواع آزمایش برای همه پروژه ها قابل اجرا نیستند و به ماهیت و محدوده پروژه بستگی دارند.
 

استراتژی تست در مهندسی نرم‌افزار

در اینجا استراتژی های مهم در مهندسی نرم افزار آورده شده است:
Unit Testing: این رویکرد اولیه تست نرم افزار توسط برنامه نویس برای آزمایش واحد برنامه دنبال می شود. این به توسعه دهندگان کمک می کند تا بدانند آیا واحد کد به درستی کار می کند یا خیر.
Integration testing: بر ساخت و طراحی نرم افزار تمرکز دارد. باید ببینید که واحدهای یکپارچه در کنار هم بدون خطا کار می کنند یا خیر.
System testing: در این روش نرم افزار شما به صورت کلی کامپایل شده و سپس به صورت کلی تست می شود. این استراتژی تست عملکرد، امنیت، قابل حمل بودن و غیره را بررسی می کند.
 

تست برنامه

تست برنامه در تست نرم افزار روشی برای اجرای یک برنامه نرم افزاری واقعی با هدف آزمایش رفتار برنامه و یافتن خطاها است.

برنامه نرم افزاری با داده های مورد آزمایشی اجرا می شود تا رفتار برنامه یا پاسخی که به داده های آزمون می دهد را تجزیه و تحلیل کند. یک تست برنامه خوب آزمایشی است که شانس بالایی برای یافتن باگ دارد.
 

خلاصه مبانی تست نرم افزار:

  • تعریف تست نرم افزار: تست نرم افزار به عنوان فعالیتی شناخته می‌شود که در آن به بررسی اینکه آیا نتایج بدست آمده با نتایج مورد انتظار مطابقت دارند یا خیر می‌پردازیم و همچنین اطمینان حاصل خواهیم کرد که سیستم نرم افزار عاری از نقص باشد.
  • تست مهم است زیرا اشکالات نرم افزاری ممکن است پر هزینه یا حتی خطرناک باشند.
  • دلایل مهم استفاده از تست نرم افزار عبارتند از: مقرون به صرفه بودن، امنیت، کیفیت محصول و رضایت مشتری.
  • به طور معمول تست به سه دسته تست عملکردی، تست غیر عملکردی و تعمیر و نگهداری طبقه بندی می شود.
  • استراتژی های مهم در مهندسی نرم افزار عبارتند از: تست واحد، تست یکپارچه سازی، تست اعتبار سنجی و تست سیستم.