چند مدل تست نرم‌افزار وجود دارد ؟
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 6 دقیقه

چند مدل تست نرم‌افزار وجود دارد ؟

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

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

امّا علی‌رغم اینکه تست نرم‌افزار بسیار مهم و حیاتی شده است، افراد بسیاری، جدا از تست‌کننده‌های حرفه‌ای نرم‌افزار، می‌دانند که بیش از صد نوع مختلف تست نرم‌افزار وجود دارد و ممکن است تفاوت‌های بین آنان را درک نکنند.

این مقاله به رفع این مسأله می‌پردازد، و لیستی از برخی انواع تست نرم‌افزار را ارائه داده و موارد عمده را توضیح می‌دهد.

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

تست نرم‌افزار ارزیابی نرم‌افزار برای یافتن این مورد است که آیا برنامه همان‌طور که انتظار می‌رود رفتار می‌کند و کلیه نیازهای تجاری و فنی را برآورده می‌سازد.

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

بدون تست نرم‌افزار، هیچ راهی برای تضمین این مسأله وجود ندارد که برنامه‌های نرم‌افزاری شامل آسیب‌پذیری‌های مهم نیستند، که مجرمان سایبری می‌توانند از آن‌ها برای دستیابی به داده‌های حساس استفاده کنند.

این موضوع به طور گسترده شناخته‌شده است که حتی یک رخنه در داده‌ها می‌تواند به طرز جبران‌ناپذیری به شهرت سازمان آسیب بزند.

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

لیستی از برخی از انواع تست‌های نرم‌افزار

  • تست A/B
  • تست پذیرش (Acceptance)
  • تست دسترسی (Accessibility)
  • تست فعال (Active)
  • تست Alpha
  • تست Android
  • تست Static
  • تست Dynamic
  • تست جعبه خاکستری (Gray Box)
  • تست Code Based
  • تست Cookie
  • و موارد دیگر ...

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

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

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

تست دستی (Manual) در مقابل تست اتوماتیک (automation)

تست نرم‌افزار می‌تواند بسیار وقت‌گیر و تکراری باشد و شامل بررسی‌های بی‌شماری است تا مشخص شود آیا کلیه ویژگی‌های اساسی یک نر‌م‌افزار طبق برنامه کار می‌کند.

برای اینکه کار خود را کمی ساده‌تر کنید، تست‌کنندگان نرم‌افزار اغلب اسکریپت‌های تست را برای اجرای خودکار تست با استفاده از ابزارهای مختلف تست اتوماتیک از جمله Selenium ،‌ Visual Studio Test Professional، Telerik Test Studio، SoapUI ، و Katalon Studio می‌نویسند.

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

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

برخی انواع تست نرم‌افزار نسبت به بقیه تست‌های اتوماتیک آسان‌تر هستند، از جمله تست واحد (unit test) که با اجزای منحصربه‌فرد نر‌م‌افزار سر و کار دارد، و تست یکپارچه‌سازی (integration test) که اجزای منحصربه‌فرد را ترکیب کرده و آن‌ها را به صورت گروهی تست می‌کند.

از طرف دیگر، تست کاربردپذیری (Usability testing) باید به صورت دستی انجام شود زیرا دستگاه‌ها در حال حاضر قادر به ارزیابی سهولت استفاده و قابلیت یادگیری برنامه‌های نرم‌افزاری نیستند.

تست استاتیک (Static) در مقابل تست داینامیک (dynamic)

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

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

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

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

تست جعبه سفید (White box) در مقابل جعبه سیاه (black box) در مقابل جعبه خاکستری (grey box)

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

به همین دلیل است که اغلب در کنار تست جعبه سیاه انجام می‌شود، که در آن تست‌کنندگان نرم‌افزار هیچ دانشی از معماری ندارند و به سورس کد دسترسی ندارند.

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

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

تست عملکردی (Functional) در مقابل تست غیرعملکردی (non-functional)

تست جعبه سیاه یک نمونه عالی از نوعی تست نرم‌افزار است که بر عملکرد سیستم متمرکز است، به همین دلیل به عنوان تست عملکردی شناخته می‌شود.

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

تست غیر عملکردی جنبه‌های غیر عملکردی مثل کارایی،‌ قابلیت استفاده و قابلیت اطمینان را بررسی می‌کند و آن‌ها را بر اساس کیفیت ارزیابی می‌کند.

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

نتیجه‌گیری

اهمیت تست نرم‌افزار را می‌توان به راحتی دست کم گرفت، اما پرش از این فرآیند حیاتی هرگز ایده خوبی نیست زیرا تأثیر منفی بر روی محصول نهایی تقریبا تضمین‌شده است.

در این مقاله ما عمده‌ترین تست‌های نرم‌افزار را توضیح دادیم تا به شما کمک کنیم که درک کنید تست نرم‌افزار ایده‌ای نیست که باید بعداً افزوده شود بلکه بخش جدایی‌ناپذیر فرآیند توسعه است.

همچنین ما در سایت راکت، Unit Test در جاوااسکریپت رو برای علاقمندان به جاوااسکریپت آموزش داده‌ایم. اگر مایل هستید می‌توانید آنرا مشاهده کنید.

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
4 از 1 رای

/@alireza.mzh
علیرضا معمارزاده
junior level developer

Student of Software Engineering, python Developer, i love programming and game

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید