Использование Test Studio

В этом кратком руководстве вы создадите тесты для приложения на основе холста под названием Kudos (англ. Kudos — "благодарность", "поздравление", "похвала"). Вы также можете исследовать и изучать концепции тестирования и применять их при написании тестов для собственных приложений на основе холста. Пример приложения Kudos входит в набор приложений для работы с сотрудниками, доступных для скачивания в составе пакета Начальный набор для работы с сотрудниками.

Посмотрите это видео, чтобы узнать, как работать с Test Studio:

Запуск Test Studio

  1. Войдите в Power Apps.

  2. Создайте новое приложение или измените существующее приложение.

  3. Сохраните приложение в Power Apps, чтобы открыть Test Studio.

    Примечание

    Необходимо сохранить приложение, чтобы можно было создавать тесты для него.

  4. В области навигации слева выберите Дополнительные инструменты.

  5. Выберите команду Открыть тесты, чтобы открыть для этого приложения Test Studio. Окно Test Studio откроется в новой вкладке браузера.

    Запуск Test Studio.

Примечание

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

Создание набора тестов

По умолчанию в Test Studio создаются набор тестов и тестовый случай. Упорядочение тестовых случаев производится с помощью наборов тестов. Приложение может содержать один набор тестов или несколько. Вы можете использовать набор тестов и случай по умолчанию, чтобы начать писать тесты немедленно, или создать новый набор тестов.

  1. Выберите Новый набор.

  2. Измените имя и описание набора тестов, выбрав поля в главной сетке.

    Новый набор тестов.

Создание тестового случая

В зависимости от того, как нужно организовать или сгруппировать тесты, в наборе тестов можно создать несколько тестовых случаев. Каждый случай может тестировать определенную функцию или подмножество функций в приложении.

  1. Выберите набор тестов.
  2. Выберите Новый случай в верхнем меню, чтобы создать новый случай.
  3. Измените имя и описание тестового случая, выбрав поля в главной сетке.

Новый тестовый случай.

Запись тестового случая

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

Примечание

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

  1. В верхнем меню выберите пункт Запись. Опубликованное приложение откроется в режиме записи в новой вкладке браузера.

    Важно!

    Запись в существующем тестовом случае переопределяет уже имеющиеся шаги теста.

    Запись тестов.

  2. Взаимодействуйте с приложением. Ваши действия записываются на левой панели.

  3. После завершения взаимодействия выберите Готово. При необходимости можно выбрать Отмена, чтобы вернуться в Test Studio без записи ваших взаимодействий.

    Сохранение записи.

  4. Просмотрите шаги теста и выражения, которые были автоматически созданы для вас в Test Studio.

  5. При необходимости измените текст описания шага в главной сетке. Можно также обновить действия шага теста, выбрав формулу в главной сетке.

    Изменение тестового случая.

Добавление шагов теста и проверочных утверждений

Каждый тестовый случай должен иметь ожидаемый результат. В примере Kudos одним из ожидаемых результатов отправки благодарности является создание новой записи в базе данных Microsoft Dataverse (Dataverse). Теперь следует обновить тестовый случай и добавить дополнительные шаги теста для проверки успешности создания записи.

Выполните следующие действия, чтобы проверить успешность создания записей:

  • Инициализируйте переменную для счетчика записей благодарностей в базе данных в начале тестового случая.
  • Инициализируйте переменную для счетчика записей благодарностей в базе данных в конце тестового случая.
  • Напишите выражение утверждения для проверки того, что значение увеличивается на единицу. Если значение не увеличивается на единицу, проверочное утверждение не выполняется и тестовый случай завершается ошибкой.

