فازینگ یا آزمون فاز یک فرایند آزمون نرمافزار است که شامل فراهم کردن دادههای ناصحیح، غیرمنتظره، اعداد تصادفی بهعنوان ورودی به یک نرمافزار رایانهای است. برنامه معمولاً برای رخدادهایی از جمله کرش، شکست Assertionهای داخلی یا برای یافتن نشتهای حافظه احتمالی استفاده میشود.فرض کنید که یک برنامه نوشته شده است و تستهای معمولی برای آن انجام شده است. اما این تستها ممکن است تنها موارد آشنا یا معمولی را پوشش دهند و ترکیبات مختلف ورودیها یا مسیرهای اجرای برنامه را به خوبی آزمایش نکنند. در این مواقع، فازینگ وارد میشود.
فازینگ به صورت تصادفی و با تولید مجموعهای از ورودیها که شامل دادههای مختلف، اندازهها، فرمتها و ترکیبات مختلف هستند، برنامه را آزمایش میکند. هدف این است که ورودیهایی تولید شوند که به صورت غیرمنتظره باعث خطا، کرش یا نقاط ضعف در برنامه شوند. این خطاها و مشکلات ممکن است به عنوان آسیبپذیریها بهرهبرداری شوند.
شاعر (The Poet)
شاعر این فرآیند را آغاز میکند و مسئول ایجاد یک مورد آزمایشی است. یک مورد آزمایشی فهرستی طولانی از ورودیهای بالقوه است.
پیک (The Courier)
پیک تمام ورودی های تصادفی را در نرم افزار مورد نظر وارد میکند. Fuzzers به گونهای طراحی شدهاند که این کار را به صورت خودکار انجام دهند و اجازه می دهند مقادیر زیادی از ورودی ها به صورت انبوه آزمایش شوند.
اوراکل (The Oracle)
اوراکل بررسی میکند که آیا هر یک از ورودیها باعث میشود نرمافزار کاری غیر از آن را انجام دهد که برای آن طراحی شده است. اگر فازسازی برای اهداف قانونی انجام شود، این رفتار میتواند تکرار و اصلاح شود. یا اگر fuzzing توسط یک هکر انجام شود و رفتار غیر منتظره مفید باشد، ممکن است برای اهداف مخرب استفاده شود.
قطعا فازینگ پیجیده تر و گسترده تر میباشد پیشنهاد میکنم با مراجه به دوره هایی مانند Coursera و چک کردن GitHub در مورد آن بیشتر مطالعه کنید .