Смена парадигмы - детерминизм vs вероятность. Базовый словарь, применение AI для Automation Engineer, вопросы с собеседований.
Это самый частый вопрос на собеседованиях, чтобы проверить, понимаешь ли ты суть AI.
Классический QA (детерминированный):2 + 2 всегда равно 4. Если автотест ожидает 4, а получает 5 — это баг. Мы ищем точное совпадение.
AI QA (вероятностный): Промпт «Напиши короткое приветствие» может вернуть «Привет!», «Здравствуйте!» или «Добрый день!». Все три варианта правильные. Мы ищем попадание в границы допустимого (confidence score, семантическое сходство), а не точное совпадение строк.
💡 Как это сказать на собеседовании:
«В классической автоматизации мы проверяем детерминированный результат. В AI-системах мы переходим от проверки точного соответствия к оценке вероятности и семантической корректности, используя метрики и N-кратные прогоны для сбора статистики.»
Скопируй эту таблицу на первый лист твоего файла AI_QA_Preparation.xlsx.
| Термин | Определение своими словами | Пример в QA | Статус |
|---|---|---|---|
| ML (Machine Learning) | Алгоритм, который учится на данных, а не следует жёстким правилам. | Модель предсказывает, упадёт ли автотест, на основе истории коммитов. | 🔴 |
| LLM (Large Language Model) | Большая языковая модель, работающая с текстом (например, GPT, Claude). | Генерация 50 тест-кейсов на основе описания пользовательской истории. | 🔴 |
| Обучающая выборка (Train set) | Данные, на которых модель «учится». | 10 000 размеченных скриншотов с багами и без. | 🟡 |
| Тестовая выборка (Test set) | Новые данные, на которых мы проверяем, чему модель научилась. | 1 000 скриншотов, которых модель раньше не видела. | 🟡 |
| Галлюцинация (Hallucination) | Уверенный, но фактически неверный ответ модели. | Чат-бот поддержки выдумал несуществующую акцию компании. | 🔴 |
🔴 — приоритетные термины (обязательно знать)
🟡 — дополнительные термины (познакомиться)
Не нужно знать всё, достаточно понимать 3 главных применения:
Если id="submit-btn" изменился на id="submit-btn-new", AI-инструмент (например, Testim или Healenium) находит элемент по другим признакам (текст, соседние элементы, CSS) и чинит тест на лету, не ломая прогон.
Вместо ручного написания скриптов для создания 100 валидных email-адресов или имён, ты просишь LLM:
Сгенерируй JSON-массив из 10 реалистичных профилей пользователей с пограничными значениями возраста.AI анализирует, какие модули кода менялись чаще всего, и подсказывает, куда стоит добавить автотесты в первую очередь.
Ловушка: Начать говорить, что AI «умнее» и «заменит скрипты».
Твой ответ:
«Традиционная автоматизация хрупкая: она ломается при малейшем изменении UI, так как опирается на жёсткие скрипты и локаторы. AI-автоматизация динамична: она использует машинное обучение для адаптации к изменениям (self-healing), анализа визуальных регрессий и генерации данных, что снижает стоимость поддержки тестов.»
Твой ответ:
«Поскольку ответ недетерминирован, я откажусь от проверки точного совпадения строк (
assert equals). Вместо этого я:
- Запущу промпт N раз (например, 10), чтобы собрать выборку ответов.
- Проверю ответы на наличие ключевых слов или семантическую близость к эталону.
- Проверю ответы на токсичность и соответствие бизнес-правилам (например, через LLM-as-a-Judge или регулярные выражения).»
Чтобы почувствовать «вероятность» на практике, не усложняя себе жизнь настройкой API-ключей, запусти этот простой Python-скрипт. Он имитирует запрос к LLM, возвращая разные «ответы» на один и тот же промпт, и сохраняет их в CSV (который ты потом откроешь в своём .xlsx).
import random
import csv
from datetime import datetime
def simulate_llm_response(prompt):
responses = [
"Привет! Чем могу помочь?",
"Здравствуйте! Рад вас видеть.",
"Добрый день! Какой у вас вопрос?",
"Приветствую! Готов ответить на ваши вопросы.",
"Здравствуйте! Что вас интересует?",
"Добрый день! О чём хотите поговорить?",
"Привет! Я готов к работе.",
"Здравствуйте! Как я могу быть полезен?",
"Добрый день! Жду ваших вопросов.",
"Привет! Давайте обсудим вашу задачу."
]
return random.choice(responses)
# Имитируем 10 запросов с одним и тем же промптом
prompt = "Напиши короткое приветствие"
results = []
for i in range(10):
response = simulate_llm_response(prompt)
results.append({
"run": i + 1,
"prompt": prompt,
"response": response,
"timestamp": datetime.now().strftime("%H:%M:%S")
})
print(f"Run {i + 1}: {response}")
# Сохраняем в CSV
filename = "AI_QA_Preparation.csv"
with open(filename, "w", encoding="utf-8", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["run", "prompt", "response", "timestamp"])
writer.writeheader()
writer.writerows(results)
print(f"\nРезультаты сохранены в {filename}")🎯 Твоё действие: Запусти этот код, открой полученный файл и добавь в свой трекер вывод:
«Один промпт = множество валидных ответов. Нужна семантическая проверка, а не
assert ==».
AI_QA_Preparation.xlsx создан, лист «Глоссарий» заполнен (минимум 5 терминов).