Евгений Степанищев

Я — эксперт в области разработки веб-приложений и безопасности в интернете. Каждый месяц мой блог посещают около 90 тысяч человек. Работаю техническим директором в «Системах документооборота», занимаюсь электронным правительством.

Функциональное тестирование и Selenium

Посмотрел «Selenium» — прекрасный, на мой взгляд, инструмент для автоматизации функционального тестирования. Из аналогов я нашёл только «Watir», но он мне показался сильно беднее (или только показался?). Платных аналогов много, в том числе от именитых IBM и HP, но хочется именно бесплатного.

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

Я пока использовал только версию для Firefox (дополнение Selenium IDE). Самый простой способ изготовить тест выглядит следующим образом: открываем Selenium IDE, создаём новый тест, подготавливаем браузер (переходим на страницу, с которой тест начнётся), жмём на красную кнопку записи (справа на панели инструментов), в браузере выполняем какие-то действия, останавливаем запись и смотрим что получилось.

После того как последовательность действий в браузере была записана «Селениумом», нужно посмотреть что получилось, возможно что-то поправить. Язык простой и очень понятный, нужно лишь немного знать английский. В своём первом тесте я лишь вынес в переменную вводимую строку, чтобы позже использовать её в assertion и переделал селектор элемента с XPath на CSS (элементы можно выбирать через XPath, CSS, DOM, ID элемента, regexp и ещё несколькими способами), а так же добавил сам assert, ведь «Селениум» не знает что является успешным завершением теста.

Вот простенький тест, который я записал, что проиллюстрировать принцип:
 сохраняем тестовую строку
store THIS-IS-TEST-STRING testPhrase

 открываем страницу в браузере
open /EvgenyStepanischev

 жмём на ссылку, в которой содержится указанное значение и ждём, когда браузер её полностью загрузит
clickAndWait link=EvgenyStepanischev / Тестирование

 жмём на ссылку, которая выбирается CSS-селектором
clickAndWait css=.edittab a.b-button-yellow

 печатаем
type postText ${testPhrase}

 жмём на клавишу с указанным ID
clickAndWait really_save_button1

 проверяем есть ли на странице наш текст
assertTextPresent ${testPhrase}
Чтобы тест выполнился, нужно указать для него базовый URL (по которому будет выполняться тест и нажать кнопку запуска теста и тест сьюта). На нашей внутренней «Вики» в «Яндексе» этот тест откроет мой кластер, найдёт там страницу «Тестирование», нажмёт на ней кнопку редактирования, напечатает в страницу «THIS-IS-TEST-STRING», сохранит изменение и убедится, что введённая строка появилась на странице.

Большинство потребностей покрывается языком «Селениума», для какие-то совсем уж сложных вещей можно использовать JavaScript (блок javascript { … }).

Есть возможность удалённого запуска тестов на нескольких браузерах и использование языков C#, Perl, Ruby, Python, PHP и Java, но я пока с этим богатством не разбирался, первые потребности вполне покрываются тем, что я уже знаю, дальнейшее — дело будущего.

Добавлено 22 ноября 2009 13:40: Андрей Ларионов подсказал ещё один бесплатный продукт — «Tellurium», но я не вижу преимуществ перед «Селениумом», зато вижу недостатки, например, усложнённый (по сравнению с «Селениумом») язык описания тестов.
8 комментариев
21 ноября 2009 19:08

mod_rewrite: просмотр списка правил только один раз

У модуля mod_rewrite сервера «Апач» есть особенность, которая иногда портит много крови — после каждого переписывания URL, он просматривает список правил снова. Если ничего не предпринять, иногда происходит зацикливание, что ввергает новичков в ступор.

Мне эта особенность ни разу не пригодилась, но избавляться от неё приходится постоянно. В комментариях на «Хабре» к статье, название которой я вынес в заголовок, подсказали очень хороший способ, добавить первым правилом следующее:
# Don't loop.
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]
Если перезапись URL уже происходила, то любой URL оставляем без изменений и следующего цикла обработки уже не происходит.
10 комментариев
21 ноября 2009 16:24

«Жаворонкам» о «совах»

Жена показала прекрасный текст в журнале пользователя r2r на «@дневниках» о том «как чувствует себя „сова“ в мире, где работают с 8:30». Если ещё не читали, прочитайте. Если вы, к тому же, ещё и «жаворонок», читайте обязательно!

Я именно так себя и чувствую, когда приходится вставать рано. Я — «сова». Нет, это нельзя исправить. Девять лет школы, четыре года техникума, пять лет в университете и везде приходилось приходить рано. Как я не старался, но я спал на уроках и первых парах, ничего с этим поделать нельзя. По статистике 15% людей — яркие «жаворонки» и «совы», нас не переделать.

Добавлено 21 ноября 2009 15:32: Бирман у себя в комментариях очень правильно написал: «сова — это не тот, у кого режим дня ложиться в 2-3, вставать в 10-11, а тот, у кого только при таком режиме получается нормально жить».
8 комментариев
21 ноября 2009 01:35

Олимпийка

Ехал сегодня в метро, от нечего делать разглядывал пассажиров (забыл новую книгу загузить в телефон), случайно обратил внимание на дедушку, у него под полурасстёгнутом пальто, виднелась олимпийка. Помните такую? Как новая, а ведь ей лет 20.

Я много лет, с самого детства не слышал этого слова, не вспоминал, но стоило увидеть характерного василькового цвета «олимпийскую» кофту с молнией на горле, и оно мгновенно пришло на ум. Я сейчас поискал в «Яндексе», оказывается олимпийки до сих пор продаются (например «Адидас» их выпускает), но у меня язык не поворачивается их так называть. По воспоминаниям детства, олимпийка — только советская и только синяя. Я не помню кто её носил, кажется папа, а может я сам, а может все.
8 комментариев
21 ноября 2009 01:20