Команда Jupiter IT выпустила Syn, библиотеку, которая позволяет вам создавать синтетические события для использования при тестировании. Эта отдельная библиотека предназначена для оказания помощи в тестировании сложного поведения пользовательского интерфейса, имитируя действия пользователя, такие как печать с помощью клавиатуры, нажатие кнопок мыши и перетаскивание с её помощью.
Например, с помощью такого кода:
Вы можете имитировать клик по элементу с идентификатором hello, печатанием «Hello World», и затем перетаскиванием мыши от этого элемента к элементу с идентификатором trash.
Просто великолепная вещь. Посмотрите их демонстрацию, чтобы увидеть, как происходит запись и воспроизведение событий.
Тестирование богатых, динамических веб-приложений — сложное дело. В нашей компании мы пробовали почти все доступные решения для тестирования (qUnit, Quick Test Pro, Selenium, JsUnit, Env.js, TestCase), и все они страдают от роковых недостатков.
Проблемы:
- Ручная работа — тестер должен вручную запускать тесты в каждом поддерживаемом браузере. Люди ленивы;
- Только юнит-тесты — Нам необходимо проверить приложение в целом, а также сложный пользовательский интерфейс, включая такие нюансы, как поведение перетаскивания;
- Низкая точность — Мы должны убедиться, что отчёты по тестам выдают точные результаты;
- Трудность написания — Мы хотим писать тесты с использованием удобного JS API;
- Дороговизна — лицензия QTP стоит 5K на одного человека! Лучше оплатить отпуск;
- Поддержка — Мы хотим тестировать также в браузерах под Mac и Linux.
Мы решили все эти проблемы в рамках скоро выходящего каркаса для тестирования под названием FuncUnit. Это мэшап из qUnit, Selenium, Rhino и Env.js. Однако его основной библиотекой является Syn, которая выполняет имитацию действий пользователей с очень высокой точностью, то, что мы выпускаем сегодня.
Например, с помощью такого кода:
Syn.click( {},'hello' )
.type( 'Hello World' )
.drag( $('#trash') );
* This source code was highlighted with Source Code Highlighter.
Вы можете имитировать клик по элементу с идентификатором hello, печатанием «Hello World», и затем перетаскиванием мыши от этого элемента к элементу с идентификатором trash.
Просто великолепная вещь. Посмотрите их демонстрацию, чтобы увидеть, как происходит запись и воспроизведение событий.