SlideShare a Scribd company logo
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
Design Patterns in
Automation
About
QA since 2019
From manual QA to automation QA
Athlete with 12 years of experience
Agenda
1. Що таке патерн
2. Навіщо знати патерни
3. Класифікація патернів
4. Огляд патернів
Що таке
Патерн?
Патерн проектування - це типовий спосіб
вирішення проблем при проектуванні
програм. Він не може бути просто
скопійований в програму, як готові функції
або бібліотеки. Це загальний принцип
вирішення проблеми, який потрібно
адаптувати до потреб конкретної
програми.
Патерни і алгоритми часто помилково
сприймаються як одне й те саме, тому що
обидва описують типові рішення для
відомих проблем. Але, якщо алгоритм - це
конкретний набір дій, то патерн - це більш
загальний опис рішення на високому рівні,
реалізація якого може відрізнятися в
різних програмах.
Навіщо знати
патерни?
Використання перевірених рішень може
заощадити багато часу, оскільки вам не
доведеться винаходити велосипеди знову і знову.
Хоча деякі рішення можуть бути очевидними, інші
можуть здивувати вас своєю ефективністю і
корисністю.
Використання уніфікованих рішень дозволяє
уникнути прорахунків при проектуванні, оскільки
всі можливі проблеми вже виявлені і вирішені.
Це сприяє стандартизації коду та полегшує
розуміння проекту всіма членами команди.
Використання загальної термінології паттернів
дозволяє програмістам швидше і ефективніше
спілкуватися та розуміти один одного. Замість
того, щоб витрачати час на пояснення свого
дизайну і класів, ви можете коротко назвати
паттерн, який використовується, і зосередитися
на його реалізації.
Класифікація патернів
Породжуючі патерни піклуються про гнучке створення об’єктів без внесення в програму
зайвих залежностей.
Структурні патерни показують різні способи побудови зв’язків між об’єктами.
Поведінкові патерни піклуються про ефективну комунікацію між об’єктами.
Decorator Facade Factory method Composite
Builder Singleton
Chain of
Responsibility
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
Одинак — це породжувальний патерн
проектування, який гарантує, що клас має
лише один екземпляр, та надає глобальну
точку доступу до нього.
Singleton
Коли в програмі повинен бути
єдиний екземпляр якого-небудь
класу, доступний усім клієнтам
(наприклад, спільний доступ до
бази даних з різних частин
програми).
Коли треба мати більше
контролю над глобальними
змінними.
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
Фабричний метод — це породжувальний
патерн проектування, який визначає
загальний інтерфейс для створення
об’єктів.
Factory method
Коли типи і залежності
об’єктів, з якими
повинен працювати
ваш код, невідомі
заздалегідь.
Коли ви хочете надати
користувачам
можливість
розширювати частини
вашого фреймворку чи
бібліотеки.
Коли ви хочете
зекономити системні
ресурси, повторно
використовуючи вже
створені об’єкти, замість
породження нових.
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
Будівельник — це породжувальний патерн
проектування, що дає змогу створювати
складні об’єкти крок за кроком.
Будівельник дає можливість
використовувати один і той самий код
будівництва для отримання різних
відображень об’єктів.
Builder
Коли код повинен створювати
різні уявлення якогось об’єкта
Коли потрібно збирати
складні об’єкти
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
Декоратор — це структурний патерн
проектування, що дає змогу динамічно
додавати об’єктам нову функціональність,
загортаючи їх у корисні «обгортки».
Decorator
Якщо потрібно додавати
об’єктам нові обов’язки «на
льоту», непомітно для коду,
який їх використовує.
Якщо не можна розширити
обов’язки об’єкта за допомогою
спадкування.
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
Фасад — це структурний патерн
проектування, який надає простий
інтерфейс до складної системи класів,
бібліотеки або фреймворку.
Facade
Якщо потрібно надати простий
або урізаний інтерфейс до
складної підсистеми.
Розкласти підсистему
на окремі рівні.
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
Компонувальник — це структурний
патерн проектування, що дає змогу
згрупувати декілька об’єктів у
деревоподібну структуру, а потім
працювати з нею так, ніби це одиничний
об’єкт.
Composite
Якщо потрібно представити
деревоподібну структуру
об’єктів.
Якщо клієнти повинні
однаково трактувати прості
та складові об’єкти.
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
Ланцюжок обов’язків — це поведінковий
патерн проектування, що дає змогу
передавати запити послідовно ланцюжком
обробників. Кожен наступний обробник
вирішує, чи може він обробити запит сам і
чи варто передавати запит далі
ланцюжком.
Chain of Responsibility
Якщо програма має
обробляти різноманітні
запити багатьма
способами, але
заздалегідь невідомо,
які конкретно запити
надходитимуть і які
обробники для них
знадобляться.
Якщо важливо, щоб
обробники
виконувалися один за
іншим у суворому
порядку.
Якщо набір об’єктів,
здатних обробити запит,
повинен задаватися
динамічно.
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023
Яке відношення має фаза місяця до результатів автоматизованого тестування?
Чи є дослідження, які показують, що результати тестування можуть залежати від
фази місяця? І якщо так, то чому?
twitter.com/p2h_global instagram.com/p2h_space
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023

