Создавайте тесты с помощью CodiumAI, чтобы облегчить разработку.
Создавайте тесты с помощью CodiumAI, чтобы облегчить разработку.

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

Переведено с Make Your Dev Life Easier by Generating Tests with CodiumAI,автор David Eastman Был профессиональным разработчиком программного обеспечения в Лондоне, работал в Oracle и BT, а также работал консультантом, помогая командам работать более гибко. Он написал книгу о дизайне пользовательского интерфейса и с тех пор пишет технические статьи...

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

Конечно, тестирование не должно быть второстепенной задачей: при разработке через тестирование (TDD) вы сначала пишете тесты. Хотя это хорошая вещь, которую должна попробовать каждая команда, общепринятой практикой является сначала создание минимально жизнеспособного продукта (MVP), а затем продолжение проекта с полным модульным тестированием, если есть доказательства его перспективности.

Я не видел этого раньше CodiumAI,А потому, что он генерирует на главной странице простой и понятный презентационный текст — «Создайте значимый изтест для занятых разработок».,Я был готов попробовать. очевидно,Они пытаются войти в модель OpenAI из GPT, чтобы открыть пространство изинструментов — на самом деле,оно сделано из“GPT-3.5&4 и TestGPT-1» обеспечивает поддержку из.

CodiumAI из реализации в настоящее время работает только с Visual Studio Code и JetBrains; я воспользуюсь первым. я нашел VSC Немного неловко, но, по крайней мере, он с этим справится. C#, это мой любимый язык. но я также знаю JetBrains Изинструмент очень популярен.

в качестве примера,Я буду использовать очень простой класс банковского счета,Есть три метода: вывод, депозит и баланс. Предположим, это простой аккаунт,Нет возможности овердрафта. У нас уже должно быть четкое представление о том, что мы хотим сказать:

  • Мы не можем снять больше, чем имеем.
  • Если введенная сумма для депозита или вывода равна нулю, нам не следует продолжать.
  • Ни запрошенный депозит, ни сумма вывода не должны быть отрицательными числами.

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

вернуться в Кодиеум. На странице рынка он, кажется, предпочитает Python、JavaScript и TypeScript, но он также явно показывает действие меню для создания примеров для других языков. Как обычно, Визуал Studio Code Группа окон открылась с беспорядком, но я смог продолжить.

Небольшое диалоговое окно внизу экрана попросило меня войти в Github — что практически везде является нормой.

.NET загрузился, и я позволил ему создать простой консольный проект. Вот код:

Язык кода:javascript
копировать
public class BankAccount  
{  
  private uint balance;  
  public string ShowBalance() => $"{CURRENCYSIGN}{balance}";  
  private const string CURRENCYSIGN = "$";  
  
  public void Deposit(uint funds)  
  {  
     balance = balance + funds;  
     Console.WriteLine($"{CURRENCYSIGN}{funds} deposited. Balance now {ShowBalance()}");   
  }   
  
  public void Withdraw(uint funds)  
  { 
    if (funds > balance) throw new Exception($"Cannot withdraw {CURRENCYSIGN}{funds}, balance is {ShowBalance()}");   
    balance = balance - funds; 
    Console.WriteLine($"{CURRENCYSIGN}{funds} withdrawn. Balance now {ShowBalance()}");
  }
  
  static void Main(string[] args)  
  {  
    BankAccount ba = new BankAccount();  
    try {
      // Money in  
      ba.Deposit(20);
    
      //Money out  
      ba.Withdraw(5);
    
      //Too much ba.Withdraw(25); 
    }  
    catch (System.Exception ex)  
    {  
       Console.WriteLine($"Error {ex.Messag}");   
    }
  }
}

Из консоли основной метод итест выдает ожидаемый результат:

Язык кода:javascript
копировать
BankAccount> dotnet run
$20 deposited. Balance now $20  
$5 withdrawn. Balance now $15
Error Cannot withdraw $25, balance is $15

Теперь это не очень сложно,Например, нет необходимости в какой-либо моделирующей рамке. Однако,Нас интересует, будет ли доступен этот инструмент.

Хорошо, теперь мы можем попросить CodiumAI сгенерировать тест. Чуть выше класса из находится аккуратное напоминание о том, как генерировать тест:

Во-первых, ИИ Сгенерировано очень приемлемое изложение урока на английском языке:

The BankAccount class represents a bank account and provides methods for depositing and withdrawing funds. It also has a method to display the current balance.

Он предоставляет английские объяснения для всех трех методов. Он также генерирует «предложения кода».,Все это в какой-то степени разумно. Например,Рекомендуется использовать десятичные значения вместо целых чисел без знака. Я оставлю читателю возможность рассмотреть плюсы и минусы этого (если интересно).

Это дает мне уверенность, что он производит изтест. И тест действительно хорош.

Презентация очень красивая. Он генерирует какой-то тест, а суммируя его, можно создать другой тест. Сначала идет счастливый путь:

Вот пример создания двух счастливых путей:

Язык кода:javascript
копировать
[Test]  
public void test_deposit()   
{
  BankAccount ba = new BankAccount();
  ba.Deposit(20); 
  Assert.AreEqual("$20", ba.ShowBalance());
}

[Test]
public void test_withdraw_more_than_balance() 
{
  BankAccount ba = new BankAccount();
  Assert.Throws<Exception>(() => ba.Withdraw(25));
} 

технически говоря,Создание исключений не является частью «счастливого пути».,Но давайте посмотрим правде в глаза - два года назад,Если бы приложение могло понять, что такое «счастливый путь»,Я был бы удивлен. так,Радуйтесь.

В тестрамке хорошо представлен каждый потребительский изтест:

Хорошо, давайте посмотрим на крайние случаи:

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

И, наконец, «другие» случаи:

Здесь нас интересует максимальное значение учетной записи. Если мы не уверены в использовании целых чисел без знака, мы хотели бы проверить наличие каких-либо регрессий, связанных с изменениями размера учетной записи.

в заключение

Просмотрите этот инструмент в контексте доступного изAIинструмента.,Я думаю, это хороший пример,Объясните, как ИИ может помочь людям решать тривиальные задачи,Не делая ничего неожиданного. Когда собираешь тестрамку,Вам необходимо настроить и метод демонтажа,и функции поддержки,Это означает, что вы не сможете напрямую поместить сгенерированный изтест в свой код для внесения изменений. Но с моей точки зрения,Рекомендую попробовать CodiumAI,Посмотрите, может ли это стать частью вашей Работы. так или иначе,Сначала дайте ему тестовый запуск.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose