سود:
- توانایی درک لایه های عملکردی، رگرسیون، edge case و تصادف و تولید سناریوهای آزمایشی و لیست های edge case با هوش مصنوعی
- امکان تسریع در رفع اشکال با نوشتن کد تست خودکار با هوش مصنوعی و استخراج الگو در تجزیه و تحلیل گزارش و خرابی
- با درک این موضوع که تشخیص خطای هوش مصنوعی شواهد نیست، بلکه فرضیه است، علت باید با گزارشها و بازتولید اثبات شود و اهمیت تکرارپذیری گزارش خطا.
وقتی یک بازی منتشر میشود، بازیکنان آن را به روشی بازی میکنند که توسعهدهنده تصورش را هم نمیکرد: گیر کردن در دیوارها، سوء استفاده از موجودی، رسیدن به مکانهای غیرممکن، ایجاد خرابی. تضمین کیفیت (QA - تضمین کیفیت)؛ این فرآیند آزمایش سیستماتیک بازی قبل از انتشار و یافتن و رفع خطاها (باگ ها)، خرابی ها، ناپایداری ها و تجربیات بد است. این یکی از پر زحمت ترین اما حیاتی ترین لینک ها در تولید بازی است. هوش مصنوعی QA را در بسیاری از نقاط تسریع میکند: تولید مورد آزمایشی، تجزیه و تحلیل گزارش اشکال، بررسی گزارش، نوشتن کد تست خودکار، اشکالزدایی، و مراحل تولید پالایش. اما هوش مصنوعی جایگزین شهود و ارزیابی یک آزمایشگر انسانی از احساس بازی نمی شود.
در این بخش شما یاد خواهید گرفت که چگونه از هوش مصنوعی در QA و اشکال زدایی استفاده کنید. شما طراحی سناریو تست، تجزیه و تحلیل گزارش، نوشتن تست خودکار و نظم و انضباط گزارش خطا را یاد خواهید گرفت.
لایه های QA و محل AI
QA چند لایه است. تست عملکرد: آیا ویژگی کار می کند (درب باز می شود، بار ضبط را انجام می دهد). تست رگرسیون: آیا تغییر جدید آنچه قبلاً کار می کرد را شکست؟ تست Edge Case: ورودی های غیرعادی (تنظیم مجدد موجودی، دو کلید همزمان، مقادیر مرزی). عملکرد / تست تصادف: بازی پایدار است. تست بازی/تجربه: سرگرم کننده، شهودی. هوش مصنوعی در چهار مورد اول قوی است: تولید سناریوها، فهرست کردن موارد لبه، نوشتن کد تست، تجزیه و تحلیل گزارشها. آخرین - تجربه - متعلق به انسان است.
جریان QA مرحله به مرحله:
- موارد تست (لیست موارد کاربردی و لبه با هوش مصنوعی) را ایجاد کنید.
- تست خودکار (کد برای بررسی های مکرر) را بنویسید.
- اجرا و جمع آوری (خطاهای ورود، سیاهههای مربوط، خرابی).
- تجزیه و تحلیل (لاگ و الگوی خطا را با هوش مصنوعی بررسی کنید).
- گزارش و تأیید (گزارش اشکال واضح و قابل تکرار؛ رفع آزمایشی).
نکته: پیدا کردن موارد لبه سخت است زیرا طراح بازی خود را "درست" انجام می دهد. از هوش مصنوعی بپرسید "اگر بازیکنی بخواهد این سیستم را بشکند چه تلاشی می کند؟" اکسپلویت ها و موارد لبه را فهرست کنید.
تست خودکار: تکرار را به دستگاه بسپارید
آزمایش دستی موارد مشابه در هر نسخه خسته کننده و مستعد خطا است. تست خودکار این بررسیها را در کد قرار میدهد: آیا یک تابع هر بار که فراخوانی میشود، نتیجه صحیح را برمیگرداند، یک سیستم در وضعیت مورد انتظار است. Unity و Unreal چارچوب های آزمایشی را ارائه می دهند. هوش مصنوعی در نوشتن این تست ها سریع است. این به ویژه برای رگرسیون ارزشمند است: اگر تغییری چیزی را که قبلاً کار می کرد شکسته است، آزمایش قرمز می شود. تستهایی را که هوش مصنوعی تولید میکند مرور کنید، مطمئن شوید که آنها واقعاً معنیدار را بررسی میکنند – تست خالی بدتر از عدم تست است.
احتیاط: در اشکال زدایی، هوش مصنوعی گاهی اوقات توضیحی ساختگی به عنوان یک "علت احتمالی" (توهم) ارائه می دهد. دلیل یک باگ را فقط به این دلیل که هوش مصنوعی به شما گفته است، نپذیرید. علت را با ورود به سیستم، تولید مثل و آزمایش ثابت کنید. تشخیص اشتباه، یافتن مناسب را به تاخیر می اندازد.
بازتولید: قلب اشکال زدایی
اولین نیاز برای رفع اشکال، بازتولید آن به طور قابل اعتماد است. اشکالی که به عنوان «گاهی اتفاق میافتد» را نمیتوان برطرف کرد زیرا نمیتوانید بررسی کنید که آیا اصلاح کار کرده است یا خیر. بنابراین با ارزش ترین کار اشکال زدایی، محدود کردن شرایط دقیقی است که در آن اشکال رخ می دهد (کدام مراحل، کدام موقعیت، چه زمانی). هوش مصنوعی به محدود کردن این موضوع کمک میکند: میتوانید علائم و مراحل تولید مثل جزئی را بیان کنید و بگویید «شرایط و استراتژی محدود کردن را پیشنهاد دهید که ممکن است این رفتار را تحریک کند». اما شما در واقع با اجرای بازی، باریک شدن را انجام می دهید. هوش مصنوعی فرضیه ها را تولید می کند، شما آنها را حذف می کنید.
به خصوص خطاهای مربوط به زمان بندی (شرایط مسابقه) و خطاهای مربوط به حالت حافظه موذیانه هستند. اینها فقط در یک توالی یا بار خاص رخ می دهند. برای چنین خطاهایی، افزودن مهر زمانی و اطلاعات وضعیت به گزارش بسیار مهم است. هوش مصنوعی می تواند این گزارش غنی را تجزیه و تحلیل کند و الگو را ببیند ("خطا همیشه زمانی اتفاق می افتد که این دو رویداد اخیرا اتفاق می افتد"). قانون طلایی اشکال زدایی را به خاطر بسپارید: ابتدا درک کنید، سپس اصلاح کنید. تصحیح بدون درک خطا را پنهان می کند اما آن را حل نمی کند و اغلب در جای دیگر خطای جدیدی ایجاد می کند.
سه کیف کوچک
مورد 1 - شکار مورد لبه. در یک بازی RPG، تیم سیستم موجودی را در گیمپلی "عادی" آزمایش کرد و فکر کرد که کاملاً قوی است. آنها از هوش مصنوعی میگفتند «سعی کنید این موجودی را بشکنید» و 30 سناریوی لبهای ایجاد کردند. 4 مورد از این خطاهای واقعی بودند (0 قطعه وزنی، یکبار مصرف همزمان). قبل از انتشار تصحیح شد.
مورد 2 - تجزیه و تحلیل گزارش خرابی را حل کرد. یک بازی به طور تصادفی خراب می شد. گزارشهای تصادف صدها خط بودند. هنگامی که هوش مصنوعی گزارشها را دریافت کرد و الگو را درخواست کرد، مشخص شد که تصادف همیشه در یک تغییر صحنه خاص و حافظه کم رخ میدهد. با این سرنخ، برنامه نویس نشت حافظه را پیدا کرد. نرخ سقوط به صفر رسید.
مورد 3 - بازگشت از تشخیص اشتباه. یک برنامه نویس به توضیح هوش مصنوعی که "این خطا ناشی از این عملکرد است" اعتماد کرد و به مدت نیم روز با آن دستکاری کرد. هیچ نتیجه ای بیرون نیامد وقتی دوباره مراحل تولید را روشن و ثبت کرد، خطا در جای دیگری بود. درس: تشخیص هوش مصنوعی فرضیه است، نه اثبات.
چهار قالب قابل کپی
1) تولید سناریوی مورد/بهره برداری:
نقش شما: آزمایشگر QA مخرب. من سیستم زیر را توصیف می کنم: [سیستم، قوانین]. وظیفه: لیست 20 سناریو مورد لبه که سعی در شکستن، سوء استفاده یا قرار دادن این سیستم در حالت غیرمنتظره دارند. برای هر کدام: چه چیزی باید امتحان شود، نتیجه مورد انتظار، خطای احتمالی.
2) نوشتن تست خودکار:
موتور: [Unity 2022.3 / Unreal 5.3]. چارچوب تست: [مشخص کنید]. تستهای خودکار را برای عملکرد/سیستم زیر بنویسید: [توضیح/کد]. شامل حروف معمولی، حروف محدود، و ورودی معیوب باشد. مطمئن شوید که هر تست چیزی واقعاً معنیدار را تأیید میکند. نوشتن تست های خالی/بی معنی.
3) تجزیه و تحلیل گزارش/خراش:
در زیر گزارشهای خرابی/خطا بازی آمده است: [log]. وظیفه: علامتگذاری الگوهای تکرارشونده، شرایط رایج (صحنه، حافظه، زمانبندی)، و علل احتمالی ریشهای. واضح صحبت کن همچنین به من بگویید چگونه تأیید کنم.
4) توضیح گزارش اشکال:
گزارش خطای مبهم زیر را واضح و قابل تکرار کنید: [گزارش خام]. خروجی: عنوان، بازتولید گام به گام، نتیجه مورد انتظار، نتیجه واقعی، فرکانس، محیط. اگر اطلاعاتی وجود ندارد، اطلاعات مورد نیاز را فهرست کنید.
اعلان ضعیف / اعلان قوی
اعلان ضعیف:
یک باگ در بازی من وجود دارد، آن را برطرف کنید.
بدون زمینه، بدون گزارش، بدون تولید مثل. هوش مصنوعی پیش بینی کننده است و خطر توهم زیاد است.
اعلان قدرتمند:
یک اشکال در بازی Unity 2022.3 من وجود دارد: وقتی بازیکن یک بار ذخیره سریع انجام می دهد، موجودی گاهی دو برابر می شود. تکثیر: [مراحل].کد مرتبط: [چسباندن]. Log: [ چسباندن]. وظیفه: فهرست علل ریشه ای احتمالی به عنوان فرضیه هایی که باید اثبات شوند، نحوه تأیید و رفع احتمالی هر کدام را بیان می کنند. علت غیرموجودی را ایجاد کنید. اگر مطمئن نیستید به من اطلاع دهید.
بازتولید، کد، گزارش و درخواست "ارائه به عنوان فرضیه" تشخیص را قابل اعتماد می کند.
جدول لایه QA
لایه
چه چیزی را تست می کند؟
سهم هوش مصنوعی
سهم انسان
کاربردی
آیا ویژگی کار می کند؟
اسکریپت، کد تست
تصمیم پذیرش
رگرسیون
آیا چیز قدیمی خراب است؟
تست خودکار
تصمیم دامنه
مورد شدید
ورودی غیر معمول
تولید فیلمنامه
اولویت
خرابی/عملکرد
عزم
تجزیه و تحلیل گزارش
تایید علت ریشه ای
تجربه کنید
سرگرمی، شهود
محدود است
کاملا انسانی
اشتباهات رایج
- فقط تست گیم پلی "عادی" کیس های لبه پس از رها شدن منفجر می شوند.
- اشتباه تشخیص هوش مصنوعی به عنوان مدرک چرا با لاگ و آزمایش ثابت شده است.
- نوشتن تست های خودکار خالی آزمایش بی معنی توهم اعتماد به نفس می دهد.
- گزارش اشکال مبهم یک خطای غیر قابل تکرار را نمی توان اصلاح کرد.
- رد شدن از تست رگرسیون هر تصحیح ممکن است خطاهای جدیدی ایجاد کند.
به طور خلاصه
QA رشته ای است که بازی را برای بازیکن آماده می کند. هوش مصنوعی سناریوهای موردی لبه را تولید می کند، تست های خودکار را می نویسد، گزارش ها را تجزیه و تحلیل می کند و گزارش های خطا را شفاف می کند. اما تشخیص آنها فرضیه است، ارزیابی تجربه انسانی است و هر اصلاحی نیاز به بازآزمایی دارد. رفلکس "چه کسی می تواند این را بشکند و چگونه" را با هوش مصنوعی تکرار کنید. شما شواهد را جمع آوری می کنید.
وظیفه کاربردی
یک سیستم از بازی خود انتخاب کنید. 20 سناریو را با الگوی "تولید سناریوهای موردی/بهره برداری" تولید کنید و در واقع 5 مورد از پرخطرترین آنها را آزمایش کنید. با الگوی "تصفیه گزارش اشکال" یک گزارش قابل تکرار برای اشکالی که پیدا کردید ایجاد کنید.
چک لیست
- [ ] من یک مورد لبه با "چه کسی می تواند این را بشکند و چگونه؟" ایجاد کردم.
- [ ] تست خودکار را برای چک های مکرر نوشت و بررسی کرد.
- [ ] من تشخیص هوش مصنوعی را به عنوان یک فرضیه در نظر گرفتم و آن را با log/test اثبات کردم.
- [ ] من خطاها را به صورت تکراری گزارش کردم.
- [ ] من هر اصلاحیه را برای رگرسیون دوباره آزمایش کردم.