Зелёная галочка не доказывает правильность теста
ИИ-агенты пишут сквозные тесты, но сообщение об успехе ещё не доказывает, что данные сохранены. Проверяйте результат независимым способом.

Переведенное издание. Технические идентификаторы остаются в своей первоначальной форме.
Тест нажимает "Отправить". На экране появляется "Сохранено". Тест проверяет это уведомление и проходит. Через три недели пользователь сообщает, что настройки так и не сохранились. Это иллюстративный пример, а не описание конкретного инцидента.
В этой истории нет ничего нового, и ничто в ней не требует искусственного интеллекта. Это стандартный способ проведения сквозных тестов: проверка наблюдает за пользовательским интерфейсом, а пользовательский интерфейс - это тестируемая вещь. Когда агент ИИ пишет тесты, тот же самый режим отказа возникает и в промышленном масштабе, поскольку агент также учится тому, что утверждать, наблюдая за интерфейсом.
Проблема оракула, в одном абзаце
Любой тест состоит из двух частей. Первая половина что-то делает. Вторая половина решает, правильный ли результат. Эта вторая половина - оракул, и именно она имеет значение. Слабый оракул проверяет ближайший видимый сигнал: уведомление, остановку счетчика, изменение URL. Сильный оракул проверяет результат с независимого направления: запись в базе данных, ответ API, который вызывает страница, состояние после новой перезагрузки.
В собственном руководстве по передовому опыту Драматурга делается следующий вывод о действиях: тесты должны проверять поведение, которое может видеть конечный пользователь, и избегать связи с деталями реализации, такими как классы CSS. Тот же принцип, который применяется к утверждениям, дает вам правило эпохи искусственного интеллекта. Укажите результат, который пользователь будет проверять, используя путь, который ошибка не может подделать.
Почему тесты, написанные ИИ, склоняются к слабым оракулам
Агент, который изучает ваше приложение и пишет тесты, изучает приложение с его поверхности. Он щелкает, наблюдает за тем, что меняется, и кодирует именно это: щелкните по этому, а затем изменится это. Тост - это удобный, детерминированный сигнал, поэтому агент утверждает уведомление. Агент не беспечен. У него просто нет доступа к вашим намерениям, только к вашим пикселям.
Автоматическое ожидание драматурга делает ситуацию более безопасной, чем она есть на самом деле. Проверки работоспособности подтверждают, что элемент видим, стабилен и получает события до того, как произойдет щелчок. Утверждения автоматической повторной попытки ожидают ожидаемого условия. Оба уменьшают количество сбоев, связанных с синхронизацией. Никто не спрашивает, было ли условие правильным. Тест может быть совершенно стабильным и совершенно неверным.
Три обновления Oracle, которые работают сегодня
Перезагрузите и прочитайте. После сохранения перейдите назад и назад или перезагрузите страницу и убедитесь, что значение все еще существует. Это проверяет постоянство так, как пользователь заметил бы его отсутствие.
Утвердить один уровень ниже. Драматург может дождаться ответа сети, от которого зависит пользовательский интерфейс. Соедините проверка пользовательского интерфейса с expect(response).toBeOK() в вызове API, который фактически сохраняет, или запросите API непосредственно после потока пользовательского интерфейса и сравните сохраненное значение.
Проверьте внешний побочный эффект. При регистрации укажите это в исходящих сообщениях, журнале аудита или списке администраторов, а не в приветственном баннере. Баннер предназначен для появления; запись существует только в том случае, если система сработала.
Контрольный вопрос, который меняет все
Если вы позволяете агентам писать тесты, а людям просматривать их, потратьте время проверки на один вопрос для каждого теста: что это утверждает и может ли он пройти, пока функция не работает? Пересмотреть счастливый путь - значит прочитать испытание. Обзор оракула - это проверка теста.
Это также честный способ использовать такой инструмент, как AnyTest. Его агенты исследуют ваше приложение по URL-адресу, создают сквозные тесты и оставляют их на ваше рассмотрение. Поверхность обзора показывает каждый шаг и его результат. При правильном использовании в этом обзоре происходит проверка оракула: не "нажал ли агент правильные вещи", а "доказал ли написанный им тест что-нибудь". В собственных материалах продавца говорится, что решения по-прежнему решают люди. Это решение, которое имеет значение.
Зеленая галочка означает, что тест выполнен. Он никогда не говорит вам, что тест был правильным.
Общие вопросы
Что такое тестовый оракул?
Часть теста, которая решает, пройден он или нет. Проверка об успехе - слабый оракул. Проверка о независимо проверенном состоянии, например данных после перезагрузки или запроса API, является сильным.
Подтверждает ли прохождение сквозного теста работу этой функции?
Нет. Это доказывает, что конкретные условия, заявленные в ходе теста, были верными. Если проверка отслеживает только пользовательский интерфейс, функция может быть нарушена, а тест останется зеленым.
Как проверить тесты, написанные агентом ИИ?
Для каждого теста спросите, что он утверждает и может ли он пройти, пока функция не работает. Предпочитайте тесты, которые проверяют сохраненное состояние по второму пути: перезагрузка, запрос API или внеполосная запись.