Тестирование и качество кода с Copilot

Разработка программного обеспечения с GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Что вы изучили

 

  • Автодополнение кода — подсказки по ходу набора
  • Copilot Chat — вопросы, объяснения и рефакторинг
  • Агентный режим — автономное выполнение многошаговых задач
  • Пользовательские инструменты — расширение возможностей Copilot
Разработка программного обеспечения с GitHub Copilot

Теперь применим это на практике

nanobanana: half: Путь разработчика с тремя ключевыми этапами — тестирование, безопасность и производительность — ведущий от редактора кода к готовому развёрнутому приложению, плоская векторная иллюстрация

 

  • Тестирование — находите ошибки до выхода в продакшн
  • Безопасность — выявляйте уязвимости заранее
  • Производительность — пишите масштабируемый код
Разработка программного обеспечения с GitHub Copilot

Copilot упрощает тестирование

nanobanana: half: ИИ-ассистент генерирует тестовый код на экране разработчика — рядом с результатами тестов отображаются зелёные галочки, плоская векторная иллюстрация

 

  • ✔ Генерация полных наборов тестов
  • 💡 Выявление граничных случаев
  • 🤖 Устранение шаблонного кода
Разработка программного обеспечения с GitHub Copilot

Граничные случаи, которые легко упустить

 

def calculate_discount(price, discount_pct):
    discount = price * (discount_pct / 100)
    return price - discount

calculate_discount(50, 20)  # → 40.0 ✓

 

А что насчёт...

  • Отрицательного price
  • discount_pct > 100
  • Заказа с нулевым количеством товаров
Разработка программного обеспечения с GitHub Copilot

[screencast]

Разработка программного обеспечения с GitHub Copilot

[screencast]

Разработка программного обеспечения с GitHub Copilot

Когда нужен более глубокий подход

nanobanana: half: Сосредоточенный разработчик за ноутбуком пишет сообщение в интерфейсе чата с ИИ

Простые случаи

  • /tests

 

Особые случаи

Write pytest unit tests for calculate_discount covering: negative price, discount > 100%, and empty item list. Use parametrize for edge cases.

Разработка программного обеспечения с GitHub Copilot

За пределами модульных тестов

nanobanana: half: Пирамида тестирования из трёх горизонтальных уровней: широкое основание — модульные тесты, средний уровень — интеграционные тесты, узкая вершина — сквозные тесты

 

  • Модульные/tests или простой запрос
  • Интеграционные — опишите взаимодействие компонентов
  • Сквозные — используйте полный контекст кодовой базы
Разработка программного обеспечения с GitHub Copilot

Интеграционные тесты

 

  • Прикрепите каждый нужный файл через #file:
  • Опишите взаимодействие и стратегию мокирования
  • Используйте /fixTestFailure при падении теста

 

Write integration tests for the checkout flow. Use #file:cart.py and #file:payment.py. Mock the payment gateway and assert that order status updates correctly.

Разработка программного обеспечения с GitHub Copilot

Сквозные тесты

 

  • @workspace автоматически находит нужный код
  • Хорошо работает с Playwright и Cypress
  • Используйте #terminalLastCommand для отладки сбоев

 

@workspace Write Playwright end-to-end tests for the user registration flow. Assert that the confirmation email is triggered.

Разработка программного обеспечения с GitHub Copilot

[screencast]

Разработка программного обеспечения с GitHub Copilot

Давайте потренируемся!

Разработка программного обеспечения с GitHub Copilot

Preparing Video For Download...