یکشنبه , ۹ اردیبهشت ۱۴۰۳

تست نرم‌افزار چیست؟ مقدمه، مبانی و اهمیت

Importance of Software Testing
Importance of Software Testing

تست نرم افزار چیست؟
تست نرم‌افزار یک فعالیت برای بررسی این است که آیا نتایج واقعی(Actual Result) با نتایج مورد انتظار(Expected Result) مطابقت دارند. بعلاوه این فرآیند برای حصول اطمینان از این موضوع است که سیستم نرم‌افزاری بدون نقص(Defect Free) است.1 این موضوع شامل اجرای یک کامپوننت نرم‌افزاری یا سیستمی به منظور ارزیابی یک یا چند ویژگی مورد علاقه است.

همچنین تست نرم‌افزار به شناسایی خطاها(Error)، شکاف‌ها(Gap) یا نیازمندی‌های(Requirement) گم شده در مقابل نیازمندی‌های واقعی کمک می‌کند. تست نرم‌افزار می‌توان به صورت دستی یا با استفاده از ابزارهای خودکار انجام داد. بعضی ترجیح می‌دهند که تست نرم افزار را به صورت تست جعبه سفید(White Box) و یا تست جعبه سیاه(Black Box) انتخاب نمایند.

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

چرا تست نرم‌افزار مهم است؟
تست نرم‌افزار مهم است، چرا که باگ‌های نرم‌افزاری می‌توانند گران یا حتی خطرناک باشند. باگ‌های نرم‌افزاری می‌توانند به طور بالقوه باعث خسارت‌های مالی و یا انسانی شوند، تاریخ پر از نمونه‌هایی از این دست است.

  • در آوریل ۲۰۱۵، ترمینال مالی بلومبرگ در لندن به علت ایراد کوتاه مدت(Glitch) نرم‌افزاری مختل شد، و به بیش از ۳۰۰،۰۰۰ معامله‌گر در بازارهای مالی را متاثر نمود. این باعث تا دولت مجبور شود تا فروش سه میلیارد پوند دِین(Debt) را معلق نماید.
  • خودروهای نیسان به دلیل ناکامی نرم‌افزاری در آشکارسازهای حسگر کیسه هوا(Airbag Sensory Detecto)، بیش از ۱ میلیون خودرو را از بازار فراخوان نماید. به دلیل این نارسایی(Failure) نرم‌افزاری، دو تصادف گزارش شد.
  • Starbucks مجبور شد حدود ۶۰ درصد از فروشگاه‌های ایالات متحده آمریکا و کانادا را به علت نارسایی نرم‌افزاری در سیستم POS خود ببندد. به عنوان نمونه فروشگاه به صورت رایگان قهوه را به صورت رایگان سِرو می‌کرد، به شکلی آنها قادر به پردازش تراکنش نبودند.
  • بعضی از خرده فروشان ثالث(Third Party) آمازون متوجه شدند که به دلیل ایراد کوتاه مدت(Glitch) نرم‌افزاری قیمت محصولات آنها به یک پوند کاهش یافته است. در این ماجرا زیان سنگینی متوجه این افراد شد.
  • آسیب در Windows 10. این باگ کاربران را قادر می‌ساخت تا بواسطه یک رخنه در Win32k System از حفره‌های امنیتی فرار کنند.
  • در سال ۲۰۱۵ هواپیمای جنگنده F-35 قربانی یک باگ نرم‌افزاری شد و قادر به شناسایی صحیحِ اهداف نبود.
  • هواپیمای ایرباس A300 متعلفق به خطوط هوایی چین به دلیل یک باگ نرم‌افزاری در تاریخ ۲۶ آوریل ۱۹۹۴ سقوط کرد و باعث مرگ ۲۶۴ مسافر بیگناه شد.
  • در سال ۱۹۸۵، دستگاه پرتودرمانی Terac-25 کانادا به علت باگ نرم‌افزاری دچار نقصان عملکر شد و دوزهای کشنده تابش اشعه را برای بیماران مهیا نمود. در این ماجرا ۳ نفر فوت کرده و ۳ نفر دیگ به شدت مجروح شدند.
  • در ماه آوریل سال ۱۹۹۹، یک باگ نرم‌افزاری باعث یک نارسایی ۱٫۲ میلیارد دلاری روی پرتاب یک ماهواره نظامی شد، که البته پرهزینه‌ترین از نوع خود در تاریخ است.
  • در ماه می ۱۹۹۶، یک باگ نرم‌افزاری باعث شد حساب بانکی ۸۲۳ مشتری از یک بانک بزرگ در ایالات متحده به مبلغ ۹۲۰ میلیون دلار آمریکا شارژ اعتبار شود.

انواع تست نرم‌افزار
به طور معمول تست نرم‌افزار به سه دسته تقسیم می‌شود:

  • تست کارکردی یا Functional
  • تست غیرکارکردی یا Non-Functional(که عموما از آن به تست Performance یاد می‌شود، اما تست‌های دیگری مانند Usability را نیز شامل می‌شود)
  • تست نگهداشت یا Maintenance(تست رگرسیون و تست نگهداشت)

دسته‌بندی تست

انواع تست

تست‌ کارکردی یا Functional Testing


تست یونیت(Unit Testing)
تست یکپارچه‌سازی(Integration Testing)
Smoke Testing
تست پذیرش کاربر(UAT-User Acceptance Testing)
تست محلی‌سازی(Localization Testing)
تست جهانی‌سازی(Globalization Testing)
تست قابلیت همکاری(Interoperability Testing)
و تست‌های دیگر...

تست‌ غیر کارکردی یا Non-Functional Testing


تست کارایی(Performance Testing)
تست تحمل(Endurance Testing)
تست بار(Load Testing)
تست حجم(Volume Testing)
تست مقیاس‌پذیری(Scalability Testing)
تست کاربردپذیری(Usability Testing)
و تست‌های دیگر...

تست‌ نگهداشت یا Maintenance Testing


تست رگرسیون(Regression Test)
تست نگهداشت(Maintenance Testing)

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

شما می‌توانید تمام قسمت‌های دوره را که به مرور زمان تکمیل شده و در سایت قرار می‌گیرند، به صورت مرتب در اینجا مشاهده نمایید.

ابوالفضل خواجه دیزجی

  1. بدون نقص بودن بدین معنی نیست که نرم‌افزار هیچ ایرادی ندارد، چرا که عملا چنین چیزی طبق اصول تست نرم‌افزار ممکن نیست. این واژه که در تست نرم‌افزار مصطلح شده است بدین معنیست که نرم‌افزار به سطح مناسبی از بلوغ رسیده است، که این سطح از بلوغ از قبل به واسطه متریک‌ها در Test Plan مشخص شده است. به عنوان نمونه یک سطح از بلوغ می‌تواند این باشد: در صورتیکه به مدت یک ماه روی نرم‌افزار هیچ باگ Critical یا بحرانی گزارش نشد، نرم‌افزار به لحاظ کیفی بالغ است، و ضوروت دارد تا از تست خارج شویم. در این شرایط نرم‌افزار به صورت Defect Free یا Bug Free در نظر گرفته می‌شود.

همچنین ببینید

Selenium

آموزش Selenium-قسمت هفدهم: Mouse Click Event و Keyboard Event و موضوع Action Class در Selenium WebDriver

در این بخش، ما رویداد کیبورد(Keyboard Event) و ماوس(Mouse Event) را در Selenium Webdriver آموزش …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *