Я побудувала AI-пайплайн тестування задач: що з цього вийшло
Привіт, наш зацікавлений читач 🙂 Це знову я, Аня, Head of QA в невеликому потужному продукті. Якщо ти читав мою попередню статтю про есенціалізм у керуванні QA-процесами, то вже знаєш про моє захоплення автоматизацією рутинних дементорів. З того часу я значно просунулася далі і хочу цим поділитися. А якщо ні — то на правах самореклами рекомендую почитати.
Сьогодні я поділюся думками не просто про промпт-інжиніринг, ні. Я розповім про особистий кейс побудови АІ-архітектури з гучною назвою Agentic System Design with human-in-the-loop. Якщо по-людськи — AI-помічник, що виконує завдання під моїм наглядом.
Огляд будемо робити на прикладі роботи з Claude Desktop. Розглядати будемо саме приклади тестування задачі.
Біль, який породив рішення
Давай чесно подивимося на реалії нашого ринку? Я впевнена, що багато хто з нас впізнає себе хоча б у половині цих пунктів.
Швидкість розробки росте, а QA-команда не масштабується пропорційно. Спринти коротшають, фічі летять з шаленою швидкістю, ідеї генеруються миттєво, а команда більше не стає. Бізнес хоче релізити частіше, а якість при цьому не має падати. Знайомо?
Розробка непомітно перекладає частину своїх обов’язків на QA. Замість змістовно описаних тікетів прилітає щось типу «Ти ж тестувальник, розберися, що тут треба перевірити» або «ну так спитай у ChatGPT». По болючому, так?
Конкуренція на продуктовому ринку тисне на всіх. Кожен бізнес намагається випередити конкурентів (що цілком логічно), і хто як не АІ в цьому допоможе? «І взагалі, чому в еру ШІ фічі не виконуються за годину?»
Якби елементарно не звучало, але виходячи з потреб і породжуються рішення. Ось і я мала кілька своїх основних цілей, викликаних потребами:
- Посилити ресурси тестувальника до стану Шиви.
- Задовольнити потреби бізнеса з мінімальними вкладеними ресурсами.
- Вивести наші процеси на конкурентоспроможний рівень.
- Вивести продуктивність команди до незалежного від кількості випитої кави стану 🙂

