Пример отчета о тестах Flaky

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Отчет можно создать, как показано на следующем рисунке, в котором перечислены тесты, выполняемые в конвейерных запусках, включающих тестовые задачи. Тест flaky — это тест, который предоставляет различные результаты, такие как передача или сбой, даже если в исходном коде или среде выполнения нет изменений. Дополнительные сведения о включении пламенных тестов см. в статье "Управление пламенными тестами". Сведения о добавлении тестов в конвейер см . в разделе "Ресурсы задач тестирования" далее в этой статье.

Снимок экрана: отчет

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

  • Тесты Flaky для рабочего процесса сборки
  • Тесты Flaky для рабочего процесса выпуска
  • Тесты Flaky для конкретной ветви
  • Тесты Flaky для определенного тестового файла
  • Тесты Flaky для определенного владельца теста.

Внимание

Интеграция Power BI и доступ к веб-каналуOData службы Аналитики общедоступны для Azure DevOps Services и Azure DevOps Server 2020 и более поздних версий. Примеры запросов, указанные в этой статье, допустимы только для Azure DevOps Server 2020 и более поздних версий, и зависят от версии 3.0-preview или более поздней версии. Мы рекомендуем вам использовать эти запросы и предоставлять нам отзывы.

Необходимые компоненты

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

Примечание.

В этой статье предполагается, что вы прочитали обзор примеров отчетов с помощью запросов OData и имеют базовое представление о Power BI.

Примеры запросов

Вы можете использовать следующие запросы набора сущностей TestResultsDaily для создания различных, но аналогичных тестовых отчетов конвейера flaky. Набор TestResultsDaily сущностей предоставляет ежедневный статистический снимок TestResult выполнения, сгруппированный по тесту.

Примечание.

Сведения о доступных свойствах для фильтрации или отчета см . в справочнике по метаданным для аналитики планов тестирования и метаданных для Azure Pipelines. Вы можете отфильтровать запросы или возвращать свойства с помощью любого из Property значенийEntityType, доступных в разделе EntitySetили NavigationPropertyBinding Path значениях. Каждое EntitySet соответствует .EntityType Чтобы узнать больше о типе данных каждого значения, просмотрите метаданные, предоставленные для соответствующего EntityTypeзначения.

Тесты Flaky для рабочего процесса сборки

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

Запрос Power BI, указанный ниже, можно вставить непосредственно в окно получения пустого запроса.> Дополнительные сведения см. в обзоре примеров отчетов с помощью запросов OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName} "
                &"And Date/Date ge {startdate} "
                &"And Workflow eq 'Build') "
        &"/groupby((TestSK, Test/TestName), "
            &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
    &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlaykRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Тесты Flaky для рабочего процесса выпуска

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

Запрос Power BI, указанный ниже, можно вставить непосредственно в окно получения пустого запроса.> Дополнительные сведения см. в обзоре примеров отчетов с помощью запросов OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate}) "
        &"/groupby((TestSK, Test/TestName, Workflow), "
        &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
        &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Тесты Flaky отфильтрованы по ветви

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

  • Развернитесь Branch в Branch.BranchName
  • Выберите срез визуализации Power BI и добавьте поле в поле Branch.BranchName среза
  • Выберите имя ветви из среза, для которого необходимо просмотреть сводку результатов.

Дополнительные сведения об использовании срезов см. в разделе "Срезы" в Power BI.

Запрос Power BI, указанный ниже, можно вставить непосредственно в окно получения пустого запроса.> Дополнительные сведения см. в обзоре примеров отчетов с помощью запросов OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate} "
                &"And Workflow eq 'Build') "
        &"/groupby((TestSK, Test/TestName, Branch/BranchName), "
            &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
    &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Тесты Flaky, отфильтрованные по тестовой папке

Чтобы просмотреть тесты flaky для конвейера и определенного тестового файла, используйте следующие запросы. Чтобы создать отчет, выполните следующие дополнительные действия вместе с тем, что определено далее в этой статье.

  • Развернитесь Test в Test.ContainerName
  • Выберите срез визуализации Power BI и добавьте поле в поле Test.ContainerName среза
  • Выберите имя контейнера из среза, для которого необходимо просмотреть сводку результатов.

Запрос Power BI, указанный ниже, можно вставить непосредственно в окно получения пустого запроса.> Дополнительные сведения см. в обзоре примеров отчетов с помощью запросов OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate}) "
        &"/groupby((TestSK, Test/TestName, Test/ContainerName), "
        &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
        &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Тесты Flaky отфильтрованы владельцем теста

