Заметки консультанта

Шамрай Александр Владимирович

Archive for Март 2019

Azure DevOps Services Rest Api. 17. Добавление вложений и ошибок к результатам тестирования

Posted by Shamrai Alexander на Март 31, 2019

Если тест провалился, то логично добавить какую-то дополнительную информацию (логи, дампы, скриншоты), которая будет полезна для анализа ситуации. Также для критических тестов можно «на лету» создавать ошибки, которые будут связаны с конкретным тестом и его результатом. Нижеприведенное основывается на статье Создание результатов тестирования для планов тестирования.

Создание и добавление ошибки

Создание рабочих элементов выполняется на основе следующих шагов: Создание и редактирование рабочих элементов. Существующую ошибку уже можно привязать к результатам тестового сценария. Для этого необходимо создать ссылку ShallowReference:

new Microsoft.TeamFoundation.TestManagement.WebApi.ShallowReference(bug.Id.ToString(), url: bug.Url)

Далее массив таких ссылок передается в текущий результат выполнения теста. Пример:

TestCaseResult testCaseResult = new TestCaseResult();

WorkItem bug = CreateWorkItem(TeamProjectName, «Bug», bugFields);

var bugs = new List<Microsoft.TeamFoundation.TestManagement.WebApi.ShallowReference>();

bugs.Add(new Microsoft.TeamFoundation.TestManagement.WebApi.ShallowReference(bug.Id.ToString(), url: bug.Url));

testCaseResult.AssociatedBugs = bugs;

Связанную ошибку можно увидеть в результатах тестирования:

Добавление вложений

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

  1. Stream – строка в формате Base64, которая содержит будущее вложение.
  2. FileName – имя файла.

В решении примере модель вложения формируется на основе пути файла следующим образом:

static TestAttachmentRequestModel GetAttachmentModel(string path)

{

string[] pathArr = path.Split(new
char[] { ‘/’, ‘\\’ }, StringSplitOptions.RemoveEmptyEntries);

Byte[] bytes = File.ReadAllBytes(path);

return
new TestAttachmentRequestModel(Convert.ToBase64String(bytes), pathArr[pathArr.Length — 1]);

}

Далее созданная модель передается в результаты теста (через метод CreateTestResultAttachmentAsync) или в результаты тестового запуска (через метод CreateTestRunAttachmentAsync) клиента TestManagementHttpClient.

Пример добавления вложения к существующему результату теста из тестового запуска:

var definedTestResults = TestManagementClient.GetTestResultsAsync(TeamProjectName, testRun.Id).Result;

TestManagementClient.CreateTestResultAttachmentAsync(GetAttachmentModel(@»img\iconfinder_Insect-robot_131435.png»), TeamProjectName, testRun.Id, definedTestResults.ElementAt(0).Id).Wait();

Результат будет следующим:

Пример добавления вложения к тестовому запуску:

TestManagementClient.CreateTestRunAttachmentAsync(GetAttachmentModel(@»img\Screen_Shot_2018-01-16.jpg»), TeamProjectName, testRun.Id).Wait();

Результат этой операции:

Пример тестового приложения можно посмотреть здесь:

https://github.com/ashamrai/TFRestApi/tree/master/17.TFRestApiAppRunTestsAddBugAttachment

Posted in Microsoft, Team Foundation Server, Team Foundation Server FAQ, Visual Studio, visual studio team services | Отмечено: , , , | Leave a Comment »

Azure DevOps Rest Api. 16. Создание результатов тестирования для планов тестирования

Posted by Shamrai Alexander на Март 29, 2019

Создание результатов тестирования

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

Отличием от Создания результатов тестирования без плана тестирования является то, что перед выполнением теста необходимо найти его тестовые точки, которые определяют конфигурацию выполнения тестового сценария. Если результаты будут публиковаться без тестовых точек, то просмотреть их будет невозможно.

Получить набор тестовых точек можно из плана тестирования через метод GetPointsAsync, если известен идентификатор набора тестов и идентификатор тестового сценария.

Пример получения первой точки тестирования:

TestPoint testPoint = TestManagementClient.GetPointsAsync(TeamProjectName, TestPlanId, testSuiteId, testCaseId: TestCaseId.ToString()).Result.FirstOrDefault();

На основе полученной информации необходимо выполнить создание ссылки ShallowReference на нее, в которую передается идентификатор и url ссылка:

new Microsoft.TeamFoundation.TestManagement.WebApi.ShallowReference(testPoint.Id.ToString(), url: testPoint.Url);

Далее используем ссылку на тестовую точку в результатах тестового сценария:

TestCaseResult testCaseResult = new TestCaseResult();

testCaseResult.Outcome = Enum.GetName(typeof(TestOutcome), TestOutcome.Passed);

testCaseResult.TestPoint = new Microsoft.TeamFoundation.TestManagement.WebApi.ShallowReference(testPoint.Id.ToString(), url: testPoint.Url);

testCaseResult.CompletedDate = DateTime.Now;

testCaseResult.State = Enum.GetName(typeof(TestRunState), TestRunState.Completed);

