Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

DOU Проектор: Testein — сервис для автоматизации тестирования без написания кода

В рубрике DOU Проектор все желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на [email protected].

Привет! Меня зовут Дмитрий Бондарчук, я уже около 5 лет работаю в различных проектах (от e-Commerce до Microsoft и Dell). Теперь пришла очередь и собственного проекта. Я основатель стартапа Testein. Наша команда старается облегчить создание, менеджмент и запуск автоматизационных тестов (automation tests) без написания кода.

В нашей команде пока только 2 человека: я, CEO проекта, и Виталий — CTO, который проработал несколько лет в качестве тимлида автоматизации и, насмотревшись всякого, отвечает за все автоматизационные фичи.

Наша команда

Идея

Думаю, многие здесь знакомы с понятием автоматизации тестирования и знают, зачем это нужно. Если нет, то в двух словах — автоматизация тестирования (automation testing) позволяет тестировать различные компоненты продукта, будь то UI, API или performance, с помощью специально написанного софта.

Для тестирования веб-продуктов, да и мобильных, и десктопных тоже, чаще всего используют Selenium фреймворк и специальные так называемые драйверы — программы для управления браузерами — Chrome, Firefox, Safari и т. д. Существуют драйверы даже для iOS, Android и десктопных приложений.

Это все дает огромный плюс в плане переносимости кода: API одинаковое, между браузерами переключаться легко (если вы заставите их работать — поговорим об этом чуть позже), и получается одинаковая логика для других платформ.

Автоматизированное тестирование позволяет сделать тестирование продукта более легким, доступным и стабильным. Оно дополняет мануальное тестирование, встраивается в существующий CI/CD процесс и делает разработку, тестирование и релиз продукта более надежным.

Но есть некоторые нюансы:

  1. Чтобы создавать автоматизационные тесты, нужно писать код, а для этого нужны специальные люди, которые стоят дороже мануальных тестировщиков.
  2. Создание собственного фреймворка занимает пару месяцев, и запустить первый тест получится нескоро.
  3. Развертывание собственной инфраструктуры. Чтобы выполнение сьюта занимало как можно меньше времени, нужно иметь несколько машин для запуска. Желательно на разных платформах (Windows, Linux, Mac OS X) и с разными браузерами. Установка и поддержка такой инфраструктуры занимает много времени и сил. Конечно, есть различные сервисы, которые предоставляют облачную инфраструктуру, но стоят они немало.

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

Представляем вам Testein — облачный сервис для создания, запуска и управления автоматизационными тестами без особых усилий и написания кода.

Реализация

Наша система состоит из двух основных частей — бекенд + UI и агент. Агент представляет из себя программу, которую клиент ставит на свои машины. Он очень похож по смыслу на агенты, которые предоставляют Jenkins, TeamCity или VSTS. Агент забирает задачи с бекенда и запускает их на машине. Благодаря тому, что агент ставится на машину клиента, есть возможность создавать тесты, которые требуют доступ к внутренней сети. Например, если сайт находится в разработке и нет публичного доступа к нему извне.

Так как агент написан на Java, это позволяет нам поддерживать Windows, Mac OS X и Linux без проблем.

Список тестов в аппликейшене

Для бекенда был выбран .Net Core и AngularJs для фронтенд-части. .Net Core оказался очень приятным в использовании, и каких-либо проблем с ним не было замечено. Сервисы успешно крутятся на Linux-машинах в облаке Azure, что позволяет сэкономить приличную сумму на содержание инфраструктуры.

Разработка шла достаточно долго — около 6 месяцев. За это время было реализовано много интересных фич. Например, видеозапись исполнения теста, снятие скриншотов, объединение тестов в тест-сьюты и аппликейшены, репорты (как для отдельного теста, так и для сьюта или аппликейшена). А самая интересная, которую мы планировали на следующий релиз, но включили в нашу бету, — параллельный запуск нескольких тестов на одной машине. Это круто позволяет экономить время на общий запуск тестов.

