Skip to main content

Увеличение охвата тестов в вашей компании с помощью GitHub Copilot

Общие сведения о функциях, включении разработчиков и измерении влияния Copilot.

Кто может использовать эту функцию?

Бизнес GitHub Copilot or GitHub Copilot Enterprise

Руководство вдохновлено GitHub в сборнике схем успешного выполнения инженерных систем (ESSP), который рекомендует стратегии и метрики для улучшения инженерных систем.

Если вы начинаете развертывание Copilot, мы рекомендуем определить свои цели, планировать развертывание соответствующим образом и четко взаимодействовать с целями сотрудниками. См . раздел AUTOTITLE.

1. Определение препятствий для успеха

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

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

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

Это приводит к цепочке отрицательных результатов:

  • Более высокие показатели ошибок и проблемы, сообщаемые клиентом
  • Увеличение затрат на исправление ошибок после развертывания
  • Снижение доверия разработчика к стабильности кода
  • Медленные циклы выпуска из-за реактивной отладки и исправления

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

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

2. Оценка параметров

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

Вы будете запускать пробные версии новых средств и процессов с пилотными группами для сбора отзывов и оценки успеха. Для обучения ресурсов и метрик, используемых во время пробных версий, можно посмотреть на 3. Реализуйте изменения и метрики для просмотра разделов.

Зарегистрируйтесь для Copilot

Как помочь Copilot

GitHub Copilot может значительно ускорить и упростить процесс написания модульных тестов. Понимая окружающий код и контекст, Copilot может предложить тестовые функци��, соответствующие структуре и логике протестированного кода.

Возможности Copilotполезны в нескольких сценариях:

  • Как разработчики записывают новые функции, Copilot может автоматически предлагать соответствующие тестовые варианты.
  • При рефакторинге устаревшего кода Copilot может помочь создать шаблон тестирования, чтобы предотвратить регрессию.
  • Для непроверенных модулей разработчики могут запрашивать Copilot создавать значимые тестовые случаи, даже если покрытие тестов отсутствует или несогласовано.

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

Случаи использования

  • Встроенное создание тестов: разработчики могут попросить Copilot создавать тесты для определенной функции или модуля без переключения контекста.
  • Лучшее покрытие пограничных вариантов: запрашивая Copilot для пограничных сценариев (например, пустых входных данных, пустых списков или недопустимых состояний), разработчики могут быстро охватывать больше ветвей логики.
  • Ускорение подключения. Новые члены команды могут использовать Copilot для понимания поведения функции, глядя на созданные тестовые случаи.
  • Помощь с CI/CD: Copilot может предложить, как интегрировать тесты в конвейер сборки, гарантируя, что улучшения покрытия непосредственно поддерживают шлюзы качества.

Вопросы культуры

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

Ниже приведены примеры из раздела "Антишаблоны" в ESSP.

  • Teams может полагаться на ручное тестирование или недостаточное автоматическое тестирование. Это может быть вызвано ограничениями ресурсов для автоматизации или отсутствием опыта работы с современными средствами тестирования.
  • Teams может ждать слишком долгое время выпуска, развертывая большие пакеты кода одновременно, что затрудняет обнаружение ошибок и регрессий. Это может быть вызвано отсутствием зрелости конвейера CI/CD, строгими требованиями к соответствию или длительным циклам проверки между pr и развертыванием.

3. Реализация изменений

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

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

Создание встроенных тестов

  1. В VS Code выберите функцию, которую вы хотите протестировать и запрашивать Copilot: Generate a unit test for this code.
  2. Copilot создает встроенный тест или в отдельном тестовом файле в зависимости от языка и структуры.
  3. Просмотрите, уточните и примите предложение.

Обложка пограничных вариантов

  1. После написания теста попросите Copilot: What are some edge cases I should test for this function?

    Или: Write test cases for when the input is null or empty.

  2. Copilot предлагает дополнительные тестовые варианты для покрытия условий границы.

  3. Просмотрите тесты и включите их в набор тестов.

Общие сведения о новом коде

  1. Выберите устаревшую функцию и попросите Copilot: Explain what this function does and generate a test to validate it.
  2. Copilot объясняет назначение функции и предлагает соответствующие тестовые случаи.
  3. Просмотрите тестовые случаи, чтобы понять ожидаемое поведение и быстро создать контекст.

Получение помощи по CI/CD

  1. Просмотрите тестовые случаи и зафиксируйте их в базе кода.
  2. Спросите Copilot: Where should I place this test if I want it to run in CI?
  3. На основе структуры базы кода Copilot предложит место для размещения тестовых файлов и обновление конфигураций конвейера.

Рекомендации для разработчиков

Разработчики должны:

  • Используйте описательные комментарии или запросы при чате с Copilot. Например: Generate unit tests for a function that calculates discounts based on user type and purchase amount.
  • Используйте Copilot для изучения покрытия логики. Например: What branches or conditions does this function have that should be tested?
  • Изучите различные методы запроса и сравните результаты из разных моделей ИИ.

Разработчики не должны:

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

Ресурсы для разработчиков

Метрики для просмотра

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

Ниже приведены некоторые метрики, которые мы рекомендуем оценить влияние Copilotна эту конкретную цель.

  • Покрытие теста: отслеживайте увеличение охвата линий и ветвей после внедрения Copilot. По возможности просмотрите тестовые отчеты о охвате из конвейеров CI.
  • Частота ошибок после развертывания: в рабочих средах должно быть сообщено меньше ошибок.
  • Уверенность разработчиков: используйте опросы или ретроспективы для оценки того, как уверенные разработчики чувствуют доставку нового кода.
  • Время записи тестов: уменьшение времени, затраченное на создание модульных тестов.