Вхід Реєстрація
Реклама
Ваше рекламне місце
Забронюйте цей слот без конкуренції на обраний період.
Купити рекламу →
Логотип телеграм спільноти - QA Co-pilot
Додано 06 гру 2025 🌐 UK

QA Co-pilot

@qa_copilot
Кількість підписників: 90
Фото: 326
Відео: 1
Посилання: 49
Опис:
QA Co-pilot 🚀 Ваш другий пілот у світі тестування. 👨💻 Для кого: Для тестувальників-практиків, які хочуть рости. 🎯 Про що: Делегуємо рутину нейромережам, прискорюємо роботу та звільняємо час на головне. ❌ Чого тут немає: Нудної теорії та води.
Джерело

QA Co-pilot | Відмовляємося від класичних Assert'ів: Як тестувати ШІ-додатки (AI Ass...

Логотип телеграм спільноти - QA Co-pilot QA Co-pilot @qa_copilot
37 Охват/переглядів 2026-07-29 07:11 Повідомлення №361
🤖 Відмовляємося від класичних Assert'ів: Як тестувати ШІ-додатки (AI Assertions)

Ми всі звикли писати класичні перевірки в Playwright:
expect(element).toHaveText('Успішна реєстрація').
Це працює ідеально для статичних систем. Але як ви протестуєте чат-бота, генератор текстів або ШІ-помічника?

ШІ щоразу віддає різний текст. Сьогодні це "Привіт, чим можу допомогти?", а завтра "Вітаю, яке у вас питання?". Класичний E2E тест тут же впаде, хоча система працює коректно.

Рішення: AI Assertions (ШІ замість expect)
Замість того, щоб порівнювати рядки посимвольно, ми просимо іншу нейромережу (наприклад, OpenAI API) оцінити результат нашого тесту!

Як це виглядає на практиці (Playwright + OpenAI):

1️⃣ Виконуємо дію в UI (наприклад, просимо бота згенерувати summary статті).

2️⃣ Витягуємо отриманий текст через Playwright.

3️⃣ Відправляємо цей текст через API до GPT-4 з промптом-валідатором.

// Приклад кастомного AI Assert
async function expectToMatchContext(actualText: string, expectedMeaning: string) {
const response = await openai.chat.completions.create({
model: "gpt-4-turbo",
messages: [
{
role: "system",
content: "Ти суворий QA-валідтор. Дай відповідь тільки 'true' або 'false'. Чи несе отриманий текст такий самий зміст, що і очікуваний?"
},
{
role: "user",
content: `Очікуваний зміст: "${expectedMeaning}". Отриманий текст: "${actualText}"`
}
]
});

const isMatch = response.choices[0].message.content === 'true';
expect(isMatch).toBeTruthy();
}

// Використання в тесті:
const botReply = await page.locator('.chat-message').innerText();
await expectToMatchContext(botReply, "Бот має привітатися та запропонувати допомогу");

Чому це майбутнє:
Ваші тести стають "розумними". Вони більше не ламаються через змінену кому чи перефразування. Ви тестуєте зміст та бізнес-логіку, а не жорсткі пікселі та символи. Це і є справжній підхід QA Co-pilot.

А як ви зараз валідуєте динамічні або згенеровані дані у своїх проєктах?

👇
🔥 — Вже підкрутив OpenAI API до своїх E2E тестів!
👀 — Пишу регулярні вирази (RegEx) на пів сторінки...
🤯 — Навіть не думав, що ШІ можна використовувати як Assert!