Трошки про архітектурні рішення
Пропоную спочатку зробити розбір конструкції з самої ідеї QA Pipeline на AI. Погоджуюсь, що звучить якось пафосно, але якщо розібратися, то стане значно простіше.
Пайплайн — це послідовність кроків, де результат кожного попереднього кроку стає входом для наступного.
Уяви собі конвеєр на заводі Coca-Cola. Знаєш, як там відбувається процес? Спочатку з пластикової заготовки, такої собі «піпетки», видувають пляшку, потім охолоджують її, потім перевіряють якість цієї пляшки, далі наповнюють її рідиною, герметизують, одягають в етикетку, фасують тощо. Тобто, кожен конвеєр робить свою одну операцію і послідовним ланцюгом передає свій результат далі.
На кожному з цих етапів, звісно ж, стоїть контроль якості. От наприклад, стрічка конвеєра просто «випльовує» браковані пластикові пляшки, якщо вони «не пройшли валідацію» після формування з піпетки. Мені колись така прилетіла прямо у лоба 😅
Що в цьому головне? Що весь процес побудований з окремих дрібних степів, які мають ланцюгову залежність і «баг не дійде до прода».
Так само побудований і мій QA-пайплайн. На вхід потрапляє Jira-тікет, на виході — повний комплект тестової документації з результатом перевірок. Між входом і виходом у мене вийшло 8 степів і після кожного є «контролер якості» — тестувальник, який перевіряє результат і каже «ок, далі» або «летиш зі стрічки» на переробку.
У мене було багато спроб. Спочатку я думала, що одним скілом покрию потребу. Але як-то кажуть, не так склалося, як гадалося. Результати мене не задовольняли. Або втрачалася частка даних, або щось надумувалося, або якось те але не те виходило. Та і час виконання теж не задовольняв. Тож, методом пляшок у лоба, виправляючи свої помилки я розбивала і розбивала ланцюг на менші ланки. Таким чином вийшло 8 етапів.
Інсайт: Чим вужчий scope, тим якісніший результат скіла.
Чому вийшло стільки скілів?
Спочатку нагадаю, Скіл — це текстова інструкція для AI, яка описує що робити, з чим працювати, в якому порядку і що видати на виході. По суті це посадова інструкція для ШІ.
Тепер перерахую кілька основних пунктів які аргументували мені шо треба звужувати зони відповідальності:
Ізоляція збоїв. Якщо, наприклад, скіл згенерував поганий чекліст, я бачу це одразу, виправляю, і далі по ланцюжку наступному скілу на вхід вже прийде якісна інформація.
Дешевший перезапуск. Перезапустити один скіл значно дешевше в токенах та часі, ніж цілий ланцюг. Наприклад, один скіл з’їдає 40K токенів, а в ланцюгу 5 таких скілів по 40К. То перезапуск всього набору буде коштувати 200К токенів.
Токен — це одиниця тексту, якою оперує AI. Грубо кажучи, одне слово ≈
Контроль на кожному кроці. Перевірка результату одного вузького скіла займає значно менше часу та концентрації, ніж весь ланцюг. Атомарні перевірки дають вищий рівень гарантії якості на виході.
Передача даних через контекст дорожча. Чому «на вихід» краще робити мд файл, а не контекст чату?
MD (Markdown) файл — фіксований артефакт, що не деградує. Його можна редагувати, шерити без втрат, перенести в інший чат без переповнення контексту.
Пару пояснюючих слів про використання контексту чату як «сорс оф тру»:
- Агент бере за «рамки/межі» твій перший промпт і далі базує відповіді на ньому.
- Чим довше ведеться чат, тим більше контексту агент забуває.
- Перехід на новий чат не переносить контекст завдання.
- Агент не розрізняє «важливу» та «прохідну» інформацію в чаті.
Розглянемо тепер сам «Skill Chain»
На схемі зображена кількість скілів та їх послідовність виконання.