More Related Content

PDF
แนวข้อสอบพระราชบัญญัติระเบียบบริหารงานบุคคลส่วนท้องถิ่น พ.ศ. 2542
PDF
แนวข้อสอบพระราชบัญญัติวิธีปฏิบัติราชการทางปกครอง พ.ศ. 2539
PDF
แนวข้อสอบการวางแผน แผนงาน โครงการ การบริหาร
PDF
แนวข้อสอบพระราชบัญญัติระเบียบบริหารงานบุคคลส่วนท้องถิ่น พ.ศ. 2542
DOCX
วิชากฎหมายที่ประชาชนควรทราบนักเรียนนายสิบตำรวจ
PDF
สรุป พระราชบัญญัติองค์การบริหารส่วนจังหวัด พ.ศ. 2540
PPTX
Curry leaf production technology and management
PDF
StrengthsFinder Reference Card
แนวข้อสอบพระราชบัญญัติระเบียบบริหารงานบุคคลส่วนท้องถิ่น พ.ศ. 2542
แนวข้อสอบพระราชบัญญัติวิธีปฏิบัติราชการทางปกครอง พ.ศ. 2539
แนวข้อสอบการวางแผน แผนงาน โครงการ การบริหาร
แนวข้อสอบพระราชบัญญัติระเบียบบริหารงานบุคคลส่วนท้องถิ่น พ.ศ. 2542
วิชากฎหมายที่ประชาชนควรทราบนักเรียนนายสิบตำรวจ
สรุป พระราชบัญญัติองค์การบริหารส่วนจังหวัด พ.ศ. 2540
Curry leaf production technology and management
StrengthsFinder Reference Card

Similar to ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023 (20)

PPTX
m-9-10.pptx
PDF
Корнілов Андрій
PPTX
Patterns.pptx
PDF
Vertex AI для лінкбілдингу: класифікація донорів з Image Classification Mode ...
PDF
informatyka_9_klas_ryvkind_2022.pdf
PPTX
UX Дезайнер: Інструкція з користування
PPTX
Rostyslav Chayka та Andrii Burlutskyi: Prompt Engineering для проєктного мене...
PPTX
Rostyslav Chayka & Andrii Burlutskyi: Prompt Engineering для проєктного менед...
PPTX
природна і економна дорожня карта для переходу команди розробки на тест центр...
PPTX
Mykola Kondratiuk: Prompt Engineering для проєктного менеджменту (Basic)
PDF
Informatyka-9-klas-Ryvkind-2022 (1).pdf
PPTX
Nikita Zahurdaiev: PMO Tools and Technologies (UA)
PPTX
Введення в програмну інженерію
PPTX
Anna Podolynna, BAQ "How not to loose a QA focus and organize testing proces...
PPTX
Rostyslav Chayka, Anastasiia Khait, Andrii Burlutskyi: Комунікація за допомог...
PPTX
Вибір і експлуатація систем керування автоматизованим виробництвом
PPTX
cpp-2013 #3 OOP Basics
PDF
AI від Google: нові можливості для вашого бізнесу
PDF
KyivUX Meetup 2 - Design Systems for White Label products Ignite.pdf
m-9-10.pptx
Корнілов Андрій
Patterns.pptx
Vertex AI для лінкбілдингу: класифікація донорів з Image Classification Mode ...
informatyka_9_klas_ryvkind_2022.pdf
UX Дезайнер: Інструкція з користування
Rostyslav Chayka та Andrii Burlutskyi: Prompt Engineering для проєктного мене...
Rostyslav Chayka & Andrii Burlutskyi: Prompt Engineering для проєктного менед...
природна і економна дорожня карта для переходу команди розробки на тест центр...
Mykola Kondratiuk: Prompt Engineering для проєктного менеджменту (Basic)
Informatyka-9-klas-Ryvkind-2022 (1).pdf
Nikita Zahurdaiev: PMO Tools and Technologies (UA)
Введення в програмну інженерію
Anna Podolynna, BAQ "How not to loose a QA focus and organize testing proces...
Rostyslav Chayka, Anastasiia Khait, Andrii Burlutskyi: Комунікація за допомог...
Вибір і експлуатація систем керування автоматизованим виробництвом
cpp-2013 #3 OOP Basics
AI від Google: нові можливості для вашого бізнесу
KyivUX Meetup 2 - Design Systems for White Label products Ignite.pdf
Ad

