-
-
-
-
URL copied!
Автор: Олексій Волошин, Senior QA Automation Engineer, Consultant, GlobalLogic Ukraine
Окрім мов програмування, якими може бути написаний код для автоматизації тестування web-застосунків, радимо вивчити шаблони програмування, для використання їх разом з фреймворком Selenium. Їх, насправді, існує дуже багато, і не всі, відверто кажучи, корисні.
У цій колонці ми розберемо декілька найефективніших патернів програмування та покажемо їхнє застосування на проєкті. Поїхали!
Для початку, відповімо на питання:
Для чого потрібні шаблони?
Шаблони програмування, це свого роду, методики, які можуть допомогти розробнику розв'язати певні проблеми у певних ситуаціях. Іншими словами, вони можуть значно полегшити щоденну рутину то зробити проєктування більш оптимальним процесом.
Усі шаблони поділяють на три типи:
- Породжуючі (Creational)
- Структурні (Structural)
- Поведінкові (Behavioural)
Ми розглянемо шаблони з усіх цих типів на прикладі реального проєкту. Забігаючи наперед скажу, що проєкт досить простий, адже був написаний для того, щоб наочно продемонструвати, як можна вдосконалити код, використовуючи різні типи шаблонів. У нашому випадку це буде 8 патернів.
#1 Page Object
Автоматизовані тести з використанням шаблонів я проводитиму на сайті automationpractice.com. Перший шаблон, який я застосував, для тестування, це - Page Object. Цей патерн є одним з найбільш часто використовуваних архітектурних рішень в автоматизації. Проте, і один з тих, що найбільше піддається критиці розробників. Оскільки, шаблон містить досить багато коду на початку, його або досить важко розвернути молодому тестувальнику, або досить затратно з точки зору часу.
Але є і суттєві переваги даного рішення: для кожної сторінки веб додатку, що тестується, Page Object створює клас, в якому описуються веб елементи, які є на цій сторінці, та методи по взаємодії з ними. Тобто, з його допомогою ви можете створити окремі об’єкти та суттєво зменшити кількість коду, тому що одні й ті ж об’єкти сторінок можна використовувати у різних тестах.
Ось як виглядає Page Object у коді.
#2 Page factory
Другий шаблон, який ми розглянемо, це - Page Factory, який часто використовується у зв’язці з Page Object. Page Factory, це патерн який використовується для того, щоб ініціалізувати ваші сторінки та елементи на них. Як саме? Подивимось на прикладі.
#3 Builder
Цей патерн дозволяє розбити алгоритм створення складного об’єкта на окремі процеси. На додаток, він дозволяє уникнути так званого "хардкоду" та можливих помилок при копіюванні даних. Ось як це виглядає на практиці.
#4 Singleton
Цей шаблон допомагає створювати єдиний об’єкт instance класу і надає до цього об’єкту точку доступу. Насправді, використання цього шаблону в автоматизації дещо обмежене, проте знати його однозначно буде корисно. Глянемо, як він реалізується на нашому проєкті.
#5 Facade
Цей патерн дозволяє "заховати" складну систему класів за "гарним фасадом’’, тобто простим інтерфейсом. Ось як виглядає цей шаблон у коді.
#6 Strategy
Шаблон використовується коли потрібно визначити типи алгоритмів, які часто змінюються та винести їх у власні класи - стратегії. Щоб описати цей шаблон більш детально, я пропоную розглянути діаграму нижче:
Припустимо, що у нас є певний інтерфейс, який містить абстрактний опис методу doOperation. Цей метод імплементується декількома класами (у нашому прикладі - це математичні операції). Відповідно, метод doOperation має три види реалізації. І в цьому і є суть цієї стратегії. А тепер подивимось як реалізується даний шаблон на нашому проєкті.
#7 Decorator
Використання цього шаблону допомагає нам додавати новий функціонал до об'єкта, "огортаючи" його новими листами, не змінюючи при цьому його суть. Такий підхід часто називають Cabbage principle, або принципом матрьошки. Реалізується він на проєкті наступним чином.
#8 Factory
Фабричний метод це шаблон проєктування, який визначає загальний інтерфейс для створення об’єктів у суперкласах, дозволяючи при цьому підкласам змінювати тип об’єктів, які створюються. Якщо провести аналогію, то можна уявити собі фабрику, з якої логістика здійснюється кількома способами, і, власне, отримати те, що нам потрібно, ми можемо зробивши конкретний запит. А тепер пропоную подивитись, як цей метод виглядає у коді.
Власне, це був останній шаблон, який би ми хотіли сьогодні розібрати. Впевнені, що використання шаблонів з цього списку значно полегшить вам написання коду!
P.S. А ось посилання на проєкт, що ми створювали, на GitHub
Top Insights
Python: чому вивчати та з чого почати?
InsightsSoftwareAutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologyТонкощі CV або Як скласти та куди надіслати,...
HRAutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologyCI/CD для JS розробників. Частина перша – теорія
DevelopmentSoftwareAutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologySoft and Hard Skills: Що важливіше? Розповідь одного...
HRAutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologyТОП автори
Категорії блогів
Давайте співпрацювати
Схожі теми
Мережеві основи
Основні поняття мереж Мережі забезпечують зв'язок між комп'ютерами, пристроями та користувачами навіть на великих відстанях. Вони є основою для спільної роботи, комунікації та обміну ресурсами. Мережа — це система, у якій два або більше комп'ютерів та інших пристроїв з'єднані між собою для обміну даними та ресурсами. Вони можуть бути локальними (LAN), розширеними (WAN), бездротовими (Wi-Fi) … Continue reading Deep dive into using patterns with Selenium: огляд 8 шаблонів, що стануть у пригоді →
Більше
Основи операційних систем
Windows, Linux, macOS: порівняння та особливості У світі комп'ютерів три операційні системи відіграють ключову роль: Windows, Linux та macOS. Кожна з цих систем має свої унікальні особливості та призначення, що робить їх популярними серед різних категорій користувачів. У цій статті ми розглянемо ці три операційні системи, їхні переваги та особливості. Windows Windows — найпопулярніша операційна … Continue reading Deep dive into using patterns with Selenium: огляд 8 шаблонів, що стануть у пригоді →
Більше
Основи інформатики та програмування
Вступ до інформатики та IT-сфери Інформатика та технології інформаційної обробки є дверима в швидкоплинну та захоплюючу сферу — сферу інформаційних технологій (IT). У світі, де відсутність доступу до інформації може виявитися прогресивною перешкодою, розуміння основ інформатики та IT-сфери стає критичним для кожної людини. Що таке інформатика та IT-сфера? Інформатика — це наука про обробку та … Continue reading Deep dive into using patterns with Selenium: огляд 8 шаблонів, що стануть у пригоді →
Більше
Як зберігати і підвищувати власну продуктивність в ІТ
Артур Мицко, Lead Software Engineer, GlobalLogic У компанії Globallogic я пройшов шлях від С++ trainee до Lead Software Engineer. Як зазвичай буває, коли людина приходить в ІТ-компанію вперше — все навколо нове та цікаве, ти не помічаєш як летить час. Чесно кажучи, в перші роки я не сильно то і відпочивав, переважно на свята. Це, … Continue reading Deep dive into using patterns with Selenium: огляд 8 шаблонів, що стануть у пригоді →
Більше
Як покращити ресурсний стан через оточення
Катерина Васильєва, Senior HRBP, GlobalLogic Ресурсний стан як поняття, яке використовується в психології, медицині, спорті та інших галузях, описує психофізіологічний стан людини, який характеризується рівнем її енергії, витривалості, здатності до праці та концентрації уваги. Відповідно, ресурсний стан впливає на різні аспекти життя людини, і визначається різними чинниками, як то рівень фізичного здоров'я, ступінь стресу або … Continue reading Deep dive into using patterns with Selenium: огляд 8 шаблонів, що стануть у пригоді →
Більше
Як стати .NET розробником. Перші кроки та поради
Олексій Глембицький, Senior Software Engineer, GlobalLogic Мене звати Глембицький Олексій, я .NET розробник в компанії GlobalLogic, а також проводжу вебінари та викладаю курси по мові програмування С#. І в цій статті я би хотів поділитись порадами, які допомагають моїм студентам опанувати мову програмування С# та стати .NET-розробниками. Про мову програмування C# та платформу .NET C# … Continue reading Deep dive into using patterns with Selenium: огляд 8 шаблонів, що стануть у пригоді →
Більше
Як покращити презентації
Денис Братчук, Engineering Director, GlobalLogic Майже кожен з нас час від часу виступає із презентаціями чи доповідями, використовуючи як ілюстрацію слайди, створені в популярних офісних програмах, на кшталт PowerPoint або Google Slides. Менеджери проєктів створюють звіти про хід виконаних робіт, інженери презентують новітні технологічні рішення, керівництво звітує про досягнення фінансових цілей, а менеджери з продажів … Continue reading Deep dive into using patterns with Selenium: огляд 8 шаблонів, що стануть у пригоді →
Більше
Від студента до Trainee-спеціаліста: історія випускника С++ GL BaseCamp
Почати шлях в ІТ під час навчання в університеті — ще той виклик, який вимагає наполегливості і постійної практики. Сергій Піскурський, студент та Trainee Specialist GlobalLogic, приєднався до компанії після проходження С++ GL BaseCamp. Хлопець поділився досвідом навчання перед курсом та підготовки до С++ GL BaseCamp. Чому ти вирішив вивчати С? Коли я почав думати … Continue reading Deep dive into using patterns with Selenium: огляд 8 шаблонів, що стануть у пригоді →
Більше
Share this page:
-
-
-
-
URL copied!