Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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, в что-то более понятное. Просто введите новое имя в области параметров запроса.
Разверните столбец test в Power BI
Разверните столбец Test
, чтобы показать развернутую сущность Test.TestName
. Расширение столбца сглаживает запись в определенные поля. Чтобы узнать, как, см. раздел "Трансформируйте данные аналитики для создания отчетов Power BI, разверните столбцы".
Изменение типа данных столбца
В редакторе Power Query выберите столбцы
TotalCount
,PassedCount
,FailedCount
,NotExecutedCount
,NotImpactedCount
иFlakyCount
; выберите Тип данных в меню Преобразовать; а затем выберите Целое число.PassRate
Выберите столбец, выберите тип данных в меню "Преобразование", а затем — десятичное число.
Дополнительные сведения об изменении типа данных см. в разделе Преобразование данных аналитики для создания отчетов Power BI, преобразование типа данных столбца.
Закройте запрос и примените изменения
Завершив все преобразования данных, нажмите кнопку "Закрыть" и "Применить " из меню "Главная ", чтобы сохранить запрос и вернуться на вкладку "Отчет " в Power BI.
Создайте табличный отчет
В Power BI в разделе "Визуализации" выберите таблицу и перетащите поля в область "Столбцы ".
Добавьте следующие поля в раздел "Столбцы" в указанном порядке.
Test.TestName
TotalCount
PassedCount
FailedCount
NotImpactedCount
NotExecutedCount
FlakyCount
PassRate
Отчет должен выглядеть примерно так, как показано на следующем рисунке.
Тестирование ресурсов задачи
- Параллельное выполнение тестов с помощью задачи тестирования Visual Studio
- Параллельное выполнение тестов для любого инструмента для запуска тестов
- Ускорение тестирования с помощью анализа влияния тестов (TIA)
- Управление нестабильными тестами
- Рекомендации по тестированию пользовательского интерфейса
- Нагрузочное тестирование Azure
- Справочник по задачам Azure Pipelines, задачи тестирования