Ответ вслух Senior ИИ и тесты обновлено

Покрыть легаси тестами с ИИ

Вопрос

Есть старый модуль без тестов, его нужно отрефакторить. Как вы используете ИИ, чтобы безопасно покрыть его тестами?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Для легаси я пишу характеризационные тесты: они фиксируют то, что код делает сейчас, а не то, что должен. Тут ассистент полезен: прошу разобрать модуль, перечислить ветки, входы и побочные эффекты, предложить набор входных данных.

Что должно прозвучать в ответе

  • Характеризационные тесты: фиксируем текущее поведение до изменений

  • Ассистент помогает найти входы, ветки и побочные эффекты

  • Ожидания берём из реального вывода, но помечаем подозрительные как возможные баги

  • Границы мокаем, логику не трогаем

  • Проверяем силу тестов мутациями или ручной поломкой

  • Рефакторинг мелкими шагами, тесты зелёные после каждого

Что могут спросить следом

  • Что делать, если в текущем поведении явный баг?

Разбор

Образцовый ответ: «Для легаси я пишу характеризационные тесты: они фиксируют то, что код делает сейчас, а не то, что должен. Тут ассистент полезен: прошу разобрать модуль, перечислить ветки, входы и побочные эффекты, предложить набор входных данных. Ожидания беру из реального вывода, и это единственный случай, где это нормально, но всё подозрительное помечаю отдельно и обсуждаю с командой, чтобы не зацементировать баг. Внешние зависимости мокаю на границе. Потом проверяю, что тесты ловят поломки: ломаю пару условий руками или запускаю мутации. И только после этого рефакторю мелкими шагами, прогоняя тесты после каждого».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.