AI-система аналізу результатів тестування та класифікації помилок

Ручний розбір падінь з'їдає дні команди, а причини залишаються неочевидними. Ми розробляємо під ключ аналіз тестів AI: модель розбирає прогони, групує помилки за класами та прискорює розбір регресії в кілька разів. Передаємо схему класів помилок, регламент розбору та навчену модель вашій команді.
Часті запитання

Аналіз тестів AI: де ламається ручна класифікація помилок

Поки прогонів десяток на добу, розбір падінь тримається на пам'яті двох-трьох інженерів.

Щойно збірка запускається на кожну зміну й матрицю оточень, рахунок іде на сотні прогонів, і ручна класифікація помилок перестає сходитися: черга на тріаж падінь зростає швидше, ніж її встигають розгрібати.

Гірше те, що нестабільні тести виглядають у звіті так само, як справжній дефект.

Падіння через таймінг, порядок запуску або стан тестових даних вимагає тих самих дій, що й регрес у коді, тому значна частина часу йде на підтвердження того, що причина не в продукті, а в самому тесті.

Далі вердикти розходяться. Один інженер відносить збій до зміни в сервісі, інший — до оточення, третій закриває як відомий; однакові падіння заводять заново, бо дублі ніхто не відсіює.

Шум у звітах про прогони накопичується й маскує реальні дефекти: на тлі «вічно червоних» тестів новий збій не читається як сигнал і спокійно доїжджає до релізу.

Ціна такої схеми — не лише години на розбір, а й втрачені сигнали: що більше шуму, то нижча довіра до звіту, і команда перестає реагувати на червоне. Розбираємо, як аналіз тестів AI знімає цю роботу з інженерів — від ознак падіння до готового вердикту з причиною.

Що змінюється після впровадження AI-розбору результатів

На вході — той самий набір результатів, на виході — зведення, яке можна читати, а не розшифровувати. Автоматична класифікація відмов розкладає падіння за причинами: регрес у коді, нестабільний тест, зміна оточення, недоступний зовнішній сервіс.

Інженер отримує вердикт із прив'язкою до конкретної перевірки й посиланням на артефакт, а не список червоних рядків.

Частка пояснених падінь — перша метрика, на яку варто дивитися. До впровадження зазвичай пояснюється менше половини відмов, решта йде в ручний розбір; після — більшість падінь приходить із уже названою причиною.

Випадки, які система не змогла пояснити, підсвічуються окремо: їх видно, і вони не тонуть у загальному шумі.

Час розбору прогону скорочується завдяки тому, що групування й відсів повторів відбуваються до людини. Замість читання всього журналу інженер дивиться згруповані причини й підтверджує або відхиляє вердикт.

Повторюваність вердиктів тримається на фіксованому наборі правил: однаковий набір падінь отримує однакову класифікацію незалежно від того, хто розбирає прогін і в яку зміну.

Окремо зникає клас відмов «дублі й шум»: той самий збій, розмножений на сотню перевірок, згортається в один запис. Зведення за прогоном стає коротким, його можна порівняти з попереднім — динаміка за причинами видна без ручного зіставлення.

Перевірити ефект можна на своїй історії падінь: запускаємо розбір накопичених результатів і дивимося, яка частка отримує автоматичне пояснення, а яка залишається людині.

Порівняння підходів до розбору результатів прогонів

Вибір способу класифікації падінь визначає, скільки ручної роботи залишиться після автоматизації та як швидко розбір наздоганяє сам прогін. Нижче — чотири варіанти, між якими зазвичай обирають на старті.

Правила за шаблонами тримаються на стабільних іменах тестів і форматі повідомлень, тому дають пояснюваний результат на кожному падінні, але розсипаються при зміні тексту помилки.

Ручна розмітка точна, проте масштабується лінійно: що більше прогонів, то пізніше команда дізнається про регресію.

Підхід Коли підходить Обмеження
Правила за шаблонами логів Стабільні імена тестів і формат повідомлень, потрібен пояснюваний результат Ламається при зміні тексту помилок, шаблони й пороги доводиться підтримувати вручну
Ручна розмітка силами команди Мало прогонів, висока ціна помилки Гальмує цикл налагодження, залежить від навантаження інженерів, знання не залишається в системі
Зовнішня модель без донавчання Потрібен швидкий старт, збої типові Не знає специфіки проєкту, помиляється на рідкісних класах помилок
Модель на історії падінь Великий потік прогонів, накопичена розмітка, повторювані класи Потребує даних і періоду навчання, потрібен контроль дрейфу й перевірка на відкладеній вибірці

На практиці підходи комбінують шарами: правила закривають очевидні випадки, модель на історії — неоднозначні, а все, що нижче порога впевненості, йде в ручну розмітку й поступово поповнює навчальну вибірку.