Ми бачимо цілий степ-бай-степ ланцюг, бачимо повну залежність степу від степу. Виглядає навантажено, згодна. Але якщо розібратися трошки глибше? То можна побачити, що наприклад, скіл1 та скіл2 можна взяти окремою парою для пре-грумінгу/грумінгу тікета з командою. Або скіл1 — скіл3 можна використати окремо, для легкої задачі, яка не потребує всього етапу проходження. А от скіл7 можна використати окремо від всього ланцюга. Таким чином ми бачимо, що залежність є, але вона не жорстка в деяких сценаріях.
А чого не зробити скіли незалежними? Логічне питання, розумію. Звісно, їх можна зробити самостійними одиницями, все на вибір та умову кожного з нас. Але давай я трошки аргументую чому я вирішила так не робити.
Візьмемо для розбору ситуації скіл3 — генерацію чекліста. Спочатку нам треба щоб агент використав МСП атласіан (сходити по тікет в джиру). Потім зчитавши умови тікета побудував чекліст. На завершення видав нам чекліст у тому вигляді який ми хочемо.
Все логічно. Але виникають, на мій погляд, доцільні питання:
- А як бути певним що агент правильно вивчив тікет?
- А вкладені файли/скріни/макети, були зчитані?
- А за якими правилами будувати наш еталонний чекліст?
- А яким має бути чекліст на виході?
- А якщо в тікеті були «сирі» вимоги, яка буде вихідна якість чекліста?
- А якщо не сподобається цей результат, запустимо коло проходження наново?
Що я бачу у підсумку?
Наш скіл безумовно самостійно відпрацює і віддасть чекліст. Але. Чи буде цей чекліст повністю задовольняти потребу? Адже один скіл треба вкласти навички:
- як потрапити до тікетак;
- як правильно читати тікет;
- як мають оброблятися/валідуватися вимоги з тікета;
- як мають оброблятися проблемні зони;
- як заборонити фантазувати при обробці даних;
- які стандарти написання чекліста будуть використовуватися;
- який ми хочемо аутпут файл.
Це вже виглядає трошки навантажено для одного скіла, а також ставить питання — чи будуть втрати сенсу при роботі такого скіла. А при перевірці фінального результату (в нашому випадку це єдиний файл), нам треба почати перевірку з самого початку — чи всі дані з тікета потрапили в обробку. Відповідно потім пройти всі кроки, щоб впевнитися, що фінальний чекліст взагалі відповідає самому тікету. Кількість рухів для перевірки та перегенерації вражає, хіба ні?
Пропоную далі розглянути кожен скіл «під капотом». Я думаю, так стане значно простіше аргументувати цей набір послідовність та залежність 🙂
Скіл 1: Збираємо контекст задачі
Скіл крокує в Jira, збирає все, що є в тікеті — опис, коментарі, вкладення, acceptance criteria (будь-які поля, які вкажемо). Обробляє та зіставляє ці дані між собою, бо нам же треба, щоб текст з тікета потрапив до нас без втрат.
На виході у нас є єдиний файл-контекст, де все зібрано, дедупліковано та розкладено по секціях. Це source of truth для всіх наступних скілів.
Навіщо цей окремий скіл? Щоб наступні скіли не бігали в Jira кожного разу і не витрачали на це токени. А також, щоб по всьому ланцюгу передавав один і той самий перелік даних.
Скіл 2: Проводимо ревʼю вимог
Цей скіл з таким собі інтерактивом. Агент бере контекст сформований попереднім скілом і дивиться на нього очима QA на грумінгу. Кожну вимогу проганяє по чотирьох питаннях:
- Чи можу я це перевірити?
- Що мені для цього потрібно?
- Де тут може зламатися?
- Що не прописано?
Формує перелік питань/прогалин/протиріч які передає людині для покриття. Після узгодження з людиною — формує фінальний один пронумерований список вимог. У скіла прописані правила обробки вимог за техніками тест дизайну та стандарти покриття вимог.
⚠️ Нумерація для скіла прописана жорстка, тому що кожен наступний скіл перевикористовує цю нумерацію для подальшої роботи.
Скіл 3: Генерація чекліста
Цей скіл вичитує файл від попереднього скіла та декомпозує кожну пронумеровану вимоги на атомарні перевірки за стандартами ISTQB CTFL v4.0.
На виході ми отримуємо один файл з деталізованим чеклістом. Цей чекліст працює і для мануального тестування на останньому кроці, і як вхід для наступного скіла — тест-кейсів.
Скіл 4: Генерація тест-кейсів
Цей скіл виконує великий обсяг роботи, тому у нього максимально вузький список завдань. Тут виконується написання тест кейсів по чеклісту від попереднього скіла. У цього скіла є прописані правила написання тест кейсів за стандартом ISO/IEC/IEEE
На виході ми маємо один файл з повним переліком тест кейсів для покриття задачі.
Скіл 5: PR Summary
На цьому етапі починається робота з кодом. Скіл читає Pull Request через GitHub CLI і формує структуроване саммарі: кількість файлів, які файли змінено, які компоненти затронуті, що додано, що видалено, що модифіковано. Цей скіл працює за жорсткими правилами роботи з кодом.
На виході ми маємо навігаційну карту ПР для наступного скіла.
Навіщо цей окремий скіл? Економія кроків часу та токенів при самому код-ревʼю. Наступний скіл буде знати де шукати реалізацію кожного тест-кейсу і не буде ходити по всьому дифу наосліп.
Скіл 6: Проведення імплементейшен код-ревʼю
Другий об’ємний і найскладніший у виконанні скіл в моєму пайплайні. Цей скіл бере тест-кейси, бере PR summary і перевіряє кожен тест-кейс по коду PR. Для кожного ставить відповідні статуси: PASS, FAIL, QA (мануально дивитися) та N/A (немає в коді/не імплементовано). Формує файл з результатом перевірок. Цей скіл так само працює з жорсткими умовами роботи з кодом.
На виході отримуємо файл з чеклістом перевірок та пояснення для FAIL та N/A пунктів.
Скіл 7: Impact Analysis як регресійне ревʼю
Цей скіл проводить таку собі регресійну перевірку супутнього функціоналу та тих місць, які зачіпав наш ПР. Тобто перевірка того чи не зламалось те що раніше працювало.
Розробники після виконання своєї частини роботи з тікетом формують мд файл, в якому міститься опис всіх тих змін, які вони робили. Це дуже корисна річ навіть для простого мануального тестування.
Отже, цей скіл читає цей мд файл і зіставляє з дифом PR. Перевіряє, чи залежний код коректно працює зі змінами.
Останній ланцюг в цього колі — мануальні перевірки.
Тестувальник отримує чекліст для перевірок, чекліст пройденого код-ревʼю та регресійний репорт. Залишається лише перевірити результат роботи агента, перевірити ті пункти, які не пройшли код-ревʼю, ну і додаткові «цікаві» перевірки, що передбачив агент. Також можна зробити кілька перевірок по критичних функціональних флоу задачі, для впевненості в якості.
Думаю, що тепер зв’язок і ціль всіх скілів зрозумілі? Видно один патерн, що всі скіли працюють за схемою: отримати вихідний-вхідний файл -> виконати своє завдання -> передати вихідний-вхідний файл. Зрозуміло, що в кожного скіла є свої додаткові правила еталонної обробки свого завдання і у кожного скіла є свій шаблон аутпут файлу. Розуміємо, що послідовний зв’язок жорсткий і при цьому скіли можна використовувати частково незалежно.
Також, варто уточнити, що я не використовую «аджентік» чи «коворк-тім» підхід, тому що я хочу бачити відповіді одразу, а не по проходу всього конвеєра. На цій ноті пропоную від сухого технічного переходити далі.
Які граблі траплялися на шляху
Напевно, зі статті вже видно, що шлях до робочого пайплайну був вимощений нервами та факапами. Тож поділюся основними з них.
Перші — «Фантазії»
Основною часткою проблем є вигадування. Наприклад, чекліст має покрити 10 вимог і в чеклісті їх дійсно 10, але 2 з них це взагалі невідомо де взяті дані. Перше що ми думаємо в такий момент — «не бреши!»
Спойлер: прописувати вимогу не бреши та не видумуй — не працює 🙂
Як виявилося, проблема в тому що AI вигадує тоді, коли немає за що «зачепитися». Коли не вистачає даних, або немає конкретики, або немає чітких критеріїв, але є наказ зробити.
Що реально допомогло:
По-перше, прив’язка кожного пункту до конкретної цитати з вимоги. Якщо пункт без прив’язки — одразу видно, що він надуманий.
По-друге, приклади-калібратори всередині скілів — AI бачить зразок правильного output і підлаштовується.
По-третє, зменшення scope — менше вимог за один раз = менше «інерційних» вигадок.
По-четверте, чіткі правила — якщо немає чіткої вимоги — не покривай її, сповіщай про «сиру» вимогу. Тобто роби проблему видимою.
Інсайт: Краще працює стратегія «зробити помилки видимими», а не «заборонити помилки».
Другі — «Перекручування»
Ще більш підступніший шкідник. Наприклад, агент бере вимогу «змінити ліміт з 5 на 10» і переформульовує в «збільшити ліміт». Здається нормально, правда? Поки не починаєш тестувати і не розумієш, що граничні значення втрачені, сорс оф тру відсутнє.
Це таке собі «semantic drift» — непомітна втрата точності при переформулюванні. AI не робить це навмисно, він просто «узагальнює» для стислості, бо його задача «обробити» і він не розуміє, що для тебе є важливим, якщо ти цього не вкажеш.
Що допомогло:
Жорсткі заборони на зміну формулювань у скілах. Правило: «зберігай оригінальне формулювання, якщо інше не узгоджено з людиною». Конкретні числа, тексти, лейбли, назви полів та інше — жорстка заборона на інтерпретації.
Інсайт: Прописаних жорстких заборон вийшло більше аніж дозволів 😅
Треті — «Навантаженість»
Запхала п’ять задач в один промпт і на виході жодне завдання не виконано належним чином. Це та сама проблема, про яку я писала в попередній статті: простіше писати багато дрібних сценаріїв замість кількох об’ємних. Привіт, есенціалізме!
Що врятувало:
Розбила один перевантажений скіл на два окремих. Кожен робить одну річ — і робить її добре.
Інсайт: Провела аналогію, що як «одна дія = один тест кейс», так само і тут — «одне завдання = один скіл».
Четверті — «Сміття на вході»
Це проблема якості вхідних даних, на жаль. Чим менше опису в Jira тікеті, тим більше волі на «мейд ін сам склєпав» для агента. Якщо немає чітких асептансів, то від скіла до скіла буде переходити вода. «Garbage in — garbage out», як-то кажуть.
Якщо до задачі не прилінковано PR або бранч — не буде ефекту від код-ревʼю. Якщо не вказані імпакти — регресія майже не можлива. Якщо тікет не декомпозований і містить 20+ вимог в одному описі — контекстне вікно моделі переповнюється, і починається та сама деградація уваги.
Інсайт: Більше конкретики — більше точних можливостей.
П’яті — «Ціна питання»
На початку, як відповідальний тривожник, я всюди пхала розумні моделі, тому що вони дуже добре виконують завдання. Але пізніше, кошторис показав мені переплату ~36% за кожному прогоні. Тож довелося самій трошки посидіти-подумати, як це виправляти.
Розібравшись, я підібрала ось такі комбінації:
|
Скіл |
Рекомендована модель |
Effort |
Чому саме |
|
1. Контекст |
Sonnet |
Medium |
Збір і структурування, не аналіз |
|
2. Грумінг вимог |
Opus |
High + Extended thinking |
Пошук протиріч, аналіз прогалин |
|
3. Чекліст |
Sonnet |
Medium |
Декомпозиція за правилами |
|
4. Тест-кейси |
Sonnet |
High |
Генерація за техніками тест-дизайну |
|
5. PR Summary |
Sonnet |
Medium |
Читання і структурування дифу |
|
6. Код-рев’ю |
Opus |
High + Extended thinking |
Зіставлення коду з тест-кейсами |
|
7. Impact Analysis |
Opus |
High + Extended thinking |
Пошук регресійних ризиків у залежностях |
Інсайт: Підхід «ми не з такої сім’ї, ми з богатої» не завжди винагороджується 😅
Давай поговоримо про гроші
Ось ми і дійшли до цікавого. Ця таблиця показує реальний кошторис одного повного прогону пайплайну на типовій задачі великого розміру:
|
Скіл |
Модель |
Effort |
~Input |
~Output |
Вартість |
|
1. Контекст |
Sonnet |
Medium |
~40K |
~2,750 |
~$0.16 |
|
2. Грумінг вимог |
Opus |
High |
~45K |
~2,470 |
~$0.29 |
|
3. Чекліст |
Sonnet |
Medium |
~28K |
~1,720 |
~$0.11 |
|
4. Тест-кейси |
Sonnet |
High |
~32K |
~4,570 |
~$0.17 |
|
5. PR Summary |
Sonnet |
Medium |
~180K |
~3,810 |
~$0.60 |
|
6. Код-рев’ю |
Opus |
High |
~100K |
~2,460 |
~$0.56 |
|
7. Impact Analysis |
Opus |
High |
~80K |
~2,000 |
~$0.45 |
|
Разом |
~505K |
~19,780 |
~$2.34 |
Температуру я всюди вказую — 0, тому що мені потрібне виконання в рамках і менша кількість відсторонених польотів творчості.
Цифри наведені в API-еквіваленті (ціни Anthropic за токени станом на 2026). Якщо ви працюєте через підписку Claude.ai — вартість входить у фіксовану місячну оплату.
Головні cost drivers — це ціна розумної моделі та скіли що працюють з великою кількістю коду. Звісно ж, ціна коливається від тікета до тікета. Більше файлів в PR = ціник вище. Менше вимог в тікеті = менше грошиків. Я можу впевнено сказати, що у мене середнє по палаті значення — це 20 хвилин та 1.5$ на задачу.
Які показники я побачила
Вирівняна швидкість розробки і тестування
Рутинна підготовка до тестування, тестові артефакти та проходження тікета виконуються за хвилини, а не за години.
Тестувальник х2
Один тестувальник з пайплайном покриває більше задач, ніж раніше, і з вищою консистентністю. Спринт скоуп може збільшитися до х2 (в залежності від тікетів та дотестовувань).
Аnti-burnout
Стан людини «не вижатий» тому що робота «в парі» — це спрощений рівень навантаження. Так, години роботи у людини не змінилися, так, працювати все одно треба. Але, оскільки працюєш «не один», то навантаження і втома значно легші.
Онбординг
За рахунок хісторі, пам’яті та артефактам, вхід ньюкамера значно швидший, потребує менше людської участі і може майже не потребувати документації в Конфлюенсі, якої дуже часто немає.
Стандарт проходження задач
Кожна задача проходить однаковий шлях від вимоги до імпакт аналізу. Кожна задача простіше естимується, за рахунок схожого часу на проходження. Естимацію тепер простіше прогнозувати, а відповідно і скоуп відділу теж. За бажанням «прозорості», менеджмент може бачити конкретний traceable артефакт по кожній задачі.
Економічність
Навіть якщо повний прогін пайплайну на задачу буде ≈ $5. На 100 задач в місяць це ≈ $500. При тому ≈
Кілька слів замість висновку
Мене якось спитали: «А ти не боїшся що хтось скопіює твій підхід?».
Ні. І ось чому. Цінність не в промптах — їх можна скопіювати за п’ять хвилин. Цінність у тому шляху, який проходить кожен з нас, для того, щоб дійти до робочого стану. Кожна грабля, кожна ітерація, кожне «а давай спробуємо інакше» — це досвід, який не скопіюєш.
От я і хочу поділитися з тобою своїм кейсом, бо можливо, він тобі стане в нагоді. Скіли — це хороший інструмент, який економить час та ресурс людини за невеликі гроші. Процес — це знання. А знання стають ціннішими, коли ними діляться.
Вже традиційно, мотиваційна цукерка для натхнення 😊

