Обзор – Не дожидаясь

Вначале, короткий анонс – у нас появился ещё один блог. О чём он? Подробности здесь.

Наш, в общем-то, небольшой тест работает около 5 минут. Напомним, мы пока тестируем два простых объекта приложения Recruiting – Websites и Account. Собственно, объекта Account, как такового, не существует – мы объединяем в него функции, связанные с логином и логаутом.

Для справки: наш Selenium Grid находится в Украине, а приложение SalesForce находится в США. А интернет у нас – 2 Mb ADSL от Укртелеком.

Кроме Websites, в приложении Recruiting есть ещё десяток объектов, причём гораздо более сложных, чем Websites. Конечно, тест каждого из них будет выполняться по возможности параллельно с остальными, но всё равно работа тестов может оказаться неприятно долгой. Уже сейчас стоило бы подумать о том, как можно придать им ускорение.

Один из способов сократить время тестирования – не ждать загрузки всей страницы до конца. Бывает, что всё, что необходимо для тестирования страницы, грузится очень быстро, а львиная доля ожидания уходит на догрузку какой-нибудь картинки.

Отлично иллюстрирует эту мысль страница логина SalesForce. Обратите внимание, как быстро загружаются поля ввода логина и пароля, и сколько грузится флешка справа.

Её и будем использовать для экспериментов.

Read the rest of this entry »

Вопросы к читателям
by Alex

Как вам должно быть уже известно, мы осваиваем нелегкое дело автоматизированного тестирования с использованием Selenium Grid. О нашем прогрессе мы регулярно отчитываемся в блоге. Одна из прелестных вещей, которые делают такими счастливыми тестировщиков – это выполнение тестов по расписанию и без участия самих тестировщиков. Мы тоже хотим немножко счастья и поэтому решили сделать для себя “запускалку”.

Делать что-то для себя – настоящая сказка для любого профессионала, а мы к таковым себя причисляем. Чувство всемогущества распирает изнутри и даже затмевает тот факт, что совершенно непонятно, как именно реализовать поставленную задачу. Ясно только одно – процесс составления расписания должен быть очень простым, удобным и позволять реализовывать наибольшее количество реальных сценариев. Поскольку наш опыт тестирования не столь велик, то мы могли бы создать интерфейс, устраивающий только нас. С другой стороны, нам стало интересно как это делают те, кто используют Selenium давно и на реальных приложениях. Тут то и родилась идея узнать об этом (и не только) у наших читателей.

Read the rest of this entry »

Обзор – Логам посвящается
by Dima

Теперь, когда классы, которые умеют тестировать страницы SalesForce, в общем-то сносно выполняют взятые на себя обязательства, чего нам не хватает?
Собственно, на этот вопрос мы ответили ещё в конце этого поста:

Сотворение – День первый (вечер)

1) нет фатальных ошибок – что бы ни случилось, тесты вращаются дальше с новыми ошибками;
2) логирование – в логах есть вся информация, но она совсем сырая, сложно обрабатывать;
3) уже можно немного запутаться в коде – мало комментариев;
4) никак не используется возможность выполнять тесты параллельно – у нас только один тест

и даже успели обсудить первую проблему.

Самое время заняться вторым вопросом – представлением и обработкой информации, полученной во время тестирования.

Вопрос, как должны выглядеть отчёты – а следовательно, что содержать логи – и как обеспечить удобную работу с ними, волновал нас уже давно.
Очень приятно, что твои тесты делают кучу рутинной работы по проверке элементов, но кто узнает об этом? Хочется, чтобы тесты подготавливали удобный отчёт о проделанной ими работе и найденных ошибках, а не текстовый файл, который и открыть-то страшно.

В версии 54, которую мы рассматривали, логи содержали практически всю информацию, которую можно было как-либо использовать для анализа ошибок. Но хранилась она в текстовом файле, и, честно говоря, постороннего человека могла скорее напугать, чем обрадовать. Кроме текстовых логов, делались скриншоты, а перед началом теста можно было установить уровень сообщений, которые будут записаны в лог (info, warn, error). Подробно об этом представлении логов написано здесь.

Нас волновали несколько вопросов, связанных с логами.

Read the rest of this entry »

Обзор – ‘Login’ объект или нет?
by Dima


С одной стороны, “Login” конечно же объект Recruiting, но с другой стороны без него никак не обойтись другим объектам приложения. Как быть?

Точнее будет сказать, что “Account” это объект, а “Login” это функциональная его часть. Посольку мы не создавали в приложении объект “Account”, то конечно же мы можем его и не тестировать. Мы можем этого не делать ещё и потому,что всё равно не сможем написать полный набор тестов для него.

Если мы будем рассматривать “Account” как отдельный объект, можно сравнить действия, которые с ним можно произвести, с действиями над другими объектами.

Если провести параллели, то регистрация учётной записи это добавление, тогда как логин это по сути поиск. Ну а редактирование или удаление такой записи обычно находится где-нибудь в настройках учётной записи, прячущихся где-нибудь за Settings или Profile в UI.

Так что полный набор тестов для объекта “Account” в общем случае должен включать – регистрацию, логин, логаут, редактирование профиля, включая восстановление пароля, а также удаление регистрационной записи.

