Покрыть легаси тестами с ИИ
Вопрос
Есть старый модуль без тестов, его нужно отрефакторить. Как вы используете ИИ, чтобы безопасно покрыть его тестами?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Характеризационные тесты: фиксируем текущее поведение до изменений
Ассистент помогает найти входы, ветки и побочные эффекты
Ожидания берём из реального вывода, но помечаем подозрительные как возможные баги
Границы мокаем, логику не трогаем
Проверяем силу тестов мутациями или ручной поломкой
Рефакторинг мелкими шагами, тесты зелёные после каждого
Что могут спросить следом
- Что делать, если в текущем поведении явный баг?
Разбор
Образцовый ответ: «Для легаси я пишу характеризационные тесты: они фиксируют то, что код делает сейчас, а не то, что должен. Тут ассистент полезен: прошу разобрать модуль, перечислить ветки, входы и побочные эффекты, предложить набор входных данных. Ожидания беру из реального вывода, и это единственный случай, где это нормально, но всё подозрительное помечаю отдельно и обсуждаю с командой, чтобы не зацементировать баг. Внешние зависимости мокаю на границе. Потом проверяю, что тесты ловят поломки: ломаю пару условий руками или запускаю мутации. И только после этого рефакторю мелкими шагами, прогоняя тесты после каждого».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.