Как Grab защити стабилността на мобилното си приложение от вълната от бъгове, генерирани от AI кодиращи инструменти

Източник: InfoQ / Grab Engineering
Технологичният гигант от Сингапур Grab, чието приложение обслужва над 35 милиона активни потребители, публикува детайли за преструктурирането на своите развойни процеси [1]. Инженерният екип се сблъска с рязко повишаване на регресиите при внедряване на софтуерен инженеринг в своите CI/CD конвейери поради масовото навлизане на инструменти за AI кодиране.
Илюзорната коректност на AI pull requests
Инженерите на компанията установиха, че след въвеждането на асистенти за генериране на код броят на подадените pull requests е скочил с 45%. Същевременно обаче броят на труднооткриваемите бъгове, свързани с надпревара за ресурси (race conditions), изтичане на памет в мобилния клиент и неконсистентни асинхронни заявки, се е утроил, тъй като моделите генерират код, който минава единичните тестове, но се проваля при реално натоварване.
Нови филтри: AST инварианти и автоматизирани канарски тестове
За да защити клиентското изживяване, Grab внедри строг предварителен етап в CI/CD конвейера. Всеки генериран код преминава през дълбок анализ на абстрактното синтактично дърво (AST), проверяващ за спазване на строги архитектурни инварианти, последван от автоматизирано изпълнение в пясъчник с виртуални потребители преди да стигне до преглед от старши разработчик.
Преходът от писане на код към архитектурна верификация и осигуряване на качество
Опитът на Grab е ценен ориентир за цялата глобална технологична индустрия. В епохата на изкуствения интелект най-оскъдният ресурс вече не е писането на софтуерни редове, а тяхната прецизна проверка и системна верификация. Компаниите, които не инвестират в надеждни автоматизирани предпазни механизми, рискуват да заринат продуктите си с технически дълг и невидими уязвимости. Ролята на човека-програмист окончателно се измества от чист кодер към архитект и строг одитор на алгоритмичните предложения.

Анализ на ръста на PR-и, скритите бъгове и новия AST филтриращ конвейер.