Перейти к основному содержимому

AI в code review и тестировании

AI направлен на проверку, а не на производство: review изменений, генерация тест-кейсов, поиск краевых случаев и разбор кода, который никто в команде не писал.

Почему это важно. Именно здесь экономика лучше всего. Ресурс на review всегда в дефиците, тесты первыми вылетают под дедлайн, и в обеих задачах быстрый и неутомимый второй читатель полезен, даже когда иногда ошибается: ложное срабатывание стоит минуты, а пропущенный баг — релиза.

Что понимать

  • Что машинный ревьюер видит там, где человек пропускает, и наоборот
  • Проверяет ли сгенерированный тест поведение или просто пересказывает реализацию
  • Чего стоит ответ «ничего не нашёл»
  • Где это дополняет человека, а где не должно его заменять
  • Что именно вы отправляете третьей стороне, когда этим пользуетесь

Основные темы

Review с ассистентом

  • Первый проход до человека: очевидные проблемы, пропуски, несогласованности
  • Просмотр собственного изменения до того, как его увидит кто-то ещё
  • Объяснение незнакомого кода — и проверка самого объяснения
  • Проходы по безопасности и краевым случаям — отдельными, узко заданными вопросами
  • Шум и почему нефильтрованного ревьюера начинают игнорировать, как плохой линтер

Генерация тестов

  • Перечисление случаев по описанию — то, что человек делает неполно
  • Границы, пустой ввод, пути с ошибками — ровно то, что обычно пропускают
  • Ловушка: тесты, написанные по реализации, — они проходят по построению
  • Сначала описать поведение, потом генерировать тесты по описанию
  • Читать сгенерированные тесты так же внимательно, как сгенерированный код

Разбор проблем

  • Чтение отчёта о падении и выдвижение гипотез
  • Объяснение поведения незнакомой зависимости
  • Восстановление замысла по истории изменений
  • Подсказка, куда добавить логирование

Границы

  • Решение об одобрении изменения остаётся за человеком
  • Не единственный ревьюер изменений, критичных для безопасности
  • Покрытие, которое выглядит полным, но ничего не проверяет
  • Что можно выпускать за пределы своей машины, а что нельзя

Уровни

УровеньКак это выглядит
JuniorПросит объяснить код и генерирует простые тест-кейсы.
MiddleИспользует ассистента как структурированный первый проход review и как способ перечислить краевые случаи, после чего проверяет результат.
SeniorВстраивает его в процесс там, где польза доказуема, оставляет решение об одобрении за человеком и измеряет, находит ли он настоящие проблемы.

Практика

Для начала

  • Сначала self-review Прогоните следующее своё изменение через ассистента до того, как отправите его человеку, и запишите, что он поймал.

  • Перечислите случаи Опишите поведение функции и попросите список случаев для тестов. Сравните со своим списком.

  • Объясните незнакомый код Попросите объяснить файл, который никто не понимает, а потом проверьте объяснение чтением.

Дальше

  • Тесты от поведения Сначала напишите описание, сгенерируйте тесты по нему и убедитесь, что ни один из них не повторяет код.

  • Проход по безопасности Спросите про конкретное — проблемы с авторизацией и обработкой входных данных в изменении — и проверьте каждую находку.

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

Проверьте себя

  • Что review с ассистентом реально поймал на вашем проекте?
  • Какая доля его находок — шум, и на каком пороге вы перестанете их читать?
  • Ваши сгенерированные тесты проверяют поведение или реализацию?
  • В каких изменениях вы никогда не оставите его единственным ревьюером?
  • Какой код вы отправляете третьей стороне и разрешено ли это?
  • Review в вашей команде стал лучше — или только быстрее?

Материалы

  • Google's Code Review Developer Guide — эталон, с которым стоит сверять review с ассистентом, и напоминание о том, зачем нужно review помимо поиска дефектов.
  • Test Desiderata — критерии, по которым стоит судить сгенерированные тесты. Большинство таких тестов проваливается на «поведение, а не структура».
  • Property-based testing — дополнительный способ добраться до случаев, о которых забывают, и часто он подходит лучше, чем ещё десяток тестов на примерах.
  • OWASP Code Review Guide — что должен покрывать проход по безопасности, чтобы можно было спросить о конкретном, а не «проверь, нет ли проблем».
  • Exploring Generative AI — конкретные рассказы о применении ассистента в тестировании и review: что сработало, а что нет.