Презентация Selendroid

Презентация работы Selendroid, а также немного о том, как устроено тестирование в ebay.

P.S. Также у Dominik Dary есть довольно много интересного.

Клиент для OpenVPN под Windows

Обновил ноутбук, начал настраивать OpenVPN, стал разбираться и выяснил, что лучше использовать клиент от openvpn.net. Много ссылок по этому вопросу ведет на openvpn.se, их клиент не завелся ни под каким соусом, даже рецепты из гугла не помогли.

Jenkins CI и пользователи

Если вам с билд Jenkins CI нужно прокинуть ид юзера можно использовать плагин Build User Vars Plugin, подробнее

PHPUnit и dataProvider

Немногие знают, но PHPUnit при каждом запуске файла с тестом, выполняет все провайдеры, которые в нем есть, независимо от того, будет выполняться тест или нет, пример.

Установка Jenkins CI

Добавил статью об установке Jenkins

VirtualBox, VPN и DNS

Если у вас есть проблемы с подключением к внутренним ресурсам vpn с виртуальной машины, вот лекарство:

...\VirtualBox>VBoxManage modifyvm "myvm" --natdnsproxy1 on

...\VirtualBox>VBoxManage modifyvm "myvm" --natdnshostresolver1 on

Jenkins и русский язык

Jenkins по умолчанию использует кодировку ANSI_X3.4-1968, из-за этого весь русский текст ломается. Чтобы это исправить необходимо ее указать в параметрах запуска, добавив параметр file.encoding, пример:

 -Dfile.encoding=UTF-8

Для этого открываем /etc/default/jenkins и находим переменную JENKINS_ARGS и добавляем наш параметр, должно получится примерно так:

JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT -Dfile.encoding=UTF-8"

Группы тестов

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

    /**
     * @group slow
     * @group brain
     */
    public function testOne() {
        $this->assertTrue(true, 'Fuck my brain, true not true');
    }

Запускаем: с параметром --group. В других фреймворках для тестирования есть похожий функционал.

Оси XPath

Нашел хорошую схему, наглядно показывающую оси XPath:

Используя Selenium старайтесь его не использовать

Selenium (Selenium RC, Selenium Server, Selenium WebDriver) замечательный продукт, но есть у него недостаток - сравнительно медленно работает. Поэтому при написании тестов задумайтесь, действительно ли он вам нужен ? Например: форма подгружает некоторые данные через аякс, напишите скрипт который будет эти данные проверять, и тогда при помощи Selenium вам придется сделать минимум проверок этих данных.

Общее правило: если что-то не требует браузерного окружения, значит скорее всего для тестирования этого Selenium не нужен.

Virtualbox/VMware и OpenVPN под Windows 7

Недавно столкнулся с неприятной ситуацией: виртуалка(VirtualBox, VMware) после установки на хостовом компе соединения через openVPN переставала видеть хостовой компьютер. Решение проблемы - отключить файрвол (этого лучше не делать ) или прописать правила на файрволе.

P.S. Вообще корень проблемы в роутах, которые прописывались при подключении, но поправить настройки файрвола проще.

Краткое описание задач как экономия времени

Некоторые, когда создают задачи пишут очень кратко, аргументирую: у меня нет времени, потом спросят, я объясню. В результате этой как бы экономии времени, время совершенно не экономится, потому что:

  1. Подошел разработчик(непосредственный исполнитель), отвлек от текущей работы, объяснил.
  2. Подошел тестировщик, отвлек ....
  3. Кто-то из вышеперечисленных не смог пододойти из-за отсутствия того, кто может объяснить, в результате они простаивают.

В результате получается, что времени на объяснение задачи уходит гораздо больше, т.к. время тратится не только на то чтобы объяснить, но и «вернуться» в задачу.

Покрытие кода тестами на 38 попугаев

Некоторые любят заявить о том, что их код покрыт тестами на 100%(или любое другое число :)). Но что это значит ? Это означает, что в процессе запуска тестов выполняются 100% кода. Это конечно хорошо, но в общем-то ничего не значит. Вот пример:

function getFive() {
    DB::query('INSERT INTO ....');
    return 5;
}

И соответственно тест:

function testGetFive() {
    $this->assertEquals(5, getFive());
}

Казалось бы код выполняется весь, но не проверяется что пишется в базу, и это может привести к ошибкам в работе программы. Поэтому с таким же успехом, можно заявить что «наш код покрыт тестами на 38 попугаев».

P.S. Речь исключительно о том, что параметр "покрытие кода тестами" очень абстрактен, а не о том, что не нужно писать тесты.

Логирование запросов в PostgreSQL

Открываем конфиг postgresql, в Ubuntu он распологается в /etc/postgresql/9.1/main/postgresql.conf, в других дистрибутивах может лежать немного в другом месте.

log_directory = '/tmp/' # в какой каталог писать логи, я у себя пишу в /tmp/, чтобы система не засорялась логами
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # маска имени файла
log_statement = all 
log_min_error_statement = error

Sublime Text 2

Есть замечательный текстовый редактор Sublime Text 2. Мало весит, умеет автокомплит, имеет очень приятную цветовую гаму по умолчанию, но при этом легко можно все перенастроить под себя.

Теоретически он платный, но не жадный, просто раз в день выскакивает сообщение с предложением оплатить.