Что вы используете для модульного тестирования вашего веб-интерфейса?
Компания, в которой я сейчас работаю, использует Selenium для объединенного тестирования нашего пользовательского интерфейса. Что вы используете для модульного тестирования вашего веб-интерфейса и насколько эффективно вы его нашли?
15 ответов
Мы используем Watin на моем рабочем месте, мы являемся магазином.net, поэтому это решение имело большой смысл. Мы фактически начали с Watir (оригинальная реализация ruby) и переключились после. Это было довольно хорошее решение для нас до сих пор
Я большой поклонник Selenium. Говорить "юнит-тестирование вашего веб-интерфейса" не совсем точно, как упоминалось в некоторых комментариях. Тем не менее, я считаю, что Selenium невероятно полезен для выполнения подобных тестов приемлемости и здравомыслия в пользовательском интерфейсе.
Хороший способ начать работу - использовать Selenium IDE как часть вашей разработки. Т.е. просто открывайте IDE во время разработки и пишите свой тест, чтобы сократить время разработки. (Вместо того, чтобы вручную переходить через пользовательский интерфейс, чтобы добраться до точки, где вы можете протестировать все, над чем работаете, просто нажмите кнопку, и Selenium IDE позаботится об этом за вас. Это потрясающая экономия времени!)
В большинстве моих сценариев использования есть тесты Selenium RC для их поддержки. Вы не можете действительно думать о них как о модульных тестах в духе фреймворка xUnit, но это тесты, нацеленные на очень специфическую функциональность. Их можно быстро написать (особенно если вы реализуете общие методы для таких вещей, как вход в систему или настройка тестовых случаев), быстро запустить и обеспечить очень тесную обратную связь. В этом смысле тесты Selenium RC очень похожи на юнит-тесты.
Я думаю, что, как и все остальное, если вы приложите усилия к правильному изучению инструмента тестирования (например, Selenium), ваши усилия окупятся в пике. Вы упоминаете, что ваша компания уже использует Selenium для тестирования пользовательского интерфейса. Это замечательно. Работай с этим. Если вы находите Selenium сложным в использовании или запутанным, придерживайтесь его. Кривая обучения на самом деле не так уж крута, когда вы немного освоите API.
Если я работаю над веб-приложением, я редко пишу значительный объем кода без тестов Selenium RC для его резервного копирования. Вот как эффективно я нахожу Selenium.:) (Надеюсь, это ответит на ваш вопрос..)
Что ж, если вы правильно спроектировали свое приложение, у вас все равно не будет логики внутри пользовательского интерфейса. Гораздо разумнее разделить фактическую работу, выполняемую на отдельные блоки от пользовательского интерфейса, а затем протестировать ее.
Если вы сделаете это, то единственным кодом в пользовательском интерфейсе будет код, который вызывает бэкэнд, поэтому достаточно просто протестировать бэкэнд.
Я использовал NUnit ASP в прошлом (на своей работе), и если вы настаиваете на модульном тестировании своего пользовательского интерфейса, я настоятельно рекомендую вам использовать НИЧЕГО, кроме NUnit ASP. Трудно работать, и тесты, как правило, становятся недействительными (нуждаются в пересмотре) даже после самых незначительных изменений пользовательского интерфейса (даже если субъекты тестов фактически не меняются).
Некоторое время мы использовали JSunit для выполнения модульных тестов... это могут быть не те типы тестов, о которых вы говорите, но они отлично подходят для обеспечения того, чтобы ваш JavaScript работал так, как вы ожидаете.
Вы запускаете его в браузере, и его можно настроить в Ant-сборке так, чтобы он автоматически запускался для нескольких браузеров на нескольких платформах удаленно (чтобы вы могли убедиться, что ваш код является кросс-браузерным, а также обеспечить правильную логику).).
Я не думаю, что он заменяет Selenium, но он хорошо дополняет его.
Мы используем Visual Studio 2008 Tester Edition.
Плюсы: очень хорошо фиксируют взаимодействие с пользователем
Захватывает Ajax звонки
Очень легко отобразить пользовательский ввод в базу данных, файл XML или CSV
Захваченный тест может быть преобразован в C# для большего контроля
Те же тесты могут быть использованы для нагрузочного тестирования и покрытия кода
Минусы:
VS2008 Tester Edition - это отдельный SKU от обычного Developer Edition, что означает дополнительные расходы
Вы можете быть настороже с Microsoft;-)
Мы очень эффективно использовали его в проектах, однако для поддержания тестов в актуальном состоянии потребовалось немало усилий, каждый раз, когда вы меняете экран, может потребоваться повторная запись теста.
Мы стараемся держать тесты короткими и четкими, делать одну вещь и уйти, вместо того, чтобы записывать 10-минутные нажатия в одном тесте.
У нас есть несколько стандартных типов тестов пользовательского интерфейса:
Тестирование меню: войдите в систему как определенный пользователь (или тип / роль пользователя) и убедитесь, что все необходимые пункты меню доступны
Проверка правильности : откройте страницу и нажмите "Сохранить", не вводя никаких данных, убедитесь, что отображаются все предупреждения проверки. Заполните обязательные поля по одному и убедитесь, что предупреждающие сообщения исчезают, когда они должны.
Тест поиска: поиск с использованием данных из вашей базы данных или файла данных и убедитесь, что поиск вернет правильные данные
Тест ввода данных: создание новых записей из файла данных, очистка базы данных, чтобы тесты могли запускаться несколько раз
Тестирование пользовательского интерфейса занимает довольно много времени, но ощущение комфорта, которое вы испытываете, когда проходит несколько сотен тестов перед выпуском новой версии, бесценно.
Мы используем QuickTestPro. Пока это эффективно, но выбор браузера ограничен. Самая приятная часть - это возможность записывать действия вашего браузера и преобразовывать их в набор шагов, которые можно записать в сценарии. Есть также хороший плагин.Net, так что если у вас есть какой-либо проверочный код, который вам нужно сделать для разных этапов вашего теста, вы можете написать методы в сборке и вызвать их из вашего скрипта.
Проверьте Canoo Web Test. Это с открытым исходным кодом и построен на основе ANT.
Я потратил некоторое время, работая с ним на выпускном курсе по программному обеспечению качества, и это, похоже, довольно мощный инструмент тестирования.
Я использовал WATIR, что довольно хорошо. Мне понравилось, потому что это Ruby и позволяет тестировать интерактивность, доступные элементы и парсинг исходного кода. Я не использовал это некоторое время, но я предполагаю, что это стало лучше.
Предположительно он переносится на Firefox и Safari, но это уже давно происходит.
Selenium Grid может выполнять ваши веб-тесты параллельно на нескольких компьютерах, что может ускорить процесс веб-тестирования
В основном я использую CubicTest, плагин Eclipse, который позволяет определять тесты графически. Он может экспортировать / запускать тесты через несколько библиотек, включая watir и selenium. Большинство людей просто используют бегун Selenium.
Полное раскрытие: я один из разработчиков, поэтому я немного предвзятый:)
Посмотрите внимательнее здесь: http://cubictest.openqa.org/
-Erlend
Selenium предназначен для интеграционного тестирования, а не модульного тестирования. Это тонкое, но важное отличие. Я обычно вижу использование для проверки работоспособности. т. е. иметь тест, который входит в систему, тест, который (например) представляет историю, делает комментарии и т. д.
Идея заключается в том, что вы тестируете, чтобы убедиться, что вся система работает вместе перед развертыванием, а не чтобы пользователь обнаружил, что ваш сайт не работает.
Мы используем Selenium Core, но постепенно переключаемся на Selenium RC, который намного приятнее и проще в управлении. Мы написали много специального кода, чтобы тесты выполнялись на наших серверах непрерывной интеграции, некоторые из них в параллельных наборах для более быстрой работы.
Вы обнаружите, что Selenium перезапускает браузер для каждого теста (вы можете настроить его, чтобы он этого не делал, но у нас были проблемы с памятью, когда мы это делали). Это может быть медленным в Firefox, но не так уж плохо в IE (однажды я благодарен за интеграцию ОС Билла Гейтса).
В настоящее время мы используем Silk4J - Java-ориентированный подход к тестированию веб-интерфейса. Он может тестировать Flash, Flex, AIR, Silver Light, Win32, HTML и некоторые другие приложения.
Поскольку Silk4J может управлять приложениями Win32, он может напрямую управлять диалоговыми окнами браузера, что на шаг выше того, что может контролировать Selenium, и особенно полезно для запросов на загрузку.
Молибден построен на основе селена и имеет некоторые дополнительные функции.