AI-генерация тестов может создавать ложное чувство безопасно

Гипотетическая ситуация: вы попросили ИИ написать тесты для функции расчёта скидки. Он сгенерировал десять тест-кейсов, все они успешно проходят, а покрытие кода выросло с 40% до 95%. Выглядит отлично. Но давайте посмотрим на один из тестов.

const calculateDiscount = (price: number, discount: number) => price - price * (discount / 100);

test(‘calculates discount’, () => { expect(calculateDiscount(100, 10)).toBe(90); });

Тест корректный, вот только он ничего не говорит о том, что произойдёт, если скидка будет отрицательной, больше 100% или цена окажется нулевой. И если ИИ сгенерировал остальные тесты по тому же принципу, у нас может быть почти стопроцентное покрытие при довольно слабой проверке поведения.

Я сталкивалась с такими проблемами уже несколько раз, с самого начала использования иишки для тестов. Проблема в том, что coverage показывает, какой код выполнялся во время тестов, а не насколько хорошо мы проверили его корректность. Кроме того, ИИ часто опирается на существующую реализацию. Если в ней уже есть ошибка, модель может написать тест, который закрепит неправильное поведение как ожидаемое. Например, функция ошибочно разрешает скидку 150%, а сгенерированный тест проверяет, что результат равен −50. Тест проходит, хотя бизнес-логика явно требует дополнительной проверки. Поэтому не стоит оценивать качество AI-тестов только по их количеству и проценту покрытия, лучше проверьте:

• Есть ли тесты на граничные и некорректные значения? • Проверяются ли требования, а не просто повторяется текущая реализация? • Упадёт ли тест, если намеренно внести ошибку в код? • Есть ли проверки негативных сценариев?

Последний вопрос про намеренное внесение ошибок — основа mutation testing. Инструмент изменяет код небольшими способами, например заменяет > на >=, и проверяет, заметят ли это тесты.

ИИ 100% сильно ускоряет написание тестов, но принимать сгенерированные проверки без анализа — примерно то же самое, что принимать сгенерированный код без ревью.

#ks_разработка #ks_ии

Ребята, обязательно заходите в мой тг: https://t.me/ira_pro_it Пока что я дублирую сюда все, но скоро там будут отдельные рубрики, которые больше не попадут никуда 🩷

AI-генерация тестов может создавать ложное чувство безопасно | Сетка — социальная сеть от hh.ru