Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Какие паттерны програмирования вы используете в автоматизации?

design-patterns
framework
Теги: #<Tag:0x00007f7b6977c298> #<Tag:0x00007f7b6978bf18>

(toyen) #1

Начала изучать паттерны для личного развития. И вот интересно какие лучше всего и в каких ситуациях можно использовать в автоматизации. Например, каким образом можно использовать паттерн Стратегия я вижу. А вот что касается других, например Наблюдатель, Фабрика… Знаю, что преследовать идею использовать все и вся глупо. Просто думаю, что на конкретных примерах изучение пойдет легче. Спасибо


(Sergey Pirogov) #2

Фабрика для страниц, либо компонентов, либо елементов. Вообще если на джаве, то нужно юзать спринг, а вместе с ним все паттерны =)


(James May) #3

для автоматизации?


(Sergey Pirogov) #4

Да, вы не используете?


(James May) #5

Нет, как-то не приходилось. Теоретически про связку JBehave + Spring слышал, но как-то не видел в этом особого смысла


(Sergey Pirogov) #6

JBehave+Spring - это такое, спринг можно использовать и без JBehave,Spring + TestNG = связка которая решает


(James May) #7

для самообразования, Вы не могли бы привести пример?


(Sergey Pirogov) #8

Почему для самообразования. Для того чтобы решать инженерные задачи. Применение спринг позволяет быстро и легко управлять зависимостями, скажем вот как вы решаете проблему инициализации страниц? Я решаю так:

@Component
class MainPage{

}
class Test{
@Autowired
MainPage mainPage;
}

(Vadim Chehovich) #9

Если я не ошибаюсь, то тестовый класс должен наследоваться от AbstractTestNGSpringContextTests (в случае с TestNG), как-то можно избежать этого наследования?


(Sergey Pirogov) #10

В Spring 4.x помоему можно просто обойтись аннотацией? А чем вам наследование мешает?


(Vadim Chehovich) #11

Мне просто нужно наследоваться от другого класса в тестовом классе.


(Sergey Pirogov) #12

наследуйте тот класс от AbstractTestNGSpringContextTests. Конечно было бы приятнее, если бы был интерфейс, но увы


(Vadim Chehovich) #13

Действительно, можно и так, спасибо.


(James May) #14

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

По старинке, инициализацией объекта

Удобно. Возьму на заметку.


(sidelnikovmike) #15

Спринг в автотестах… Не надо так…)
Вместе с спрингом придет очень много того, что вам не нужно.


(Sergey Korol) #16

Думаю, многие оценят, если вы зальете пример работы со спрингом в нашу БЗ. :wink:


(Sergey Pirogov) #17

Например?


(Максим Таран) #18

У нас из шаблонов в основном Builder и фабрика. Используются для создания объектов близких по смыслу, но немного по разному обрабатывающихся приложением.


(Mikulasi) #19

Для автоматизации UI использую паттерн Page Object или Screen Object в мобильной автоматизации


(sidelnikovmike) #20

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

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