С чего начать тестирование веб-приложения

testng
selenium
page-object
web
webdriver
ui
reactjs
dsl
Теги: #<Tag:0x00007fedc46dc720> #<Tag:0x00007fedc46dc540> #<Tag:0x00007fedc46dc3d8> #<Tag:0x00007fedc46dc270> #<Tag:0x00007fedb96cff30> #<Tag:0x00007fedb96cfcd8> #<Tag:0x00007fedb96cfb98> #<Tag:0x00007fedb96cfa58>

(Cat Shanon) #1

Ребята здравствуйте!
Есть веб-приложение на реакте с авторизацией.
Я собираюсь тестировать UI/UX.
Какие инструменты использовать для автоматизации в этом случае?
Понимаю, что для таких вещей page object не подойдет.
С чего посоветуете начать, есть ли бестпрактикс или примеры тестирования такого типа?
Что почитать?
Знаком с selenium webdriver, junit, pageobject.

Сразу оговорюсь, это мое первое приложение для тестирования и хочу использовать его как портфолио для поиска работы…


(rpwheeler) #2

А почему не подойдет? Page Object это один из вариантов разложения функционала на объекты-и-методы. В некоторых реализациях к нему добавляются еще и компоненты, скажем, если у нас все время одно и то же меню на каждой странице, то оно может быть представлено объектом MenuComponent.

Что меняется в случае с React? В любом случае по идее Вы можете представить находящееся на экране набором объектов и компонентов.


(Sergey Korol) #3

C React будет тяжело воевать, если нет коммуникации с разработчиками. Много закрытых компонентов, мало уникальных атрибутов.

У нас, к примеру, девелоперы очень сильно упрощали жизнь, добавляя кастомные атрибуты элементам. Для некоторых компонентов даже приходилось пробрасывать backdoor в виде ReactTestUtils объекта, с помощью которого можно было тригерить различные ивенты для закрытых элементов. С чартами тоже могут быть большие проблемы, если приложение рендерит лишь canvas, без svg.

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

PageObject с некоторыми оговорками можно все так же использовать. Просто несколько иначе его интерпретировать. У нас, к примеру, приложение было разбито на так называемые сцены, которые можно было создавать / удалять / перетягивать по странице. Исходя из такой постановки, родился SceneObject.

Правда основная проблема с одостраничными приложениями и PageObject концепцией заключается в том, что method chaining невозможно построить, следуя common практикам. Ведь чисто технически, один и тот же DSL метод одной сцены может привести вас на любую другую сцену в рамках одной страницы. Следовательно, мы не можем указать какой-то конкретный тип возвращаемого значения. Тут вам придется подумать о generic механизме перемещения между сценами (компонентами) приложения.

С другой стороны, это неплохая задачка для портфолио в плане презентации Java skills.

Если хотите поиграться на хардкорных компонентах, можете попробовать react-stockcharts. Еще интересный вариант - react-datagrid.


(Cat Shanon) #4

Все таки немного не понятно. Раньше я описывал страницу и называл это page object, теперь я работаю со сценами. Чем являются сцены? Это попросту компонент в реакте? Что такое DSL метод?


(Valentin G ) #5

Работаю с React аппликацией в текущем проекте. Использую C# + Selenium + SpecFlow. Наибольшая трудность в том, что немного сложно вычислять элементы, и надо манипулировать с wait’ами. А так обычная аппликация :slight_smile: .
P.S. И да, PageObjects тоже использую вполне успешно.


(Sergey Korol) #6

Это был пример конкретного проекта, где сцена - это некая абстракция, которая может включать в себя множество компонент / стилей / стор и т.п. В вашем случае такого может и не быть. React приложения бывают разные. Многое зависит от связки используемых библиотек.

DSL - domain specific language.