Добавление шагов теста и проверочных утверждений в приложение Kudos:

  1. Выберите шаг 1 или шаг, перед которым нужно вставить новый шаг.

  2. Выберите команду Вставить шаг выше из верхнего меню или соответствующий параметр в активной строке. При этом создается пустой шаг.

    Вставка шага.

    Примечание

    Если выбрать команду Вставить шаг выше, то над текущим шагом будет добавлен новый пустой шаг. Можно также использовать действия Assert, SetProperty, Select или Trace. В результате будет добавлен шаг с соответствующей формулой действия, которую можно изменить.

  3. Обновите описание шага. Например, "Подсчет благодарностей в базе данных".

  4. Введите выражение или формулу во входных данных действия, чтобы подсчитать записи в базе данных перед выполнением теста.

    Можно использовать любое поддерживаемое выражение. Можно также запрашивать любые источники данных, коллекции, переменные или потоки выполнения, содержащиеся в приложении, а также создавать новые глобальные переменные или коллекции для использования в тестах.

    Set(kudosBeforeTest, CountRows(Filter(Kudos, Receiver.Email = "someone@example.com")))```
    
    
  5. Select Step 2 or the step above which you want to insert a new step.

  6. Select Insert a step above from the top menu or by selecting the option from the active row. This action creates an empty step.

  7. Enter an expression or formula in the action input to Trace and write the kudosBeforeTest value to test the results record.

    Trace("kudosBeforeTest : " & kudosBeforeTest);
    

    Благодарностей до теста.

  8. Перейдите к концу тестового случая и вставьте новый шаг, чтобы подсчитать записи в базе данных после теста.

    Set(kudosAfterTest, CountRows(Filter(Kudos, Receiver.Email = "someone@example.com")))```
    
    
  9. Add a final step to validate that the record count in the database has increased by a count of 1, and enter the following assertion action to verify:

    Assert(kudosAfterTest = kudosBeforeTest + 1, "Kudos count incorrect. Expected : " & kudosBeforeTest + 1  & " Actual :" & kudosAfterTest)
    

    ![Проверочное утверждение "Благодарностей после теста".](./media/working-with-test-studio/kudos-after-test-assert.png "Проверочное утверждение "Благодарностей после теста"")

  10. Сохраните тестовый случай в правом верхнем меню в Test Studio.

Воспроизведение теста

Вы можете воспроизвести записанный тест для проверки функциональности приложения. Воспроизвести можно все тесты в одном наборе тестов или в одном тестовом случае.

Перед воспроизведением записи с последними изменениями необходимо опубликовать приложение:

Воспроизведение без публикации.

Важно!

Если пропустить публикацию, воспроизведение записи не будет содержать последние изменения теста. В приложении будет воспроизводиться тестовый случай или набор, опубликованный последним.

  1. Выберите Опубликовать, чтобы автоматически сохранить и опубликовать свой тест.

    Публикация изменений.

  2. Выберите набор тестов или один тестовый случай.

  3. Нажмите кнопку Воспроизвести. Опубликованное приложение откроется в режиме воспроизведения, и вы увидите, что шаги теста воспроизводятся автоматически. Зеленый флажок показывает, что шаг теста успешно выполнен. В случае сбоя шага отображается красный индикатор сбоя вместе с сообщением об ошибке.

    Режим воспроизведения.

  4. Выберите Готово, чтобы вернуться в Test Studio.

Неудачное утверждение

В этом разделе нам предстоит изменить проверочное утверждение, чтобы столкнуться со сбоем теста:

  1. Измените шаг утверждения, выбрав поле выражения.

  2. Замените + 1 на + 2 в действии теста. Это обновление означает, что тест предполагает создание двух записей, что неверно. Если тест проходит успешно, в базе данных должна быть создана только одна запись.

    Assert(kudosAfterTest = kudosBeforeTest + 2, "Kudos count incorrect. Expected : " & kudosBeforeTest + 2  & " Actual :" & kudosAfterTest)
    

    Обновление счетчика в утверждении.

  3. Выберите Опубликовать.

  4. Нажмите кнопку Воспроизвести.

  5. Просмотрите воспроизведение теста. На завершающем этапе произойдет ошибка и появился сообщение об ошибке, указанное на шаге утверждения.

    Ошибка воспроизведения.

Воспроизведение тестов в браузере

Вы можете скопировать ссылку для отдельного воспроизведения теста в браузере вне среды Test Studio. Это помогает интегрировать тесты в конвейер непрерывной сборки и выпуска, например Azure DevOps.