Read the rest of this entry »

Обзор – О ‘фатальностях’ в тестах
by Dima


Ответу на вопрос
“После каких событий нужно останавливать все тесты?”
посвящается.

В этот раз мы сразу перечислим фатальныe ошибки, а потом расскажем более подробно о некоторых из них.

Итак, основной список фатальных ошибок:

1. Нет сервера Selenium
2. Неудачный логин
3. Отсутствует элемент
4. Нельзя сохранить запись с known-good-values (KGV) значениями
5. Появление неправильной страницы

Большинство из этих ошибок проявятся в самом начале тестирования. Если их не будет – думаю, дальше тесты будут работать без проблем.

Несмотря на это, мы добавили ещё несколько фатальных ошибок, которые при нормальной работе вроде бы не должны возникнуть, в дополнительный список:

6. Неудачная попытка заполнить поле значением
7. Cлишком много обычных ошибок

Read the rest of this entry »

Двигателю прогресса посвящается
by Igor


После окончания цикла постов о первой рабочей версии тестов на Java нам нужна была пауза для того, чтобы решить, о чём собственно писать дальше.
Пока мы пишем мемуары – то есть, описываем процесс, уже пройденный нами, заглядывая в наш внутренний командный форум. Но скоро, совсем скоро, процесс работы над кодом и публикации синхронизируются, и дальше процесс пойдет параллельно.

Если вы постеснялись спросить о версии на PHP – отвечаем. Алёна потеряла интерес к происходящему “на подмостках”. Так бывает – жисть она такая штука…

Версия лежащая в SVNе работоспособна и примерно соответствует версии 54 на Java. Мы не бросим PHP просто потому, что любим его. Саша будет вести дальнейшую работу над ней.

Итак – о чём мы будем писать дальше.

Read the rest of this entry »

Сотворение – День первый (вечер)
by Dima

Если в Setting.java установлены следующие настройки:

	public static final Boolean LOG_INFOS = true;
	public static final Boolean LOG_VERBOSE = true;

, практически каждое действие, которое выполняют тесты, будет отображено в логах.




Несколько примеров.

11:25:12,156 INFO pool-1-thread-1 utils:info:? - (V)Tab opening started
11:25:13,453 INFO pool-1-thread-1 utils:info:? - (V)Tab opened: title is Employment Websites: Home ~ Salesforce - Developer Edition

Read the rest of this entry »

Сотворение – День первый
by Dima

И Я сказал: да будет код! И тут стал код.

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

Перед тем, как начать писать код, который будет тестировать приложение SalesForce, мы провели ужасно много времени, уточняя для себя эту задачу. Результаты, которые мы хотим получить, что именно, в каком порядке и как именно будем проверять – всё это из, так сказать, первичного бульона, а скорее – каши мыслей, превратилось в довольно стройную систему, и дело осталось за малым – спуститься на землю.

Начнём с чего-то глобального – общих функциий, которые будут использовать другие классы.


Рисунок 1


Read the rest of this entry »

Сотворение – День первый (раннее утро)
by Dima

В качестве утренней зарядки предлагаем запустить первую работоспособную версию тестов на Jave (Revision 54). Мы исходим из предположения, что среда уже установлена. Один из вариантов описан нами в ‘Установка среды’.

Самое главное – вам понадобится собранное приложение Recruiting (на самом деле, пока будет достаточно иметь только объект Employment Websites этого приложения).

При создании Recruiting хорошо бы точно следовать инструкции – до буквы. Иначе, будет много ошибок и в них будет сложно разобраться. Для последней версии тестов это не критично – как раз все отклонения будут удобно предъявлены (но мы будем обсуждать её позже).

Если у вас нет приложения, то вам придётся ограничиться анализом кода и просмотром лог файлов (в следующей публикации). Ну, а если вы потратили время и всё-таки собрали приложение Recruiting, – остаётся лишь настроить запускалки и сконфигурировать тесты.

Сначала достаём требуемую версию из SVN репозитория…

Рис. 1 http://deepshiftlabs.com/svn/tests/trunk/salesforce/java

Read the rest of this entry »

Анатомия теста by Igor

К сожалению, для вас, дорогие читатели, работаем мы гораздо быстрее, чем публикуемся. Где бы найти часы с циферблатом на шестнадцать, которыми, по нашим сведениям, пользуются все подробно пишущие о своей работе?

Вот и сейчас пишу и ловлю себя на мысли о том, что описываю наше понимание около трёх месяцев назад. Где-то я уже это слышал? Кажется в планетарии, в детстве? Про свет далёких звёзд, который доходит до нас через миллионы лет …, а на языке почему-то упрямо вертится рекламный слоган “Оставайтесь с нами ещё три месяца, чтобы узнать о нашем сегодняшнем понимании тестирования, и вы не пожалеете!”

Наша задача сегодня прооперировать такой просто-непростой организм Рекрутингового социума как ‘Веб сайт’.

В процессе операции мы напишем подробную инструкцию по тестированию каждой его части в отдельности и сообща. Так заточим наши скальпели, господа, дадим пациенту хлороформу и приступим, помолясь!

Рис. 1 Пациент


Read the rest of this entry »

Заблудились? Зайдите в архив.