К примеру, у нас есть сьют на 5 тестов, который в последовательном варианте занимает ~6 минут. А в параллельном режиме на 4 потока — всего 2:30. Это позволит отказаться от большой инфраструктуры, различных Selenium Grid и прочего. Все, что нужно, — одна машина и несколько потоков!

Создание теста

Итак, что же нужно, чтобы создать первый тест? Всего ничего — создать новый проект (например, Testein), аппликейшн (к примеру, Landing или Application) и создать тест с помощью отдельных блоков — тест-степов (например, открыть браузер, перейти по URL-адресу, нажать на ссылку и т. д). Для каждого степа нужно заполнить необходимые аргументы, будь то селектор или URL-адрес.

Можно также настроить дополнительные параметры. Такие как игнорировать ошибки во время данного степа, исполнять, если даже тест уже упал, или condition, которые позволяют запускать только в определённых случаях (к примеру, на скриншоте степ «Click on ’Sign Up’ link/button» запустится только на агентах на Mac OS X). В общем создание теста похоже на создание build definition в различных билд-серверах.

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

Поддержка автоматизационных тестов — достаточно сложная задача. Нужно редактировать различные селекторы и степы в разных местах. Для облегчения поддержки тестов в актуальном состоянии мы разработали такие фичи, как Elements и Snippets. Elements позволяют указать селектор нужного элемента лишь один раз, а дальше просто подставлять его, где нужно. При этом редактировать сам селектор с одного места. Предположим, у нас есть ссылка на страницу регистрации, и мы используем её в 10 тестах. Если разметка страницы изменится, нам нужно было бы пройтись по 10 тестах, чтобы исправить нужный селектор. Благодаря Elements можно выполнить это только 1 раз, и при следующем запуске теста будут корректные значения.

Аналогично работают и Snippets — готовые наборы степов, которые можно залинковать в свой тест. Предположим, все наши тесты требуют авторизации. Значит, в каждом тесте нужно будет каждый раз создавать степы для ввода логина/пароля, нажатия на кнопку и ожидания ответа. Благодаря Snippets блок авторизации можно создать всего раз и использовать его в различных тестах. Также есть возможность конвертации существующего теста в Snippet.

После запуска теста можно наблюдать лог выполнения и скриншоты в реальном времени. После завершения — получить детальный репорт (как на почту, так и скачать самому) и видео, а в случае неудачного выполнения — получить скриншот текущего состояния.

Тесты в аппликейшене можно объединять в сьюты для удобного совместного запуска, назначать как всему аппликейшену, так и отдельному сьюту триггеры для запуска, получать репорты и статистику.

Тест, сьют или аппликейшн можно запускать также с помощью развернутого API, который позволяет делать все то, что делает наш UI. Также мы работаем над расширениями для различных билд-серверов, чтобы можно было настраивать CI/CD процесс. К примеру, после деплоя вашего продукта будет возможность выполнить все тесты, которые покрывают данный аппликейшн.

Статистика по аппликейшену:
зеленый — successful тесты, желтый — canceled, красный — failed, серый — not run yet

На данный момент у нас готово расширение для Microsoft VSTS. Для остальных (Jenkins, TeamCity) расширения находятся в процессе разработки.

Фича, которой мы особо гордимся, — создание тестов с заданных шаблонов. К примеру, все интернет-магазины имеют плюс-минус похожий функционал: найти товар, добавить его в корзину и т. д. Соответственно, и тесты плюс-минус одинаковые. Для таких случаев и существуют шаблоны. Все, что нужно, — это подставить свои значения (селекторы в основном), и тест уже создается за считанные минуты!

Пример шаблона для добавления товара в корзину

Наша библиотека шаблонов пока небольшая, но постоянно расширяется. Каждый созданный тест — это шаг к новому шаблону :)

Кроме браузерных степов, есть и степы для работы с имейл (к примеру, нужно проверить, что приходит подтверждающее письмо после регистрации), командной строкой (cmd, PowerShell, Bash) и т. д. Также, если не хватает встроенных степов (их набор постоянно пополняется), есть возможность создавать собственные степы с помощью Java или JavaScript.

