Обучение
Модуль
Use Monitor to troubleshoot Power Apps - Training
Learn how the Monitor tool from Power Apps Studio can help you proactively identify, troubleshoot, and resolve issues within your app.
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Монитор пользовательского режима позволяет тестам получать больше контекста о выполнении тестируемых процессов, чтобы получить больше контекста для исследования сбоев тестов или для обеспечения более эффективной проверки из существующих тестов. Текущая реализация монитора пользовательского режима предоставляет базовую реализацию с дополнительными настройками и конфигурацией, которые будут доступны в последующих выпусках.
Монитор пользовательского режима (UMM) использует низкоуровневые api Windows для уведомления обо всех событиях "отладчика", которые происходят из заданного процесса: запуск и остановка потока, загрузка модуля, сбои и обработанные исключения. После получения события отладчика код UMM может выполнить одно из нескольких действий, включая ведение журнала комментариев, ведение журнала ошибок (для того, чтобы не выполнить тест) или даже выполнить минидамп тестируемого процесса.
Чтобы включить UMM для конкретного тестового случая, необходимо предоставить два элемента конфигурации:
При использовании кода UMM следует учитывать следующие моменты.
Монитор пользовательского режима имеет набор действий, которые он может выполнять при возникновении заданного события отладчика в отслеживаемом процессе. В текущей реализации данное событие вызывает только действие по умолчанию; в настоящее время не поддерживается конфигурация.
Действие | Описание |
---|---|
LogComment | Добавляет комментарий в журнал с контекстной информацией из события. |
LogError | Записывает ошибку в журнал, что приведет к сбою текущего теста. |
Минидампа | Записывает минидамп и сохраняет его в журнале. |
Игнорировать | Не выполняет никаких действий. |
Монитор пользовательского режима отображает "события", которые могут применять одно из перечисленных выше действий. В следующей таблице показан текущий список сообщаемых событий, а также действие по умолчанию, которое будет выполняться при получении события.
Событие | Действие по умолчанию (второе действие по умолчанию) |
---|---|
Создание потока | Игнорировать |
Выход из потока | Игнорировать |
Процесс создания | Игнорировать |
Процесс выхода | LogError |
Загрузка модуля | LogComment |
Выгрузка модуля | Игнорировать |
Системная ошибка | Игнорировать |
Начальная точка останова | LogError |
Начальная загрузка модуля | Игнорировать |
Выходные данные отладчика | LogComment |
Нарушение прав доступа | LogError (LogError) |
Сбой проверочного утверждения | LogError (LogError) |
Зависание приложения | LogError (LogError) |
Исключение инструкции break | LogError |
Продолжение исключения инструкции break | Игнорировать |
Исключение C++ EH | LogError (LogError) |
Исключение CLR | LogError (LogError) |
Исключение уведомления CLR | LogError (игнорировать) |
исключение Control-LogError | LogError |
Control-LogError продолжение исключения | Игнорировать |
Исключение Control-C | LogError |
Продолжение исключения Control-C | Игнорировать |
Неправильное сопоставление данных | LogError (LogError) |
Исключение команды отладчика | Игнорировать |
Нарушение страницы "Защита" | LogError (LogError) |
Недопустимая инструкция | LogError (LogError) |
Ошибка страничного ввода-вывода | LogError (LogError) |
Целочисленное деление на ноль | LogError (LogError) |
Переполнение целых чисел | LogError (LogError) |
Недопустимый дескриптор | LogError |
Недопустимое продолжение дескриптора | LogError |
Недопустимая последовательность блокировки | LogError (LogError) |
Недопустимый системный вызов | LogError (LogError) |
Порт отключен | LogError (LogError) |
Зависание службы | LogError (LogError) |
Одношаговая исключение | LogError |
Продолжение одношагового исключения | Игнорировать |
Stack buffer overflow; | LogError (LogError) |
Stack Overflow | LogError (LogError) |
Остановка проверяющего средства | LogError (LogError) |
Исключение Visual C++ | Игнорировать (игнорировать) |
Отладчик пробуждения | LogError (LogError) |
Точка останова WOW64 | LogError (игнорировать) |
Одношаговая исключение WOW64 | LogError (игнорировать) |
Другое исключение | LogError (LogError) |
Чтобы проиллюстрировать использование функций UMM, давайте рассмотрим (слегка придуманные) пример теста, который автоматизирует MSPaint:
namespace UserModeMonitorExample
{
using System;
using System.Diagnostics;
using System.Threading;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using WEX.Logging.Interop;
using WEX.TestExecution;
[TestClass]
public class BasicExample
{
[TestInitialize]
public void TestInitialize()
{
Process[] runningPaintInstances = Process.GetProcessesByName("mspaint.exe");
Verify.IsTrue(runningPaintInstances.Length == 0, "There are no running instances of mspaint.exe");
this.mspaintUnderTest = Process.Start("mspaint.exe");
}
[TestCleanup]
public void TestCleanup()
{
// Close the 'mspaint under test' - if it's already gone, this will throw, but that's no big deal.
this.mspaintUnderTest.CloseMainWindow();
}
[TestMethod]
[TestProperty("ProcessUnderTest", "mspaint.exe")]
[TestProperty("Description", "Shows how a test can be failed if the UI is closed from underneath the test.")]
public void SimpleInteraction()
{
Log.Comment("If the 'user mode monitor' is enabled and mspaint.exe is closed,");
Log.Comment("then this test will be failed.");
Log.Comment("Sleeping for 5 seconds");
Thread.Sleep(TimeSpan.FromSeconds(5));
}
private Process mspaintUnderTest;
}
}
Ниже приведена краткая разбивка структуры теста.
"Тест" очень прямой, давайте рассмотрим возможные результаты:
Если UMM включена, поведение с ошибками немедленно сообщается и напрямую влияет на результат теста. Это гораздо лучший шаблон тестирования, так как ошибки отображаются как можно раньше, и предоставляется дополнительный контекст для отладки или понимания сбоев тестов.
Обучение
Модуль
Use Monitor to troubleshoot Power Apps - Training
Learn how the Monitor tool from Power Apps Studio can help you proactively identify, troubleshoot, and resolve issues within your app.