Ссылка для воспроизведения выбранного теста сохраняется. Для набора тестов или тестового случая она всегда будет неизменной. Вы можете обновлять тесты без необходимости изменять процессы сборки и выпуска.

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

  1. Выберите набор тестов или тестовый случай на правой панели.

  2. Выберите команду Копировать ссылку для воспроизведения.

    Копировать ссылку для воспроизведения.

  3. При наличии неопубликованных изменений будет предложено опубликовать тесты.

    Публикация до копирования ссылки.

  4. Вы можете пропустить процесс публикации и скопировать ссылку для воспроизведения. При пропуске не воспроизводятся новые тестовые изменения.

    Скопированная ссылка для воспроизведения.

  5. Откройте браузер и вставьте URL-адрес в адресную строку для воспроизведения теста.

  6. Просмотрите воспроизведение теста.

Настройка тестов

Свойство OnTestCaseStart в Test Suite можно использовать для настройки вашего теста. Выражение, введенное для этого свойства, срабатывает для каждого тестового набора в наборе до начала выполнения. OnTestCaseStart помогает избежать написания одних и тех же шагов теста в начале каждого случая. Вы можете настроить это свойство для запуска настроенных задач, общих для всех случаев в наборе, таких как:

  • Всегда начинайте выполнение теста с первого экрана.
  • Инициализация общих коллекций или переменных.
  • Извлечение данных теста из источника данных для текущего выполнения теста

Запись TestCaseInfo содержит данные для текущего теста, который выполняется. Он содержит следующие свойства:

  • TestCaseName — имя тестового случая.
  • TestCaseDescription — описание тестового случая.
  • TestCaseId — идентификатор тестового случая.
  • TestSuiteName — имя набора тестов, к которому относится случай.
  • TestSuiteDescription — описание тестового пакета.
  • TestSuiteId — идентификатор набора тестов, к которому относится случай.

В приведенном ниже примере вы настроите свойство OnTestCaseStart, поэтому каждый тестовый случай начинается с первого экрана в вашем приложении. Вы также получите данные теста из источника данных, на который можно сослаться в шагах для тестового случая.

  1. Выберите Тест в левой области или Вид в заголовке набора.

    Просмотр или проверка заданного значения свойства.

  2. Выберите действие OnTestCaseStart.

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

    //Start every cases on the first screen in the Kudos app
    Navigate('Dashboard Screen');
    
    //Initialize my test data for the current case. 
    Set(currentTestData, LookUp(KudosTestData, TestCase = TestCaseInfo.TestCaseName));
    
    //Set kudosBeforeTest to 0
    Set(kudosBeforeTest, 0)
    

    Пример OnTestCaseStart.

Обработка результатов теста

Панель тестов, видимая при воспроизведении тестов в Test Studio, не отображается при использовании отдельного браузера. Из-за такого поведения невозможно определить конкретный шаг теста, который сейчас выполняется, или понять, пройден ли тест.

Чтобы определить результаты тестирования за пределами среды Test Studio, в тестовом объекте доступны два свойства: OnTestCaseComplete и OnTestSuiteComplete, которые можно использовать для обработки результатов тестов. При интеграции тестов в конвейер непрерывной сборки и выпуска, например Azure DevOps, эти свойства можно использовать, чтобы определить, следует ли продолжить развертывание приложения.

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

  • SQL Server.
  • Dataverse.
  • Power Automate.
  • Сообщение электронной почты с помощью Office 365.

Эти параметры применяются ко всем наборам тестов и тестовым случаям в приложении. После завершения каждого набора тестов или тестового случая результаты теста и все сообщения трассировки, содержащиеся в тестах, будут доступны в записях TestCaseResult и TestSuiteResult.

Запись TestCaseResult содержит следующие свойства:

  • TestCaseName — имя тестового случая.
  • TestCaseDescription — описание тестового случая.
  • TestCaseId — идентификатор тестового случая.
  • TestSuiteName — имя набора тестов, к которому относится случай.
  • TestSuiteDescription — описание тестового пакета.
  • TestSuiteId — идентификатор набора тестов, к которому относится случай.
  • StartTime — время запуска теста.
  • EndTime — время завершения теста.
  • Traces — результат любых проверочных утверждений и сообщений из функции Trace.
  • Success — указывает, успешно ли завершился тестовый случай.
  • TestFailureMessage — сообщение об ошибке при сбое случая.

