Пример отчета с сводкой теста
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
выполнения, сгруппированный по test.
Примечание.
Сведения о доступных свойствах для фильтрации или отчета см . в справочнике по метаданным для аналитики планов тестирования и метаданных для Azure Pipelines. Вы можете отфильтровать запросы или возвращать свойства с помощью любого из Property
значенийEntityType
, доступных в разделе EntitySet
или NavigationPropertyBinding Path
значениях. Каждое EntitySet
соответствует .EntityType
Дополнительные сведения о типе данных каждого значения см. в метаданных, предоставленных для соответствующего EntityType
значения.
Сводка теста для рабочего процесса сборки
Используйте следующие запросы, чтобы просмотреть сводку теста конвейера для рабочего процесса сборки .
Скопируйте и вставьте следующий запрос Power BI непосредственно в окно получения пустого запроса данных>. Дополнительные сведения см. в разделе "Обзор примеров отчетов с помощью запросов OData".
let
Source = OData.Feed (
"https://analytics.dev.azure.com/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Build' "
&")/aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
null, [Implementation="2.0", OmitValues = ODataOmitValues.Nulls, ODataVersion = 4]
)
in
Source
Замените и {startdate}
на фактические {pipelineName}
значения для запроса.
Сводка теста для рабочего процесса выпуска
Используйте следующие запросы для просмотра сводки теста конвейера для рабочего процесса выпуска .
Примечание.
Сведения о доступных свойствах для фильтрации или отчета см . в справочнике по метаданным для аналитики планов тестирования. Вы можете отфильтровать запросы или возвращать свойства с помощью любого из Property
значенийEntityType
, доступных в разделе EntitySet
или NavigationPropertyBinding Path
значениях. Каждое EntitySet
соответствует .EntityType
Дополнительные сведения о типе данных каждого значения см. в метаданных, предоставленных для соответствующего EntityType
значения.
Скопируйте и вставьте следующий запрос Power BI непосредственно в окно получения пустого запроса данных>. Дополнительные сведения см. в разделе "Обзор примеров отчетов с помощью запросов OData".
let
Source = OData.Feed (
"https://analytics.dev.azure.com/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Release'"
&")/aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
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/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Build'"
&")/groupby("
&"(Branch/BranchName),"
&"aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
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/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Build'"
&")/groupby("
&"(Test/ContainerName),"
&"aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
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/mseng/AzureDevOps/_odata/v4.0-preview/TestResultsDaily?"
&"$apply=filter("
&"Pipeline/PipelineName eq '{pipelineName}' "
&"And DateSK ge {startdate} "
&"And Workflow eq 'Build'"
&")/groupby("
&"(Test/TestOwner),"
&"aggregate("
&"ResultCount with sum as ResultCount, "
&"ResultPassCount with sum as ResultPassCount, "
&"ResultFailCount with sum as ResultFailCount, "
&"ResultNotExecutedCount with sum as ResultNotExecutedCount, "
&"ResultNotImpactedCount with sum as ResultNotImpactedCount"
&")",
null, [Implementation="2.0", OmitValues = ODataOmitValues.Nulls, ODataVersion = 4]
)
in
Source
Строки подстановки и разбивка запросов
Замените следующие строки значениями. Не включайте скобки в подстановку {} . Например, если вашей организации присвоено имя Fabrikam, замените {organization}
на Fabrikam
, а не {Fabrikam}
.
{organization}
— Имя вашей организации.{project}
— Имя проекта группы.{pipelinename}
— Имя конвейера. Пример:Fabrikam hourly build pipeline
.{startdate}
— Дата начала отчета. Даты можно ввести в формате ГГГГММДД. Например,20220815
15 августа 2022 года.
Разбивка запросов
В следующей таблице описана каждая часть запроса.
Часть запроса
Description
$apply=filter(
Предложение Start filter()
.
Pipeline/PipelineName eq '{pipelineName}'
Возвращает тестовые запуски для указанного конвейера.
and CompletedOn/Date ge {startdate}
Возврат тестов выполняется в указанной дате или после нее.
and Workflow eq 'Build'
или and Workflow eq 'Release'
Возврат тестов выполняется только для конвейеров, назначенных рабочим процессом или Release
рабочим процессомBuild
.
)
Закрыть filter()
предложение.
aggregate(
aggregate
Запустите предложение для всех тестов, соответствующих критериям фильтра.
ResultCount with sum as ResultCount,
Подсчитывает общее число тестовых запусков в качестве ResultCount
.
ResultPassCount with sum as ResultPassCount,
Подсчитывать общее количество пройденных тестовых запусков в качестве ResultPassCount
.
ResultFailCount with sum as ResultFailCount
Подсчитывать общее количество неудачных тестов.ResultFailCount
ResultNotExecutedCount with sum as ResultNotExecutedCount,
Подсчитывать общее число неисполнимых тестов, выполняемых как ResultNotExecutedCount
.
ResultNotImpactedCount with sum as ResultNotImpactedCount
Подсчет общего числа не затронутых тестов выполняется как ResultNotImpactedCount
.
)
aggregate()
Закройте предложение.
(Необязательно) Переименование запроса
Вы можете переименовать метку запроса по умолчанию, query1, в что-то более понятное. Просто введите новое имя в области параметров запроса.
(Необязательно) Переименование полей столбцов
Можно переименовать поля столбцов. Например, можно переименовать столбец Pipeline.PipelineName
в Pipeline Name
,или TotalCount
в Total Count
. Сведения о том, как это сделать, см. в разделе "Переименовать поля столбцов".
Закройте запрос и примените изменения
Завершив все преобразования данных, нажмите кнопку "Закрыть" и "Применить " из меню "Главная ", чтобы сохранить запрос и вернуться на вкладку "Отчет " в Power BI.
Создание отчета диаграммы Кольцевой диаграммы
В Power BI в разделе "Визуализации" выберите отчет Donut .
Добавьте следующие поля в значения в указанном порядке. Щелкните правой кнопкой мыши каждое поле и убедитесь, что выбрано значение Sum .
ResultPassCount
ResultFailCount
ResultNotExecutedCount
ResultNotImpactedCount
Отчет должен выглядеть примерно так, как показано на следующем рисунке.