Недавно у меня появилась возможность подробно изучить Early, ИИ-агент, предназначенный для автоматической генерации модульных тестов. Как человек, который регулярно работает с TypeScript и ExpressoTS Framework, мне хотелось увидеть, как Early может оптимизировать мой рабочий процесс. Я решил протестировать расширение vscode, которое они создали на основе моей новой библиотеки NPM, которую я разрабатывал, под названием @expressots/share.
Первое, что меня поразило в Early, — это способность автоматически генерировать модульные тесты для моей существующей базы кода. Вместо создания тестов с нуля я мог бы сосредоточиться на доработке сгенерированных тестов и повышении надежности и тестируемости моего кода. Этот сдвиг значительно ускорил мой процесс развития. Другой интересный аспект, который я заметил, заключается в том, что 83% сгенерированного кода я не вносил никаких изменений, он работал «из коробки» и увеличивал покрытие моего кода. Сэкономьте мне кучу времени.
Всего за 8,5 часов мне удалось:
Тот факт, что я смог сделать все это за один день, был замечательным. Идеальный сценарий модульного тестирования — делать это во время фактической разработки функций. Я сделал это после того, как у меня уже была библиотека, поэтому потребовались некоторые корректировки, чтобы сделать код тестируемым.
Автоматическое создание тестов для крайних случаев. Например, он генерировал модульные тесты для сценариев, включающих пустые строки, даже когда требовались параметры:
export function printSuccess(message: string, component: string): void { stdout.write(chalk.green(`${message}:`, chalk.bold(chalk.white(`[${component}] ✔️\n`)))); }
Изначально я бы не стал создавать тесты для пустых строк в такой простой функции. Однако подход Эрли способствовал развитию защитного программирования, заставляя меня обрабатывать крайние случаи, которые я мог упустить из виду.
При доработке сгенерированных тестов я столкнулся с проблемой несоответствия типов:
Проблема: jest.fn() возвращает любое значение, а процесс.exit никогда не возвращает его, что приводит к несоответствию типов в TypeScript.
Решение. Измените макет, чтобы он соответствовал сигнатуре процесса.exit, гарантируя правильность типа.
Это открытие побудило меня скорректировать свой код для повышения безопасности типов, подчеркнув, как Early может помочь выявить тонкие проблемы, которые в противном случае могли бы остаться незамеченными.
Несмотря на общий положительный опыт, я столкнулся с несколькими проблемами, решение которых может повысить удобство использования Early:
Использование Jest 29.7
expect(Compiler.loadConfig()).rejects.toThrowError("process.exit() was called with code 1");
// Исправленная версия
expect(Compiler.loadConfig()).rejects.toThrow("process.exit() was called with code 1");
Наблюдение: создание тестов для всех возможных входных данных, включая пустые строки, иногда может оказаться излишним.
Предложение: ввести параметры настройки уровня создания тестов, позволяющие разработчикам при необходимости включать тесты защитного программирования.
Видимость результатов теста: мне приходилось переключаться между Early и Jest, чтобы увидеть, какие тесты пройдены или не пройдены.
Состояние дерева файлов: иерархия проектов в Early разрушается при переключении из других приложений, что требует от меня неоднократного открытия папок.
Предложение: Улучшите пользовательский интерфейс для отображения результатов тестов в Early, отражая структуру Jest. Поддержание состояния дерева файлов также улучшит взаимодействие с пользователем.
Наблюдение: использование любых типов в макетах может привести к несоответствию типов и потенциально маскировать ошибки.
Предложение: усовершенствовать генерацию макетов, чтобы использовать точные подписи, повышая безопасность типов и уменьшая необходимость ручных исправлений.
В целом мой опыт работы с Early был весьма положительным. Этот инструмент значительно ускорил мой процесс модульного тестирования, позволив мне сосредоточиться на доработке тестов, а не писать их с нуля. Это также побудило меня рассмотреть крайние случаи и повысить надежность моего кода.
Области для улучшения относительно невелики и связаны с повышением удобства использования и настройки. Решение этих проблем сделает этот инструмент еще более мощным союзником в разработке программного обеспечения.
Спасибо команде Early за отличную работу! Мне интересно наблюдать за развитием этого инструмента, и я буду рад продолжать оставлять отзывы, которые помогут его усовершенствовать.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3