Недавно мы выкатили API тесты. Их уже можно создавать и использовать.

Пример создания API теста

Ну и прочие радости для команд — юзеры и юзер-группы, разграничение прав доступа к проектам и аппликейшенам.

Как мы зарабатываем?

У нас есть 4 вида ежемесячной подписки в зависимости от ваших нужд. Также для индивидуальных тестировщиков есть бесплатная подписка. Подписки отличаются количеством максимальных тестов, агентов, пользователей, а также максимальным количеством параллельных тестов на одном агенте и временем хранения логов.

SoloSmall teamTeamEnterprise
1 User3 User10 UserUnlimited User
15 Tests 35 Tests80 TestsUnlimited Tests
1 Agent 2 Agent5 AgentUnlimited Agent
1 parallel execution/agent 2 parallel execution/agent4 parallel execution/agent8 parallel execution/agent
1 month retention policy 1 month retention policy3 months retention policy6 months retention policy
FREE 35$/mo80$/mo300$/mo

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

Также в следующих релизах мы добавим аренду облачной инфраструктуры с дополнительной оплатой.

Проблемы, с которыми столкнулись

Конечно, при разработке любого продукта всегда сталкиваешься с разными проблемами. Мы — не исключение :)

Самая большая проблема — драйвера для браузеров. На удивление, самым адекватным оказался Chrome. Особых проблем не замечено, работает одинаково хорошо на всех платформах, поддерживает весь нужный функционал. Пробовали также и Edge, Safari, Firefox. Некоторые не запускались, некоторые работали нестабильно; не все поддерживают необходимые функции и т. д. Поэтому в бета-релизе только Chrome, но дальше будем добавлять и остальные.

Также сложным вопросом стала поддержка драйверов в актуальном состоянии. Браузеры и драйверы обновляются очень часто, и очень важно иметь соответствующую версию драйвера. Поэтому вариант с поставкой драйвера в комплекте с агентом отпал. Частые обновления агента (хоть он и делает это автоматически) + больший размер файла агента не будут радовать при скачивании. Вторым вариантом рассмотрели скачивание драйвера при каждом запуске теста, но и он не подошел. Скачивание драйвера добавляло примерно 30 секунд к каждому тесту, что тоже влияло на производительность. На данном этапе остановились на скачивании драйвера примерно раз в час. Это позволило сделать холодный и горячий запуск тестов (когда драйвер еще не скачался и когда он уже есть на клиенте). В результате сильно сократилось время теста при горячем запуске.

Большой проблемой оказалась производительность Azure SQL. Поначалу отправка логов на сервер занимала дикие пару секунд (!). Это очень ухудшало время выполнения тестов, если сравнивать с просто выводом в консоль. Мы провели оптимизацию всех возможных запросов к базе, это дало неплохой результат, но все же недостаточный. Поэтому решили поиграть с размером базы в Azure. И вуаля — время отправки логов уже 700 мс! Это намного лучше, но пока не идеал. Больше база — больше денег.

С ростом пользовательской базы можно увеличить размер инстанса, но пока цены, которые просит ажур оказались достаточно большими, чтобы влезть в нашу подписку в 150$ в месяц. Все дело в том, что Azure имеет разграничение по IO операциям. И для маленького инстанса базы — значение очень маленькое, и, соответственно, невысокая производительность. Об этом можно почитать здесь.

Также после апдейта проекта до .Net Core 2.0 у нас отпал билд-сервер. Это было связано с тем, что мы использовали самый маленький инстанс с Ubuntu на борту в Azure с всего 0.75 GB RAM. Этого оказалось недостаточно для нового билдера. Пришлось слегка проапдейтить инстанс :)

Конечно, было много и других проблем, например с кодировкой видео. Либа снимает в кодеке TSCC — TechSmith Screen Capture Codec, а для веба нужен MP4-формат. Поэтому мы немного намучились с кастомным билдом FFmpeg для нашего случая: для каждой платформы свой файл, только с нужными кодеками и функциями и минимальным размером файла. На удивление, самым сложным оказался Linux — когда вручную пришлось компилировать все зависимости.

