Разработка тестов с помощью ИИ с помощью GitHub Copilot (не рекомендуется)

Примечание.

Модуль тестирования устарел и будет удален в будущем выпуске. Используйте примеры Power Platform Playwright для возможностей автоматизации тестирования в службах Power Platform и Dynamics 365.

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

В этом руководстве объясняется, как использовать GitHub Copilot с решениями для контроля исходного кода Power Platform для эффективного создания планов тестирования Test Engine.

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

Настройка среды создания тестов

Чтобы максимально повысить эффективность разработки тестов с помощью ИИ, объедините эти инструменты в структурированный рабочий процесс:

  1. Получите исходные файлы
  2. Инициализируйте git-репозиторий для управления версиями (если это еще не сделано)
  3. Создайте специальную тестовую папку в репозитории вашего решения.
  4. Откройте папку решения в Visual Studio Code

Использование GitHub Copilot для создания тестов

GitHub Copilot поможет вам создать различные тестовые компоненты на основе решения, управляемого источником. Вот как эффективно использовать его возможности:

Использование образца документации в качестве контекста

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

  • Добавление файла samples.md в ваше рабочее пространство
  • Ссылки на конкретные примеры в ваших подсказках
  • Предоставление ссылок на примеры репозиториев GitHub

Например, доступны следующие возможности:

  • Откройте код вашего приложения и файл samples.md в VS Code.
  • Попросить Copilot создать тесты "аналогичные примеру ButtonClicker" или "используя шаблоны из примера Dataverse"
  • Ссылайтесь на конкретные возможности из образцов, которые соответствуют вашим потребностям в тестировании.

Этот подход помогает Copilot понимать шаблоны подсистемы тестирования Power Platform и создавать более точные тесты.

Работа с GitHub Copilot в режиме агента

Chat GitHub Copilot для Visual Studio Code предлагает режим Agent Mode, который помогает генерировать тесты на основе файлов вашего решения. Этот режим позволяет Copilot получить доступ к контексту проекта и более глубоко понять его.

Чтобы использовать режим агента для генерации тестов:

  1. В VS Code откройте GitHub Copilot Chat (CTRL+SHIFT+I)
  2. Выберите Agent из селектора режима Copilot.
  3. Создайте подробное описание теста, который вы хотите создать.

Примеры подсказок для генерации теста

Попробуйте использовать такие подсказки для генерации тестов:

Цель:
Создайте полный набор тестов для приложения холста с помощью подсистемы тестирования Power Apps, моделироваемой после примера ButtonClicker.

Подсказка:
Создайте тест для ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml, используя пример в качестве ссылки. https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker Создайте ожидаемые случаи, пограничные случаи и исключительные случаи. Тест должен создать тестовый файл YAML и шаги тестирования Power Fx, а также config.json и RunTest.ps1, исходя из образца, чтобы можно было запустить тест.

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

Подсказка:
Создайте комплексный план тестирования для моего приложения на основе модели, расположенного по адресу ./SolutionPackage/src/Other/Solution.xml. Тест должен проверить загрузку формы, создание записи и выполнение бизнес-правил. Создайте тестовый файл YAML, этапы Power Fx и скрипт PowerShell для выполнения теста.

Цель:
Создайте план тестирования сущностей Dataverse, чтобы проверить операции CRUD с помощью действий Power Fx.

Подсказка:
Создайте комплексный план тестирования для моих Dataverse объектов. Тест должен выполнять действия создания, обновления и удаления Power Fx . Создайте тестовый файл YAML, этапы Power Fx и скрипт PowerShell для выполнения теста.

Понимание сгенерированных тестовых компонентов

Когда GitHub Copilot создает тест, обычно он создает следующие компоненты:

  • План тестирования YAML: определяет структуру теста, URL-адрес приложения и этапы теста.
  • Шаги тестирования Power Fx: Содержит логику теста, использующую выражения Power Fx
  • config.json: Конфигурация параметров выполнения теста
  • RunTest.ps1: скрипт PowerShell для выполнения теста

Пример: Сгенерированная структура теста

MyAppTests/
├── MyAppTest.fx.yaml     # Power Fx test steps
├── MyAppTest.yml         # Test plan definition
├── config.json           # Test configuration
└── RunTest.ps1           # Test execution script

Лучшие практики разработки тестов с использованием ИИ

Ознакомьтесь со следующими разделами, чтобы извлекать максимум пользы из использования GitHub Copilot для создания тестов для Test Engine.

Обеспечьте четкий контекст в ваших подсказках

Конкретизируйте, что именно вы хотите протестировать, и включите ссылки на:

  • Точные файлы для тестирования
  • Примеры тестов для использования в качестве шаблонов
  • Конкретные тестовые сценарии, которые вы хотите охватить
  • Любые требования к аутентификации или среде

Использование образцов Test Engine в качестве контекста

Документация samples.md каталогизирует все доступные примеры из репозитория Test Engine, что может быть прекрасным справочным материалом при создании запросов для GitHub Copilot. Например, при тестировании приложения на холсте с кнопками вы можете обратиться к примеру Button Clicker:

Подсказка:
Создайте тест для моего приложения Canvas в ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml, используя пример ButtonClicker из https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker. Тест должен:
1. Убедитесь, что кнопка счетчика увеличивает значение на экране.
2. Проверка граничных условий (например, максимального значения)
3. Включите хуки жизненного цикла OnTestCaseStart и OnTestCaseComplete.
4. Создайте файл config.json с соответствующими переменными среды.

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

Используйте решения с контролируемым исходным кодом в качестве контекста

Copilot лучше всего подходит для анализа структуры решения. Используйте систему управления исходным кодом для решений Power Platform, чтобы предоставить этот контекст. Этот контекст позволяет Copilot:

  • Поймите структуру вашего приложения
  • Определить имена и свойства элементов управления
  • Генерируйте более точные этапы тестирования
  • Укажите правильные пути к файлам

Просматривайте и совершенствуйте созданные тесты

Хотя тесты, созданные с помощью ИИ, являются отличной отправной точкой, всегда:

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

Сочетание с ручным тестированием

Для сложных сценариев тестирования используйте GitHub Copilot:

  • Сгенерируйте тестовый фреймворк и структуру
  • Создание стандартных шаблонов проверки
  • Предложить крайние случаи для рассмотрения

Затем дополните свой опыт в предметной области следующими областями:

  • Правила проверки, специфичные для бизнеса
  • Экологические соображения
  • Специализированные тестовые данные

Распространенные шаблоны генерации тестов

В этом разделе содержатся некоторые общие шаблоны генерации тестов:

Тестирование приложений Canvas

Для приложений на основе холста используйте подсказки, которые ссылаются на файл App.fx.yaml в вашем решении с контролируемым исходным кодом:

Подсказка:
Создайте тест для моего приложения Canvas в ./SolutionPackage/src/CanvasApps/src/MyExpenseApp/Src/App.fx.yaml, который проверит процесс отправки расходов. В ходе теста необходимо заполнить поля расходов, отправить форму и убедиться в появлении подтверждающего сообщения.

Тестирование приложений на основе моделей

Для приложений на основе моделей сосредоточьтесь на навигации по сущностям, взаимодействии с формами и бизнес-правилах:

Подсказка:
Создайте тест для моего приложения на основе модели, которое тестирует форму сущности «Учетная запись». Тест должен создать новую запись учетной записи, проверить обязательные поля и убедиться, что бизнес-правила расчета кредитного лимита работают правильно.

Тестирование Dataverse расширений

Для Dataverse тестов уделите особое внимание операциям с данными и проверке бизнес-логики:

Подсказка:
Сгенерируй тест Dataverse, проверяющий пользовательские подключаемые модули в моем решении. Тест должен создать тестовые записи, запустить выполнение плагина и проверить, что ожидаемые преобразования данных произошли.

Тестовые подсказки для конкретных образцов

Чтобы получить наиболее точную генерацию тестов, ссылайтесь на конкретные примеры из каталога примеров Test Engine , которые соответствуют вашим потребностям в тестировании. Ниже приведены специальные подсказки для распространенных сценариев тестирования:

Примеры подсказок ButtonClicker

Пример ButtonClicker демонстрирует базовое тестирование функциональности счетчика. Используйте эти подсказки:

Подсказка:
Создайте тест для моего приложения-счетчика со структурой, аналогичной примеру ButtonClicker. В моем приложении есть кнопки IncrementBtn и ResetBtn с подписью CounterLabel, которая отображает текущее значение. Создайте тест, который проверит, что обе кнопки работают правильно и что максимальное количество нажатий равно 10.

Подсказка:
Создайте тест для моего приложения взаимодействия с кнопками, используя пример ButtonClicker в качестве образца. В моем приложении есть кнопка «SubmitButton», которая должна быть включена только после заполнения полей «NameInput» и «EmailInput». Создайте план тестирования, включающий шаги с использованием Power Fx для проверки этого поведения.

Примеры BasicGallery и NestedGallery показывают, как тестировать взаимодействие с галереей:

Подсказка:
Создайте тест для моего приложения-галереи, в котором есть галерея «Товары» с товарами, содержащими элементы управления «TitleLabel», «PriceLabel» и «SelectButton». Используйте пример структуры BasicGallery, чтобы убедиться, что я могу выбирать элементы и что в «DetailPanel» отображаются правильные сведения.

Подсказки для операций с данными

В Dataverse примере демонстрируется тестирование операций с данными:

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

Подсказки для тестирования ИИ

Для тестирования функциональности на базе ИИ обратитесь к примеру AI Prompt:

Подсказка:
Сгенерировать тест для моего приложения анализа настроений на основе образца AI Prompt. В моем приложении есть текстовое поле "FeedbackInput" и используется AI Builder для классификации его как положительного, отрицательного или нейтрального. Создайте тест, который проверяет, дают ли различные входные данные ожидаемые результаты в пределах приемлемых пороговых значений.

Продвинутые техники

В этом разделе приведены примеры расширенных возможностей подсказок.

Создание тестовых комплексов для различных сред

Вы можете предложить Copilot создать тесты, работающие в нескольких средах:

Подсказка:
Создайте набор тестов для моего приложения, который может работать в средах DEV, TEST и PROD с соответствующими переменными конфигурации для каждой среды.

Генерация сценариев имитации данных

Для изолированного тестирования с имитацией разъема:

Подсказка:
Создайте тест с имитируемыми ответами для моего приложения, использующего соединитель Office 365 Outlook. Тест должен имитировать получение электронных писем и проверять логику обработки приложения.

Тестирование возможностей ИИ и обработка недетерминированных результатов

При работе с приложениями на базе ИИ тестирование создает особые проблемы, поскольку выходные данные ИИ могут немного различаться между запусками даже при идентичных входных данных. Такое недетерминированное поведение требует специальных подходов к тестированию.

Понимание недетерминированного тестирования

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

  • Выходные данные моделей ИИ: ответы моделей ИИ, таких как GPT или пользовательские компоненты AI Builder
  • Оценки достоверности: числовые оценки, которые могут колебаться в пределах приемлемых диапазонов.
  • Сгенерированный контент: текст или рекомендации, созданные системами искусственного интеллекта.

Использование Preview.AIExecutePrompt для детерминированного тестирования возможностей ИИ

Тестовый движок предоставляет Preview.AIExecutePrompt , который обеспечивает детерминированную проверку ответов ИИ. Такой подход позволяет:

  • Выполнять подсказки ИИ в тестовых сценариях
  • Анализ и проверка структурированных ответов
  • Убедитесь, что критические результаты соответствуют ожиданиям, несмотря на возможные отклонения

Пример: оценка рейтинга с помощью AI Builder

В следующем примере показано использование функции Preview.AIExecutePrompt для тестирования рейтинговой системы на базе искусственного интеллекта:

EvaluateTestQuestionPrompt(Prompt: TestQuestion): TestResult =
  With({
    Response: ParseJSON(
      Preview.AIExecutePrompt("PromptEvaluator",
      {
        Context: "You are a helpful agent asking about external customer service questions.",
        Question: Prompt.Question
      }).Text)
  },If(
    IsError(AssertNotError(Prompt.ExpectedRating=Response.Rating, Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating)),
    {PassFail: 1, Summary: Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating}, {PassFail: 0, Summary: "Pass " & Prompt.Question}
  ))

В этом примере:

  • Тест выполняет запрос ИИ в отношении модели «PromptEvaluator».
  • Он передает контекст и вопрос для оценки.
  • Проверяет, соответствует ли возвращаемый рейтинг ожидаемому значению.
  • Предоставляет четкую обратную связь об успешности или неудаче теста.

Полную реализацию можно изучить в примере AI Prompt из репозитория PowerApps-TestEngine .

Внедрение тестирования с использованием искусственного интеллекта

При использовании GitHub Copilot для создания тестов для приложений с использованием искусственного интеллекта:

Подсказка:
Создайте тест для приложения, основанного на искусственном интеллекте, использующего обработку форм с помощью AI Builder. Включите этапы тестирования, которые проверяют результаты ИИ с соответствующей устойчивостью к недетерминированным результатам.

Устранение неполадок и доработка

Если GitHub Copilot создает тесты, которые не соответствуют вашим потребностям:

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

Изучите возможности Test Engine
Просмотрите каталог образцов Test Engine
Узнайте о Power Fx тестовых функциях
Понять формат теста YAML
Изучите варианты аутентификации
Обучение: создание приложений с помощью режима агента GitHub Copilot