Руководство вдохновлено GitHub в сборнике схем успешного выполнения инженерных систем (ESSP), который рекомендует стратегии и метрики для улучшения инженерных систем.
Если вы начинаете развертывание Copilot, мы рекомендуем определить свои цели, планировать развертывание соответствующим образом и четко взаимодействовать с целями сотрудниками. См . раздел AUTOTITLE.
1. Определение препятствий для успеха
Первым шагом, рекомендованным ESSP, является разработка четкого понимания препятствий, которые препятствуют улучшению в вашей компании. Понимая текущие базовые показатели, требуемое состояние будущего и барьеры, которые препятствуют прогрессу, можно гарантировать, что изменения предназначены и эффективны.
Многие команды программного обеспечения сталкиваются с постоянными проблемами в обслуживании высококачественного кода из-за низкой охвата модульных тестов. В быстрорастущих средах разработки написание тестов часто рассматривается как трудоемкое или не важное, особенно если команды находятся под давлением для быстрого предоставления функций.
В результате критически важные ошибки могут быть обнаружены в конце жизненного цикла разработки, часто в промежуточных или рабочих средах.
Это приводит к цепочке отрицательных результатов:
-
**Более высокие показатели** ошибок и проблемы, сообщаемые клиентом -
**Увеличение затрат** на исправление ошибок после развертывания -
**Снижение доверия** разработчика к стабильности кода -
**Медленные циклы** выпуска из-за реактивной отладки и исправления
В устаревших системах покрытие тестов может быть еще труднее устранить из-за сложных зависимостей или плохо документированного кода. Разработчики могут не ознакомиться с более старыми базами кода или с платформами тестирования в целом, что еще больше усложняет проблему.
Улучшение охвата тестов является признанной лучшей практикой, но требует времени и опыта, что многие команды борются выделить.
2. Оценка параметров
Следующим шагом является оценка и согласование решений по устранению барьеров, которые вы определили на шаге один. В этом руководстве мы сосредоточимся на влиянии GitHub Copilot на цель, которую вы определили. Помните, что успешные развертывания нового инструмента также требуют изменений в культуре и процессах.
Вы будете запускать пробные версии новых средств и процессов с пилотными группами для сбора отзывов и оценки успеха. Для обучения ресурсов и метрик, используемых во время пробных версий, можно посмотреть на 3. Реализуйте изменения и метрики для просмотра разделов.
<a href="https://github.com/github-copilot/purchase?ref_product=copilot&ref_type=trial&ref_style=button&ref_plan=enterprise" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline">
<span>Зарегистрируйтесь для Copilot</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 для пограничных сценариев (например, пустых входных данных, пустых списков или недопустимых состояний), разработчики могут быстро охватывать больше ветвей логики. -
**Ускорение подключения**. Новые члены команды могут использовать Copilot для понимания поведения функции, глядя на созданные тестовые случаи. -
**Помощь с CI/CD**: Copilot может предложить, как интегрировать тесты в конвейер сборки, гарантируя, что улучшения покрытия непосредственно поддерживают шлюзы качества.
Вопросы культуры
Наряду с развертыванием GitHub Copilot, вы также должны решить любые социальные или культурные факторы, которые могут препятствовать достижению ваших целей.
Ниже приведены примеры из раздела "Антишаблоны" в ESSP.
- Teams может полагаться на ручное тестирование или недостаточное автоматическое тестирование. Это может быть вызвано ограничениями ресурсов для автоматизации или отсутствием опыта работы с современными средствами тестирования.
- Teams может ждать слишком долгое время выпуска, развертывая большие пакеты кода одновременно, что затрудняет обнаружение ошибок и регрессий. Это может быть вызвано отсутствием зрелости конвейера CI/CD, строгими требованиями к соответствию или длительным циклам проверки между pr и развертыванием.
3. Реализация изменений
Когда вы определили правильный подход для преодоления барьеров, вы будете масштабировать определенные решения. Для успешного развертывания нового инструмента или процесса важно назначить владение каждой части развертывания, прозрачно взаимодействовать с вашими целями, предоставлять эффективную подготовку и измерять результаты.
В этом разделе приведены примеры сценариев, рекомендаций и ресурсов для разработчиков. Мы рекомендуем использовать этот раздел для планирования коммуникаций и учебных занятий , чтобы помочь сотрудникам использовать Copilot таким образом, чтобы соответствовать вашей цели.
-
[Создание встроенных тестов](#generate-tests-inline) -
[Обложка пограничных вариантов](#cover-edge-cases) -
[Общие сведения о новом коде](#understand-new-code) -
[Получение помощи по CI/CD](#get-assistance-with-cicd) -
[Рекомендации для разработчиков](#best-practices-for-developers) -
[Ресурсы для разработчиков](#resources-for-developers) -
[Рекомендуемые функции](#recommended-features)
Создание встроенных тестов
- В VS Code выберите функцию, которую вы хотите протестировать и запрашивать Copilot:
Generate a unit test for this code. - Copilot создает встроенный тест или в отдельном тестовом файле в зависимости от языка и структуры.
- Просмотрите, уточните и примите предложение.
Обложка пограничных вариантов
-
После написания теста попросите Copilot:
What are some edge cases I should test for this function?Или:
Write test cases for when the input is null or empty. -
Copilot предлагает дополнительные тестовые варианты для покрытия условий границы.
-
Просмотрите тесты и включите их в набор тестов.
Общие сведения о новом коде
- Выберите устаревшую функцию и попросите Copilot:
Explain what this function does and generate a test to validate it. - Copilot объясняет назначение функции и предлагает соответствующие тестовые случаи.
- Просмотрите тестовые случаи, чтобы понять ожидаемое поведение и быстро создать контекст.
Получение помощи по CI/CD
- Просмотрите тестовые случаи и зафиксируйте их в базе кода.
- Спросите Copilot:
Where should I place this test if I want it to run in CI? - На основе структуры базы кода 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 ускоряет процесс, но вам по-прежнему необходимо применить инженерное решение.
Ресурсы для разработчиков
-
[AUTOTITLE](/copilot/using-github-copilot/guides-on-using-github-copilot/writing-tests-with-github-copilot) -
[Создание модульных тестов с помощью GitHub Copilot: советы и примеры](https://github.blog/ai-and-ml/github-copilot/how-to-generate-unit-tests-with-github-copilot-tips-and-examples/) -
[GitHub Copilot везде в Visual Studio](https://learn.microsoft.com/en-us/shows/github-copilot-for-visual-studio/github-copilot-is-everywhere-in-visual-studio-miniseries) (видеоконтент с разделом по тестированию) -
[AUTOTITLE](/copilot/using-github-copilot/copilot-chat/prompt-engineering-for-copilot-chat) -
[AUTOTITLE](/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-chat)
Рекомендуемые функции
-
[Copilot Chat в GitHub](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github) -
[Copilot встроенные предложения](/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot) -
[Копилот Чат в интегрированной среде разработки](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-your-ide) -
[Агент кодирования Copilot](/copilot/concepts/about-copilot-coding-agent)
Метрики для просмотра
Чтобы оценить пробные версии новых инструментов и убедиться, что полные развертывания выполняют согласованные улучшения, следует отслеживать результаты и вносить корректировки при необходимости. Как правило, мы рекомендуем рассмотреть ключевые зоны качества, скорости и счастья разработчиков, а также как эти зоны объединяются для участия в бизнес-результатах.
Ниже приведены некоторые метрики, которые мы рекомендуем оценить влияние Copilotна эту конкретную цель.
-
**Покрытие теста: отслеживайте увеличение охвата** линий и ветвей после внедрения Copilot. По возможности просмотрите тестовые отчеты о охвате из конвейеров CI. -
**Частота ошибок после развертывания**: в рабочих средах должно быть сообщено меньше ошибок. -
**Уверенность** разработчиков: используйте опросы или ретроспективы для оценки того, как уверенные разработчики чувствуют доставку нового кода. -
**Время записи тестов**: уменьшение времени, затраченное на создание модульных тестов.