Питер Шраммель из Diffblue: программисты тратят 35% времени на тесты, но ИИ готов взять эту рутину на себя

Eye on AI 638 29 мин 4 мин 08.09.2022
Главное

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

В новом выпуске подкаста Eye on AI ведущий Крейг Смит обсудил с Питером Шраммелем, сооснователем компании Diffblue, как искусственный интеллект и методы формальной верификации позволяют полностью автоматизировать этот процесс. Шраммель, имеющий академический бэкграунд в Оксфорде и опыт работы в Siemens, объяснил, почему написание тестов машиной — это не просто удобство, а необходимость для выживания современного бизнеса.

🧱 От ядерных станций к массовому коду: истоки технологии 1:32

Питер Шраммель начал свой путь в компьютерных науках в Вене, после чего работал в Siemens над системами RFID. Именно там он осознал, насколько сложно гарантировать корректность сложных систем. Это привело его к защите докторской диссертации по верификации систем во Франции, где он занимался формальными методами (mathematically proven implementation) для критически важных объектов: атомных электростанций и авиации .

Позже, в Оксфорде, работая с профессором Даниэлем Крёнингом, Шраммель сосредоточился на верификации программного обеспечения на языке C. В основе их подхода лежали логические ограничения (logical constraints) и поиск решений (solving). Эти техники, являющиеся одной из старейших областей ИИ, позволяют:

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

🧪 Анатомия юнит-теста и проблема «легаси» 4:14

Юнит-тест (модульный тест) — это проверка минимальной части кода, например, одного класса в Java . Традиционно считается, что тесты должны писаться одновременно с кодом или даже до него (методология TDD, Test-Driven Development). Однако, по наблюдениям Шраммеля, «чистый» TDD в индустрии встречается редко .

Основные проблемы современного ПО:

  1. Замедление разработки: В крупных проектах часто полагаются на сквозные (end-to-end) тесты. Они надежны, но выполняются слишком долго, что мешает быстрому выпуску обновлений .
  2. Наследие (Legacy code): Огромные массивы старого кода (например, на COBOL) вообще не имеют юнит-тестов .
  3. Страх изменений: ПО не статично; оно требует поддержки и обновления. Без тестов любое изменение в старом коде чревато появлением багов, которые первыми обнаружат клиенты, что бьет по репутации компании .

🧠 Обучение с подкреплением против языковых моделей 11:18

Главный продукт компании — Diffblue Cover — пишет тесты полностью автономно. В отличие от популярных сегодня инструментов на базе больших языковых моделей (LLM), таких как GitHub Copilot, Diffblue использует иной подход.

Шраммель объясняет, что разработка ПО по сути является математически определенной средой. Diffblue применяет алгоритмы обучения с подкреплением (Reinforcement Learning) для поиска в гигантском пространстве возможных вариантов тестов . Это работает по аналогии с системой AlphaGo:

В сравнении с ИИ-помощниками типа Copilot, которые точны примерно на 50% и требуют человеческого контроля, Diffblue нацелена на полную автономность .

Технические ограничения и безопасность

Многие клиенты Diffblue запрещают передачу своего кода в облако. Поэтому инструмент работает за файрволом заказчика. Это накладывает жесткие рамки:

🔮 Будущее: создание программ на естественном языке 21:02

На вопрос Крейга Смита о том, когда мы сможем диктовать компьютеру условия текстом и получать готовые сложные системы, Питер ответил осторожно. По его мнению, главная сложность — не в написании кода, а в устранении двусмысленности требований .

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

📈 Экономический эффект автоматизации 25:53

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

При этом Шраммель не верит в массовые увольнения программистов. По его словам:

  1. Спрос на ПО безграничен, и компаний всегда будет не хватать текущих мощностей .
  2. Растет популярность Low-code и No-code инструментов. Gartner прогнозирует, что к 2024 году 65% приложений будут создаваться без классического кодинга .
  3. Разработчики просто переместятся на более высокий уровень абстракции, занимаясь архитектурой и логикой, а не написанием рутинных проверок.

💬 Цитаты

«Тесты должны пройти своего рода «тест Тьюринга»: человек не должен понимать, написан ли этот код машиной или коллегой.»

Питер Шраммель 18:05

«Проблема не в коде, а в том, как научить компьютер выполнять задачу, которая приносит ценность, учитывая, что требования в реальном мире обычно расплывчаты.»

Питер Шраммель 21:41
👥 Спикеры
🔗 Упомянутые сайты и проекты
📖 Термины
Юнит-тест
Автоматизированный тест, который проверяет работоспособность минимально возможной части программного кода (функции или класса).
Обучение с подкреплением (RL)
Метод машинного обучения, при котором система обучается, совершая действия и получая вознаграждение за правильные шаги.
Формальные методы
Математические техники для доказательства того, что программа работает строго в соответствии со своими спецификациями.
Регрессионное тестирование
Проверка того, что новые изменения в коде не сломали уже существующую и работающую функциональность.
📊 Цифры
🗓 Хронология
  1. 2016 Основание компании Diffblue профессором Даниэлем Крёнингом и Питером Шраммелем в Оксфорде.
  2. 2021 Проведение опроса среди разработчиков о затратах времени на тестирование (упомянуто как 'два года назад').
  3. 2024 Прогноз Gartner о доминировании No-code разработки в создании приложений.
⚖️ Другая сторона
Искусственный интеллект Diffblue юнит-тестирование Reinforcement Learning автоматизация кода Питер Шраммель