Skip to main content

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

Понимайте функции, поддерживайте разработчиков и измеряйте влияние Copilot.

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

GitHub Copilot для бизнеса or GitHub Copilot Enterprise

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

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

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

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

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

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

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

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

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

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

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

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

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

          <a href="https://github.com/enterprise/contact?ref_product=copilot&ref_type=engagement&ref_style=button" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline">
          <span>Контактный отдел продаж</span><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-link-external" aria-label="link external icon" role="img"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a>

Как Copilot может помочь

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

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

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

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

  • Генерация встроенных тестов: разработчики могут запросить Copilot генерацию тестов для конкретной функции или модуля без переключения контекста.
  • Лучшее покрытие крайних случаев: Подсказывая Copilot для сценариев edge (таких как null входы, пустые списки или недопустимые состояния), разработчики могут быстро охватить больше ветвей логики.
  • Ускоренное онбординг: Новые члены команды могут 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.
  • Частота ошибок после развертывания: в рабочих средах должно быть сообщено меньше ошибок.
  • Уверенность разработчиков: используйте опросы или ретроспективы для оценки того, как уверенные разработчики чувствуют доставку нового кода.
  • Время записи тестов: уменьшение времени, затраченное на создание модульных тестов.