Было еще много-много других проблем. Если кому-то будет интересно — спрашивайте, расскажем.

Результаты и планы на будущее

На данный момент у нас готова публичная бета-версия, где каждый желающий может зарегистрироваться. Конечно, так как это бета-версия, есть ограничения (например, доступен только Chrome), неполная документация и все остальное. Но продукт готов к применению и ждет своих пользователей :)

С помощью нашего сервиса автоматизационные тесты создаются намного быстрее, а их поддержка становится намного проще.

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

В планах на будущее есть много интересных фич:

  1. Интеграция с баг-трекинговыми системами — постинг бага при падении теста.
  2. Интеграция с билд-серверами для полного CI/CD процесса.
  3. Предоставление собственной облачной инфраструктуры.
  4. Возможность создавать тесты для мобильных и десктопных приложений, нагрузочные тесты.
  5. Инструмент для выбора селектора, или как мы его называем «Пипетка». Этот инструмент позволит использовать наш сервис даже тем, кто не знает слова «селектор».
  6. Тестирование мобильных и десктопных приложений.

Мы будем рады любому фидбэку и приглашаем протестировать наш сервис, чтобы вы могли протестировать свой :)

Спасибо!

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Схожі статті




33 коментарі

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Спасибо за статью. Как по мне — ещё один подобный сервис из десятков других подобных сервисов, ничего особенного. Расстраивает отсутствие технических подробностей, например что в основе всего старый-добрый selenium 2.0 узнал только когда речь зашла о драйверах. В целом, на мой взгляд, ниша у подобных сервисов невелика, они, как правило, годятся для написания довольно простых тестов — на уровне простых кликов по кнопкам, но проблема даже не в том, что подобные тесты и сейчас не являются какой-то проблемой в автоматизации, проблема в том, что таких простых тестов на практике встречается не так и много, большую часть работы автоматизаторов (особенно в крупном enterprise) занимают значительно более сложные кейсы, которые требуют не только взаимодействия с Ui, но и требуют тесного взаимодействия с сервисами, с базой данных, требуют сложной подготовки тестовых данных и так далее. Этот инструмент, судя по всему, эту проблему не решает, к сожалению.

Ідея виглядає дуже перспективною і привабливою, як мінімум заслуговує на життя і на спробу, яка при правильному підході і знаннях потреб тестувальників може справді замінити автоматизацію через кодування (хоча пока тяжко уявити, наскільки якісно це можна зробити). Поживемо, побачимо короче)

На таком этапе, как есть, думаю будет полезно тем, кто вообще не автоматизирует. Но сложно сказать, на кого рассчитан продукт вообще. Например я занимаюсь тестированием третий месяц и то, мне проще это все через селениум+node.js сделать.
PS Но это просто мнение основанное на 15 минутах исследования данного инструмента. Может быть просто не оценил все фичи.

це все класно але анімашки на вашому сайті зїдають майже 100% мого цпу :)

надо подумать над этим :)
поправим, спасибо!

Ні, схоже просто гріють моє приміщення через мій кулер :)

Вже осінь, поступово холодає — вони вам приємність роблять, а ви вередуєте :) От же ж люди... :)

Очень похоже на перерождение Selenium IDE с дополнительными плюшками (а они есть и это круто) и ограничениями.

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

Ваше решение по сути очередной фреймворк, встроенный в определенную инфраструктуру (запуск, отчетность) без среды исполнения из коробки, и с определенными ограничениями.

автоматизированные тесты создаются намного быстрее, а их поддержка становится намного проще.

Очень интресна конкретика — цифры, графики, как линейкой и что сравнивать?

