Увеличение тестового покрытия
Иконки генерации тестов рядом с методами в редакторе работают в IntelliJ IDEA, WebStorm и PyCharm. Нажмите на иконку рядом с методом — и Veai предложит сгенерировать тесты именно для этого метода.
Это удобно, когда вы хотите быстро покрыть конкретный метод тестами, не объясняя агенту, где он находится.
Сценарии, при которых может быть полезна эта функциональность
- Вы работаете с legacy кодом, планируете брать его на поддержку, хотите зафиксировать текущее поведение кода, чтобы затем его не сломать
- Вы рефакторите сложный код и хотите гарантировать, что ничего не сломаете
- У вас в компании есть quality gate на покрытие кода тестами, например, 80%
Как воспользоваться
- Около метода или класса нажмите на иконку
Veaiи выберитеVeai: Analyze and Increase Test Coverage - Плагин найдёт тесты для данного класса и запустит их с инструментацией для измерения покрытия
- Внимание. Прогон найденных тестов может занять некоторое время. Оно может быть чуть выше обычного прогона тех же тестов из-за инструментации кода.
- Плагин отобразит покрытие по строчкам и по веткам в существующих тестах.
- Используйте
View covered linesперед генерацией, чтобы увидеть уже покрытые и пропущенные участки, проверить частично покрытые ветвления и понять, какие существующие тесты доходят до нужной строки. - Нажмите
View covered lines. В отдельном окне откроется анализируемый метод или класс: красным выделены непокрытые строки, зелёным — полностью покрытые, жёлтым — строки с частично покрытым ветвлением. - Нажмите на цветную отметку в поле редактора рядом с зелёной или жёлтой строкой. Veai покажет тесты, которые покрывают эту строку; выберите тест, чтобы перейти к его методу.
- Если у строки нет цвета, её покрытие не имеет смысла, например это объявление поля.
- Используйте
- Нажмите
Increase Test Coverage- Плагин начнёт генерацию дополнительных тестов
- В процессе генерации плагин будет: добавлять новые тесты, запускать их с инструментацией и исправлять ошибки
- Плагин отобразит результат повышения покрытия по строчкам и по веткам
- Если покрытие недостаточно большое, можно продолжить процесс, вернувшись к шагу 3.
Чем это отличается от простых скриптов с ИИ, вроде Qodo-Cover?
Ключевое отличие заключается в использовании у нас формальных математических методов.
Интуитивно, тесты и тестовые данные генерируются при помощи формальных методов, а ИИ используется в конце для доработки полученных тестов (под стиль проекта).
| Разработчик | Другие инструменты | Veai | |
|---|---|---|---|
| Метод генерации | Человеческие усилия | Чистый ИИ | Формальные методы + ИИ |
| Может ли нагенерировать тесты с нуля? | Да | Да | Да |
| Может ли "прорваться" через код, когда покрытие уже достаточно высоко? | Нет (не будет, слишком затратно по времени) | Нет | Да |
| Есть ли гарантия повышения покрытия? | Скорее нет | Нет: тесты генерируются случайно | Да: тесты генерируются так, чтобы гарантировано прийти в непокрытые строчки |
| Затраты времени | Очень большие | Большие | Средние |
| Затраты денег | Нет | Да, много на прогоны ИИ | Да, немного в конце на рефакторинг от ИИ |