Особливості структури проєкту із використанням патернів проєктування PageObjectта PageFactory
Дослідження тест-кейсу створення нового акаунту на сайті. Написання відповідних авто-тестів із використанням патернів проєктування PageObject та PageFactoryта із застосуванням програмних бібліотек Selenium-java, WebDriverManagerта фреймворку TestNG.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | украинский |
Дата добавления | 06.07.2023 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Івано-Франківський національний технічний університет нафти і газу
Особливості структури проєкту із використанням патернів проєктування PageObjectта PageFactory
Віра Гарасимів,
кандидат технічних наук, доцент кафедри комп'ютерних систем і мереж
Тарас Гарасимів,
асистент кафедри комп'ютерних систем і мереж
м. Івано-Франківськ
Анотація
Стаття присвячена дослідженню особливостей структури проектів із використанням патернів проєктування PageObjectта PageFactoryдля написання авто-тестів. У якості мови програмування обрано об'єктно-орієнтовану мову програмування Java, а проекти створено в IntelliJIDEA.
Розглянуто тест кейс створення нового акаунту на сайті. Написано відповідні авто-тести із використанням патернів проєктування PageObjectта PageFactoryта із застосуванням програмних бібліотек Selenium-java, WebDriverManagerта фреймворку TestNG. Інформація, яка є необхідною для успішного створення нового акаунту на сайті, зчитується з файлу, який має розширення propertiesта зберігається у папці resources. Сформано звіт успішності проходження представленого авто-тесту.
Кожну сторінку веб-додатку представлено окремим класом, в якому знаходяться методи, що будуть працювати з ними. Веб-елементи є прихованими (private) та зберігаються окремо у проєкті, де використано лише патерн проєктування PageObject. Методи класів сторінок повертають нові об'єкти класів сторінок відповідно до написаного тестового сценарію. Скрипт авто-тестів відокремлено від веб-елементів та методів, що імітують дії користувача.
Також використовуючи анотації @BeforeSuite, @AfterSuiteта @BeforeClass, створені методи, які відповідають початку та завершенню кожного тестового набору.
Наведено структури проєктів із використанням патерну PageObjectта PageFactory. Так як патерн проєктування PageFactoryє добре оптимізованим та використовується для ініціалізації об'єктів сторінки або для створення об'єкта самої сторінки, він спрощує структуру проєкту. Веб-елементи відповідних сторінок зберігаються у відповідних класах, в не окремо від них.
Ключові слова: проєкт, патерн проєктування, PageObject, PageFactory, авто-тест, веб-елемент, веб-додаток, фреймворк.
Abstract
акаунт сайт патерн програмний
Vira Harasymiv
Candidate of Technical Sciences, Associate Professor at the Computer Systems and Networks Department, Ivano - Frankivsk National Technical University of Oil and Gas, 15 Karpatska str., Ivano-Frankivsk, Ukraine,
Taras Harasymiv
Assistant at the Computer Systems and Networks Department, Ivano-Frankivsk National Technical University of Oil and Gas, 15 Karpatska str., Ivano-Frankivsk, Ukraine
Features of the project structure with using the page object and page factory design patterns
The article is devoted to the study of the features of the project structure using the Page Object and Page Factory design patterns for writing auto-tests. The object-oriented programming language Java was chosen as the programming language, and the projects were created in IntelliJ IDEA.
The test case of creating a new account on the site is considered. Corresponding auto-tests are written using the PageObject and PageFactory design patterns and using Selenium-java, WebDriverManager and the TestNG framework. Information that is necessary for successfully creating a new account on the site is read from a file with the extension properties and stored in the resources folder. A report on the success of passing the presented auto-test is created.
Each page of the web application is represented by a separate class that contains the methods that work with them. Web elements are hidden (private) and stored separately in the project, where only the Page Object design pattern is used. Page class methods return new page class objects according to the written test script. The auto-test script is separated from web elements and methods simulating user actions.
Also using the @BeforeSuite, @AfterSuite and @BeforeClass annotations, methods are created that correspond to the start and end of each test suite.
The structures of projects using the Page Object and Page Factory patterns are given. Since the Page Factory design pattern is well-optimized and is used to initialize page objects or to create the page object itself, it simplifies the project structure. The web elements of the corresponding pages are stored in the corresponding classes, not separately from them.
Key words: project, design pattern, Page Object, Page Factory, auto-test, web element, web application, framework.
Основна частина
Постановка проблеми. Написана авто-тестів є важливим інструментом пошуку дефектів на ранніх етапах розробки ПЗ (програмного забезпечення). Саме завдяки автоматизації тестування можливо зменшити вартість виправлення дефектів та покращити процес забезпечення якості ПЗ. Хоча написання авто-тестів може здатися легким завданням для розробників та інженерів, існує велика ймовірність одержання неефективної реалізації тестових сценаріїв та, як наслідок, поганої їхньої підтримки. Іноді, для того щоб змінити один веб-елемент на веб-сторінці, на який покладалася велика кількість тестів, потрібно перевірити та оновити увесь скрипт цих тестів. Це забирає багато часу та зменшує ефективність вровадження авто-тестів на ранній стадії розробки ПЗ [1]. Тому набули свого розвитку різноманітні патерни проєктування для написання підтримуваних та багаторазових авто-тестів.
Аналіз останніх досліджень та публікацій. Розробка ПЗ на даний час у своїй більшості реалізується із застосуванням гнучних підходів та інкрементальних ітеративних моделей розробки ПЗ, які побудовані на можливості постійного внесення змін [2, с. 43-44]. Це призвело до збільшення кількості регресійних тестів та недоречності їхнього проходження вручну. Тому автоматизація тестування ПЗ набула широко використання.
Для кращого розуміння авто-тестів, а також для їхньої підтримки існує ряд патернів проєктування. Найпоширенішими серед них є Page Object, Page Factory та Page Element [3, c. 50-53]. Основна проблема патернів заключається в їхньому коректному використанні та у розумінні, що застосування конкретного патерну повинно, в першу чергу, вирішити поставлене завдання [4, с. 62-63].
Постановка завдання. PageObject - один із найпопулярніших архітектурних рішень в автоматизації тестування. Даний патерн проєктування допомагає інкапсулювати роботу з окремими елементами сторінки, що, у свою чергу, дає можливість зменшити обсяг коду та його підтримку [5, c. 44-46]. При створенні проєкту із використанням патерну PageObjectнеобхідно врахувати те, що скрипт авто-те - стів повинен бути розділений від класів сторінок, які містять відповідні їм методи. Веб-елементи сторінок зберігаються окремо. Із появою патерну проєктування PageFactory, процес написання авто-тестів значно полегшився, так як даний патерн дає можливість зберігати веб-елементи сторінки у відповідному їй класі, що, у свою чергу, вносить певні зміни у структуру самого проєкту [6]. Тому метою даної роботи є врахування особливостей структури проєкту із використанням даних патернів проєктування.
Виклад основного матеріалу. Припустимо, що об'єкт тестування (testobject) - це сайт http://practice.bpbonline.com/index.php. Як приклад, розглянемо тест кейс перевірки успішної реєстрації. Процес декомпозиції даного тест кейсу на класи (сторінки) показано на рисунку 1. Спочатку мизаходимо на головну сторінку сайту - клас HomePage. Для реєстрації вибираємо меню «MyAccount» і переходимо на іншу сторінку (клас LoginPage). У колонці «NewCustomer» натискаємо на кнопку «Continue». Переходимо на сторінку заповнення необхідної інформації для створення нового акаунту (клас AccountPage). Підтверджуємо введену інформацію. Акаунт успішно створєно (клас AccountSuccessPage). Для створення проєкту в IntelliJIDEAдодано залежності Selenium-java, TestNGта WebDriverManagerу файл POMнашого проєкту. Структура наш ого проєкту показана на рисунку 2.
Рис. 1. Процес декомпозиції тестового сценарію на класи згідно патерну проєктування PageObject
Рис. 2. Структура проєкту із використанням патерну PageObject
Клас BasePageє базовим класом, нащадками якого будуть класи наших сторінок. Конструктор відповідає за ініціалізацію WebDriverта WebDriverWait[7]. Крім того, до даного класу можна додати методи різних очікувань:
Клас HomePageмістить метод clickOnMyAccountButtonO, якийреалізує процес вибору користувачем меню «MyAccount» та повертає об'єкт класу LoginPage, оскільки після вибору меню «MyAccount» ми переходимо на дану сторінку:
Аналогічно клас LoginPage містить відповідний йому метод clickOnContinueButtonO, що реалізує натискання кнопки «Continue» на даній сторінці. Клас CreateAccountPaaeмістить методи, що реалізують діїкористувачапризаповненні усіхнеобхідних полів реєстрації. Інформацію, яку вводить користувач, зчитуєсься з файлу, якиймає розширення propertiesта гберігається уиапці resc3urces:
Клас AccountSuccesPageмістить метод getActualMessage(), який повертає повідомлення, яке користувач отримає після введення та підтвердження необхідних даних для реєстрації:
Елементи сторінок HomePage, LoginPage, CreateAccountPageта AccountSuccessPageзберігатимо окремо, оскільки при їхньому збереженні у відповідних їм класах сторінок можливо одержати виключення. Веб-елементи об'являємо приватними, а для їхнього використання застосовуємо спеціальні методи.
Клас BaseTestмістить усі загальні функціональні можливості і змінні тестових класів, тому усі тестові класи є нащадками даного класу [8]:
Клас CreateAccountTestмістить авто-тест для перевірки створення нового акаунту. Тест успішно пройде, якщо користувач після введення та підтвердження необхідних даних одержить повідомлення про успішну реєстрацію. Скриптавто-тестунаведено нижче:
Так як для написання авто-тесту ми використовували фреймворк TestNG[9], то після запуску нашого авто-тесту, ми одержали звіт успішності виконання тестового сценарію, який показано на рисунку 3.
Розглянемо процес наптсання даного тест кейсу із використанням патерну PageFactory, який являє собою розширення патерну PageObject, є добре оптимізованим та використовується для ініціалізації об'єктів сторінки або для створення об'єкта самої сторінки. PageFactoryініціалізує веб-елементи класу сторінки із використанням анотації @FindBy, тому вони зберігаються у відповідному класі сторінки, а не окремо від неї [10]. Це, у свою чергу, полегшує процес написання авто-тестів та впливає на саму структура проєкту (рис. 4).
Рис. 3. Звіт успішності виконання тестового сценарію для перевірки створення нового аканту
Рис. 4. Структура проекту із використанням патернів PageObjectта PageFactory
Також для ініціалізації всіх елементів змінемо конструктор класу BasePageтаким чином:
Авто-тест для перевірки створення нового акаунту буде мати спрощений вигляд:
Отже, застосування патернів проєктування PageObjectта PageFactoryполегшують процес написання авто-тестів, їх нескладно підтримувати, а скрипт авто-тестів є зрозумілим для спри йняття. Необхідно врахувати, що структура самого проєкту із використанням патерну PageObjectбуде відрізнятися тим, що веб-елементи сторінок з берігтимуться окремо.
Список використаних джерел
1. Yoni Flenner. Page Object Model-Make It Simple, Use Abstraction. URL: https://blog.testproject.io/2017/07/16/ page-objact-moKel/
2. Graham D., Black R., Erik van Veenendal. Foundations of Software Testing: ISTQB Certification, 4 th Edition. United Kingdom: EMEA, 2018. 273 p.
3. Anton Angelov, «Design Patterns for High-Quality Automated Tests: High-Quality Test Attributes and Best Practices». United States: Kindle Edition, 2021. 348 p.
4. Erich Gamma, Richard Helm, Ralph Johnson, John Vissdes, «Design Patterns: Elements of Reusable Object-Oriented Software». United States: Addison-Wesley, 1994. 395 p.
5. Seretta Gamba, Dorothy Graham, «A Journey through Test Automation Patterns: 0ne team's adventures with the Test Automation Patterns». United States: CreateSpace Independent Publishing Platform, 2018. 364 p.
6. Page Object: Model (POM). URL:https://www.geeksforgeeks.orgtpage-object-model-pom/
7. Amir Ghahrai. Page Object Model Framework with Java and WebDriver. URL: https://devqa.io/page-object - framework-java-webdriver/
8. Krishna Rungta. Page Object Model (POM) & Page Factory in Selenium. URL: https://www.guru99.com/page-object - model-pom-page-facto ry-in-selenium-ultimatn-guide.html
9. Selenium and TestNG. URL: https://testng.org/doc/selenium.html
10. Gunjan Kaushik, Ravinder Singh. Page Object Model using Page Factory in Selenium WebDriver. URL: https://www.toolsqa.com/selenium-webdriver/page-factory-in-selenium/
References
1. Yoni Flenner. Page Object Model-Make It Simple, Use Abstraction. URL: https://blog.testproject.io/2017/07/16/ page-object-model/ [in English]
2. Graham D., Black R., Erik van Veenendal. Foundations of Software Testing: ISTQB Certification, 4 th Edition. United Kingdom: EMEA, 2018. 273 p. [in English]
3. Anton Angelov, «Design Patterns for High-Quality Automated Tests: High-Quality Test Attributes and Best Practices». United States: Kindle Edition, 2021. 348 p. [in English]
4. Erich Gamma, Richard Helm, Ralph Johnson, John Vissdes, «Design Patterns: Elements of Reusable Object-Oriented Software». United States: Addison-Wesley, 1994. 395 p. [in English]
5. Seretta Gamba, Dorothy Graham, «A Journey through Test Automation Patterns: One team's adventures with the Test Automation Patterns». United States: CreateSpace Independent Publishing Platform, 2018. 364 p. [in English]
6. Page Object Model (POM). URL: https://www.geeksforgeeks.org/page-object-model-pom/ [in English]
7. Amir Ghahrai. Page Object Model Framework with Java and WebDriver. URL: https://devqa.io/page-object - framework-java-webdriver/ [in English]
8. Krishna Rungta. Page Object Model (POM) & Page Factory in Selenium. URL: https://www.guru99.com/page-object - model-pom-page-factory-in-selenium-ultimate-guide.html [in English]
9. Selenium and TestNG. URL: https://testng.org/doc/selenium.html [in English]
10. Gunjan Kaushik, Ravinder Singh. Page Object Model using Page Factory in Selenium WebDriver. URL: https://www.toolsqa.com/selenium-webdriver/page-factory-in-selenium/ [in English]
Размещено на Allbest.ru
...Подобные документы
Створення баз даних за допомогою стандартних бібліотек Java та клієнт-серверних програм. Основні стандартні класи і методи бібліотек SQL та swing, бібліотек, що дозволяють опрацьовувати дані СУБД та навчитись концепціям програмування мовою Java.
лабораторная работа [215,3 K], добавлен 04.10.2011Багатоплановість проблеми тестування, види тестів, схема взаємодії тестуючого з тестувальником. Огляд і можливості деяких сучасних програмних засобів для створення тестів. Технологія створення тестів на прикладі програмного забезпечення MyTestX.
дипломная работа [1,8 M], добавлен 15.06.2014Аналіз особливостей конвертації файлів графічних форматів з використанням технології dotNet і створення системи, яка дозволяє наочно проілюструвати принципи програмування з використанням особливостей цієї платформи. Етапи створення windows-додатків.
дипломная работа [3,1 M], добавлен 22.10.2012Розробка та тестування додатків, які базуються на елементах мови програмування Java, принципи програмування в її середовищі. Вивчення переваг Java-платформи, прикладний програмний інтерфейс та особливості сучасних засобів створення Java-додатків.
дипломная работа [2,8 M], добавлен 22.06.2011Характеристика формування навичок розробки додатків із використанням кнопкових компонентів у середовищі програмування Visual Studio. Створення програми, що переводить числа з однієї системи числення до іншої. Особливість застосування додатку Converter.
практическая работа [249,7 K], добавлен 01.12.2022Серверна мова програмування PHP. База даних MySQL. Мова та стандарти XML. Рівні та способи взаємодії засобів розробки. Засоби трансформації XML. Розробка інтернет-додатку з використанням PHP, MYSQL, XML. Розрахунок трудомісткості створення системи.
дипломная работа [1,8 M], добавлен 19.08.2012Проектування ієрархії класів побутових приладів (пральна машина, пилосос, телевізор, магнітофон, радіоприймач, музичний центр), створення її структурної схеми. Розробка програми з використанням об'єктів створених класових типів на мові програмування Java.
лабораторная работа [451,0 K], добавлен 25.01.2014Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.
курсовая работа [335,3 K], добавлен 11.01.2015Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.
курсовая работа [69,4 K], добавлен 14.03.2013Створення програмного модуля, який виконуватиме формування електронного підручника та презентацію тестів з пройденого матеріалу по темах, визначених користувачем. Склад та призначення програмних компонентів модуля Unit1.cpp., опис інтерфейсу додатку.
курсовая работа [381,2 K], добавлен 06.05.2016Розроблення додатка за допомогою об'єктно-орієнтованого візуального проектування Delphi для виконання арифметичних операцій або з використанням меню. Створення інтерфейсу користувача з використанням компонентів SYSTEM і WIN32. Обробка двовимірного масиву.
методичка [326,1 K], добавлен 13.01.2010Розробка та виконання простих програм, програм з розгалуженням, з використанням функцій, масивів, рядків, функцій та структур. Динамічні структури даних. Написання програми обчислення струму по відомих значеннях напруги і опору електричного ланцюга.
курсовая работа [471,0 K], добавлен 02.06.2016Розробка логічної гри "Тетріс" у складі набору об’єктно-орієнтованих моделей, програмного коду з використанням об’єктно-орієнтованної мови Java. Проектування архітектури гри, аналіз вимог до неї, опис реалізації, кодування та тестування програми.
курсовая работа [2,2 M], добавлен 24.10.2010Поняття черги в програмуванні, основні операції з чергою і їх реалізація. Опис алгоритму й специфікація програми. Розробка додатку з використанням задачі Ларсона по опису зв'язного неорієнтованого графа. Алгоритм розв’язку і результати виконання програми.
курсовая работа [1,1 M], добавлен 14.09.2012Проектування розподіленої інформаційної системи із використанням технології MIDAS. Методика створення сервера прикладень за технологією MIDAS. Віддалений модуль даних - основна частина сервера прикладень. Методика створення клієнтського прикладення.
лабораторная работа [582,2 K], добавлен 08.06.2009Особливості редактора принципових схем системи Protel 99. Основні недоліки та переваги системи. Проблема правильного виведення схем на друк. Розробка та редагування бібліотек елементів принципових схем. Перегляд існуючої бібліотеки та створення нової.
контрольная работа [902,1 K], добавлен 20.06.2010Дослідження проблеми пошуку автомобілів та постановка задачі створення автокаталогу з використанням мови програмування PHP і JаvаScrіpt. Дослідження моделей прецедентів системи та їх класової архітектури. Моделювання розподіленої конфігурації систем.
курсовая работа [3,7 M], добавлен 11.10.2010Загальні факти про комп’ютерні ігри. Розгляд основ розробки програмного (джерельного) коду, контенту (малюнки, моделі, музика) та ігрових механік гри "Три стакани". Правила використанням засобів WinAPI. Створення математичної моделі алгоритму програми.
курсовая работа [405,6 K], добавлен 09.06.2015Дослідження основних етапів роботи з програмою сканування каталогу на наявність відповідних файлів find.с. Призначення функцій findfirst та findnext. Дослідження будови та призначення структури ffblk. Швидкість запису зміни файлу. Елементи директорії.
лабораторная работа [24,1 K], добавлен 04.04.2011Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.
курсовая работа [502,5 K], добавлен 01.04.2016