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


Пример отчета о неудачных тестах

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

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

Снимок экрана отчета о таблице неудачных тестов.

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

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

Внимание

Интеграция с 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(FailedCount gt 0) "
    &"/compute( "
    &"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
    ,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(FailedCount gt 0) "
    &"/compute( "
    &"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
    ,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(FailedCount gt 0) "
    &"/compute( "
    &"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Неудачные тесты, отфильтрованные по тестовой папке

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

  • Разверните 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(FailedCount gt 0) "
    &"/compute( "
    &"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Неудачные тесты, отфильтрованные владельцем теста

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

  • Разверните 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(FailedCount gt 0) "
    &"/compute( "
    &"iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate) "
    ,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(

Начать 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() предложения.

/compute(

Начните compute() предложение.

iif(TotalCount gt NotExecutedCount, ((PassedCount add NotImpactedCount) div cast(TotalCount sub NotExecutedCount, Edm.Decimal)) mul 100, 0) as PassRate

Для всех тестов вычислите PassRate.

)

Закрыть compute() пункт.

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

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

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

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

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

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

  1. В редакторе Power Query выберите столбцы TotalCount, PassedCount, FailedCount, NotExecutedCount, NotImpactedCount и FlakyCount; выберите Тип данных в меню Преобразовать; а затем выберите Целое число.

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

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

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

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

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

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

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

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

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

    • Test.TestName
    • TotalCount
    • PassedCount
    • FailedCount
    • NotImpactedCount
    • NotExecutedCount
    • FlakyCount
    • PassRate

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

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

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