С 5% до 96% покрытия тестами за день — Благодаря AI CoPilot

С 5% до 96% покрытия тестами за день — Благодаря AI CoPilot...

16 May 2025

5

мин чтения

AI инновации

Adrian Sweeney

Когда я начал этот проект и он всё ещё представлял собой небольшую кодовую базу, я знал, что юнит-тестирование будет важным, но, как многие разработчики, отложил его в сторону после создания первого набора тестов в пользу разработки основного функционала. Моей главной целью на раннем этапе было заставить работать middleware-логику — центральную часть приложения — и воплотить в жизнь Минимально Жизнеспособный Продукт (MVP). Это означало пропуск большой части покрытия тестами во имя прогресса.

Как только MVP заработал, я вернул внимание к тестированию. Глядя на проект, я оценил как минимум неделю-две написания тестов, в зависимости от сложности каждого компонента. Некоторые были бы простыми. Другие — особенно там, где были задействованы граничные случаи или сложная логика ветвления — были бы гораздо более трудозатратными.

В этот момент я обратился к ИИ. Я использовал "CoPilot" для помощи в написании кода и подумал, что он также может помочь с тестами.

Ранние промахи с ИИ

Сначала я попросил ИИ "написать юнит-тесты" без какого-либо реального контекста или ограничений. Результат? Беспорядок. Тесты не работали, они делали неправильные предположения о коде, и вся затея превратилась в цикл сломанного тестового кода и фрустрирующих переписываний. ИИ сгенерировал много кода — но не того типа, который я мог бы использовать без серьёзного рефакторинга.

Давая ИИ направление

Прорыв наступил, когда я изменил свой подход. Вместо того чтобы относиться к ИИ как к волшебнику, я начал использовать его больше как младшего разработчика. Я давал ему по одному файлу за раз, объяснял намерение кода и говорил сосредоточиться на написании точных, функциональных тестов только для этого файла.

Это изменило всё.

Внезапно тесты стали проще для ИИ в реализации. Они были правильно ограничены, выровнены с фактической логикой и не требовали часов отладки. Мой ИИ проработал файл за файлом, написав и запустив тесты.

Результаты

Менее чем за день покрытие тестами подскочило с 5% до более чем 96%.

  • Инструкции: 96,72%
  • Ветки: 95,67%
  • Функции: 92,1%
  • Строки: 96,87%

Тесты, на написание которых потребовались бы дни, были завершены за часы, а душевное спокойствие, которое приходит с почти полным покрытием тестами? Бесценно.

Я перешёл от одного Набора Тестов и 5 тестов к:

  • 20 Наборов Тестов
  • 136 Пройденных тестов

Что я узнал

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

Независимо от того, запускаете ли вы новый проект или пытаетесь добавить тесты в старый, ИИ может стать огромной экономией времени — если вы используете его правильно.

Используете ли вы ИИ для написания тестов в своих проектах? Каков ваш опыт?

PrimeCRM

Назад в Центр Знаний