34 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарівПошерите скіли, бідь ласка?
У описі під відео стріма є лінки на шаблони скілів, які пошерила авторка: dou.ua/goto/yWLZ
дякую, хороша штука, але там немає 7го скілсету =(
Так, там немає скіла по імпакт аналізу, все вірно. Я вказувала що він кастомний і він не обов’язковий в ланцюзі. Саме тому його і не давала. Весь робочий пайплайн працює з тими що там є :)
24 червня провели дуже корисний та практичний стрім, ось запис: dou.ua/goto/yWLZ
За запитом глядачів в опис під відео також додали лінки на презентацію Анни, шаблони скілів та поради по їх створенню.
Спільното, якщо раптом ви не бачили, вже сьогодні, о 18:00, Анна проведе вебінар на цю тему на нашому ютуб-каналі DOU Events. Долучайтеся та ставте свої питання)
Ось лінк на трансляцію: dou.ua/goto/6fdc
ревью> ревʼюДуже сподобалася стаття, хотілося б зробити подібне у себе, чи можете поділитися скілами?
Пошерити вам скіли я можу, але вам все одно треба буде їх переписувати для того щоб вони почали у вас працювати саме так як вам треба, під ваші умови.
Також, за кількістю запитів, на днях вийде пришвидшене продовження цієї статті. Там буде ще більше деталей показано. Після неї я впевнена вам стане цікавіше самому їх написати :)
Ви праві скіли будуть перероблені, головне щоб я хотів взяти від туди це ті шишки які ви набили в процесі створення їх, це дуже допомогло б
Добре
Давайте тоді відкладемо це питання до виходу другої частини 🙂
Дякую, реально цікавий досвід!
Питання, щодо зберігання сторі в текстовий файл — чи є тут ризик, що ШІ на якихось кроках не побачить змін, коментів, прилінкованих тікетів? І буде працювати з не зовсім актуальною інформацією.
Щодо мультіскілів — у себе реалізував в одному скілі, після певного круку ШІ зупиняється і питає чи зролбити наступний. Можно вже з наявними тест кейсам звернутись до скіла щоб він їх створив у ТМ,С до прикладу. Але мультіскіли то цікаво.
Це ви про що саме? Про перший крок коли збирається і конвертується інформація з тікета в контекст файл?
В мене передбачено так шо скіл обробляє лише той тікет який дали. Заборони дивитися на прилінковані тікети немає, але прилінковані тікети в обробку не беруться. Тобто, якшо в роботу йде сторя — то оброблено буде лише її текст (той що міститься в ній на даний момент), а всі тікети які до неї долучені — будуть вивчені для кращого розуміння. Але знову ж таки, це все робиться за бажанням кожного з нас :)
Анна, дуже дякую за статтю — нарешті формалізація того про що багато хто з нас думав і пробував)
І підхід з розбиттям окремих скілів — респект, дійсно дозволяє легко знаходити проблеми, вимірювати ефективність, замінювати за потреби. Дуже круто!
Маю декілька питань по скілу 6:
1. Якщо це статичний аналіз коду, то статус PASS мені виглядає як просто наявність відповідного вимозі коду. Але ж це не гарантує факту того що вимога працює в збілдженому продукті і працює вірно. Як ви такі рищики мітигуєте?
2. N/A (немає в коді/не імплементовано). — Чи це не є аналогом FAIL?
Дякую за відгук ☺️
Оскільки перевірка коду проходить по тест кейсах, то ми можемо бачити що саме працює/не працює в покритті (у нас є очікування і факт). Також можна розширити евіденси і робити доведення факту не тільки на fail або n/a, а і на всі кейси.
Для того щоб бачити мапу покриття у нас є відмічений чекліст на виході, у нас є кейси, у нас є вимоги. Ми можемо самостійно зробити мануальні перевірки того в чому не впевнені.
Fail та n/a це різні статуси в нашому випадку.
Fail відповідає конкретно за те що не працює так як ми очікуємо. Наприклад, граничне значення мало бути 10, а у нас 5 стоїть.
А n/a відповідає за те що не знайдено, а мало би бути. Наприклад, так можна побачити що ми забули щось з вимог покрити кодом, або просто забули вмержити в гілку.
Дякую за статтю! Дуже цікаво в себе таке випробувати. В нас також веб. Пишу вам в лінкедін на рахунок демо, якщо це можливо.
Дякую. Цікаво
Дякую
Дякую за круту статтю! Читав і подекуди впізнавав власні «гулі» на лобі від тих самих пляшок. 🙂
Повністю погоджуюся з вашим підходом щодо атомарності скілів. Коли я розробляв власний продукт, теж спочатку намагався «запхати» все в один супер-промпт. Але практика і логіка токенів швидко приводять до того ж висновку: архітектура окремих агентів з чіткими правилами трейсабіліті та обмеженнями — єдиний шлях до стабільного результату, а не рандомних галюцинацій.
Найцінніше в статті — це саме опис еволюції від промпт-інжинірингу до Agentic System Design. Це те, що неможливо просто «загуглити» чи скопіювати — цей досвід вибудовується тільки через ітерації, помилки та аналіз вартості кожного прогону.
Ваш кейс із розбиттям на 8 етапів та жорсткою нумерацією вимог для збереження контексту — це база для якісного AI-assisted тестування сьогодні. Дякую, що ділитеся цифрами та «внутрянкою», це допомагає спільноті рухатися в бік реальної ефективності, а не просто хайпу навколо ШІ.
Дуже дякую за таку підтримку ❤️☺️
Дякую за статтю, дуже цікаво!
А можете надати більше практичних деталей по реалізації? Як відбувається робота? У вас є Claude Desktop і у ньому додано 8 скілів.
Що відбувається далі? Ви відкриваєте чат, додаєте посилання на Jira тікет і просите виконати збір контексту, отримуєте результат і далі через чат створюєте нове завдання, чи це якась автоматизація? Цікавить як практично відбувається робота від початку до кінця?
Якщо так як я описав, то як відбувається шеринг між іншими QA у команді? У кожного свій Claude і цей же набір скілів?
Так, вірно. Набір скілів запускається мануально (без імітації аі тіми). Всі скіли пошерені між всіма тіммейтами.
Відкриваю New session в розділі Code. Додаю скіл (або вказую де його взяти), вставляю повну лінку на тікет і пишу буквально кілька слів про те що є ось «ця» задача, потрібно пройти її згідно «цього» скіла. Запускаю. Одразу в діалозі отримую підказу яку модель обрати, бачу як відбувається обробка запиту. Через лічені секунди отримую повідомлення що згенеровано md файл, переходжу до нього і дивлюсь що мене все влаштовує.
Пишу в діалозі що починаємо обробку за наступним скілом (вказую скіл). Цей скіл вже бере вихідний файл який ми тільки що переглянули і виконує свою частину. І так по кожному скілу який мені зараз потрібен.
Якшо, наприклад, для pr-summary запиту я не надам лінку на PR — в діалозі отримаю повідомлення що я маю її надати. Або, наприклад, об’ємна задача їсть багато контексту, то на певному етапі буде підказка про те що варто перейти в новий чат.
Оскільки в кожному скілі прописані всі деталі, робота в діалозі мінімальна.
Обробка запитів швидка і на кожному кроці є підказки що треба зробити для відпрацювання скіла.
Якшо у вас ще є питання, пишіть мені і я вам проведу демонстрацію 🙂
1. Який продукт ви тестуєте, це веб чи апка?
2. Чи достатньо для кроку 6 коду з PR Summary, чи він може дивитись код, який не входить у PR, щоб краще його розуміти? Чи маєте скіл доступ до вихідного коду продукту?
3. Чому не робите скіл, який буде мануально тестувати продукт?
1. Цей скіл-сет орієнтований на веб. Але якщо зробити заміну певних умов доступів, то можна і для білдів апок використовувати.
2. Все залежить від того як ви хочете з цим працювати. В моєму випадку скіл5 готує таку собі навігаційну карту куди ходити скілу6, саме для того щоб розвантажити скіл6 (щоб він сам не роздивлявся купи файлів які лежать в ПР/бранчі). Але, скіл6 при цьому має доступ до всього ПР/бранчі, тому він може ходити по коду сам і шукати ті відповіді які йому не передав скіл5.
Доступ поза межами ПР/бранчі я не даю, тому що це буде змішування даних на вході і відповідно недостовірні дані на виході.
Тут більше питання до того, що саме ви хочете виконувати/отримувати.
3. Це трошки окрема тема, в межі цієї статті вона не влізла. Можливо пізніше зроблю продовження.
Ви продовжуєте ту ж сессію, чи виконуєте /clear або /compact ? Цікавить який контекст окрім вхідного файлу має наступний скіл
Можна робити і в різних сесіях, головне щоб був вхідний файл з контекстом. Також у мене є прописана умова, що коли контекст вже завеликий — видається підказка що вже час перейти в нову сесію.
Що ви маєте на увазі під «окрім вхідного файлу»? Для того щоб скіл працював йому достатньо вихідного файлу від попередноього скіла. Таким чином поточному скілу не треба мсп, не треба робити зайвих кроків для пошуків відповідей чи шляхів. Все необхідне йому вже передали мд файлом. Чи я не зовсім зрозуміла про шо ви питаєте :)
Молжно і хук свторити — коли в папці зʼявляється файл з тест кейсами — автоматично обробляти його певним скілом) тут як фантазія дозволить
100% Це вже все від потреб та бачення залежить
А можна побачити конкретний кейс покроково, від тікета до того, що отримує тестувальник?
Так, звісно. Напишіть мені і я вам зроблю демонстрацію 🙂
Куди написати? В профілі контактів немає.
www.linkedin.com/...anna-kurkotova-69b77a161
Теж мені цікава демонстрація якщо можна 💚. Пишу в лінкедін
Вимагає купити преміум, щоб написати. Можна на пошту [email protected]?