Стоимость, все планы ниже Enterprise совсем неинтересны 15/35/80 тестов это очень мало, и 300$/месяц за использование инструмента для разработки, хранения тестов и расписания выполнения — дороговато, лично моё мнение. Потому что эти задачи может решить бесплатно — Slenium + Google Chrome + Visual Studio Code + Jenkins + Git, а за 300$ можно построить среду выполнения тeстов в AWS, конечно человек без опыта это не наладит или будет это делать довольно долго. Правда человек без опыта и тесты нормальные тоже не напишет (я не говорю про автоматизированные, простые тест кейсы).

Ограничения — временные. Мы не хотим выкатавать то, что будет не стабильно работать.
Из плюсов по по сравнению с IDE — это облако, а значит доступно из любого места.
Про конкретику напишем позже. Но для примера, тест иногда можно создать меньше чем за 10 минут (с помощью шаблонов, которые мы расширяем).
Про цены — мы думаем над изменением количества тестов. Плюс — возможность докупать тесты/агенты/параллельные запуски.

Виглядає дуже круто!
А є вже платні клієнти?

Дякую!
Поки все-таки бета, тому все-таки даєемо тестувати безкоштовно/

Удачи, конечно. Но цены... 35 баксов/месяц за 35 тестов, 80 за 80? Что это за приложение, которое тестируется 35-ю тестами. И еще только хром. Про остальное уже говорили, фреймворк за несколько месяцев и первый автотест через несколько месяцев, такое еще бывает в реальности?

Мы думаем над конечным количеством тестов. Будем смотреть по использованию в каждом плане

Есть забугорный сервис, похожий, называется testim.io
Пользовались им недолго, для пары тестов пойдет, а когда больше 20 начинает глючить, тормозить и по времени долго. Плюс для своих проектов все равно нужно писать функции на js встраиваемые в сервис. Так что в конце концов просто перешли на selenium+js+node, месяц потратился на написание готовых функций, и сейчас написание теста занимает максимум 3 часа

Все таки немного разные вещи. У нас не зависит в принципе от количества тестов. Если есть несколько машин — будет быстрее. Если план позволяет, то в паралельном режиме все быстрее исполняется. На Маке, например, 8 потоков тянет спокойно — соответсвенно одновременно 8 тестов вместо одного

" Существуют драйверы даже для iOS, Android и десктопных приложений."
— щось не зрозумів, це іронія, чи вони серйозно так вважають?

Запись авто-тестов для Андроида прямо внутри Android Studio:
developer.android.com/...​presso-test-recorder.html
Может им удалось написать что-то подобное, но сомневаюсь.

Я всё понимаю, но вот поля ’User First Name’ и ’User Name’ ? Что, правда? Я насчитал 6 слов user на странице регистрации. Начал было искать что-то не относящееся к пользователю. А такого нет. И зачем Уникальное имя компании? Почему просто айдишник не сгенерить?

Обвёртка над Selenium и Allure, но вопрос зачем? Нормальный автоматизатор умеет пользоваться этим без обвёртки, а нормальному мануальщику это всё не надо.

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

репорт тула выглядит аккурат, как Allure, а все степы, это завуалированый Selenium.

ну почему, ничего завуалированного там нету) действительно под капотом тула использует селениум
но просто называть шаг Click(); нам показалось как то не камильфо, поетому у нас шаг называется «Click on element»

коротко об Enterprise-mode — 300$
решается открытием вакансии автоматизатора и накидыванием + 300$ к зп

а CI сервер этот автоматизатор с собой принесет? И хочу увидеть автоматизатора с зп на 300 больше чем у мануальщика.

я что-то не вижу, чтобы эта тула с собой приносила

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

Маркетинг чистой воды. Имея голову на плечах можно поднять проект интегрированный в CI за 1 час

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

Вопрос один напрашивается. Зачем вокруг Selenium иметь такую жирную прослойку в виде UI и драг & дропов?

этот продукт не для Senior QA. Это для тех, кто хочет мышкой пройтись по своему продукту, как обычный пользователь и всё. И чтобы утилита потом повторяла это сама, периодически и сказала мне, когда что-то пошло не так.

Именно так и есть

Ну так есть куча утилит для этого. И как показывает практика, бесполезные.

Підписатись на коментарі