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

تست جعبه سیاه (Black-Box Testing)

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

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

مزایا

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

معایب

  • پوشش تست (Test Coverage) محدود است چراکه فقط تعدادی از سناریوهای تست اجرا می شوند.
  • تست ها اغلب ناکارآمد هستند چراکه تستر اغلب هیچگونه اطلاعاتی در مورد نرم افزار ندارد.
  • پدیده ی پوشش کور (Blind Coverage) را باعث می شود چراکه تستر نمی تواند قسمت های خاص کد که مستعد خطا می باشند را مورد تست قرار دهد.
  • موارد تست را به دشواری می تواند طراحی کرد.

بسته ی آموزش ویدئویی Unit Testing برای برنامه نویسان سی شارپ

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی Unit Testing برای برنامه نویسان سی شارپ دیدن کنید.

تست جعبه سفید (White-Box Testing)

این روش تست مربوط به بررسی دقیق ساختار و منطق درونی کد با جزییات کامل است. نام های دیگر این روش تست، تست  شیشه ای (Glass Testing) و تست جعبه باز (Open-box Testing) است. در این روش از تست، تستر باید دانش کاملی در مورد ساختار درونی کد و قسمت های مختلف آن داشته باشد. از طریق دسترسی به سورس کد، تستر می تواند قسمتی از کد که رفتار نامناسبی را دارد و حاوی خطا می باشد را مشخص کرده و مورد تست قرار دهد.

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

مزایا

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

معایب

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

تست جعبه خاکستری (Grey-Box Testing)

تست جعبه خاکستری تکنیک تست کردن نرم افزار با داشتن یک دانش محدود در مورد ساختار درونی کد می باشد. یک شعار معروف در حوزه ی تست نرم افزار “هر چه بیشتر بدانید، بهتر است” می باشد. علی رغم روش تست جعبه سیاه که در آن تستر هیچگونه دانشی در مورد نرم افزار ندارد و صرفاً با وارد کردن ورودهای مختلف از طریق واسط کاربری برنامه، برنامه را تست می کند، در روش تست جعبه خاکستری دانش کافی در مورد مستندات، بانک اطلاعاتی و غیره در دسترس تستر قرار دارد. با دانش چنین اطلاعاتی، می توان سناریوهای بهتری را برای تست نوشتن و داده های ورودی بهتری را برای نرم افزار در نظر گرفت.

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

مزایا

  • ترکیبی از مزایای روش تست جعبه سیاه و تست جعبه سفید است.
  • در این روش، تستر ها به سورس کد وابستگی ندارند. تستر ها از واسط ها (Interface) و تعاریف عملیات (Functional Specification) استفاده می کنند.
  • با توجه به اطلاعات محدودی که در دسترس تستر قرار دارد، طراحی سناریوهای تست مختلف در حوزه ی پروتوکل های ارتباطی و نوع های داده ای وجود دارد.
  • تست ها از نقطه نظر کاربرد انجام می شوند و نه از نقطه نظر طراح.

معایب

  • به دلیل عدم دسترسی به سورس کد، بررسی آن و پوشش تست محدود خواهد بود.
  • امکان تکراری بودن برخی از تست ها به دلیل اجرای آنها توسط طراح نرم افزار وجود دارد.
  • بسیاری از مسیرهای اجرایی برنامه (Execution Path) تست نخواهند شد چراکه تست کردن برنامه با تک تک وروردی ها امکان پذیر نیست و وقت زیادی را خواهد گرفت.

مقایسه روش های تست

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

تست جعبه سیاه (Black-Box Testing)

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

تست جعبه خاکستری (Grey-Box Testing)

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

تست جعبه سفید (White-Box Testing)

  • تستر دانش کامل در مورد ساختار داخلی نرم افزار دارد.
  • اغلب توسط تستر ها و توسعه دهندگان انجام می شود.
  • ساختار داخلی نرم افزار کاملاً شناخته شده است و تستر می تواند داده های مناسبی برای تست طراحی کند.
  • کامل ترین و زمانبر ترین است.
  • برای تست الگوریتم مناسب است.
  • حوزه های داده و مرزهای داخلی می توانند بهتر تست شوند.

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

پاسخی بگذارید

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