Пороги класифікації добираємо за метриками: частка автоматично розібраних падінь, точність на відкладеній вибірці, частка випадків, що повернулися до людини.

Як відбувається впровадження: від аудиту звітів до передачі моделі

Впровадження відбувається етапами, і кожен закривається артефактом, який можна перевірити, а не звітом «роботи виконано».

Порядок жорсткий: поки не описані джерела результатів і не узгоджена схема класів помилок, будь-яка розмітка виявиться непридатною і її доведеться переробляти.

  1. Інвентаризація джерел результатів. Зводимо звіти про прогони в одне місце: файли XML/JSON з автотестів, вивантаження із системи збірки, записи в трекері дефектів. Фіксуємо формати, глибину історії та поля, які заповнюються стабільно.

  2. Аудит звітів про прогони. Рахуємо за історією частку нестабільних тестів, падінь через оточення й дублів. Отримуємо базову лінію, з якою потім порівнюємо модель, а не «стало краще на око».

  3. Узгодження схеми класів помилок. Визначаємо взаємовиключні класи: регрес продукту, нестабільний тест, проблема оточення, помилка тестових даних. Схему будуємо від дії команди — інженер має розуміти, що робити з кожною міткою.

  4. Збір і розмітка історичних даних. Вивантажуємо кілька місяців прогонів і розмічаємо їх силами інженерів з якості, окремо рахуючи узгодженість розмітників. Спірні випадки розбираємо регламентом, інакше модель успадкує протиріччя.

  5. Налаштування й калібрування порогів. Навчаємо класифікатор на розміченій історії й добираємо поріг впевненості так, щоб рідкісні критичні падіння не губилися в потоці шуму. Видачу результату вбудовуємо у звіт зі збірки.

  6. Приймання за метриками якості та передача. Перевіряємо повноту й точність за кожним класом на відкладених прогонах, які модель не бачила, і фіксуємо ці метрики як критерій приймання. Віддаємо конфігурацію, регламент донавчання й порядок відкату на попередню версію.

Конфігурації, схема класів помилок і регламент розбору

Комплект документації — це те, що відрізняє робочу систему від разового експерименту.

Якщо схема класів помилок живе в голові одного інженера, а пороги впевненості правилися вручну в скрипті, при першій же зміні вимог класифікація попливе і порівняти результати до й після стане неможливо. Тому ми фіксуємо всі домовленості в артефактах, які команда веде й редагує без нашої участі.

  • Конфігурація класифікатора — винесені назовні ознаки, ваги й пороги впевненості. Зміна поведінки не потребує правки коду й перезбірки: правиться файл, проганяється перевірка на еталонному наборі.
  • Схема класів помилок — ієрархія «група → клас → підклас» з описом кожного класу, прикладами й власником. Нова категорія додається без ламання вже накопиченої статистики за минулі періоди.
  • Правила розмітки — що вважати одним дефектом, як розмічати збій, що проявився в кількох перевірках одночасно, і як поводитися зі спірними випадками. Без цього два інженери розмічають той самий прогін по-різному.
  • Регламент розбору падінь — строки реакції на новий клас, поріг, після якого збій іде на ручний розбір, і умови, за яких падіння блокує випуск.
  • Матриця доступів і ролі — хто бачить результати прогонів, хто змінює схему класів, хто затверджує правки в правилах розмітки. Права розділені так, що розширити довідник може інженер, а переписати логіку класифікації — лише відповідальний за якість.
  • Еталонний набір і журнал змін — фіксована вибірка прогонів, на якій перевіряється кожна правка, й історія версій схеми: видно, що і коли змінилося і як це вплинуло на розподіл класів.

Окремим пунктом іде документація щодо розгортання й підключення до вашої системи прогонів, щоб розвиток не залежав від авторів рішення.

На виході ви отримуєте не чорний ящик, а керований контур, який ваша команда розвиває сама — ми залишаємося на зв'язку з питань, що потребують доопрацювання моделі.

Кейс: як розбір регресії прискорився в кілька разів

Замовник — продуктова команда, де регресійний прогін — кілька тисяч автотестів на кожну зміну в основній гілці. Частина падінь — реальні дефекти, частина — нестабільні тести й правки в тестових даних.

Розкласти це за виконавцями доводилося вручну: інженер відкривав звіт, читав стек викликів і сортував падіння.

До впровадження зведення за одним прогоном займало в чергового чотири-шість годин інженерного часу, а готове пояснення автоматично отримувала лише чверть падінь. У ручний розбір ішло більше половини випадків — включно з тими, що повторювалися з прогону в прогін.

Що змінили і що вийшло

Ми підключили розбір до звіту Allure: сервіс забирає історію прогонів, зіставляє стек викликів із минулими падіннями й відносить випадок до групи — новий дефект у коді, нестабільний тест, проблема оточення або тестових даних. Класифікація спирається на текст помилки, зачеплений модуль і правки, після яких тест почав падати.

