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

04.04.2012

selenium

В последних проектах активно использую Selenium для функционального тестирования. В процессе написания тестов столкнулся с несколькими подводными камнями и в данном посте хочу рассказать о том как с ними бороться. Я думаю пост будет полезен тем, кто только начал использовать Selenium, в том числе для тестирования Yii приложений. Итак, поехали… Читать запись полностью »


Используем ab для тестирования производительности web-приложения

14.03.2012

Важной частью разработки web-приложения является тестирование производительности. Часто при постановке задачи заказчик требует чтобы сервис выдерживал определенную нагрузку. В процессе профилирования и оптимизации полезно отслеживать, как изменилась скорость работы приложения при новых условиях. Для этой цели можно использовать Apache HTTP server benchmarking tool.

Читать запись полностью »


Yii + Selenium на debian 6

08.03.2012

Для функционального тестирования в Yii используется Selenium. На debian и ubuntu при запуске тестов выдается ошибка:

Result is neither "true" nor "false": 'OR Server Exception: sessionId led to start new browser session: Browser not supported

В попытках решить данную проблему были испробованы чуть меньше чем все версии selenium и огромное количество браузеров. Однако что бы я не делал результата это не давало. Как оказалось selenium не получает настройки от yii (protected/tests/phpunit.xml) и по-этому не знает какой браузер использовать. Для решения этой проблемы я установил браузер по-умолчанию при запуске selenium’а следующим образом:

DISPLAY=:0 java -jar selenium-server-standalone-2.20.0.jar -forcedBrowserMode "*googlechrome"

После этого все заработало, но очевидно только в том браузере который указан параметром forcedBrowserMode. Мне таким образом удалось запустить firefox и google chrome последних версий, на selenium rc 1.0.3 и selenium sever 2.20

Читать запись полностью »


Codeception проблема с русскими символами в utf-8

29.02.2012

Разбираюсь с codeception. В acceptance тестах возникла проблема с распознаванием русских символов в utf-8:

<?php
$I = new WebGuy($scenario);
 
$I->wantTo('see right title');
$I->amOnPage('/');
$I->see('Заголовок на русском');

При этом тест фейлится, хотя логах можно увидеть, что заголовок установлен правильно. Для решения этой проблемы необходимо установить следующий meta-тэг:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >

Только после этого у меня получилось заставить тест показать зелёный цвет. Другие способы установки кодировки не сработали (ни через php, ни через apache), хотя при просмотре заголовков кодировка была установлена в utf-8. Видимо это какая-то особенность Goutte Web Scrapper’а, который используется в модуле PHPBrowser.


Ускоряем обработку изображений

24.02.2012

Всем привет! Сегодняшний пост посвящен производительности при обработке изображений. Почти в каждом проекте требуется обработка изображений, например, ресайзинг, поворот, обесцвечивание и т.д. Для этих целей я использовал широко известное решение, написанное на php и работающее с расширением GD – class.upload.php. До тех пор пока в проектах в основном изображения загружались через админку меня это решение полностью устраивало. Но в одном из последних проектов изображения являются одним из главных видов контента и загружаются пользователями в больших объемах. При профилировании я заметил что процесс ресайзинга и обработки изображений занимает очень много времени. Особенно это бросалось в глаза при использовании функции «повернуть изображение», которая должна делать ajax-запрос и отображать повернутое изображение пользователю. При достаточно большом разрешении изображения скрипт падал по timeout не успев вложиться в 30 с в других случаях была очень большая задержка. Далее я опишу каким образом была решена данная проблема и предоставлю несколько результатов тестов для сравнения.

Читать запись полностью »


Получаем HTTP-заголовки запроса в PHP

08.02.2012

Привет всем! Краткая заметка на тему того, как получить http headers запроса, который инициировал выполнение скрипта. Также стоит отметить, что в данном случае я использую php, как fastcgi, по-этому некоторые функции, которые позволяют решить поставленную задачу, не подходят.

Читать запись полностью »


GeoIP средствами Nginx

21.10.2011

nginx logo

Часто при разработке сайтов появляется необходимость определения местоположения пользователя. Например, таким образом можно выдавать различные версии сайта для аудитории из разных стран. Также можно использовать данную возможность для балансировки нагрузки и назначать пользователю тот сервер, который находится ближе всего. Для реализации данной функции можно воспользоваться средствами Nginx, прикрутив к нему одну из доступных в сети баз данных по GeoIP.

Читать запись полностью »