Selenium WebDriver – это, фактически, стандарт для автоматизации Web UI. Отличный инструмент, но, как и все хорошее, зачастую используется неправильно. У меня много вопросов к использованию Selenium WebDriver, и сейчас вы узнаете об этом все!
WebDriver «Юнит-тесты»
«Юнит-тесты на WebDriver» напоминают квадратные круги – они по определению неверны логически. Если мне не изменяет память, юнит-тесты – это тесты белого ящика, что подразумевает прямой доступ к коду продукта. Тесты Web UI, использующие WebDriver – это тесты черного ящика, так как они взаимодействуют с активным, запущенным сайтом. Следовательно, они выше уровня юнит-тестов по определению. Не надо их так называть.
Современные тестовые фреймворки – это комплексные утилиты с богатым фунцкионалом. При помощи JUnit или TestNG можно написать тесты практически любой сложности. Тем не менее, такое богатство функционала зачастую избыточно. Если ваша задача – автоматизировать небольшое мобильное приложение, или вы только начинаете работать с автоматизацией, использование универсальных фреймворков не всегда будет оправдано. Многообразие возможностей и большое количество кода могут отпугнуть начинающих от написания автотестов.
В такой ситуации помогут специализированные фреймворки. Один из таких фреймворков – Cucumber – проектировался как фреймворк для приемочного тестирования, поддерживает Behavior Driven Development, а разработка в нем ведется на языке Gherkin. Этот язык близок к естественным языкам, и код на нем выглядит куда более дружелюбным. Конечно, за шагами Cucumber также стоит некоторое количество кода, но гранулярность и понятность самих шагов облегчает его написание.
В этом видео я рассказываю о префиксах Given, When, Then, And и Or, и об их правильном использовании в тестах.
Трудно ли автоматизировать мобильные приложения с нуля?
Нужно разобраться в инструментах, выбрать из них подходящие, подобрать правильные версии утилит, настроить их работу, а потом ещё и написать код.
Кажется сложным? Вы не одиноки — эта сложность останавливает многих. Порог вхождения в мобильную автоматизацию довольно высок, ведь инструменты только развиваются, а информации о них не так много. Но решать задачу надо, иначе качество вашего приложения не будет достаточным.
На мастер-классе в Екатеринбурге Арсений Батыров рассказывал, как развернуть автоматизацию мобильного приложения на Android с нуля. Ученики установили и настроили все нужные утилиты, запустили эмуляторы и написали первые тесты. На сложную логику времени не хватило, зато каждый смог настроить свою машину, подключить девайс и написать рабочий тест. Продолжить автоматизировать можно будет самостоятельно: всё-таки разбираться в рабочем процесс гораздо проще, чем начинать с нуля.
В моей компании мы внедрили автоматизированную визуальную регрессию в нашу стратегию тестирования для трех продуктов. Мы выбирали разные фреймворки для внедрения, и мы используем автоматизированное визуальное регрессивное тестирование с немного разными целями в каждой команде. В этой статье я делюсь концепцией автоматизированной визуальной регрессии и привожу конкретные примеры ее использования.
Что такое визуальная регрессия?
Внешний вид веб-приложения обычно определяется каскадной таблицей стилей (CSS). Ваш продукт может использовать другую разновидность CSS – например, SCSS, SASS, LESS. Все они описывают формат и развертку вашего пользовательского веб-интерфейса.
Когда вы вносите изменения в продукт, вы, скорее всего, меняете его внешний вид. Вы можете намеренно работать над задачей дизайна – к примеру, исправлять отображение модального диалогового окна – или же разрабатывать часть функциональности, которая проходит через пользовательский интерфейс, что означает, что вам придется менять содержание экрана – к примеру, добавлять поле логина к банковской учетной записи. В обоих случаях вам, возможно, нужно внести изменения в таблицу стилей.
Переход к модели непрерывной поставки ПО повлиял на растущую популярность автоматического тестирования. DevOps тоже голосуют за слом барьеров между традиционными ролями. Тестировщики, умеющие программировать (на самом деле этим автоматизаторы и являются) очень здорово встраиваются в эту новую парадигму.
Автоматизация тестирования предлагает множество потенциальных выгод, включая повышенную эффективность и предоставление работоспособного метода решения сложных задач тестирования. Автоматизирование тестов также дает повышенную систематичность, позволяя более эффективно использовать ресурсы в период провала нагрузки. Однако автоматизация – не панацея. Дабы осознать потенциал автоматизации, нужно быть в курсе трех распространенных ошибок автоматизации тестирования.
Друзья, всего 14 дней осталось до конференции TestCon Moscow 2018! Программа уже окончательно сформирована, спикеры во всеоружии. Вас ждут два полных дня докладов, целый день практических мастер-классов, игры, призы и сюрпризы.
А пока доклад Лилии Сапуриной «Разработка автоматизированной системы тестирования «с нуля»: основные проблемы и способы их решения», вызвавший в прошлом году много дискуссий.
В этом докладе автор описывает основные этапы построения автоматизированных систем тестирования. На основании своего опыта работы в крупной компании с установленной непрерывной интеграцией и разработанной практикой по использованию автоматизации Лилия рассказывает, как построить подобную систему в небольших компаниях, где весь процесс необходимо создавать с нуля.
В рамках прошедшей онлайн-конференции для тестировщиков КоТэ было проведено несколько мастер-классов.
Мы публикуем мастер-класс от Алексея Баранцева, на котором он показал как строить локаторы и рассказал о конкретных приемах и правилах, которыми он руководствуется при построении локаторов, чтобы они получались хорошими.
Автоматизация тестирования REST API на сегодняшний день является актуальной темой в интеграционном тестировании. В этой статье мы поговорим о программе Postman, применяемой для тестирования REST API, рассмотрим несколько интересных методов написания автотестов и на примере реального проекта API «Яндекс.Словарь» разберем несколько тестов.
Нам понадобится
Для того, чтобы начать тестировать «Яндекс.Словарь», нам понадобится:
Знание основ программирования. Достаточно владеть такими понятиями, как:
Проектируя автоматизированные UI-тесты, за годы работы я затвердил себе, что начинать надо с минимально валидными записями в системе. При таком подходе высвечиваются ложные предположения в различных частях системы, которые вряд ли были бы пойманы юнит-тестами.
Как я уже писал, я стараюсь настраивать тестовые данные для UI-тестов через системное API (даже если API – это чистый SQL, это все равно хорошая практика). В этом случае, когда ваш браузер стартует тест, все данные уже на местах.
К примеру (который большей частью правдив), предположим, что у вас есть запись в системе для Пользователя, и единственное необходимое поле для этой записи – это «Фамилия». Если вы начнете проектировать тесты с записями, где указана только «Фамилия», вы быстро обнаружите, где система предполагает наличие еще и «Имени», «Адреса, «Почты» или «Телефона». Чтобы узнать об этом больше, прочитайте хорошо известную статью "Falsehoods Programmers Believe About Names"
Недавно я столкнулся с особенно интересным подобным случаям, тестируя запись с полем, содержащим пустую строку. Я обнаружил, что часть системы, в которой я должен был иметь возможность удалить запись, не дает мне этого сделать: не хватает того самого поля. Система ожидала, что в этом поле будет текстовая строка, и собиралась произвести split() операцию над определенным символом этой строки, что вернуло бы массив символов, разделенных этим.