Мы видели ChatGPT и другие инструменты генеративного ИИ, которые генерируют код для запрошенной нами логики, а также тестовые примеры для них.

Codium AI — это платформа на базе ИИ, которая помогает командам разработчиков автоматизировать проверку кода и выявлять потенциальные проблемы в их коде, а также писать тестовые примеры для кода, который понимает ИИ. Давайте посмотрим, действительно ли этот инструмент полезен.

Для начала рассмотрим простую программу, которая вычисляет сумму всех чисел в массиве.

export const sum = (arr: number[]) => {
  return arr.reduce((a, b) => a + b, 0);
};

У меня уже установлен Codium в виде расширения VSCode, которое вы можете скачать по предоставленной ссылке. Ссылка для скачивания.

Codium может предоставить предложения или тестовые примеры для каждой функции, которую он понимает, и отобразит строку с надписью «Создать тесты для указанной ниже функции». См. рисунок ниже:

Давайте нажмем на это и посмотрим, что он показывает. Анализ представлен в трех частях: Test Suite, Code Analysis и Code Suggestions.

Давайте сначала посмотрим на анализ кода. Если мы прочитаем его, то поймем, что он пытается объяснить, какова цель функции, каковы входные данные для этой функции и как функция на самом деле работает. Это очень хорошо выглядит. Давайте перейдем к следующему.

Вот снимок предложений по коду, предоставленных Codium. Первое предложение — добавить проверку типов входного массива чисел, что является отличным предложением. Давайте перейдем к следующему.

Второе предложение говорит о том, чтобы использовать цикл for вместо сокращения, что может быть быстрее для больших массивов. Это также хорошее предложение, и мы можем внести изменения, если ожидаем обработки больших массивов.

Третье предложение — использовать BigInt для больших чисел. Если мы работаем с большими числами, это тоже верное предложение, и хорошо, что Codium обратил на него наше внимание.

Теперь перейдем к Test Suite. Codium предоставил в общей сложности шесть тестовых случаев, в том числе пять счастливых путей и один пограничный случай. Этого достаточно для этой функции, и Test Suite выглядит хорошо продуманным. Это стоит всего, что это было достигнуто без моего участия или предложений.

Для одного из тестов я предложил сделать массив немного длиннее и добавить в него десятичные значения. Это было полезное предложение, и оно демонстрирует, как Codium можно настроить в соответствии с конкретными потребностями.

Неудивительно, что Codium смог предоставить именно то, что мы просили. Может быть, мы даже можем указать точную длину массива, и Codium сможет сгенерировать вывод на основе этой спецификации. Я призываю вас попробовать и убедиться в этом самостоятельно.

Мы можем предоставить Codium индивидуальные конфигурации и повторно сгенерировать тесты в соответствии с нашими спецификациями. Например, мы можем указать стиль тестового примера «Дано, когда тогда» или «Установить утверждение действия», и мы можем ссылаться на существующие тесты, которые мы написали вручную. Кроме того, мы можем предоставить образцы входных данных и указать, должен ли инструмент автоматически создавать макеты или нет. Мы также можем указать, сколько тестовых случаев генерировать. Это мощная функция, потому что Codium может понять, как мы оформляем наши тестовые примеры, и рекомендовать тот же шаблон, поэтому нам не нужно вносить какие-либо изменения.

Я скопировал все тесты, созданные выше, и запустил тестовую команду, чтобы проверить, работают ли они. Угадай, что? Они работают очень хорошо. Все 6 тестовых случаев пройдены. Слава Кодиуму 👏.

На мой взгляд, это хорошо, но обязательно сделайте обзор написанных тестов, а затем подумайте о том, чтобы добавить их в свой код. Не добавляйте их вслепую, так как иногда они могут написать что-то, что может оказаться недействительным.

В следующем посте я хотел бы привести сложный пример, и мы увидим, как работает этот ИИ.

Спасибо, что дочитали до этого места.

Счастливого обучения !! 😃