Самая сложная часть в изучении новой дисциплины - разбираться с основами и базовыми понятиями. Давайте поговорим о самых популярных паттернах, которые используются в автоматизации тестирования UI - Page Object: использование статического и динамического решения, границы применимости и неприменимости, особенности реализации в зависимости от содержания, живые примеры.
Static and dynamic Page Objects with Java \ .Net examplesCOMAQA.BY
Самая сложная часть в изучении новой дисциплины - разбираться с основами и базовыми понятиями. Давайте поговорим о самых популярных паттернах, которые используются в автоматизации тестирования UI - Page Object: использование статического и динамического решения, границы применимости и неприменимости, особенности реализации в зависимости от содержания, живые примеры.
Важная часть в изучении любой новой дисциплины - понимание основ и главных определений. Давайте поговорим о наиболее значимых паттернах, применяемых в автоматизации тестирования, обсудим пользу от их использования \ не использования, особенности реализации, ограничения, зависимости, границы применимости и не применимости.
Системный взгляд на параллельный запуск Selenium тестовCOMAQA.BY
Параллельный запуск тестов – не просто желание, но острая необходимость, стандартная задача, с которой рано или поздно столкнется каждый проект, за исключением, разве что, совсем небольших и краткосрочных. Порой, вопрос параллелизации тестов превращается в сложный или даже почти невыполнимый. Давайте поговорим о том, как избежать подобной ситуации: какие рекомендации и инструменты существуют, какую архитектуру стоит выбрать изначально, каких решений следует избегать. Антон попробует ответить на все эти актуальные вопросы и конечно приведет множество примеров для наглядности и практического подтверждения. Мы проговорим «хорошие» варианты параллельного запуска автоматизированных тестов, но так же рассмотрим ситуацию с противоположной стороны «от противного». Проанализируем десяток «плохих» решений по параллелизации на реальных примерах – сложных, медленных, дорогих, неэффективных. Фактически, беседа будет состоять из двух частей: «что такое хорошо и что такое плохо» в примерах, с аргументацией и рекомендациями.
Исходя из своего опыта работы инженером в автоматизации, экспертом в Java automation assessment комитете в компании Epam, Иван поделится общими рекомендациями, советами, материалами для тех, кто хочет достичь уровня Senior инженера в автоматизации. Доклад будет полезен в первую очередь Junior и Middle инженерам, которые смогут использовать его как своего рода «гайд»: посмотреть где есть пробелы, что стоит вспомнить, чему уделить больше внимания.
Page Object Model and Implementation in Selenium Zoe Gilbert
There are various frameworks that have been used by the IT industry for robust, easy maintenance, and to automate their applications to make them flexible and reusable. Page Object Model is one of the frameworks that have been covered here in this blog step by step clearly to help you understand.
ScreenPlay Design Patterns for QA AutomationCOMAQA.BY
На данном выступлении мы познакомимся с последними тенденциями в мире автоматизации тестирования и узнаем о новом мистическом паттерне проектирования под названием Screenplay Pattern, который согласно легенде спасёт всех нас от излишних трудов и превратит весь ваш спагетти-код в конфетку:) Узнаем какие же принципы из всем известной и непонятной аббревиатуры SOLID нарушает всеми нами горячо любимый PageObject паттерн и ещё раз все вспомним о проблемах с которыми многие из нас сталкиваются. Посмотрим, как же мы сможем навариться на этих тайных знаниях и удивить своих коллег новыми словами.
Static and dynamic Page Objects with Java \ .Net examplesCOMAQA.BY
Самая сложная часть в изучении новой дисциплины - разбираться с основами и базовыми понятиями. Давайте поговорим о самых популярных паттернах, которые используются в автоматизации тестирования UI - Page Object: использование статического и динамического решения, границы применимости и неприменимости, особенности реализации в зависимости от содержания, живые примеры.
Важная часть в изучении любой новой дисциплины - понимание основ и главных определений. Давайте поговорим о наиболее значимых паттернах, применяемых в автоматизации тестирования, обсудим пользу от их использования \ не использования, особенности реализации, ограничения, зависимости, границы применимости и не применимости.
Системный взгляд на параллельный запуск Selenium тестовCOMAQA.BY
Параллельный запуск тестов – не просто желание, но острая необходимость, стандартная задача, с которой рано или поздно столкнется каждый проект, за исключением, разве что, совсем небольших и краткосрочных. Порой, вопрос параллелизации тестов превращается в сложный или даже почти невыполнимый. Давайте поговорим о том, как избежать подобной ситуации: какие рекомендации и инструменты существуют, какую архитектуру стоит выбрать изначально, каких решений следует избегать. Антон попробует ответить на все эти актуальные вопросы и конечно приведет множество примеров для наглядности и практического подтверждения. Мы проговорим «хорошие» варианты параллельного запуска автоматизированных тестов, но так же рассмотрим ситуацию с противоположной стороны «от противного». Проанализируем десяток «плохих» решений по параллелизации на реальных примерах – сложных, медленных, дорогих, неэффективных. Фактически, беседа будет состоять из двух частей: «что такое хорошо и что такое плохо» в примерах, с аргументацией и рекомендациями.
Исходя из своего опыта работы инженером в автоматизации, экспертом в Java automation assessment комитете в компании Epam, Иван поделится общими рекомендациями, советами, материалами для тех, кто хочет достичь уровня Senior инженера в автоматизации. Доклад будет полезен в первую очередь Junior и Middle инженерам, которые смогут использовать его как своего рода «гайд»: посмотреть где есть пробелы, что стоит вспомнить, чему уделить больше внимания.
Page Object Model and Implementation in Selenium Zoe Gilbert
There are various frameworks that have been used by the IT industry for robust, easy maintenance, and to automate their applications to make them flexible and reusable. Page Object Model is one of the frameworks that have been covered here in this blog step by step clearly to help you understand.
ScreenPlay Design Patterns for QA AutomationCOMAQA.BY
На данном выступлении мы познакомимся с последними тенденциями в мире автоматизации тестирования и узнаем о новом мистическом паттерне проектирования под названием Screenplay Pattern, который согласно легенде спасёт всех нас от излишних трудов и превратит весь ваш спагетти-код в конфетку:) Узнаем какие же принципы из всем известной и непонятной аббревиатуры SOLID нарушает всеми нами горячо любимый PageObject паттерн и ещё раз все вспомним о проблемах с которыми многие из нас сталкиваются. Посмотрим, как же мы сможем навариться на этих тайных знаниях и удивить своих коллег новыми словами.
DSL, Page Object and Selenium – a way to reliable functional testsMikalai Alimenkou
Presentation from first Selenium conference in Europe - Selenium Camp (http://seleniumcamp.com) about different test design approaches to make functional tests on Selenium more flexible, reliable and stable.
Example of TAF with batch execution of test cases COMAQA.BY
An example of architectural solution based on consolidate approach is considered. Proposed solution allows to reduce tests time running especially while working on testing of application API with some time-consuming process.
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Iakiv Kramarenko
***VIDEO***: view in SD at http://youtu.be/HPHKeBakulQ or download in HD at http://bit.ly/1nyvA67
Often we have lack of automation resources. If we just would involve less experienced juniors to implement test model and even Manual QA to write DSL like tests…
In this talk I want to present the simplified approach to write PageObjects for your test model as it would be like playing “three chords” song on a guitar. And also share the experience of pacifying the LoadableComponent pattern, rather hard in implementation but making your tests much more DRY and easy to use in context of loading pages.
Automation Abstractions: Page Objects and BeyondTechWell
When you start writing automation for your projects, you quickly realize that you need to organize and design the code. You will write far more than “test” code; you also will write abstraction code because you want to make tests easier to read and maintain. But how do you design all this code? How do you organize and structure it? Should you use a domain specific language? Should you go keyword driven or use Gherkin? Should you use page objects with POJO or Factories? Do you create DOM level abstractions? Where do domain models fit in? Alan Richardson provides an overview of options available to you when modeling abstraction layers. Based on his experience with many approaches on real-world commercial projects, Alan helps you understand how to think about the modeling of abstraction layers. Illustrated with a number of code examples, Alan shows you a variety of approaches and discusses the pros and cons associated with each.
Very often, if not always, we need to create jobs running periodically. It can be database cleanup, mail sending, statistics calculations, … One implementation among other is to create DirectActions invoked by Cron but there is a better option: Quartz. Quartz is a famous java open source library that allows developers to create jobs easily. In this session, you will learn how it's easy to integrate Quartz in your WebObjects application and how you can use job persistance based on EOF.
Breaking Dependencies to Allow Unit TestingSteven Smith
Unit testing software can be difficult, especially when the software wasn't designed to be testable. Dependencies on infrastructure concerns and software we don't control are one of the biggest contributors to testing difficulty. In this session, you'll learn the difference between unit tests and other kinds of tests, how to recognize and invert dependencies, and how to unit test your code's interactions with these dependencies without testing the infrastructure itself.
Improving the Quality of Existing Software - DevIntersection April 2016Steven Smith
How do you improve the quality of your existing software, while continuing to add value for your customers? What are some heuristics and code smells you can look for, and principles and patterns you can use to guide you, as you make your software better over time instead of worse? How can we improve our skills and techniques so that writing high quality software becomes our default, fastest way of working?
Improving the Quality of Existing SoftwareSteven Smith
How do you improve the quality of your existing software, while continuing to add value for your customers? What are some heuristics and code smells you can look for, and principles and patterns you can use to guide you, as you make your software better over time instead of worse?
Van Wilson
Senior Consultant with Cardinal Solutions
Find more by Van Wilson: https://speakerdeck.com/vjwilson
All Things Open
October 26-27, 2016
Raleigh, North Carolina
Java EE changes design pattern implementation: JavaDays Kiev 2015Alex Theedom
The implementation of traditional design patterns have changed in Java EE 7. By taking advantage of Java EE features such as CDI and the smart use of annotations, traditional design patterns can be implemented in a much cleaner and quicker way. With the use of code examples I will demonstrate how to implement some of the most commonly use design patterns in Java EE. Among the design patterns discuss there will be Factory, Singleton, Observer and Decorator.
DSL, Page Object and Selenium – a way to reliable functional testsMikalai Alimenkou
Presentation from first Selenium conference in Europe - Selenium Camp (http://seleniumcamp.com) about different test design approaches to make functional tests on Selenium more flexible, reliable and stable.
Example of TAF with batch execution of test cases COMAQA.BY
An example of architectural solution based on consolidate approach is considered. Proposed solution allows to reduce tests time running especially while working on testing of application API with some time-consuming process.
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Iakiv Kramarenko
***VIDEO***: view in SD at http://youtu.be/HPHKeBakulQ or download in HD at http://bit.ly/1nyvA67
Often we have lack of automation resources. If we just would involve less experienced juniors to implement test model and even Manual QA to write DSL like tests…
In this talk I want to present the simplified approach to write PageObjects for your test model as it would be like playing “three chords” song on a guitar. And also share the experience of pacifying the LoadableComponent pattern, rather hard in implementation but making your tests much more DRY and easy to use in context of loading pages.
Automation Abstractions: Page Objects and BeyondTechWell
When you start writing automation for your projects, you quickly realize that you need to organize and design the code. You will write far more than “test” code; you also will write abstraction code because you want to make tests easier to read and maintain. But how do you design all this code? How do you organize and structure it? Should you use a domain specific language? Should you go keyword driven or use Gherkin? Should you use page objects with POJO or Factories? Do you create DOM level abstractions? Where do domain models fit in? Alan Richardson provides an overview of options available to you when modeling abstraction layers. Based on his experience with many approaches on real-world commercial projects, Alan helps you understand how to think about the modeling of abstraction layers. Illustrated with a number of code examples, Alan shows you a variety of approaches and discusses the pros and cons associated with each.
Very often, if not always, we need to create jobs running periodically. It can be database cleanup, mail sending, statistics calculations, … One implementation among other is to create DirectActions invoked by Cron but there is a better option: Quartz. Quartz is a famous java open source library that allows developers to create jobs easily. In this session, you will learn how it's easy to integrate Quartz in your WebObjects application and how you can use job persistance based on EOF.
Breaking Dependencies to Allow Unit TestingSteven Smith
Unit testing software can be difficult, especially when the software wasn't designed to be testable. Dependencies on infrastructure concerns and software we don't control are one of the biggest contributors to testing difficulty. In this session, you'll learn the difference between unit tests and other kinds of tests, how to recognize and invert dependencies, and how to unit test your code's interactions with these dependencies without testing the infrastructure itself.
Improving the Quality of Existing Software - DevIntersection April 2016Steven Smith
How do you improve the quality of your existing software, while continuing to add value for your customers? What are some heuristics and code smells you can look for, and principles and patterns you can use to guide you, as you make your software better over time instead of worse? How can we improve our skills and techniques so that writing high quality software becomes our default, fastest way of working?
Improving the Quality of Existing SoftwareSteven Smith
How do you improve the quality of your existing software, while continuing to add value for your customers? What are some heuristics and code smells you can look for, and principles and patterns you can use to guide you, as you make your software better over time instead of worse?
Van Wilson
Senior Consultant with Cardinal Solutions
Find more by Van Wilson: https://speakerdeck.com/vjwilson
All Things Open
October 26-27, 2016
Raleigh, North Carolina
Java EE changes design pattern implementation: JavaDays Kiev 2015Alex Theedom
The implementation of traditional design patterns have changed in Java EE 7. By taking advantage of Java EE features such as CDI and the smart use of annotations, traditional design patterns can be implemented in a much cleaner and quicker way. With the use of code examples I will demonstrate how to implement some of the most commonly use design patterns in Java EE. Among the design patterns discuss there will be Factory, Singleton, Observer and Decorator.
Single Page Applications Workshop Part I: Interesting Topics in HTML5, CSS an...Jalal Mostafa
This is the first part of the workshop I have instructed for Computer Science undergraduate students at the Lebanese University, Hadath, Beirut.
In the first part, we discuss some interesting topics in HTML5, CSS3, and JavaScript including HTML5 Semantics and its importance in SEO, CSS Flexbox layout, JavaScript standards, Asynchronous Programming in JS, DOM Manipulation using jQuery and JS package managers.
Part II is available here: https://www.slideshare.net/JalalMostafa/single-page-applications-workshop-part-ii-single-page-applications-using-angularjs
Given that the reference Sightly implementation is now available in Apache Sling, this slide-deck focuses on best practices, modularity and on reducing application complexity by taking advantage of reusable components.
Automation Abstraction Layers: Page Objects and BeyondAlan Richardson
An overview of different approaches to Page Objects and Domain Objects for GUI Automation. Examples use WebDriver and Java.
Full source code is available to download, For more details see the associated blog post.
Web Development with Delphi and React - ITDevCon 2016Marco Breveglieri
React is the library created by Facebook to manage user interfaces inside the famous social network. In this talk we'll se how you can develop Web applications with a highly dynamic and performing UI connected to a Web API provided by a Delphi backend.
Getting Started with React, When You’re an Angular DeveloperFabrit Global
If you’re an Angular developer looking into expanding your stack with React, this presentation will come in handy! It is an insightful introduction to React in comparison with Angular, where you will find all the basic knowledge you need to get started.
We’ll deep-dive into tech details such as:
● Virtual DOM
● JSX
● Functional vs Class-Based Components
● State
● How to Style
● Requests
● Upgrading: Redux and Flux and more!
You can also check out the full article version here: https://blog.fabritglobal.com/product-development/getting-started-with-react-angular-developer/
Application Express - A web development environment for the masses - and for ...Sage Computing Services
Application express has been enthusiastically adopted by many clients as a tool for the rapid development of database centric web applications. This presentation discusses some of the techniques used to develop Apex applications. It provides guidelines on best practices and includes the initial steps that should be considered when embarking on an Apex development. The presentation includes a look at development techniques for the 2.2 version, and a preview of some of the features that are available in version 3.0.
AngularJS 1.x - your first application (problems and solutions)Igor Talevski
We will talk about all aspects of building a single page application with AngularJS, and we will discuss real examples from day-to-day work. We will also cover a large amount of theory about general web development, best practices, and today's client demands. We will focus on three (3) main points: architecture, security, and real time notification.
IBM Rational Host Access Transformation Services (HATS) can dynamically transform your terminal-based applications into rich web pages. It is highly customizable and built on Java EE technology. We'll discuss some lessons learned from a very (very) complex HATS engagement. We'll discuss proper development strategies, and how to distribute workload across team members. We'll introduce a novel approach to unit testing advanced customizations using JUnit, and will also talk about how to address functional testing.
Similar to Out of box page object design pattern, java (20)
Перспектива разработки мобильного приложения, которое не потребуется скачивать и ждать review из App Store, очень заманчива, ведь аналогов привычного ПО существует несколько: Progressive Web Apps (PWA), Android Instant Apps (AIA) и Accelerated Mobile Pages (AMP). Как сделать верный выбор, найти «серебряную пулю», ведь у каждой из перечисленных технологий своя специфика разработки, поддержки и тестирования, сильные и слабые стороны. В докладе мы, по возможности, детально рассмотрим каждую из платформ, проведем сравнительный анализ альтенратив “обычными” мобильными приложениями. Давайте все вместе подготовимся к грядущим вызовам обеспечения качества в столь «необычных», новых проектах.
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...COMAQA.BY
В рамках нашего сдвоенного доклада мы проговорим проблему построения Архитектуры решений Автоматизации «от обратного» - систематизируем классические Архитектурные недочеты, в том числе процессного происхождения, сформулируем варианты решения каждой рассмотренной проблемы, критерии выбора решения, и конечно условия перехода проблемы из не идеальной, но промышленно приемлемой, в потенциально опасный для проекта прецедент.
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...COMAQA.BY
Using real life test stories, I will present to you examples of mindset tools that I have identified, how I have used them to optimize collaboration in software development teams, become a valuable team member and a skilled tester. I will further propose a model that can help individuals develop their own mindset tools depending on the type of environment and product being developed.
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьCOMAQA.BY
Рассмотрим как используется QA в различных аспектах жизни. Поговорим о его основных целях и задачах. Рассмотрим примеры хороших и плохих подходов. Поговорим о рисках.
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...COMAQA.BY
Мы поговорим о новых возможностях Open Source фреймворка JDI для Автоматизации UI Тестирования и не только на языках Java, C# .Net и Python. Архитектор проекта расскажет «всю правду» о своем детище, а мы послушаем, сделаем выводы и, возможно, используем это решение для нашего следующего проекта.
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...COMAQA.BY
This presentation is based on Kimmo’s experiences in product component QA at Qvantel and it is aimed at everyone willing to know and understand, what are the challenges we’re facing in QA during software product development in BSS & Telco domain and, in the other hand, what are the good practices and success factors, so that we are able to 1. Test the product properly 2. Deliver smoothly and also 3. Continuously improve. The perspective of the presentation is “managerial”. However, we will also discuss about the technical and methodical aspects in component testing like different test levels, methods, test automation, test data management and testing tools. We also take a look at the different expectations towards testing personnel, like documentation, visibility of test activities, re-usable test assets etc. Finally we discuss about the key success factors in QA for software product development.
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...COMAQA.BY
В докладе я расскажу, как был организован запуск автоматических тестов (appium/javascript) в gitlab CI для нативного Android приложения на каждый Merge Request. Опишу, как можно встроить автотесты в существующий процесс сборки, как правильно настроить запуск тестов в docker image (тесты бегут в TestObject облаке), как произошла интеграция с клаудом и какие результаты это принесло. Tech stack: Gitlab CI, kubernetes, android, appium, javascript, testobject.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.COMAQA.BY
Чем тестирование RESTful API сервисов схоже и чем отличается от тестирования других типов приложений? Какое покрытие тестами является достаточным? Какие лучшие практики существуют для автоматизированного тестирования REST API? Эти и другие темы будут раскрыты в рамках доклада.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.COMAQA.BY
Все, кто когда-либо сталкивался с тестированием производительности, прекрасно знают, как сложно сделать отчеты понятными, хорошо визуализированными и прозрачными для заказчика. Очень важно выбрать "правильные" метрики и разработать нужные профили нагрузки, но если в результате заказчик увидит скучные и непонятные кривые на белом фоне, он вполне может отказаться от тестирования производительности как такового, поскольку результат будет не вполне прозрачен. Давайте посмотрим, как можно улучшить впечатление от результатов тестирования производительности, на примере интеграции JMeter с мощным инструментом визуализации - Grafana.
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...COMAQA.BY
Candy Crush Saga is one of the biggest mobile games today with more than 1000 levels of difficulty - and users continue to ask for more. When building new content, it is extremely important to make sure that the level of difficulty is balanced and that the user does not experience crashes or problems through some unforeseen level of play. Alexander Andelkovic shows you how King is training artificial intelligence (AI) programs (bots) to test its games by mimicking human interactions. Join Alex as he discusses how King is taking testing to the next level by employing Monte Carlo Tree Search, automatic heuristic construction, and NeuroEvolution of Augmenting Topologies (NEAT) to train bots to test and evaluate difficulty levels. He discusses ways to extend and use AI bots to predict game success rates and conduct automatic performance testing. Alex explains how this AI approach can be generalized to test other applications. Learn how AI can help you with testing that's getting very difficult to master with traditional testing techniques.
Даже если вы - самый мирный человек, конфликты все равно случаются. Как и почему это происходит, можно ли их избежать и как вести себя, если конфликт уже случился - об этом мы поговорим в рамках доклада "Мое место в конфликте". Конфликт - интереснейшее явление, и то, какие он принесет плоды - разрушение или сотрудничество - зависит в том числе и от того поведения, которое мы реализуем. И напоследок вы узнаете о том, как защитить себя, даже если конструктивно выйти из конфликта уже не удалось.
Организация приемочного тестирования силами матерых тестировщиковCOMAQA.BY
Тестировщик и его взгляд на бизнес тестирование. Как охватить необъятное или совместить своё желание всё проверить как в обычном функциональном тестировании и проверку с точки зрения бизнеса. Организация такого тестирования, взаимодействие с командой разработки и тестирования. Какие плюсы и минусы от того, что в UAT тестировании участвуют матерые тестировщики, а не люди, которые эксплуатируют систему.
Развитие специалиста, менеджера - дело добровольное. Равно как и выживание. Приходите на доклад и мы обсудим: а надо ли развиваться, как развиваться, какие подходы и интструменты можно использовать, обсудим тепловую смерть специалиста.
Мы уделяем много внимания темам автоматизации тестирования. Но что, если мы посмотрим на сам процесс нашей работы? Сколько рутинных задач мы выполняем каждый день? Насколько эффективно мы их выполняем? Иван расскажет о своем опыте эффективной работы с подобными ежедневными задачами
В своей презентации я бы хотел рассказать о своем личном опыте в OpenSource. Начиная от контрибьюта в популярные проекты и публикации своих проектов на GitHub до участия в процессе отбора и развития OpenSource решений Презентация позволит взглянуть на OpenSource с разных сторон и понять зачем это нужно как для обычного инженера, так и для большой компании
Мы поговорим о новых возможностях Open Source фреймворка JDI для Автоматизации UI Тестирования. Архитектор проекта расскажет «всю правду» о своем детище, а мы послушаем, сделаем выводы и, возможно, используем это решение для нашего следующего проекта.
Behavior Driven Development в Автоматизации тестирования до сих пор порождает горячие дискуссии, так, кулуарный диалог об этом подходе после SQA Days 21 продолжался более часа, а границы применимости и не применимости, вопросы целесообразности и эффективности так и остались открытыми. Мы постараемся в диалоге, защищая две полярные позиции, расставить точки над И, в качестве заключительного аккорда доклада – диалога мы сформулируем алгоритм применимости и не применимости решения, что бы каждый слушатель смог использовать презентацию в качестве «шпаргалки» для принятия BDD решений
Многие из нас слышали, что при создании тестовых систем необходимо понимать из каких слоев они должны состоять. Но начинающим специалистам очень сложно четко понять за чем эти слои нужны и какие функции они выполняют. В своем докладе я хотел бы внести ясность по данному вопросу и ответить на все все вопросы.
Аспектно ориентированное программирование для Java автоматизаторовCOMAQA.BY
Хочу рассказать, что такое аспектно ориентированное программирование на примере Aspectj – расширения для языка Java и привести примеры, как его использование может помочь при построении фреймворка для автоматизации тестирования.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
2. 2CONFIDENTIAL
1. Page Object – just to “refresh”
2. State-less or state-full solution - just to “refresh”
3. How to select a proper PO implementation?
Agenda, part 1 (to refresh)
3. 3CONFIDENTIAL
1. Hypothetical project context
2. Compare complexity
3. Compare “tech” limitations
4. Compare “business” limitations
5. Rationale “business” limitations
6. How to find and “update” a balance for your own project?
Agenda, part 2 (to refresh)
4. 4CONFIDENTIAL
1. “raw” Selenium Page Objects
2. Page Factory from Selenium library
3. HMTL Element framework from Yandex
4. Selenide
5. JDI framework from EPAM
6. SWD Page Recorder
Agenda, part 3 (solutions)
5. 5CONFIDENTIAL
1. A real-life example
2. “Homework”
3. “Rules” and principles
4. A set of useful links
5. What’s next?
6. Questions
Agenda, part 4 (take away points)
6. 6CONFIDENTIAL
1. Page Objects – encapsulates the way of identification and logical grouping of widgets.
2. Page Object == Logical Page
3. Page Object != Physical Page
Page Object – just to “refresh”
9. 9CONFIDENTIAL
1. Let’s compare:
– Photo
• Share – looks like parallelism (easy parallelism).
– Video
• Share – looks like parallelism (not trivial parallelism).
State-less or state-full solution?
10. 10CONFIDENTIAL
1. How easy transform solution from “single” to “multi” threading (to decrease “QA
Automation Windows”)
– State-less – like share a photo
• Just 5 minutes of work.
– State-full – like share a video
• Not trivial task, could be a night mare.
2. Summary
– prefer state-less solutions to state-full solutions in mooooost cases;
– before start implementation a state-full solution, please, take a break for a minute, and re-
thing everything again, possibly you can find a proper state-less solution.
State-less or state-full solution?
11. 11CONFIDENTIAL
1. Static class
– could be implemented as a state-less solution easily
2. Object
– State-full solution in 99,99% cases
3. Summary
– prefer static class based solutions (state-less) to object based (state-full) in mooooost cases;
– before start implementation based on objects, please, take a break for a minute, and re-thing
everything again, possibly you can find a proper solution based on static classes.
Object or static class State-full or state-less solution?
12. 12CONFIDENTIAL
1. Too complicated business logic due to Domain
2. Too complicated business logic due to System size (thousands test-cases)
3. Too many “contexts”
– Browser versions
– Environments
– Customers with a tiny nuances of functionality
– Platforms (cross-browser Web plus cross-platform Mobile)
– Combination
4. Combination
Page Objects – state-full, general case
13. 13CONFIDENTIAL
1. Web UI that behaves like a Wizard
2. Web UI in combination with Mobile in one use case
3. Internet of Things (in most cases)
4. More then 1 page during 1 test (for example several portals or several instances of one
portal to implement one “business use case”):
– Really seldom;
– Looks like integration tests (in most cases):
• Std solution- some type of White Box Testing.
5. Many others “special cases”
Page Objects – state-full, special cases
15. 15CONFIDENTIAL
1. 30 Physical Pages
2. Standard Header, footer and search functionality for all physical pages
3. Each Physical Page consists of
– Header – H
– Footer – F
– Search – S
– Some functionality, specific for the Page – U (unique)
Hypothetical project context – to compare
16. 16CONFIDENTIAL
1. 33 Static Page Objects = Logical Pages
2. 0 explicit and 30 implicit Physical Pages
3. Just share 33 Static Page Objects between 30 implicit Physical Pages
– For example, Header Static Page Object (static class) is used in test cases for all 30 Physical
Page Objects
4. Complexity – just 33 static state-less entities (plus limitations due to state-less solutions)
Compare complexity – Static Page Object based
17. 17CONFIDENTIAL
1. 33 Dynamic Page Objects = Logical Pages
2. It depends on implementation (one of the ways):
– 0 explicit and 30 implicit Physical Pages
– implicit Physical Page implements on Action layer (limitations example)
– Action for Physical Page aggregates all necessary Dynamic Logical Pages
• Physical Pages are implemented in a next way: create all necessary instances of logical pages, aggregate in
some way, use Action layer as an point of aggregation in most cases, free resources
Compare complexity – Dynamic Page Object based (option 1)
18. 18CONFIDENTIAL
1. 120 objects (min), each with some state, dynamically created and frees to implement
necessary behavior - to implement 30 implicit Physical Pages
2. Complexity – 120 dynamic, state-full entities min (plus some limitations due to state-full
solution implementation nuances)
Compare complexity – Dynamic Page Object based (option 1)
19. 19CONFIDENTIAL
1. 33 Dynamic Page Objects = Logical Pages
2. It depends on implementation (another way):
– 30 explicit Physical Pages
– Multiple Interface inheritance
– Combine Page Objects and Actions layer (in most cases)
– Action-Physical Page (limitations example)
• Implements all Logical Pages interfaces using aggregation and “delegation”
• Aggregate all Dynamic Logical Page Objects
• Create and frees resources (Dynamic Logical Page Objects)
Compare complexity – Dynamic Page Object based (option 2)
20. 20CONFIDENTIAL
1. 150 objects, each with some state, dynamically created and frees to implement necessary
behavior - to implement 30 explicit Physical Pages
2. Complexity – 150 dynamic, state-full not trivial entities with a multiple interface
inheritance (plus some limitations due to state-full solution implementation nuances)
Compare complexity – Dynamic Page Object based (option 2)
21. 21CONFIDENTIAL
1. Can be used together with next Design Patterns Approaches
– Action (both static – preferable and dynamic)
– Key-word driven
– DSL – external only
– BDD – partially, it depends on exact BDD engine implementation limitations
2. Can’t be used together with next Design Patterns
– Factory
– Flow (Fluent Interface)
– Navigator (for Web)
Compare “tech” limitations - Static Page Object based
22. 22CONFIDENTIAL
1. No limitations, but …
– For example, in most cases it’s hard to isolate Action and Page Objects layers
Compare “tech” limitations - Dynamic Page Object based
23. 23CONFIDENTIAL
1. Too complicated business logic due to Domain
2. Too complicated business logic due to System size (thousands test-cases)
3. Too many “contexts”
– Browser versions
– Environments
– Customers with a tiny nuances of functionality
– Platforms (cross-browser Web plus cross-platform Mobile)
– Combination
4. Combination
Compare “business” limitations - Static
24. 24CONFIDENTIAL
1. State-less approach - you have a conditional that chooses different behavior depending on
…
2. Solution to simplify the project – refactoring “Replace Conditional with Polymorphism”
3. Polymorphism = object = State-full approach
Rationale “business” limitations - Static
25. 25CONFIDENTIAL
1. “From refactoring to Patterns”
– There is a set of specific Design Patterns
2. The trickiest part – find a balance for your project now and update point of balance in time
Rationale “business” limitations - Static
26. 26CONFIDENTIAL
1. Relatively simple business logic due to Domain
2. Relatively simple business logic due to System size (hundreds test-cases)
3. Not so many “contexts”
– Browser versions
– Environments
– Customers with a tiny nuances of functionality
– Platforms (cross-browser Web plus cross-platform Mobile)
Compare “business” limitations - Dynamic
27. 27CONFIDENTIAL
1. State-full approach - you have a set of objects classes, which developed, possibly, using
several Design Patterns to implement necessary functionality – to choose different behavior
depending on …
2. Solution to simplify the project – refactoring “Replace Polymorphism with Conditional”
3. Polymorphism ~= object ~= State-full approach
4. No Polymorphism ~= no objects ~= State-less approach
Rationale “business” limitations - Dynamic
28. 28CONFIDENTIAL
1. “From Patterns to refactoring”
– There is no need to use a set of specific Design Patterns
2. The trickiest part – find a balance for your project now and update point of balance in time
Rationale “business” limitations - Dynamic
31. 31CONFIDENTIAL
Page Factory - definition
1. Page Factory is an inbuilt page object model concept for Selenium WebDriver but it is very
optimized.
2. We use initElements method to initialize web elements
3. Additionally with the help of PageFactory class - use annotations @FindBy to find WebElement.
4. @FindBy can accept as attributes:
1. tagName
2. name
3. partialLinkText
4. linkText
5. Id
6. Css
7. className
8. Xpath
32. 32CONFIDENTIAL
Page Factory - notes
1. If you use the PageFactory, you can assume that the fields are initialized. If you don't use the
PageFactory, then NullPointerExceptions will be thrown if you make the assumption that the fields
are already initialized.
2. List<WebElement> fields are decorated if and only if they have @FindBy or @FindBys annotation.
Default search strategy "by id or name" that works for WebElement fields is hardly suitable for
lists because it is rare to have several elements with the same id or name on a page.
33. 33CONFIDENTIAL
Page Factory - notes
1. WebElements are evaluated lazily. That is, if you never use a WebElement field in a PageObject,
there will never be a call to "findElement" for it.
2. The functionality works using dynamic proxies. This means that you shouldn't expect a
WebElement to be a particular subclass, even if you know the type of the driver. For example, if
you are using the HtmlUnitDriver, you shouldn't expect the WebElement field to be initialized with
an instance of HtmlUnitWebElement.
41. 41CONFIDENTIAL
Page Factory from Selenium library - info
1. Page Object Model and Page Factory
2. Page Factory detailed desription
3. Page Object (Page Factory context)
4. AjaxElementLocatorFactory (obsolete)
5. Source code example
6. PageFactory.java (source code)
7. Book with a brief summary of Selenium WebDriver plus Java bindings (Ru only)
42. 42CONFIDENTIAL
HMTL Elements framework from Yandex
1. Designed to provide easy-to-use way of interaction with web-page elements in your tests.
2. It may be considered as an extension of WebDriver Page Object (PageFactory).
3. With the help of Html Elements framework you can group web-page elements into blocks (Logical
Pages), encapsulate logic of interaction with them and then easily use created blocks in page
objects (Physical Pages).
43. 43CONFIDENTIAL
HMTL Element framework from Yandex
1. Dividing page on blocks using @Block annotation
2. Separating different types of elements (button, checkbox)
3. Provides an ability to annotate methods as steps – annotation @Step for work in step-based style
4. Provides a set of helpful matchers to use with web-page elements and blocks
51. 51CONFIDENTIAL
HMTL Elements framework from Yandex - info
1. Official site of the tool
2. Examples
3. Source code example
4. Book with a brief summary of Selenium WebDriver plus Java bindings (Ru only)
52. 52CONFIDENTIAL
Selenide
Selenide is a wrapper for Selenium Webdriver, oriented, as Geb, on fast and laconic automation but
using Java. Just focus on your business logic and let Selenide do the rest! Main advantages of that
tool:
1. Concise fluent API for tests
2. True Page Objects
53. 53CONFIDENTIAL
Selenide
1. Webdriver access
2. jQuery style selectors
3. Ajax support for stable tests
4. Auto-start and browser destructions
5. You don't need to think how to shutdown browser, handle timeouts and StaleElement Exceptions
or search for relevant log lines, debugging your tests.
54. 54CONFIDENTIAL
Login Page
1. public class LoginPage {
2. private static final By USERNAME_INPUT = By.id("id_username");
3. private static final By PASSWORD_INPUT = By.id("id_password");
4. private static final By LOGIN_BUTTON =
By.id("main_action_form_button");
5. public void login(String username, String password) {
6. $(USERNAME_INPUT).val(username);
7. $(PASSWORD_INPUT).val(password);
8. $(LOGIN_BUTTON).click();
9. }}
61. 61CONFIDENTIAL
Selenide - info
1. Official site of the tool
2. Examples
3. Source code example
4. Book with a brief summary of Selenium WebDriver plus Java bindings (Ru only)
62. 62CONFIDENTIAL
GDI – from EPAM Systems
JDI Goals
1. Accumulate best practices of UI automation (open source, page objects, logging, parallelism etc.)
2. Multiplatform framework
3. Intuitive test framework
4. Stable framework
5. Flexible framework
63. 63CONFIDENTIAL
GDI features
• Interfaces based elements
• Complex UI Objects
• Simple + Complex UI elements + standard Forms = 31
• Cascade UI Objects Initialization
• Multiplatform
• Logging for all actions
• Stabilization mechanism
• Wide Customization abilities
• Module-based architecture
• Parallel test runs support
64. 64CONFIDENTIAL
PageObject “infrastructure”
UI Objects
– UI elements for Web (Button, Label, Table…)
– IU elements for other platforms (any UI)
– “Standard” PageObjects
• Form
• Search
• Pagination
• Login
• others
Page Objects
– UI elements
– Actions with UI elements
65. 65CONFIDENTIAL
Simple UI Elements – 10
1. Text
2. Button/Label
3. Link
4. Image
5. Checkbox
6. TextField
7. DatePicker
8. FileInput
9. TextArea
10. And others :)
66. 66CONFIDENTIAL
Complex UI Elements – 12
• Selector
• RadioButtons
• Dropdown
• Tabs/Menu
• CheckList
• DropList
• ComboBox
• TextList
• Table
• Tree
• Range
• And others :)
68. 68CONFIDENTIAL
PageObject std example, 1 (GDI)
@JPage(url = "http://www.epam.com")
public class JacketPage extends WebPage {
@FindBy(css=“someSelector") public Menu menu;
@FindBy(css="someSelector") public CheckList sizes;
@FindBy(css=" someSelector") public Button searchButton;
@FindBy(css=" someSelector") public Table results;
}
69. 69CONFIDENTIAL
Test std example, 1 (GDI)
1. @Test
2. public void menuTest() {
3. menu.select("Man");
4. sizes.check("M", "L");
5. searchButton.click();
6. Assert.areEquals(results.rows().count(), 4);
7. Assert.isNotEmpty(results.row("Best Jacket", column("Title")));
8. }
70. 70CONFIDENTIAL
PageObject std example, 1 (Selenium)
public class JacketPage {
@FindBy(css="") public List<WebElement> menuElements;
@FindBy(css="") public WebElement menuIsSelected;
@FindBy(css="") public List<WebElement> sizesElements;
@FindBy(css="") public WebElement sizesIsChecked;
@FindBy(css="") public List<WebElement> sizesLabels;
@FindBy(css="") public WebElement searchButton;
@FindBy(css="") public List<WebElement> resultsColumnHeaders;
@FindBy(css="") public List<WebElement> resultsRowsHeaders;
@FindBy(css="") public List<WebElement>resultsCellsHeaders;
@FindBy(css="") public List<WebElement> resultsColumn;
@FindBy(css="") public List<WebElement> resultsRow;
…
}
71. 71CONFIDENTIAL
PageObject std example, 1 (Selenium)
public class JacketPage {
@FindBy(css="") public List<WebElement> menuElements;
...
@FindBy(css="") public List<WebElement> resultsRow;
public void selectElementFromMenu(String name) { … }
public String getSelectedMenuItem() { … }
public boolean isMenuItemSelected(String name) { … }
public void selectElementFromMenu(String name) { … }
…
public int getResultsCount() { … }
public boolean isResultPresent(String name) { … }
public WebElement getSomeAttributeForResult(String name) { … }
…
public List<WebElement> findAllResultsMatch(String name) { … }
}
74. 74CONFIDENTIAL
Test std example, 3 (GDI)
@Test
public void shopTest() {
loginPage.open();
loginForm.login(new User(“user", "password"));
search.find("best jacket");
productForm.submit(Products.TestJacket);
pagination.next();
pagination.selectPage(5);
}
75. 75CONFIDENTIAL
PageObject std example, 4 (GDI, “model” based)
1. public class LoginForm extends Form<User> {
2. @FindBy(css=“someLocator")
3. public TextField name;
4. @FindBy(css=“someLocator")
5. public TextField password;
6. @FindBy(css=“someLocator")
7. public Button loginButton;
8. }
76. 76CONFIDENTIAL
PageObject std example, 4 (GDI , “model” based)
public class User {
public String name;
public String password;
public User(String name,
String password) {
this.name = name;
this.password = password;
}
}
77. 77CONFIDENTIAL
PageObject std example, 5 (GDI)
1. @JSite(domain = "https://www.epam.com")
2. public class EpamSite extends WebSite {
3. @JPage(url = "/")
4. public static HomePage homePage;
5. @JPage(url = "/careers", title = "Careers")
6. public static CareerPage careerPage;
7. @JPage(url = "/careers/job-listings", title = "Job Listings",
8. urlCheckType = CONTAIN, titleCheckType = CONTAIN)
9. public static JobPage jobPage;
10....
11.}
WebSite.init(EpamSite.class);
80. 80CONFIDENTIAL
Java examples
public class HomePage extends WebPage {
@FindBy(css="div.tabs-ui[data-path*=
'/content/epam/en/jcr:content/content_container/
section_4/section-par/tabs']")
public EpamCoreSection epamCoreSection;
}
81. 81CONFIDENTIAL
Java examples
public class EpamCoreSection extends Section {
@FindBy(css="div.tab-1>div.text>div.text-ui >p>span.font-size-26")
public Text whoWeAreText;
@FindBy(css="div.tab-2>div.text>div.text-ui >p>span.font-size-26")
public Text whatWeDoText;
@FindBy(css="div.tab-3>div.text>div.text-ui >p>span.font-size-26")
public Text whoWeServeText;
@FindBy(xpath="//div[.='Who we serve']")
public Button whoWeServe;
@FindBy(xpath="//div[.='Who we are']")
public Button whoWeAre;
@FindBy(xpath="//div[.='What we do']")
public Button whatWeDo;
}
82. 82CONFIDENTIAL
Java examples
@Test
public void presentationSimpleTest() {
homePage.checkOpened();
homePage.epamCoreSection.whoWeAre.highlight();
homePage.epamCoreSection.whoWeAreText.highlight();
new Check("Tab text").areEquals("" +
"We are more than developers.
We are the experts that
will take your business into the digital future.",
homePage.epamCoreSection.whoWeAreText.getText());
homePage.epamCoreSection.highlight();
homePage.epamCoreSection.whoWeServe.highlight();
homePage.epamCoreSection.whoWeServe.click();
}
84. 84CONFIDENTIAL
Java examples
public void textToTest(HomeTabs tab, EpamCoreSection epamCoreSection){
switch (tab) {
case WHOWEARE:
chooseTab(epamCoreSection.whoWeAre,
epamCoreSection.whoWeAreText, HomeTabsTextToCheck.WHOWEARE);
break;
case WHATWEDO:
chooseTab(epamCoreSection.whatWeDo,
epamCoreSection.whatWeDoText, HomeTabsTextToCheck.WHATWEDO);
break;
case WHOWESERVE:
chooseTab(epamCoreSection.whoWeServe,
epamCoreSection.whoWeServeText, HomeTabsTextToCheck.WHOWESERVE);
break;
}
}
85. 85CONFIDENTIAL
Java examples
public void chooseTab(Button tab, Text text, String textToCheck){
tab.highlight();
tab.click();
text.highlight();
new Check("Tab text").areEquals(textToCheck,
text.getText());
}
86. 86CONFIDENTIAL
Java examples
public static class HomeTabsTextToCheck {
public static final String WHOWEARE="We are more than developers." +
" We are the experts that will take your business into the digital future.";
public final static String WHATWEDO="We transform businesses through the art of digitization." +
" Our expertise spans multiple disciplines," +
" providing our clients with software solutions that dramatically drive results and outcomes.";
public final static String WHOWESERVE="The right technology translates business strategies into results." +
" We deliver domain-specific, transformative software solutions that reshape the way you do business.";
}
87. 87CONFIDENTIAL
Customization
1. Customize method’s behavior
2. Customize element’s behavior
3. Customize all objects behavior
4. Develop new UI element
5. Modules
1. Logger
2. Asserter
3. Driver
4. etc.
90. 90CONFIDENTIAL
Implementation is based on
Implementation is based on … what?
Let’s:
• download source code
• familiarize
• investigate
• develop a tiny prototype
• try to use
• try to improve (for example, add Decorator DP based features)
• welcome to QA Automation tools development
• welcome to Open Source
92. 92CONFIDENTIAL
Serenity (ex. Thucydides)
1. Serenity (Thucydides) – is an open-source tool, oriented on effective acceptance testing and
detailed documentation and reports of the project.
2. It works with Junit and BDD tools like JBehave and Cucumber-JVM, and gives a wide API for
automated testing with integrity with Selenium Webdriver.
3. It is made for the following tasks:
• Creating more flexible tests, which are easier to be supported
• Getting illustrated story-based reports
• Clear context of connection between tests and requirements
• Measurement of requirements coverage.
93. 93CONFIDENTIAL
Serenity (ex. Thucydides) workflow
• Step 1: Defining requirement and acceptance criteria
It starts from requirements, which are need to be tested. For every requirement there is an
acceptance criteria which describing the requirement better. Thucydides automate acceptance
criteria
• Step 2: Modelling the requirements
With the help of Thucydides you create a simple model of requirements made on Java language. There
are some ways of modelling requirements, including simple Java class, using convention and structure
of directories of integrating with other tools like Jira. That approach allows the developer what
requirement is tested each of the test, and give Thucydides the ability to track testing features and
requirements
94. 94CONFIDENTIAL
Serenity (ex. Thucydides) workflow
• Step 3: Automation of acceptance testing
Next is describing acceptance criteria by business language is following, and automation engineers
implement them using BDD such as jBehave or Cucumber-JVM, or using Java and Junit, in order for
Thucydides to run it with “pending” status (body is not implemented)
• Step 4: Test implementation
Automation Engineers now can implement acceptance criteria in a form of real-time AUT test. Tests
can be divided into steps for better readability and easiness of support. Webdriver is used for testing.
95. 95CONFIDENTIAL
Serenity (ex. Thucydides) workflow
• Step 5: Test results report
Thucydides allow you to create detailed test reports about test runs, including:
History for ach test
Screenshot for each test step
Result of test run including time and error messages
• Step 6: Requirements coverage report
Besides test run reports, Thucideds also provide information about:
Number of tested requirements
Number of passed requirements
Number of requirements which need to be run
96. 96CONFIDENTIAL
Serenity (ex. Thucydides) workflow
• Step 7: Project progress report
Thucydides provide information about project history progress:
Change in number of features implemented in time
Change in quantity of implemented and tested features in time
Change of failed tests in time
• Summary
As we can see, Thucydides is a rather complex tool, build around BDD concept and acceptance testing,
using Webdriver for testing web applications.
• Info
Official website
Official documentation
98. 98CONFIDENTIAL
Page Object “default” implementation
Framework implements Page Object pattern and let’s you decrease code duplication another one type
of classes between tests and pages, called “steps”. Let’s look at “steps” with page object class:
1. public class StepsinBook extends ScenarioSteps {
2. public StepsinBook(Pages pages) {
3. super(pages);
4. }
5. public BookPage getPageBook()
6. {
7. return getPages().currentPageAt(BookPage.class);
8. }
9. }
99. 99CONFIDENTIAL
Page Object “default” implementation
1. public class StepsinBook extends ScenarioSteps {
2. @Step public void getMain(String url)
3. {
4. getPageBook().getMainPage(url);
5. }
6. @Step public void AllBooks()
7. {
8. getPageBook().allBooks();
9. }
10. @Step public void search(){
11. getPageBook().search(“Book");
12. }
13. @Step public void catalog(){
14. getPageBook().catalog();
15. }}
103. 103CONFIDENTIAL
Geb – general info
1. Tool for browser automation, made on Groovy (JVM-based) and based on Selenium Webdriver.
2. It using:
1. Selenium for browser automation
2. jQuery selectors for locating elements
3. Page object pattern
.
3. In the bounds of testing it can be easily integrated with different test frameworks like:
1. Junit
2. TestNG
3. Spock
104. 104CONFIDENTIAL
Geb – general info
If to compare with Webdriver API, Geb provides more comfortable interface in the following areas:
• Working with Webdriver instance (creating, configuration, moves, destruction)
• Locating elements (jQuery locators)
• Page object pattern
• Waiters
• Page interactions
• Work with AJAX elements
• Integration with build-tools (maven, gradle, grails)
• Integration with cloud services (Sauce labs, Browser Stack)
Official website
Official documentation
106. 106CONFIDENTIAL
SWD Page Recorder
1. SWD Page Recorder helps you to create locators of web-page, debug them in the application and
generate PageObject code for classes on C#, Java, Python, Ruby, Perl for using them in Selenium
Webdriver tests.
2. That tool not only lets you find locator needed, but also optimize it and generate all the code
needed for further element declaration in the code.
3. SWD Page Recorder is a unified tool for working with locators in every browser which are
supported by Selenium.
4. Important moment that Page Recorder tests the selectors using Webdriver – so you’re not going to
have cases when locator find other way will not work in Webdriver.
109. 109CONFIDENTIAL
1. Business context
2. Tech context
– Challenge
– Solution
– Technology Stack
3. QA Automation process context
4. Source code example
5. Summary
A real-life example
110. 110CONFIDENTIAL
1. Example and “home work”
– How to setting up environment
• This is task 0
– Where to download (https://github.com/comaqaby/Patterns/tree/master/C%23)
– How to build
– How to configure
– How to run
Example
111. 111CONFIDENTIAL
1. Download example’ source code (for each “solution”)
2. “Investigate”
3. Develop a TODO list with a set of improvements
4. Setting up environment
5. Compile and Run
6. “Play”
7. Improve Update TODO list with a set of improvements
“Homework”, part 1
112. 112CONFIDENTIAL
1. Read recommended books and articles
2. Improve Update TODO list with a set of improvements
3. Provide me via email with an intermediate and final list of improvements
4. Develop at least 1 more auto-test (for each “solution”)
5. Develop a set of metrics to “compare” solutions
6. Develop an algorithm “How to select a proper solution”
7. Provide me via email with a set of metrics + algorithm
8. Next iteration
“Homework”, part 2
113. 113CONFIDENTIAL
1. Play with GDI “attentively”
2. Join QA Automation tools development
3. Join Open Source “world”
“Homework”, part 3
114. 114CONFIDENTIAL
1. Could you please “refresh” your theoretical knowledge, slides 1-31, thanks
“Rules” and principles
118. 118CONFIDENTIAL
Tech “basement”
• Grady Butch «Object oriented analysis and design with examples of apps on C++
Notes: IMHO No need to be afraid of C++, 95% of the material is conceptual, there is no strict
connection to chosen language. From my point of view is one of the best books for true getting to
know with OOP.
• Martin Fowler «Refactoring»
Notes: IMHO strongly recommend to read from cover to cover, twice, in order to have contents of
the book – you active professional luggage.
• Gang of four “Design patterns”
Notes: IMHO strongly recommend to read from cover to cover, twice, in order to have contents of
the book – you active professional luggage.
119. 119CONFIDENTIAL
Tech “basement”
• D. Thomas, Andrew Hunt “Pragmatic Programmer, The: From Journeyman to Master”
Notes: IMHO Amazing book that consists of a ton of advices. IMHO strongly recommend to read
from cover to cover, twice, in order to have contents of the book – you active professional
luggage. And then look through different chapters before talking to a customer.
• Steve McConnel “Code complete”
Notes: IMHO No need to be afraid of the size of the book ... it should be read or before “going to
bed”, or from any place, of separate chapters, just to fresh things in the memory in the chosen f
ield of problem.
120. 120CONFIDENTIAL
What’s next?!
• “Out of box Page Object Design Pattern, Java”
• Dynamic solutions
• Let’s compare with a static one
• “Out of box Page Object Design Pattern, .Net C#”
• Dynamic solutions
• Let’s compare with a static one
Summary: 5/12 - Webinar, 5/13 – send all necessary materials
• “Variants of implementation Page Object Design Pattern from the scratches, without being bind to
any programming language”
• Static solutions
• Dynamic solutions
• Let’s compare static and dynamic
• Answer to all our questions
Summary: 5/19 - Webinar, 5/19 – send all necessary materials