По результатам выполнения кода из примера можно увидеть следующий результат на уровне плана тестирования:

Результаты выполнения тестового запуска включают в себя список тестов и их результат:

В результатах тестах можно найти ссылки на план тестирования, набор тестов и тестовый сценарий:

Пример тестового приложения можно посмотреть здесь:

https://github.com/ashamrai/TFRestApi/tree/master/16.TFRestApiAppRunTestCases

Posted in Microsoft, Team Foundation Server, Team Foundation Server FAQ, visual studio team services | Отмечено: , , , | Leave a Comment »

Azure DevOps Rest Api. 15. Создание результатов тестирования без планов тестирования

Posted by Shamrai Alexander на Март 29, 2019

<< Перейти в радел «Azure DevOps Services (TFS/VSTS) Rest Api»

Создание результатов тестирования в Azure DevOps может быть интересным в случае выполнения автоматических или других тестовых сценариев вне Azure DevOps (например, ручных в офлайне) и публикации их результатов в удобном для обработки виде.

Создание результатов тестирования

Для создания тестовых сценариев используем клиент TestManagementHttpClient по следующему сценарию:

  1. Необходимо создать запись о выполнении тестов.
  2. Создать и добавить нужное количество записей о результатах тестирования.
  3. Обновить информацию о тестировании по ее результатам.

Для создания записи о выполнении тестов используется метод CreateTestRunAsync, который принимает модель создания RunCreateModel и имя командного проекта. Модель создания записи о выполнении в рамках решения примера включает следующие основные параметры:

  1. name – понятное наименование сессии тестирования.
  2. startedDate – дата начала тестирования.
  3. isAutomated – тесты автоматические или ручные

Пример выполнения метода:

RunCreateModel runCreate = new RunCreateModel(

name: «Test run from console — completed»,

startedDate: DateTime.Now.ToString(«o»),

isAutomated: true

);

TestRun testRun = TestManagementClient.CreateTestRunAsync(runCreate, TeamProjectName).Result;

Для добавления результатов тестирования используем метод AddTestResultsToTestRunAsync, который принимает массив результатов выполнения отдельных тестов, наименование командного проекта и идентификатор запуска тестирования. Для создания результатов выполнения тестов используется класс TestCaseResult со следующими основными параметрами:

  1. TestCaseTitle – наименование сценария тестирования.
  2. Outcome – результат выполнения теста. Список можно посмотреть в перечислении TestOutcome.
  3. State – текущее состояние процесса тестирования этого теста. Список доступных значений можно посмотреть в перечислении TestRunState

Пример добавления результатов для теста:

TestRun testRun = TestManagementClient.CreateTestRunAsync(runCreate, TeamProjectName).Result;

TestCaseResult testCaseResult = new TestCaseResult();

testCaseResult.AutomatedTestName = «MyTestSuite.TestName»;

testCaseResult.TestCaseTitle = «Check my function»;

testCaseResult.StackTrace = «Add StackTrace here»;

testCaseResult.ErrorMessage = «Test ‘MyTestSuite.TestName’ failed»;

testCaseResult.Outcome = Enum.GetName(typeof(TestOutcome), TestOutcome.Failed);

testCaseResult.CompletedDate = DateTime.Now;

testCaseResult.State = Enum.GetName(typeof(TestRunState), TestRunState.Completed);

TestManagementClient.AddTestResultsToTestRunAsync(new TestCaseResult[] { testCaseResult }, TeamProjectName, testRun.Id).Wait();

Обновление информации о тестовом запуске выполняется с помощью UpdateTestRunAsync через модель обновления RunUpdateModel, которая имеет схожую структуру с RunCreateModel. Пример обновления текущего состояния тестового запуска:

RunUpdateModel runUpdateModel = new RunUpdateModel(

completedDate: DateTime.Now.ToString(«o»),

state: Enum.GetName(typeof(TestRunState), TestRunState.Completed)

);

testRun = TestManagementClient.UpdateTestRunAsync(runUpdateModel, TeamProjectName, testRun.Id).Result;

Проверка результатов

Результаты выполнения в Azure DevOps видны в разделе Test PlansàRuns:

Далее в каждом тестовом запуске можно увидеть его детализацию:

При этом заполняемая информация также попадает в дефект, если выполнить его создание на основе выполненного теста:

Пример тестового приложения можно посмотреть здесь:

https://github.com/ashamrai/TFRestApi/tree/master/15.TFRestApiAppRunTests

Posted in Microsoft, Team Foundation Server, Team Foundation Server FAQ, Visual Studio, visual studio team services | Отмечено: , , , | Leave a Comment »

Вебинар: Azure DevOps – современная платформа непрерывного производства ПО

Posted by Shamrai Alexander на Март 25, 2019

 

 

Часть 1 – управление проектом и версионный контроль
Часть 2 – Непрерывное развертывание и тестирование
Часть 3 – Адаптация среды под собственные потребности

Posted in Microsoft, Team Foundation Server, Visual Studio, visual studio team services | Отмечено: | Leave a Comment »

 
%d такие блоггеры, как: