Skip to main content

Увеличение тестового покрытия

Иконки генерации тестов рядом с методами в редакторе работают в IntelliJ IDEA, WebStorm и PyCharm. Нажмите на иконку рядом с методом — и Veai предложит сгенерировать тесты именно для этого метода.

Это удобно, когда вы хотите быстро покрыть конкретный метод тестами, не объясняя агенту, где он находится.

Сценарии, при которых может быть полезна эта функциональность

  • Вы работаете с legacy кодом, планируете брать его на поддержку, хотите зафиксировать текущее поведение кода, чтобы затем его не сломать
  • Вы рефакторите сложный код и хотите гарантировать, что ничего не сломаете
  • У вас в компании есть quality gate на покрытие кода тестами, например, 80%

Как воспользоваться

  1. Около метода или класса нажмите на иконку Veai и выберите Veai: Analyze and Increase Test Coverage
  2. Плагин найдёт тесты для данного класса и запустит их с инструментацией для измерения покрытия
    • Внимание. Прогон найденных тестов может занять некоторое время. Оно может быть чуть выше обычного прогона тех же тестов из-за инструментации кода.
  3. Плагин отобразит покрытие по строчкам и по веткам в существующих тестах.
    • Используйте View covered lines перед генерацией, чтобы увидеть уже покрытые и пропущенные участки, проверить частично покрытые ветвления и понять, какие существующие тесты доходят до нужной строки.
    • Нажмите View covered lines. В отдельном окне откроется анализируемый метод или класс: красным выделены непокрытые строки, зелёным — полностью покрытые, жёлтым — строки с частично покрытым ветвлением.
    • Нажмите на цветную отметку в поле редактора рядом с зелёной или жёлтой строкой. Veai покажет тесты, которые покрывают эту строку; выберите тест, чтобы перейти к его методу.
    • Если у строки нет цвета, её покрытие не имеет смысла, например это объявление поля.
  4. Нажмите Increase Test Coverage
    • Плагин начнёт генерацию дополнительных тестов
    • В процессе генерации плагин будет: добавлять новые тесты, запускать их с инструментацией и исправлять ошибки
  5. Плагин отобразит результат повышения покрытия по строчкам и по веткам
  6. Если покрытие недостаточно большое, можно продолжить процесс, вернувшись к шагу 3.

Чем это отличается от простых скриптов с ИИ, вроде Qodo-Cover?

Ключевое отличие заключается в использовании у нас формальных математических методов.

Интуитивно, тесты и тестовые данные генерируются при помощи формальных методов, а ИИ используется в конце для доработки полученных тестов (под стиль проекта).

РазработчикДругие инструментыVeai
Метод генерацииЧеловеческие усилияЧистый ИИФормальные методы + ИИ
Может ли нагенерировать тесты с нуля?ДаДаДа
Может ли "прорваться" через код, когда покрытие уже достаточно высоко?Нет (не будет, слишком затратно по времени)НетДа
Есть ли гарантия повышения покрытия?Скорее нетНет: тесты генерируются случайноДа: тесты генерируются так, чтобы гарантировано прийти в непокрытые строчки
Затраты времениОчень большиеБольшиеСредние
Затраты денегНетДа, много на прогоны ИИДа, немного в конце на рефакторинг от ИИ