Добивки:
- Способност да се разберат функционалните, регресивните, edge case и crash test layers и да се произведуваат тест сценарија и листи на рабови случаи со вештачка интелигенција
- Способност да се забрза дебагирањето со пишување автоматски код за тестирање со вештачка интелигенција и вадење обрасци во евиденција и анализа на падови
- Да се биде во можност да се разбере дека дијагнозата на грешка на вештачката интелигенција не е доказ, туку хипотеза, причината мора да се докаже со дневници и репродукција, како и важноста на извештајот за грешка да се репродуцира.
Кога играта ќе биде објавена, играчите ја играат на начини на кои развивачот не замислил: заглавување во ѕидови, искористување на залихите, достигнување до невозможни места, предизвикување падови. Обезбедување на квалитет (QA — осигурување на квалитет); Тоа е процес на систематско тестирање на играта пред објавување и пронаоѓање и поправање на грешки (багови), падови, нестабилности и лоши искуства. Ова е една од најтрудоинтензивните, но критични врски во производството на дивеч. Вештачката интелигенција го забрзува QA во многу точки: генерирање тест случаи, анализа на извештаи за грешки, преглед на дневници, автоматско пишување кодови за тестирање, отстранување грешки и рафинирање на производствени чекори. Но, вештачката интелигенција не ја заменува интуицијата на човечкиот тестер и евалуацијата на чувството за играта.
Во оваа единица ќе научите како да користите вештачка интелигенција во ОК и дебагирање; Ќе научите дизајн на тест сценарија, анализа на дневници, автоматско пишување тест и дисциплина за известување за грешки.
Слоеви на ОК и место на ВИ
ОК е повеќеслојна. Функционално тестирање: дали функционира функцијата (дали се отвора вратата, дали се оптоварува снимањето). Регресивно тестирање: дали новата промена го скрши она што работеше порано? Тестирање на рабови: невообичаени влезови (ресетирање на залиха, два клуча одеднаш, гранични вредности). Тестирање на перформанси/краш: дали играта е стабилна. Тест за игра/искуство: забавно, интуитивно. Вештачката интелигенција е силна во првите четири: генерирање сценарија, наведување случаи на работ, пишување код за тестирање, анализа на дневници. Последното - искуството - му припаѓа на човекот.
Проток на ОК чекор по чекор:
- Генерирајте тест-случаи (функционална и листа на рабови со ВИ).
- Напишете автоматско тестирање (код за повторливи проверки).
- Стартувај и собирај (грешки во дневници, дневници, падови).
- Анализирај (испитај го дневникот и шемата за грешки со вештачка интелигенција).
- Пријавете и потврдете (јасен, репродуктивен извештај за грешки; поправен тест).
Совет: Тешко е да се најдат рабови бидејќи дизајнерот ја игра својата игра „правилно“. Прашајте ја вештачката интелигенција „што би се обидел играчот ако сака да го скрши овој систем? Наведете ги експлоатирањата и случаите на рабовите.
Автоматско тестирање: препуштете го повторувањето на машината
Рачното тестирање на истите работи во секое издание е заморно и склоно кон грешки. Автоматското тестирање ги става овие проверки во код: дали функцијата го враќа точниот резултат секогаш кога ќе се повика, е систем во очекувана состојба. Unity и Unreal нудат рамки за тестирање; ВИ е брза во пишувањето на овие тестови. Тоа е особено вредно за регресија: ако промената скрши нешто што функционираше претходно, тестот оди црвено. Прегледајте ги тестовите што ги произведува вештачката интелигенција, осигурувајќи се дека тие проверуваат што е навистина значајно - празниот тест е полош отколку без тест.
Внимание: при дебагирање, вештачката интелигенција понекогаш произведува измислено објаснување како „веројатна причина“ (халуцинација). Не ја прифаќајте причината за грешка само затоа што тоа ви го кажала вештачката интелигенција; Докажете ја причината со логирање, репродукција и тестирање. Погрешната дијагноза го одложува наоѓањето на вистинскиот.
Репродукција: срцето на дебагирањето
Првото барање за да се поправи грешката е да се репродуцира сигурно. Грешка опишана како „некогаш се случува“ не може да се поправи бидејќи не можете да потврдите дали поправката функционирала. Значи, највредното дело на дебагирање е стеснување на точните услови под кои се појавува бубачката (кои чекори, која ситуација, каков тајминг). Вештачката интелигенција помага да се намали ова: можете да ги дадете симптомите и чекорите за делумна репродукција и да кажете „предложете услови и стратегија за стеснување што може да го поттикнат ова однесување“. Но, вие всушност го правите стеснувањето со водење на играта; ВИ генерира хипотези, вие ги елиминирате.
Особено грешките поврзани со тајмингот (состојба на трката) и грешките поврзани со состојбата на меморијата се подмолни; тие се случуваат само во одредена секвенца или оптоварување. За такви грешки, од клучно значење е да се додадат информации за временскиот печат и статусот во дневникот; ВИ може да го анализира овој богат дневник и да ја види шемата („грешката секогаш се случува кога овие два настани се случија неодамна“). Запомнете го златното правило за дебагирање: прво разберете, па поправете. Исправката без разбирање ја крие грешката, но не ја решава и често создава нова грешка на друго место.
три мини футроли
Случај 1 - Лов на рабови. Во RPG, тимот го тестираше системот за залихи во „нормална“ игра и мислеше дека е солиден. Тие велеа дека вештачката интелигенција „обидете се да го пробиете овој инвентар“ и генерираа 30 сценарија за рабови; 4 од нив беа вистински грешки (0 разделување на тегови, истовремена употреба за еднократна употреба). Поправено пред објавување.
Случај 2 - Анализата на дневникот го реши падот. Играта случајно паѓаше; логовите за падови беа стотици линии. Кога на вештачката интелигенција и биле дадени дневниците и ја побарале шемата, било откриено дека падот секогаш се случувал при специфична транзиција на сцената и слаба меморија. Со овој поим, програмерот го пронајде истекувањето на меморијата; Стапката на несреќи падна на нула.
Случај 3 - Враќање од погрешна дијагноза. Еден програмер му верувал на објаснувањето на вештачката интелигенција дека „оваа грешка е предизвикана од оваа функција“ и се грижел со неа половина ден; не излезе никакви резултати. Кога повторно ги разјаснил и ги евидентирал чекорите за производство, грешката била на сосема друго место. Поука: Дијагностиката на вештачката интелигенција е хипотеза, а не доказ.
Четири шаблони за копирање
1) Генерирање на рабови случаи/сценарио за експлоатација:
Вашата улога: злонамерен тестер за QA. Го опишувам следниов систем: [систем, правила]. Задача: наведете 20 сценарија за рабови што ќе се обидат да го скршат, експлоатираат или фрлаат овој систем во неочекувана состојба. За секој: што да се обиде, очекуван исход, можна грешка.
2) Автоматско пишување тестови:
Мотор: [Единство 2022.3 / Unreal 5.3]. Рамка за тестирање: [наведете]. Напишете автоматизирани тестови за следната функција/систем: [опис/код]. Вклучете нормални букви, гранични букви и неисправен влез. Проверете дали секој тест потврдува нешто навистина значајно; Пишување празни/бесмислени тестови.
3) Анализа на дневник/несреќа:
Подолу се дневниците за падови/грешки на играта: [log].Задача: обележете повторливи обрасци, вообичаени услови (сцена, меморија, тајминг) и можни основни причини. Претставете ја секоја причина како „хипотеза што треба да се докаже“; зборувај јасно. Кажи ми и како да проверам.
4) Појаснување за извештајот за грешки:
Направете го следниот нејасен извештај за грешка јасен и репродуктивен: [суров извештај]. Излез: наслов, чекор-по-чекор репродукција, очекуван резултат, вистински резултат, фреквенција, средина. Ако недостасуваат информации, наведете кои информации се потребни.
Слаб промпт / Силен промпт
Слаба навестување:
Има грешка во мојата игра, поправете ја.
Без контекст, без дневник, без репродукција; ВИ е предвидливо и ризикот од халуцинации е висок.
Моќен потсетник:
Има грешка во мојата игра Unity 2022.3: инвентарот понекогаш се удвојува кога играчот ќе изврши брзо зачувување-вчитување. Репродукција: [чекори].Поврзан код: [паста]. Дневник: [залепи]. Задача: наведете ги можните основни причини како хипотези што треба да се докажат, наведете како да се потврди и можно поправете за секоја. Направете непостоечка причина; Ако не сте сигурни, известете ме.
Репродукцијата, кодот, дневникот и барањето „претставување како хипотеза“ ја прават дијагнозата сигурна.
Табела со слој за QA
слој
Што тестира?
Придонес за вештачка интелигенција
човечки удел
функционални
Дали функцијата работи?
Скрипта, код за тестирање
Одлука за прием
регресија
Дали старата работа е скршена?
автоматско тестирање
Одлука за опсегот
екстремен случај
необичен влез
Производство на сценарија
приоритет
Несреќа/изведба
определување
Анализа на дневник
Потврда за основната причина
Искуство
забава, интуиција
ограничен
целосно човечки
Вообичаени грешки
- Само тестирање на „нормална“ игра. Куќиштата на рабовите експлодираат по ослободувањето.
- Погрешна дијагноза на вештачка интелигенција како доказ. Зошто се докажува со дневник и тестирање.
- Пишување празни автоматски тестови. Бесмисленото тестирање дава илузија на самодоверба.
- Нејасен извештај за грешка. Не може да се коригира грешка која не може да се репродуцира.
- Прескокнување на регресивно тестирање. Секоја корекција може да предизвика нови грешки.
Сумирано
QA е дисциплина што ја прави играта подготвена за играчот. ВИ; генерира сценарија за рабови, пишува автоматски тестови, анализира дневници и појаснува извештаи за грешки. Но, нивните дијагнози се хипотези, оценката на искуството е човечка, а секоја корекција бара повторно тестирање. Повторете го рефлексот „кој може да го скрши ова и како“ со вештачка интелигенција; Ги собираш доказите.
Задача за апликација
Изберете систем од вашата игра. Имајте 20 сценарија генерирани со шаблонот „Edge case/generation scenario за експлоатација“ и всушност тестирајте ги 5-те најризични. Создадете репродуктивен извештај за грешка што ќе ја најдете со шаблонот „Прочистување на извештајот за грешки“.
листа за проверка
- [ ] Создадов раб на куќиште со „Кој може да го скрши ова и како?“
- [ ] Напиша и прегледа автоматско тестирање за повторливи проверки.
- [ ] Дијагнозата со вештачка интелигенција ја сметав за хипотеза и ја докажав со лог/тест.
- [ ] Ги пријавив грешките репродуктивно.
- [ ] Повторно ја тестирав секоја поправка за регресија.