More from QADay (20)

PDF
СТАНІСЛАВ ПОЛЬСЬКОЙ «QA це спільна справа: залучення БА та девів у процес заб...
PPTX
РАМЕЛЛА БАСЕНКО - Tехніки тест дизайну в дії: розбір задач та корисні поради...
PDF
КАТЕРИНА АБЗЯТОВА - Tехніки тест дизайну в дії: розбір задач та корисні порад...
PDF
ЮРІЙ БАЖАН «Один спринт з життя тестувальника»
PDF
АЛЛА ПЕНАЛЬБА «QA automation, the secret weapon that need (a) manual»
PDF
ЮРІЙ МАЛИЙ «QA метрики в процесі SDLC»..
PDF
АНДРІЙ ЗАБЛОЦЬКИЙ « Досвід побудови сильної та ефективної QA команди»
PDF
РІНА УЖЕВКО «Тестування локалізації та терміни в Gamedev»
PPTX
КАТЕРИНА АБЗЯТОВА «Від бар’єрів до мостів: Важливість Accessibility Testing»
PPTX
ЄВГЕН ГАЙДАЙ «Виділена команда автоматизації тестування. Досвід підтримки та ...
PDF
АНАСТАСІЯ ЧУДОВСЬКА «Переїзд з моноліта на мікросервіси з точки зору QA: як ...
PDF
СОФІЯ НОВАЧЕНКО «Успішне поєднання QA/BA обовʼязків»
PDF
ОЛЕНА НІКІТІНА «Глибинне занурення в процеси тестування: від документації до ...
PDF
ОЛЕСЬ НІКАНЮК «Особливості тестування в міжнародних організаціях: досвід та в...
PPTX
ОЛЕГ ЗАРЕВИЧ «Взаємодії між DevOps і QA»
PPTX
СВЯТ ЛОГІН «Що можна витягнути з мобільних додатків»
PPTX
ГАННА КАПЛУН «Тестування на основі персон: ідея, інструменти, приклади»
PDF
НАТАЛІЯ КРИВОНІС «Необхідні навички для керування командою»
PDF
ОКСАНА ВЕРЕТЮК «Effective project quality check або як успішно налагодити про...
PDF
ВІТАЛІЙ МИХАЙЛЮК «Онбордінг нових тестерів до команди: як ефективно навчати і...
СТАНІСЛАВ ПОЛЬСЬКОЙ «QA це спільна справа: залучення БА та девів у процес заб...
РАМЕЛЛА БАСЕНКО - Tехніки тест дизайну в дії: розбір задач та корисні поради...
КАТЕРИНА АБЗЯТОВА - Tехніки тест дизайну в дії: розбір задач та корисні порад...
ЮРІЙ БАЖАН «Один спринт з життя тестувальника»
АЛЛА ПЕНАЛЬБА «QA automation, the secret weapon that need (a) manual»
ЮРІЙ МАЛИЙ «QA метрики в процесі SDLC»..
АНДРІЙ ЗАБЛОЦЬКИЙ « Досвід побудови сильної та ефективної QA команди»
РІНА УЖЕВКО «Тестування локалізації та терміни в Gamedev»
КАТЕРИНА АБЗЯТОВА «Від бар’єрів до мостів: Важливість Accessibility Testing»
ЄВГЕН ГАЙДАЙ «Виділена команда автоматизації тестування. Досвід підтримки та ...
АНАСТАСІЯ ЧУДОВСЬКА «Переїзд з моноліта на мікросервіси з точки зору QA: як ...
СОФІЯ НОВАЧЕНКО «Успішне поєднання QA/BA обовʼязків»
ОЛЕНА НІКІТІНА «Глибинне занурення в процеси тестування: від документації до ...
ОЛЕСЬ НІКАНЮК «Особливості тестування в міжнародних організаціях: досвід та в...
ОЛЕГ ЗАРЕВИЧ «Взаємодії між DevOps і QA»
СВЯТ ЛОГІН «Що можна витягнути з мобільних додатків»
ГАННА КАПЛУН «Тестування на основі персон: ідея, інструменти, приклади»
НАТАЛІЯ КРИВОНІС «Необхідні навички для керування командою»
ОКСАНА ВЕРЕТЮК «Effective project quality check або як успішно налагодити про...
ВІТАЛІЙ МИХАЙЛЮК «Онбордінг нових тестерів до команди: як ефективно навчати і...
Ad

ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python» Online QADay 2023

  • 3. About QA since 2019 From manual QA to automation QA Athlete with 12 years of experience
  • 4. Agenda 1. Що таке патерн 2. Навіщо знати патерни 3. Класифікація патернів 4. Огляд патернів
  • 5. Що таке Патерн? Патерн проектування - це типовий спосіб вирішення проблем при проектуванні програм. Він не може бути просто скопійований в програму, як готові функції або бібліотеки. Це загальний принцип вирішення проблеми, який потрібно адаптувати до потреб конкретної програми. Патерни і алгоритми часто помилково сприймаються як одне й те саме, тому що обидва описують типові рішення для відомих проблем. Але, якщо алгоритм - це конкретний набір дій, то патерн - це більш загальний опис рішення на високому рівні, реалізація якого може відрізнятися в різних програмах.
  • 6. Навіщо знати патерни? Використання перевірених рішень може заощадити багато часу, оскільки вам не доведеться винаходити велосипеди знову і знову. Хоча деякі рішення можуть бути очевидними, інші можуть здивувати вас своєю ефективністю і корисністю. Використання уніфікованих рішень дозволяє уникнути прорахунків при проектуванні, оскільки всі можливі проблеми вже виявлені і вирішені. Це сприяє стандартизації коду та полегшує розуміння проекту всіма членами команди. Використання загальної термінології паттернів дозволяє програмістам швидше і ефективніше спілкуватися та розуміти один одного. Замість того, щоб витрачати час на пояснення свого дизайну і класів, ви можете коротко назвати паттерн, який використовується, і зосередитися на його реалізації.
  • 7. Класифікація патернів Породжуючі патерни піклуються про гнучке створення об’єктів без внесення в програму зайвих залежностей. Структурні патерни показують різні способи побудови зв’язків між об’єктами. Поведінкові патерни піклуються про ефективну комунікацію між об’єктами.
  • 8. Decorator Facade Factory method Composite Builder Singleton Chain of Responsibility
  • 10. Одинак — це породжувальний патерн проектування, який гарантує, що клас має лише один екземпляр, та надає глобальну точку доступу до нього. Singleton
  • 11. Коли в програмі повинен бути єдиний екземпляр якого-небудь класу, доступний усім клієнтам (наприклад, спільний доступ до бази даних з різних частин програми). Коли треба мати більше контролю над глобальними змінними.
  • 13. Фабричний метод — це породжувальний патерн проектування, який визначає загальний інтерфейс для створення об’єктів. Factory method
  • 14. Коли типи і залежності об’єктів, з якими повинен працювати ваш код, невідомі заздалегідь. Коли ви хочете надати користувачам можливість розширювати частини вашого фреймворку чи бібліотеки. Коли ви хочете зекономити системні ресурси, повторно використовуючи вже створені об’єкти, замість породження нових.
  • 17. Будівельник — це породжувальний патерн проектування, що дає змогу створювати складні об’єкти крок за кроком. Будівельник дає можливість використовувати один і той самий код будівництва для отримання різних відображень об’єктів. Builder
  • 18. Коли код повинен створювати різні уявлення якогось об’єкта Коли потрібно збирати складні об’єкти
  • 20. Декоратор — це структурний патерн проектування, що дає змогу динамічно додавати об’єктам нову функціональність, загортаючи їх у корисні «обгортки». Decorator
  • 21. Якщо потрібно додавати об’єктам нові обов’язки «на льоту», непомітно для коду, який їх використовує. Якщо не можна розширити обов’язки об’єкта за допомогою спадкування.
  • 23. Фасад — це структурний патерн проектування, який надає простий інтерфейс до складної системи класів, бібліотеки або фреймворку. Facade
  • 24. Якщо потрібно надати простий або урізаний інтерфейс до складної підсистеми. Розкласти підсистему на окремі рівні.
  • 26. Компонувальник — це структурний патерн проектування, що дає змогу згрупувати декілька об’єктів у деревоподібну структуру, а потім працювати з нею так, ніби це одиничний об’єкт. Composite
  • 27. Якщо потрібно представити деревоподібну структуру об’єктів. Якщо клієнти повинні однаково трактувати прості та складові об’єкти.
  • 29. Ланцюжок обов’язків — це поведінковий патерн проектування, що дає змогу передавати запити послідовно ланцюжком обробників. Кожен наступний обробник вирішує, чи може він обробити запит сам і чи варто передавати запит далі ланцюжком. Chain of Responsibility
  • 30. Якщо програма має обробляти різноманітні запити багатьма способами, але заздалегідь невідомо, які конкретно запити надходитимуть і які обробники для них знадобляться. Якщо важливо, щоб обробники виконувалися один за іншим у суворому порядку. Якщо набір об’єктів, здатних обробити запит, повинен задаватися динамічно.
  • 32. Яке відношення має фаза місяця до результатів автоматизованого тестування? Чи є дослідження, які показують, що результати тестування можуть залежати від фази місяця? І якщо так, то чому? twitter.com/p2h_global instagram.com/p2h_space