Поделиться через


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

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

Отчет можно создать, как показано на следующем рисунке, в котором перечислены нестабильные тесты, происходящие в запусках конвейера, включающих тестовые задачи. Тест, известный как «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 для создания различных, но аналогичных отчетов о ненадежных тестах сборочного конвейера. Набор TestResultsDaily сущностей предоставляет ежедневный статистический снимок TestResult выполнения, сгруппированный по тесту.

Примечание.

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

Нестабильные тесты для рабочего процесса сборки

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

Скопируйте и вставьте следующий запрос 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

Ненадежные тесты для рабочего процесса выпуска

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

Скопируйте и вставьте следующий запрос 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

Нестабильные тесты отфильтрованы по ветке

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

  • Разверните 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, отфильтрованные по тестовой папке

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

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

Скопируйте и вставьте следующий запрос 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(

Начало filter() предложения.

Pipeline/PipelineName eq '{pipelineName}'

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

and CompletedOn/Date ge {startdate}

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

and Workflow eq 'Build'

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

)

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

/groupby(

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

(TestSK, Test/TestName),

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

aggregate(

Запустите 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(

Начать 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, NotExecutedCount, NotImpactedCount и FlakyCount; затем выберите Тип данных в меню Преобразование, и после этого выберите Целое число.

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

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

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

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

Снимок экрана опции

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

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

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

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

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

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

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

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