Тепер зведення за прогоном збирається за хвилини, а автоматичне пояснення отримують близько 80% падінь. У ручний тріаж доходять одиниці спірних випадків — де ознаки суперечать одна одній або падіння зустрілося вперше.

Пріоритизація спирається на групу й частоту: нестабільні тести йдуть в окрему чергу, а ймовірні дефекти піднімаються нагору.

Чим розмітка правилами відрізняється від навчання на історії падінь?

Розмітка правилами — це експертиза, винесена в конфігурацію: інженер описує ознаки падіння (код повернення, фрагмент стеку, таймаут кроку) і система відносить випадок до класу за явною умовою.

Навчання на історії працює інакше — модель шукає статистичні збіги у вже розібраних падіннях і видає клас з оцінкою впевненості. Це не «краще чи гірше», а різні точки докладання зусиль.

Підтримка правил передбачувана: новий клас помилок — один блок у файлі розмітки, перевірка зміни й прогін на еталонній вибірці. Правило версіонується поряд із кодом, тому видно, хто і чому змінив вердикт.

Класифікатор при появі незнайомого збою потребує перерозмітки корпусу й перенавчання з підтвердженням, що старі класи не «поїхали» — цикл оновлення помітно довший.

Прозорість вердикту — друга розбіжність. Правило пояснює себе: у звіті видно умову, що спрацювала, і тест-інженер оспорює конкретний рядок, а не «думку системи». Модель відповідає оцінкою впевненості без причини — спірне падіння перетворюється на окреме розслідування.

Звідси й стійкість до нових типів помилок: правило вмикається того самого дня, коли з'явився незнайомий збій, а модель відносить його до найближчого знайомого класу й тим самим маскує.

Тому базові класи закриваємо правилами, а навчений шар підключаємо точково — наприклад, на scikit-learn для розмитих ознак, де розмітка правилами дає хибні спрацювання.

Часті технічні питання щодо впровадження розбору

Інженерні команди перед стартом перевіряють не точність моделі в презентації, а її поведінку на власному потоці падінь. Зібрали питання, які задають найчастіше.

Відправна точка — те, що вже накопичено: логи прогонів, звіти, розмітка в трекері. За ними видно, які класи помилок реально зустрічаються і що автоматизувати першим.

Скільки історичних даних потрібно?

Потрібна розмітка, а не обсяг логів: кожен клас має бути підтверджений десятками прикладів. Рідкісні класи залишаємо в ручній черзі.

Як бути з хибними спрацюваннями класифікатора?

Усе, що нижче порога впевненості, позначається як «не класифіковано». Поріг калібруємо на відкладеній вибірці, спірне йде інженеру.

Що буде при новому типі помилок?

Новий клас падає в «невідоме», а не натягується на знайому категорію. Далі ручна мітка й донавчання на накопичених прикладах.

Чи потрібно супроводжувати модель після запуску?

Так: зміна оточення й набору перевірок зсуває розподіл. Робимо переоцінку за метриками й зберігаємо версії моделі для відкату.

Як це вбудується в конвеєр звітів?

Розбір стає кроком після прогону й бере дані зі звичних форматів звітів. Потрібен доступ до артефактів збірки й проєкту задач.

Обговоримо ваше завдання розбору результатів прогонів

Щоб оцінка обсягу робіт спиралася на факти, а не на здогадки, нам достатньо подивитися на поточні прогони: як вони запускаються, що потрапляє у звіти і що розбирається руками.

Зазвичай уже за першою вибіркою видно, де втрачається час — на перегляді журналів чи на ручній розмітці однакових збоїв.

Що підготувати до обговорення:

  • Вивантаження звітів про прогони — архів за характерний період у тому вигляді, у якому звіти віддає ваша система: текстові журнали, машинно-читані файли, вкладення із системи збірки.
  • Перелік джерел — стенди й сервіси, за якими йдуть перевірки, і де зберігається прив'язка тесту до результату.
  • Періодичність прогонів — скільки запусків на добу, чи є нічні повні прогони й точкові після зміни коду.
  • Вимоги до доступів до даних — що лежить у закритому контурі, що не можна виносити за периметр, хто власник систем.
  • Еталонна розмітка — приклади падінь із уже проставленим класом помилки: на них налаштовується й перевіряється класифікація.
  • Хто приймає результат — ролі, яким потрібен розбір, і що має бути в підсумковому звіті: зведення за класами збоїв, динаміка, прив'язка до тесту.

Опишіть завдання й надішліть те, що вже є, — повернемося з оцінкою обсягу робіт і планом впровадження розбору: етапи, склад робіт, точки приймання.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139