Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

TFS/Автоматические тесты. Возможен ли селективный запуск и просмотр


(Maxim Ioffe) #1

Здравствуйте

Занимаюсь в фирме автоматическими тестами. Селениум/вебдрайвер, но к вопросу это не относится.

Итак начальство поставило задачу - сделать тесты которые написаны и бегут из вижуал студио доступными для запуска всем работникам фирмы.

Фирма активно пользуется майкрософтовскими инструментами, и эту задачу мне предложили решить с помощью TFS.

Нужны НЕ тесты после билда.

Нужна возможность запускать разные тесты, с разной конфигурацией и просматривать их результаты в TFS.

Мои поиски не дали однозначного ответа, что такая возможность существует в TFS в принципе

Заранее благодарен, за любые мысли по поводу.


(Stan) #2

Первый вариант - Visual Studio online, где можно спокойно выбирать конфигурации ранов тестов в Azure на своих либо майкрософских серверах.
Если исходить из ваших текущих потребностей, TFS - не билд система, это CVS + issue tracker. Вам надо внедрять либо что-то наподобие дженкинса, но тогда вам нужно будет решение как запускать это напряму. из студии, например https://visualstudiogallery.msdn.microsoft.com/3471d451-c1f1-4273-b305-acf81e4f8b32 . Или же внедрять https://msdn.microsoft.com/Library/vs/alm/Build/feature-overview .

Я специально не затрагиваю вопросов pre-commit builds, потому что я так понимаю все что вам надо - раны билдов “on-demand”, по запросу девелопера.


(5am) #3

есть еще microsoft test manager (MTM), работает он в связке с TFS
в него подтягиваются тест кейсы (заведенные в студии отдельными work item’ами)
в нем же создаются тестовые environment’ы, на них ставятся test controller / test agent’ы и запускаются тесты (из гуя MTM)


(Maxim Ioffe) #4

Спасибо за ответы!

МТМ не очень подходит, ибо это значит, что на комп запускающего его нужно устанавливать.

Правильно ли я понимаю, что чисто TFS ( добавил ему build agent ) не может быть тест ранером?


(Stan) #5

https://msdn.microsoft.com/en-us/library/bb399135.aspx

Там на картинке достаточно понятно видно как это взаимодействует. Если по аналогии с дженкинсом, вам нужны слейвы (билд агенты), где это будет запускаться. На одном сервере могут быть как и контроллер так и агенты, все упирается в железо.


(Maxim Ioffe) #6

Может быть есть видео, где можно увидеть как этот процесс должен выглядеть в результате?


(Евгений Бухгаммер) #7

Имхо селективный запуск тестов лучшим образом можно провернуть как уже выше сказали при помощи CI. Например Jenkins, где n кол-во job’ов соответствуют n кол-ву специфических задач.

Тут есть нюансы:

а) каждая задача по своему ресурсу требует для себя некий контейнер ( виртуальная машина ), и с каждым тестом ВМ уникально воссоздается (e.g. OpenStack как выбранное решение для слоя виртуализации),
б) использует имеющийся снепшот определенной виртуалки (VirtualBox, VMWare, etc)

В первом случае при должных мощностях париться вообще не стоит - инстансы теста будут рождаться и умирать.

Во втором случае имеет смысл создать job’ы в соотношении 1 к 1 с виртуальными машинами, на которых выполняется тест.

Для чего это нужно? И как это помогает селективному запуску тестов?

Jenkins позволяет запускать параметризированные сборки, в которых вы можете как угодно описать пареметры теста. (на примерt cli утилиты для тестирования на Питоне: nosetests C:\my_project\tests\test_login.py:Login --nocapture ) - тут все опирается в то, как ваши тесты оформлены - имеют ли они собой дизайн тестового фреймворка, и если да, то тут все продиктовано конвенцией запуска теста\модуля\сьюта\тестметода

В примере с nosetests я указываю для текущей папки файл скрипт test_login, содержащий тест-класс Login, который должен быть протестирован. Т.е. параметризованность дженкинса в этом случае должна соответствовать конкретной тестируемой утилите + оформленность тестов во всем многообразии Скоупов: тест-сьюты, все тест классы, etc.

Если хочется еще сильнее изолировать (упростить для маркетологов\прочих не автоматизаторов) запуск тестов - можно пойти дальше и написать десктоп\веб приложение, которое будет всего-навсего формировать JSON api запрос из выбранных комбо-боксов\чекбоксов и т.д, а затем слать сформированный запрос на jenkins сервер, запуская задачу с нужными параметрами.