Запись TestSuiteResult содержит следующие свойства:

  • TestSuiteName — имя набора тестов.
  • TestSuiteDescription — описание тестового пакета.
  • TestSuiteId — идентификатор набора тестов.
  • StartTime — время запуска набора тестов.
  • EndTime — время завершения набора тестов.
  • TestsPassed — количество успешно выполненных тестовых случаев в наборе.
  • TestsFailed — количество неудачных тестовых случаев в наборе.

В этом кратком руководстве вы создадите две пользовательские таблицы в базе данных Dataverse для хранения результатов теста, настроив свойства OnTestCaseComplete и OnTestSuiteComplete.

  1. Выберите Тест в левой области или Вид в заголовке набора.

    Просмотр или проверка заданного значения свойства.

  2. Выберите действие OnTestCaseComplete.

  3. Введите выражение для обработки результатов теста. В следующем примере все результаты тестовых случаев сохраняются в пользовательской таблицы AppTestResults в Dataverse. Результаты теста при необходимости можно сохранить в SQL, SharePoint или любом другом источнике данных. При необходимости может потребоваться задать или увеличить поле Trace в источнике данных.

    Примечание

    Следующие образцы подключаются к Microsoft Dataverse. Вы можете создать простое приложение или построить приложение с нуля, используя Dataverse. Дополнительные сведения об изменении записей источника данных, используемых в следующих примерах, см. в справочнике по функции Patch.

    //Save to Dataverse
    Patch(AppTestResults
    , Defaults(AppTestResults)
    , {
             TestPass: TestCaseResult.TestCaseName & ":" & Text(Now())
             ,TestSuiteId: TestCaseResult.TestSuiteId
             ,TestSuiteName: TestCaseResult.TestSuiteName
             ,TestCaseId: TestCaseResult.TestCaseId
             ,TestCaseName: TestCaseResult.TestCaseName
             ,StartTime: TestCaseResult.StartTime
             ,EndTime: TestCaseResult.EndTime
             ,TestSuccess: TestCaseResult.Success
             ,TestTraces: JSON(TestCaseResult.Traces)
             ,TestFailureMessage: TestCaseResult.TestFailureMessage
    }
    );
    

    Пример OnTestCaseComplete.

  4. Выберите действие OnTestSuiteComplete.

  5. Введите выражение для обработки результатов теста. В следующем примере вы сохраните результаты всех тестовых случаев в пользовательской таблице AppTestSuiteResults в Dataverse.

    //Save to Dataverse
    Patch(AppTestSuiteResults
        , Defaults(AppTestSuiteResults)
        , {
             TestSuiteId: TestSuiteResult.TestSuiteId
             ,TestSuiteName: TestSuiteResult.TestSuiteName
             ,StartTime: TestSuiteResult.StartTime
             ,EndTime: TestSuiteResult.EndTime
             ,TestPassCount: TestSuiteResult.TestsPassed
             ,TestFailCount: TestSuiteResult.TestsFailed
        }
    );
    

    Пример OnTestSuiteComplete.

Другими примерами выражений, которые можно использовать в этих свойствах, являются следующие.

  • Отправьте результаты в поток в Power Automate.

    MyTestResultsFlow.Run(JSON(TestCaseResult))
    
  • Отправьте результаты по почте.

    Office365.SendMailV2("someone@example.com", "Test case results", JSON(TestCaseResult, JSONFormat.IndentFour))
    
  • Получение уведомления приложения о результатах теста.

    Например, можно настроить уведомление после завершения теста при его воспроизведении в браузере за пределами Test Studio.

    Notify(TestCaseResult.TestCaseName & " : "
            & If( TestCaseResult.Success
                , " Passed"
                , TestCaseResult.TestFailureMessage)
            ,If(  TestCaseResult.Success
                , NotificationType.Success
                , NotificationType.Error)
    )
    

Тестовые функции

В дополнение к функциям, доступным в Power Apps, ниже приведены общие функции, которые обычно используются при создании тестов:

Дальнейшие шаги

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).