Поступил мне недавно вопрос от бывшего коллеги: какие системы тестирования web-сайтов существуют? Конечно дать исчерпывающий ответ в одном письме пожалуй невозможно, да и отошел я в последнее время от тестирования. Но тем не менее по этому вопросу можно сказать следующее.
Прежде всего конечно нам надо определиться – какие виды тестирования нас интересуют? А видов этих немало (причем справедливы они для любого приложения, не обязательно web):
- Функциональное (тестирование функциональных требований или просто функционала приложения);
- Нагрузочное (тестирование под нагрузкой) или даже стресс-тестирование (тестирование с заведомо запредельными нагрузками для определения надёжности системы);
- Интеграционное (тестирование интеграции отдельных модулей);
- Объемное (тестирование на объемах данных, эквивалентных тем что будут при эксплуатации системы);
- Конфигурационное (подвид нагрузочного тестирования, когда варьируется не нагрузка а конфигурация системы);
- Модульное (на самом деле непосредственно к тестированию веб сайтов оно не относится, но упомянуть стоит – это тестирование внутренней логики модулей).
И это в общем-то самые основные типы, на самом деле если взглянуть более пристально, то можно выделить еще типы. Но возвращаясь к вопросу: в первую очередь всех интересует функциональное тестирование web-приложений, поэтому ниже будет идти речь именно о нем.
Прежде всего, конечно же, обратим внимание на платные инструменты – все они имеют возможность тестирования веба. Точно знаю про AutomatedQA TestComplete, про остальные (HP QuickTest Professional, Segue SilkPerformer, IBM Rational) слышал, что у них поддержка есть. Но у них есть и большой недостаток – цена, которую скорее всего придется обосновать перед менеджментом (TestComplete, IBM Rational и SilkTest имеют триал, так что как минимум можно заценить). Кроме того они включают в себя множество фич которые вам могут как пригодиться (например нагрузочное тестирование), так и не пригодиться (например тестирование .NET, WPF, Java, JavaFX, Silverlight, Flash, Flex… не нужное подчеркнуть)))
Теперь пройдемся по тому с чем я лично имел дело.
Canoo webtest (http://webtest.canoo.com) – неплохой тул, скрипты на ANT (со всей его мощью – например можно автоматически заливать билд, поднимать его, запускать тесты и т.п.). Но может быть не каждому тестировщику по зубам. Разработка довольно низкоуровневая, но проект развивается до сих пор.
Selenium (http://seleniumhq.org/) – мощный проект, мне наиболее симпатичен, развивается давно и довольно успешно. Имеет несколько ключевых ипостасей.
Есть клевый плагин для Firefox в котором можно и тесты писать и выполнять. Но под FF4 пока увы не работает.
Основная часть проекта – Selenium Remote Control – позволяет запускать тесты в разных браузерах на разных платформах, однако последние версии могут опять таки поддерживаться не в полной мере. Тесты писать можно на C#, Java, Perl, PHP, Python, Ruby плюс есть протокол для доступа из других языков (http). Под Ruby есть специфичные интеграционные подпроекты (Selenium on Rails, Selenium on Ruby), под PHP есть плагин который интегрирует с phpunit (но только под symfony 1.4.x).
Selenium Grid – очень мощная надстройка над Selenium Remote Control, которая позволяет тестировать в несколько потоков в различных браузерах на разных машинах одновременно.
В общем библиотека гибкая, с неплохим коммьюнити. Позволяет построить свою собственную мега систему. У проекта также есть несколько сателлитов:
Bromine (http://seleniumhq.org/projects/bromine/ http://brominefoundation.org) – это веб приложение для запуска SeleniumRC тестов. Были планы по интеграции Selenium Grid, но не знаю чем закончилось. Когда я с ним знакомился (в 2008 году) – был очень сырым. Тем не менее – последний апдейт от лета 2010 (версия 3.0Beta). Хотя в целом идея тула очень и очень неплоха. В яндексе делали что-то похожее (Aqua чтоли – обещали даже в паблик выложить, но не срослось видимо).
CubicTest (http://cubictest.org/)- надстройка над SeleniumRC с очень интересной концепцией. Построено на Eclipse с графическим расширением (GEF чтоли). “программирование” тестов происходит графически, визуальные блоки представляют собой страницы, правила проверки, переходы и т.п. Такого по-моему нет ни у одного IDE – даже коммерческого (если ошибаюсь – пожалуйста поправьте). Последний апдейт от весны 2010. Проект был очень интересным, однако жив или мертв сказать не могу. У меня в блоге можно найти ряд переводов документации по CubicTest (конец 2009го, начало 2010 гг) – http://hudson.su/tag/cubic-test/.
Ну вот вкратце так.
В целом, эта заметка отчасти повторяет мой доклад на SQADays’08 (http://hudson.su/?p=65) – в основном потому что вскоре после этого я отошел непосредственно от тестирования и стал заниматься руководством разработкой web-проектов. Но, и сейчас, погуглив по сети, я наткнулся на те же инструменты. Подросшие, возмужавшие, обросшие функционалом и коммьюнити )
В общем, надеюсь был полезен. Спасибо Сергею, за то что расшевелил мои серые клетки в этом направлении.
Касательно Selenium – есть отдельный сервис, платформа для тестирования от компании http://saucelabs.com/.
Кроме TDD (phpUnit), еще возможно использовать BDD – http://behat.org/.
http://saucelabs.com/ – интересная штука, спасибо!