Руководство вдохновлено GitHub в сборнике схем успешного выполнения инженерных систем (ESSP), который рекомендует стратегии и метрики для улучшения инженерных систем.
Если вы начинаете развертывание Copilot, мы рекомендуем определить свои цели, планировать развертывание соответствующим образом и четко взаимодействовать с целями сотрудниками. См . раздел AUTOTITLE.
1. Определение препятствий для успеха
Первым шагом, рекомендованным ESSP, является разработка четкого понимания препятствий, которые препятствуют улучшению в вашей компании. Понимая текущие базовые показатели, требуемое состояние будущего и барьеры, которые препятствуют прогрессу, можно гарантировать, что изменения предназначены и эффективны.
Многие команды программного обеспечения сталкиваются с постоянными проблемами в обслуживании высококачественного кода из-за низкой охвата модульных тестов. В быстрорастущих средах разработки написание тестов часто рассматривается как трудоемкое или не важное, особенно если команды находятся под давлением для быстрого предоставления функций.
В результате критически важные ошибки могут быть обнаружены в конце жизненного цикла разработки, часто в промежуточных или рабочих средах.
Это приводит к цепочке отрицательных результатов:
- Более высокие показатели ошибок и проблемы, сообщаемые клиентом
- Увеличение затрат на исправление ошибок после развертывания
- Снижение доверия разработчика к стабильности кода
- Медленные циклы выпуска из-за реактивной отладки и исправления
В устаревших системах покрытие тестов может быть еще труднее устранить из-за сложных зависимостей или плохо документированного кода. Разработчики могут не ознакомиться с более старыми базами кода или с платформами тестирования в целом, что еще больше усложняет проблему.
Улучшение охвата тестов является признанной лучшей практикой, но требует времени и опыта, что многие команды борются выделить.
2. Оценка параметров
Следующим шагом является оценка и согласование решений по устранению барьеров, которые вы определили на шаге один. В этом руководстве мы сосредоточимся на влиянии GitHub Copilot на цель, которую вы определили. Помните, что успешные развертывания нового инструмента также требуют изменений в культуре и процессах.
Вы будете запускать пробные версии новых средств и процессов с пилотными группами для сбора отзывов и оценки успеха. Для обучения ресурсов и метрик, используемых во время пробных версий, можно посмотреть на 3. Реализуйте изменения и метрики для просмотра разделов.
Как помочь 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 таким образом, чтобы соответствовать вашей цели.
- Создание встроенных тестов
- Обложка пограничных вариантов
- Общие сведения о новом коде
- Получение помощи по 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 (видеоконтент с разделом по тестированию)
- Поиск запроса для Чата Copilot
- Изменение модели ИИ для Чата Copilot
Рекомендуемые функции
- Copilot Chat в GitHub
- Copilot завершение кода
- Copilot Chat в интегрированной среде разработки
- Агент кодирования Copilot
Метрики для просмотра
Чтобы оценить пробные версии новых инструментов и убедиться, что полные развертывания выполняют согласованные улучшения, следует отслеживать результаты и вносить корректировки при необходимости. Как правило, мы рекомендуем рассмотреть ключевые зоны качества, скорости и счастья разработчиков, а также как эти зоны объединяются для участия в бизнес-результатах.
Ниже приведены некоторые метрики, которые мы рекомендуем оценить влияние Copilotна эту конкретную цель.
- Покрытие теста: отслеживайте увеличение охвата линий и ветвей после внедрения Copilot. По возможности просмотрите тестовые отчеты о охвате из конвейеров CI.
- Частота ошибок после развертывания: в рабочих средах должно быть сообщено меньше ошибок.
- Уверенность разработчиков: используйте опросы или ретроспективы для оценки того, как уверенные разработчики чувствуют доставку нового кода.
- Время записи тестов: уменьшение времени, затраченное на создание модульных тестов.