Чтобы просмотреть тесты Flaky для конвейера и тестов, принадлежащих конкретному владельцу теста, используйте следующие запросы. Чтобы создать отчет, выполните следующие дополнительные действия вместе с тем, что определено далее в этой статье.

  • Развернитесь Test в Test.TestOwner
  • Выберите срез визуализации Power BI и добавьте поле в поле Test.TestOwner среза
  • Выберите владельца теста из среза, для которого необходимо просмотреть сводку результатов.

Запрос Power BI, указанный ниже, можно вставить непосредственно в окно получения пустого запроса.> Дополнительные сведения см. в обзоре примеров отчетов с помощью запросов OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate}) "
        &"/groupby((TestSK, Test/TestName, Test/TestOwner), "
        &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
        &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

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

Замените следующие строки значениями. Не включайте скобки в подстановку {} . Например, если вашей организации присвоено имя Fabrikam, замените {organization} на Fabrikam, а не {Fabrikam}.

 

  • {organization} — Название организации
  • {project} — Имя проекта группы
  • {pipelinename} — Имя конвейера. Пример: Fabrikam hourly build pipeline
  • {startdate} — Дата начала отчета. Формат: ГГГГ-ММ-ДДЗ. Пример: 2021-09-01Z представляет 1 сентября 2021 г. Не заключайте в кавычки или скобки и используйте две цифры как для месяца, так и для даты.

Разбивка запросов

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

Часть запроса

Description

$apply=filter(

Предложение Start filter() .

Pipeline/PipelineName eq '{pipelineName}'

Возвращает тестовые запуски для указанного конвейера.

and CompletedOn/Date ge {startdate}

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

and Workflow eq 'Build'

Возврат тестов для Build рабочего процесса.

)

Закрыть filter() предложение.

/groupby(

Предложение Start groupby() .

(TestSK, Test/TestName),

Группируйте по имени теста.

aggregate(

Предложение start aggregate , чтобы вычислить тестовые запуски, соответствующие критериям фильтра.

ResultCount with sum as TotalCount,

Подсчитывает общее число тестовых запусков в качестве TotalCount.

ResultPassCount with sum as PassedCount,

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

ResultFailCount with sum as FailedCount,

Подсчитывать общее количество неудачных тестов.FailedCount

ResultNotExecutedCount with sum as NotExecutedCount

Подсчитывать общее число неисполнимых тестов, выполняемых как NotExecutedCount.

ResultNotImpactedCount with sum as NotImpactedCount,

Подсчет общего числа не затронутых тестов выполняется как NotImpactedCount.

ResultFlakyCount with sum as FlakyCount

Подсчитывать общее количество тестов пламени, выполняющихся как FlakyCount.

))

Закройте aggregate() и groupby() предложения.

/filter(FlakyCount gt 0)

Отфильтруйте только те тесты, которые были пламенными по крайней мере один раз.

/compute(

Предложение Start compute() .

(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate

Для всех пламенных тестов вычислите FlakyRate.

)

Закрыть compute() предложение.

(Необязательно) Переименование запроса

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

Снимок экрана: параметры меню запроса Power BI, переименование запроса.

Разверните столбец test в Power BI

Test Разверните столбец, чтобы отобразить развернутую сущностьTest.TestName. Расширение столбца сглаживает запись в определенные поля. Сведения о том, как можно узнать, как создавать отчеты Power BI, см. в статье "Преобразование аналитических данных" для создания отчетов Power BI, разверните столбцы.

Изменение типа данных столбца

  1. В Редактор Power Query выберите TotalCount,PassedCount, FailedCount, NotExecutedCountNotImpactedCountи FlakyCount столбцы; выберите тип данных в меню "Преобразование", а затем выберите Кто le Number.

  2. FlakyRate Выберите столбец, выберите тип данных в меню "Преобразование", а затем — десятичное число.

Дополнительные сведения об изменении типа данных см. в статье "Преобразование аналитических данных" для создания отчетов Power BI, преобразования типа данных столбца.

Закройте запрос и примените изменения

Завершив все преобразования данных, нажмите кнопку "Закрыть" и "Применить " из меню "Главная ", чтобы сохранить запрос и вернуться на вкладку "Отчет " в Power BI.

Снимок экрана: параметр Редактор Power Query Закрыть и применить.

Создание отчета таблицы

  1. В Power BI в разделе "Визуализации" выберите таблицу и перетащите поля в область "Столбцы ".

    Снимок экрана: выбор полей визуализации для отчета о таблицах Flaky.

  2. Добавьте следующие поля в раздел "Столбцы" в указанном порядке.

    • Test.TestName
    • TotalCount
    • PassedCount
    • FailedCount
    • FlakyCount
    • FlakyRate

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

Снимок экрана: отчет таблицы тестов Flaky.

Тестирование ресурсов задачи