Руководство вдохновлено 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 так, чтобы это соответствовало вашей цели.
- Создание встроенных тестов
- Обложка пограничных вариантов
- Общие сведения о новом коде
- Получение помощи по CI/CD
- Рекомендации для разработчиков
- Ресурсы для разработчиков
- Рекомендуемые функции
Создание встроенных тестов
- В 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 ускоряет процесс, но всё равно нужно применять инженерное суждение.
Ресурсы для разработчиков
- Написание тестов с помощью GitHub Copilot
- Как генерировать модульные тесты с GitHub Copilotпомощью : Советы и примеры
- GitHub Copilot ПОВСЮДУ в Visual Studio (видеоконтент с разделом о тестировании)
- Инженерия подсказок для GitHub Copilot Chat
- Изменение модели ИИ для GitHub Copilot Chat
Рекомендуемые функции
- Copilot Chat в GitHub
- Copilot Предложения по встроенным линиям
- Копилот Чат в IDE
- Copilot облачный агент
Метрики для просмотра
Оценивать испытания новых инструментов и следить за тем, чтобы ваши полные внедрения обеспечивали стабильные улучшения, отслеживать результаты и вносить корректировки при необходимости. Мы рекомендуем учитывать ключевые зоны качества, скорости и удовлетворения застройщиков, а также то, как эти зоны объединяются для достижения бизнес-результатов.
Вот несколько метрик для оценки влияния Copilot на данную конкретную цель.
- Тестовое покрытие: После внедрения покрытие линии и Copilot веток увеличивается по путям. По возможности просмотрите тестовые отчеты о охвате из конвейеров CI.
- Частота ошибок после развертывания: в рабочих средах должно быть сообщено меньше ошибок.
- Уверенность разработчиков: используйте опросы или ретроспективы для оценки того, как уверенные разработчики чувствуют доставку нового кода.
- Время записи тестов: уменьшение времени, затраченное на создание модульных тестов.