تست جعبه خاکستری (Gray Box Testing Strategy) روشی برای تست نرمافزار است که با آگاهی کم از فعالیتهای داخلی برنامه انجام میگیرد. این تست ترکیبی از تست جعبه سفید و سیاه است.همانطور که میدانید تستر در استراتژی جعبه سیاه از ساختار داخلی برنامه اطلاعی نداشته و در مقابل در استراتژی جعبه سفید آگاهی کامل ازساختار داخلی دارد. اما در استراتژی جعبه خاکستری تستر تا حدودی از ساختار داخلی برنامه آگاه بوده که این شامل دسترسی به ساختاردادههای داخلی و الگوریتمها در جهت طراحی Test Case ها است. علت نامگذاری این روش آن است که تستر برنامه را مانند جعبهای نیمه شفاف و خاکستری رنگ تصور میکند که تا حدودی ساختار داخلی برنامه را از بیرون میبیند.
یک تستر جعبه خاکستری ساختار درونی برنامه را میشناسد و به تمامی مستندات و ساختار دادهها دسترسی دارد. این دسترسی او را قادر میسازد که به خوبی از الگوریتمها استفاده کرده و آنها را ترکیب کند تا Test Case های بهتری را طراحی کند.
نمونهای از تست جعبه خاکستری:
برای مثال اشتراک خبرنامه را میگوییم. خبرنامه شامل آخرین مطالب منتشر شده است که به ایمیل مشترکان ارسال میشود. برای اشتراک، کاربر ایمیل خود را در فرم وارد میکند. پس از تکمیل ثبت نام، لینک فعال سازی به ایمیل کاربر ارسال خواهد شد. اعتبار سنجی ایمیل با استفاده از جاوا اسکریپت فقط در سمت گیرنده انجام میشود. اگر تستر ساختار داخلی و پیاده سازی این فرآیند را نداند ممکن است این فرم با ایمیلهای نامعتبر، شماره ایمیل نامعتبر و… بدون قابلیت چک کردن ساخته شود.اما تستری که به ساختار داخلی آگاه باشد ابتدا باید برای تست برنامه جاوا اسکریپت آن را غیر فعال کند. زیرا ممکن است با وجود جاوا اسکریپت برنامه به هر دلیلی شکست خورده و ایمیل نامعتبری را برای پردازش دریافت کند. بنابراین تستر موارد زیر را بایستی تست کند:
– شماره ایمیلهای نامعتبر
– فرمت و ساختار ایمیل
– فرمت ایمیل و اعتبار شماره آن را باهم
در این تست لزومی ندارد که تستر به تمامی کدهای این سرویس دسترسی داشته باشد همینکه ساختار سرویس اشتراک خبرنامه را میداند و از تکنولوژیهای بهکار رفته خبر دارد کافی است. بنابراین میتوان گفت از یک سو با دانش عملکرد اشتراک خبرنامه، از تست جعبه سفید استفاده میکند و از سویی دیگر با تستهای مختلف از بیرون برنامه، تست جعبه سیاه انجام میدهد. با ترکیب این دو روش میتواند بهترین Test Case ها را در این خصوص طراحی کند.
مزایای استفاده از این روش عبارتند از:
– ترکیب روشها: این تست ترکیبی از دو روش جعبه سفید و سیاه است، بنابراین از مزایای هر دو آنها میتوان استفاده کرد.
– غیر نفوذی: این تست که بر پایه تست عملکردی است، با آگاهی از معماری، ساختار درونی و الگوریتمهای به کار رفته در برنامه، توانایی تغییر در کدهای برنامه را داشته تا از حملات مختلف جلوگیری کرده و برنامه را ایمن کند.
– طراحی تستهای هوشمند: با داشتن مستندات طراحی، ساختار پایگاه داده و ساختار برنامه و با این اساس که اطلاعات محدودی که دردسترس تستر است، میتواند سناریوهای تست هوشمند بسیار عالی طراحی کند به ویژه در پروتکلهای ارتباطی و نوع دادههایی که در برنامه استفاده میشود.
– جلوگیری از تستهای غیر مرتبط: بهرغم تمامی مزایای فوق و ویژگیهایی که بیان شد، این تست مرز بین تستر و برنامه نویس را نگه داشته و تستهایی که مختص برنامه نویس میباشد را انجام نمیدهد.
– این تست از نقطه نظر کاربر انجام میشود نه از دیدگاه طراح !
معایب استفاده از این روش عبارتند از:
– پوشش جزئی: از آنجا که به کد دسترسی ندارید بنابراین تستهای کافی که برنامه را پوشش بدهد، در دسترس شما نیست و مانند تست جعبه سفید کد برنامه را در بر نمیگیرد.
– نقص شناسایی: در برنامههای توزیع شده، شناسایی خطاها به دلیل محدودیت دسترسی به ساختار داخلی برنامه بسیار دشوار است. با این حال این تست مزیتی است که خطاهای استثنا را شناسایی کرده تا برنامه در مقابل حملات، دفاع محکمتری انجام دهد.
تسلط برفعالیتهای یک نرمافزار مانند طناب بازی است که مسلط به راه رفتن بر روی طناب است. طناب باز بهتر از هر کسی میداند که چگونه راه برود. بر خلاف تست جعبه سیاه و سفید که در آن تست فقط در برنامه رابط کاربری انجام میگیرد، در تست جعبه خاکستری، تستر به مستندات طراحی و ساختار پایگاه داده دسترسی دارد. این مستندات تستر را قادرمیسازد که دادههای بهتری را برای تست آماده کند و سناریوهای تست را بهتر طراحی کند.
تست خاکستری یک سیستم کامل بازرسی را فراهم کرده که از هر دو منظر توسعه و هکر مخرب، برنامه را تست میکند. این تست پوشش کاملی از طیف گستردهای از آسیب پذیری و تمام خطرات بالقوهای که به سیستم داده میشود، است.
Thank you nice article
با تشکر از مطالبی که در اختیارمان گذاشته اید
سلام. مطالب خوب است ولی مثال کم می گذارید چرا؟