SlideShare a Scribd company logo
1 of 80
Parallel Run Selenium Tests
in a Good Way
Anton Semenchenko
Anton Semenchenko
Creator of communities www.COMAQA.BY and
www.CoreHard.by, founder of company
www.DPI.Solutions, «tricky» manager at EPAM
Systems. Almost 15 years of experience in IT, main
specialization: Automation, С++ and lower
development, management, sales.
Anton Semenchenko
EPAM Systems, Software Testing Manager
Why do we need run tests in parallel?
Challenge
Challenge
• How to invest min amount of time  money to run tests in parallel
• How to maximize QA Automation ROI
• ROI >> 0
Solution
Let’s define Algorithm “How to run tests in parallel efficiently”
Algorithm
Define Tests properly  Tests attributes
Define All shared entities
Select proper Selenium WebDriver Wrapper
Select proper Architecture
Test Parallel approach or combination
Some standard Test Runner
Build instruments
Several Processes
Selenium Grid
OS  Language specific multithreading
Why do we need run tests in parallel?
2 types of reasons:
• Process related reasons
• Project specific reasons
• Risk based reasons
Meaning:
• Test == Feedback Mechanism
• Test Value == Feedback Value
Feedback’s in Scrum example
Methodology – as a predictable way of risk management for some context
• Pre planning grooming – run-time feedback from customer side
• Planning poker during Iteration planning – run-time feedback from team side mostly +
customer side too
• Daily Stand up – daily feedback, Team side
• Iteration Demo – per iteration feedback, customer side
• Iteration Retrospective - per iteration feedback, Team side
• Pair programming (as an example) – run-time technical feedback
• Unit Tests + CI – close to run-time technical feedback
• QA Automation Tests + CI + Report + Report Analyses – daily feedback mechanism
• And so on
Feedback’s in Scrum example
Methodology – as a predictable way of risk management for some context
Goals
1. Decrease QA Automation “Window”
2. Decrease Test results analysis “Window”
3. Increase Regression frequency
4. Decrease  Optimize hardware utilization
1. Electricity
2. Hardware costs (buy or rent)
5. Increase QA Automation ROI >> 0
Algorithm – The best way
Test attributes
Atomic tests without
dependencies
Some
dependency
resolver
Add specific annotation plus
add new feature to existing
standard test-runner
Develop your own test-
runner with integrated
dependency resolver
Algorithm – The best way
How to choose – ROI calculator as a solution
Atomic tests without
dependencies
Some
dependency
resolver
Decreased time to runDecreased test debug time
Lower hardware costs + electricityDecreased test update/support time
No time spent on dependency definition
No time spent on dependency resolver
Lower entry barrier for newcomers
Less documentation
Algorithm – The best way
In most cases – no dependencies:
• More expensive specialists
• Higher hardware and electricity costs
Algorithm – The best way
o Define All shared entities
o Improve Architecture
o For example:
• Pre-steps using DB
• DB Layer:
 Singleton
 Thread-safe
 Optimize (use profiler)
 Migrate to Singleton-Bus (instance per thread, in a thread-safe way)
 Solution: in an iteration-based way, start from the simplest singleton
Algorithm – The best way
o Define All shared entities
o Improve Architecture
o For example:
• Logger
• Tracer
• Report Engine:
 +1 more reason to integrate Test Runner and
Report Engine, knows how to run in parallel and
integrate reports pieces into one document
Algorithm – The best way
o Define All shared entities
o Improve Architecture
o For example:
• Data-provider
• Any other orthogonal entity:
 Define
 Isolate
 Remember
Algorithm – The best way
o Select proper Selenium WebDriver Wrapper
• Mature
• Thread-safe
• Easy-to-use “downcast”
• Examples:
 Selenide – easy to use
 JDI evolution
 Serenity – more complicated to use
Algorithm – The best way
o Select proper Architecture
• Stateless architecture
• Static Page Object
• Isolate all orthogonal shared entities
• Use “From Conditional to Patterns and
reverse” Refactoring as a metric + ROI to prof
Algorithm – The best way
o Select proper Architecture
• Convert to Stateful architecture
• Dynamic Page Object
• Update all isolated orthogonal shared
entities
• Re-calculate ROI and reuse “From
Conditional to Patterns and reverse” in
a systematical way
Algorithm – The best way
o Some standard test-runner
• The lowest layer
• Standard (or some specialized), stable, efficient,
simple, most of instruments use it as a basement
Algorithm – The best way
o Build instruments
• Use parameters to configure test run
• Use Test Runner as a basement
• Some kind of Test Runner wrapper
• + 1 layer => less stable, less efficient, sometimes
easier to use
• Anyway, doesn’t work without Test Runner
• Maven example: Thread Count and param: Test
Method, Test Class, both
Algorithm – The best way
o Several processes
• Using CI
• Team City (Job Configuration)
• Jenkins (Job Configuration)
• Extensive way
Algorithm – The best way
o Selenium Grid
• Infrastructure
• Could be used for indirect test run, but this is not
primary purpose
• Could be combined with all other solutions
Algorithm – The best way
o Language / OS specific mechanisms
• Language, focusing on multithreading
• Java
 Process
 Thread / Fork
 JVM (Java property config or command line
arguments)
Out of scope
OS and Language related questions of multi-threading
Reasons
Transition complexity
With proper architecture (plus mature, not self-developed, WebDriver wrapper, like Selenide) ->
0, just 3-5-10 places in a solution, QA Automation Architect or Developer should invest several
hours
With improper architecture (without any wrapper or with a self-developed WebDriver wrapper) -
> complicated question
Invest days or weeks to Update Architecture and wrapper (better, to use, mature one)
Invest weeks or months to update tons of source code places
Without any architecture -> nightmare
Invest weeks to redesign tests using proper Architecture and mature wrapper
Invest months or even years just to update tests
ROI as a metric
Architecture related questions
Static or Dynamic; stateless or statefull: Architecture related questions?
Architecture related questions
1. Static: transform to parallel run
2. Dynamic: transform to parallel run
3. Static <=> Dynamic: transformation criteria
4. Transformation example
5. Detailed information about transformation
6. Static or Dynamic – as an architecture basement
Leak of stateless examples
Leak of stateless examples in standard Selenium documentation
IMHO: due to Selenium development process
A tiny group of extra professionals  developers
No processes
No backlog
No priorities
No сcommittee for backlog and backlog items prioritization
No “iterations”
How to add new feature
Just to implement and then add for review
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?
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?
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?
“Replace Conditional with Polymorphism refactoring” as a Static <=> Dynamic:
transformation criteria
Replace Conditional with Polymorphism as criteria
1. You have a conditional that chooses different behavior depending on the type of an
object.
2. Move each leg of the conditional to an overriding method in a subclass. Make the
original method abstract.
3. And vice versa
4. Example
Replace Conditional with Polymorphism and vice versa
1. Replace Conditional Dispatcher with Command Design Pattern
Create a Command for each action. Store the Commands in a collection and
replace the conditional logic with code to fetch and execute Commands.
2. Replace Conditional Logic with Strategy Design Pattern
Create a Strategy for each variant and make the method
delegate the “calculation” to a Strategy instance.
3. Replace Conditional Logic with State Design Pattern
Create a State for each variant as a part of “State Machine” and make the method
delegate tricky “calculation” to the “State Machine”.
Replace Conditional with … more sophisticated options
1. Problem:
You have a conditional that performs various actions depending on object type or properties.
2. Solution:
Create subclasses matching the branches of the conditional.
In them, create a shared method and move code from the corresponding branch of the conditional to it.
Replace the conditional with the relevant method call.
The result is that the proper implementation will be attained via polymorphism depending on the object
class.
Replace Conditional with Polymorphism – detailed description
1. Transformation example
2. Detailed information about transformation
3. Static or Dynamic – as an architecture basement
Example plus some details
Custom Test Runner: General scheme
Out of scope
Parallel Run Selenium Tests in a Bad Way #1
• It starts Wed 12/14/2016
• Wed Dec 14, 2016 1:00 PM - 2:00 PM GMT+3
Risks based “good” examples of customized Test Runners
Out of scope
Parallel Run Selenium Tests in a Bad Way #1
• It starts Wed 12/14/2016
• Wed Dec 14, 2016 1:00 PM - 2:00 PM GMT+3
“Bad” examples of customized Test Runners
Out of scope
Parallel Run Selenium Tests in a Bad Way #1
• It starts Wed 12/14/2016
• Wed Dec 14, 2016 1:00 PM - 2:00 PM GMT+3
“Take away” points
Algorithm
1. Define Tests properly  Tests attributes
2. Define All shared entities
3. Select proper Selenium WebDriver Wrapper
4. Select proper Architecture
5. Test Parallel approach or combination
1. Some standard Test Runner
2. Build instruments
3. Several Processes
4. Selenium Grid
5. OS  Language specific multithreading
Summary
Step by step summary
1. Algorithm
2. Static or Dynamic; stateless or statefull: Architecture related questions
3. Metrics definition
4. Custom Test Runner: General scheme
1. Risks based “good” examples of customized Test Runners
2. “Bad” examples of customized Test Runners
What’s next?
Parallel Run Selenium Tests in a Bad Way #1
• It starts Wed 12/14/2016
• Wed Dec 14, 2016 1:00 PM - 2:00 PM GMT+3
1. “Refactoring is a controlled technique for improving the design of an existing code
base.”
2. “Its essence is applying a series of small behavior-preserving transformations, each of
which "too small to be worth doing".”
3. “The cumulative effect of each of these transformations is quite significant.”
4. “By doing Refactoring in small steps you reduce the risk of introducing errors. You
also avoid having the system broken while you are carrying out the restructuring -
which allows you to gradually refactor a system over an extended period of time.”
Refactoring by Martin Fowler
1. Ask yourself "how can I hide some details from the rest of the software?“
2. What is encapsulation?
hide variability
hide complexity
Details
"conflict of interests“
“tech” discussions
3. Example of public member or private member + setter/getter
What is really hidden?
Where is simplicity?
Encapsulation – the most important OOP principle
1. “There is a close relationship between refactoring and patterns.”
2. “Often the best way to use patterns is to gradually refactor your code to use the
pattern once you realize it’s needed.”
3. “Joshua Kerievsky’s Refactoring to Patterns explores this topic, making this a great
topic to learn about once you’ve got the basic refactoring's under your belt.”
4. “From Refactoring To Design Pattern” path – from pure design to adequate design
5. “From ~Design Patterns To Refactoring” path – from over design to adequate design
Refactoring and Design Patterns by Martin Fowler
1. “Refactoring to Patterns is the marriage of refactoring - the process of improving the
design of existing code - with patterns, the classic solutions to recurring design
problems.”
2. “Refactoring to Patterns suggests that using patterns to improve an existing design is
better than using patterns early in a new design. This is true whether code is years old
or minutes old.”
3. “We improve designs with patterns by applying sequences of low-level design
transformations, known as refactoring's.”
4. And vice versa
Refactoring and Design Patterns by Joshua Kerievsky
1. There are more then 90 types of refactoring
2. Refactoring types that relate to a particular field is called a ”Refactoring Language”
3. ”Refactoring Language” gives a common terminology for discussing the situations
specialists are faced with:
“The elements of this language are entities called Refactoring types”;
“Each type of Refactoring describes a problem that occurs over and over again in our environment”;
“Each type of Refactoring describes the core of the solution to that “~low level” problem, in such a way
that you can use this solution a million times over, without ever doing it the same way twice!”
Refactoring Catalog / Language
1. You have a conditional that chooses different behavior depending on the type of an
object.
2. Move each leg of the conditional to an overriding method in a subclass. Make the
original method abstract.
3. And vice versa
4. Example
Replace Conditional with Polymorphism and vice versa
1. Replace Conditional Dispatcher with Command Design Pattern
Create a Command for each action. Store the Commands in a collection and
replace the conditional logic with code to fetch and execute Commands.
2. Replace Conditional Logic with Strategy Design Pattern
Create a Strategy for each variant and make the method
delegate the “calculation” to a Strategy instance.
3. Replace Conditional Logic with State Design Pattern
Create a State for each variant as a part of “State Machine” and make the method
delegate tricky “calculation” to the “State Machine”.
Replace Conditional with … more sophisticated options
1. Problem:
You have a conditional that performs various actions depending on object type or properties.
2. Solution:
Create subclasses matching the branches of the conditional.
In them, create a shared method and move code from the corresponding branch of the conditional to it.
Replace the conditional with the relevant method call.
The result is that the proper implementation will be attained via polymorphism depending on the object
class.
Replace Conditional with Polymorphism – detailed description
1. This refactoring technique can help if your code contains operators performing
various tasks that vary based on:
Class of the object or interface that it implements
Value of an object's field
Result of calling one of an object's methods
2. If a new object property or type appears, you will need to search for and add code in all
similar conditionals. Thus the benefit of this technique is multiplied if there are
multiple conditionals scattered throughout all of an object's methods.
Why refactor
1. This technique adheres to the Tell-Don't-Ask principle: instead of asking an object
about its state and then performing actions based on this, it is much easier to simply
tell the object what it needs to do and let it decide for itself how to do that.
2. Removes duplicate code. You get rid of many almost identical conditionals.
3. If you need to add a new execution variant, all you need to do is add a new subclass
without touching the existing code (Open/Closed Principle).
Benefits
1. For this refactoring technique, you should have a ready hierarchy of classes that will
contain alternative behaviors. If you do not have a hierarchy like this, create one. Other
techniques will help to make this happen:
2. Replace Type Code with Subclasses. Subclasses will be created for all values of a
particular object property. This approach is simple but less flexible since you cannot
create subclasses for the other properties of the object.
3. Replace Type Code with State/Strategy. A class will be dedicated for a particular object
property and subclasses will be created from it for each value of the property. The
current class will contain references to the objects of this type and delegate execution
to them.
4. The following steps assume that you have already created the hierarchy.
Preparing to Refactor
1. If the conditional is in a method that performs other actions as well, perform Extract
Method.
2. For each hierarchy subclass, redefine the method that contains the conditional and
copy the code of the corresponding conditional branch to that location.
3. Delete this branch from the conditional.
4. Repeat replacement until the conditional is empty. Then delete the conditional and
declare the method abstract.
Refactoring Steps
Regression frequency (RF)
Definition
• Regression Frequency (RF) = How frequent does automated regression
run?
«Meaning»
• The value of product use is better as higher it is. That is ok for automated
tests, if automation test runs are frequent, their importance for customer
is bigger. Because of that that metric is one of the key metrics while
valuing ROI.
Regression frequency (RF)
Boundaries
• Widespread boundaries / recommendations:
smoke – every night
full-regression – every weekend
Where do we get info from
• Automation reports
• Continuous Integration (CI)
Regression frequency (RF)
Examples:
• RF and Economical expediency of АТ(ROI);
• Facebook and Bamboo
• HeadHunter
• Kanban: RF and WarGaming experience
• Contra example «Absolute» «recommendations»
• Contra example «Commit window»
Regression frequency (RF)
Visualization
• Not less than one a week – green color
• Not less than once in two weeks – yellow color
• Less than one a month - red color
• More frequent than once a day - red color
Connection between other metrics
• Automation testing window (ATW);
• Test results analysis window (TRAW);
• Economical expediency of АТ (ROI)
• “Commit window“
Category:
• Quality
• Automated testing
АТ «Window»
Definition
• Automated testing «Window» – how much physical time does Automated
test run take (full run or subset)
• Automated testing «Window» – how much system  «lab» time does
Automated test run take (full run or subset)
АТ «Window»
«Meaning»
• Time, that is required to be calculated while estimating economical
expediency of AUT while analyzing ROI in comparison with manual
testing. Metric is required as for making decision about introduction of
Automation and as for valuing current state of implemented automation
with the aim of looking for narrow places.
АТ «Window»
Boundaries
• Depends on the size of the project, might take from couple of hours to
many hours. In general, Smoke after commit should be not longer than
one hour, full Regression not more than two days (weekend).
Where do we get info from
• Test Reports
• Continuous Integration (CI)
АТ «Window»
Examples:
• Social networks (Facebook, Bamboo), CMS, CMS templates – before
automation tools for vizual testing automated test cases percent was not
big;
• HeadHunter example
• Counterexample – physical time
• Counterexample – machine time (Cloud)
• Technical details: Stateless and Statefull Automation, parallel run
• Technical details: Effective waiters
• Technical details: Premature optimization
АТ «Window»
Visualization
• Smoke <= 1 hour, Full Regression <= 12 hours (night) – green color
• Smoke <= 2 hours, Full Regression <= 2 days (weekend) – yellow color
• Smoke > 2 hours, Full Regression > 2 days(weekend) – red color
АТ «Window»
Connection between other metrics
• Automation progress (AP)
• Automated tests coverage percentage
• Regression Frequency (RF)
• Automated tests stability (ATS)
• Economical expediency of АТ (ROI)
Category:
• Cost / Time
• Automated testing
Test results analysis “Window” (TRAW)
Definition
• Analyzing «Window» of automation test results = How much time does it
take to analyze received data?
«Meaning»
• Metric shows how exhaustive and readable are reports, how stabile AT
and AUT. When the window is too big, less time would be devoted to
tests development, or analysis will be performed not thoroughly enough,
which will decrease Automation value.
Test results analysis “Window” (TRAW)
Boundaries
• In dependency of the project can last from some minutes to many hours.
In general, analyzing results of Smoke test after commit – should take
couple of minutes, analyzing results of full Regression – should take
couple of hours, ideally, less than an hour.
Where do we get info from
• Test Reports
• Continuous Integration (CI)
• Task Tracking Systems
Test results analysis “Window” (TRAW)
Examples:
• Social networks (Facebook, Bamboo), CMS, CMS templates – before
automation tools for vizual testing automated test cases percent was not
big;
• HeadHunter example
• Mature Data Protection Solution, new SQL Denali plug-in, close to 100%;
• Mature Secure VPN (R), technological stack;
• Counterexamples;
Test results analysis “Window” (TRAW)
Visualization
• Smoke <= 10 minutes, Full Regression <= 2 hours – green color
• Smoke <= 20 minutes, Full Regression <= 4 hours – yellow color
• Smoke > 20 minutes, Full Regression > 4 hours – red color
Test results analysis “Window” (TRAW)
• Connection between other metrics
• Automation progress (AP)
• Automated tests coverage Percentage (ATC)
• Regression Frequency (RF)
• Automated Tests stability (ATS)
• Category:
• Cost / Time
• Automated testing
ROI
Definition
• Economical expedience of AT (ROI) = Manual efforts – (Automation
efforts + Automation investment) / QA investment * 100%
«Meaning»
• Shows does it have sense to implement automation on the current
project in the current time. It might happen, that at some conditions,
automation on the project can be economically inappropriate, because
manual testing, even in long term future can be cheaper.
ROI
Boundaries
• Out of scope
Where do we get info from
• Test Strategy
• Test Plan
• Test Management Systems (TMS)
• Task Tracking System
ROI
Examples:
• Variety of projects
• Standard «problem» while working with middle+ automation specialists
of «old formation»
• A set of “alternative” ways of ROI usage (out of scope)
ROI (+ additional profit)
Visualization
• Comparing trends
• Manual testing vs Automation
• Whole variant of option of implementing / developing automation
• Different investment options
• Choosing optimal team-trend here and now
ROI
Connection between other metrics
• % of Tests, suitable for AT
• Regression frequency (RF)
• Automated test creation time (ATDT)
• Automated test support time (ATST)
• Automated tests stability (ATS)
• Automation testing window (ATW)
• Test results analysis window (TRAW)
Category:
• Price / time
• Automation testing
CONTACT ME
Anton_Semenchenko@epam.com
semenchenko_anton_v
https://www.linkedin.com/in/anton-semenchenko-612a926b
https://www.facebook.com/semenchenko.anton.v
https://twitter.com/comaqa
www.COMAQA.BY
Community’s audience
Testing specialists (manual and automated)
Automation tools developers
Managers and sales specialists in IT
IT-specialists, thinking about migrating to automation
Students looking for perspective profession.
Community goals
Create unified space for effective communication for all IT-specialists in the context of automated
testing.
Your profit
Ability to listen to reports from leading IT-specialists and share your experience.
Take part in «promo»-versions of top IT-conferences in CIS for free.
Meet regularly, at different forums, community «offices», social networks and messengers.
www.COMAQA.BY
info@comaqa.by
https://www.facebook.com/comaqa.by/
http://vk.com/comaqaby
+375 33 33 46 120
+375 44 74 00 385
www.CoreHard.by
Community’s audience
«Harsh» С++ developers & co, IoT, BigData, High Load, Parallel Computing
Automation tools developers
Managers and sales specialists in IT
Students looking for perspective profession.
Community goals
Create unified space for effective communication for all IT-specialists in the context of «harsh»
development.
Your profit
Ability to listen to reports from leading IT-specialists and share your experience.
Take part in «promo»-versions of top IT-conferences in CIS for free.
Meet regularly, at different forums, community «offices», social networks and messengers.
www.CoreHard.by
info@corehard.by
https://www.facebook.com/corehard.by/
+375 33 33 46 120
+375 44 74 00 385

More Related Content

What's hot

Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDDDror Helper
 
Test Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.comTest Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.comIdexcel Technologies
 
Software Testing Process
Software Testing ProcessSoftware Testing Process
Software Testing Processguest1f2740
 
Software Testing 101
Software Testing 101Software Testing 101
Software Testing 101QA Hannah
 
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...Ankit Prajapati
 
Software Testing Strategies
Software Testing StrategiesSoftware Testing Strategies
Software Testing StrategiesAlpana Bhaskar
 
Introduction to software testing
Introduction to software testingIntroduction to software testing
Introduction to software testingHadi Fadlallah
 
Manual testing concepts course 1
Manual testing concepts course 1Manual testing concepts course 1
Manual testing concepts course 1Raghu Kiran
 
Manual Testing tutorials and Interview Questions.pptx
Manual Testing tutorials and Interview Questions.pptxManual Testing tutorials and Interview Questions.pptx
Manual Testing tutorials and Interview Questions.pptxPrasanta Sahoo
 
Automation testing introduction for FujiNet
Automation testing introduction for FujiNetAutomation testing introduction for FujiNet
Automation testing introduction for FujiNetHai Tran Son
 
Regression testing
Regression testingRegression testing
Regression testingHarsh verma
 
Automation Best Practices
Automation Best PracticesAutomation Best Practices
Automation Best PracticesSauce Labs
 
Seven testing principles
Seven testing principlesSeven testing principles
Seven testing principlesVaibhav Dash
 

What's hot (20)

SOFTWARE TESTING
SOFTWARE TESTINGSOFTWARE TESTING
SOFTWARE TESTING
 
Automated testing web application
Automated testing web applicationAutomated testing web application
Automated testing web application
 
Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDD
 
Istqb foundation level day 1
Istqb foundation level   day 1Istqb foundation level   day 1
Istqb foundation level day 1
 
Test Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.comTest Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.com
 
Software Testing Process
Software Testing ProcessSoftware Testing Process
Software Testing Process
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Testing fundamentals
Testing fundamentalsTesting fundamentals
Testing fundamentals
 
Software Testing 101
Software Testing 101Software Testing 101
Software Testing 101
 
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
 
Software Testing Strategies
Software Testing StrategiesSoftware Testing Strategies
Software Testing Strategies
 
Introduction to software testing
Introduction to software testingIntroduction to software testing
Introduction to software testing
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Manual testing concepts course 1
Manual testing concepts course 1Manual testing concepts course 1
Manual testing concepts course 1
 
Manual Testing tutorials and Interview Questions.pptx
Manual Testing tutorials and Interview Questions.pptxManual Testing tutorials and Interview Questions.pptx
Manual Testing tutorials and Interview Questions.pptx
 
Automation testing introduction for FujiNet
Automation testing introduction for FujiNetAutomation testing introduction for FujiNet
Automation testing introduction for FujiNet
 
Regression testing
Regression testingRegression testing
Regression testing
 
Automation Best Practices
Automation Best PracticesAutomation Best Practices
Automation Best Practices
 
Automation testing
Automation testingAutomation testing
Automation testing
 
Seven testing principles
Seven testing principlesSeven testing principles
Seven testing principles
 

Viewers also liked

Example of TAF with batch execution of test cases
 Example of TAF with batch execution of test cases  Example of TAF with batch execution of test cases
Example of TAF with batch execution of test cases COMAQA.BY
 
ReportPortal.io - Open Source experience. Showcase, benefits
ReportPortal.io - Open Source experience. Showcase, benefits ReportPortal.io - Open Source experience. Showcase, benefits
ReportPortal.io - Open Source experience. Showcase, benefits COMAQA.BY
 
Особенности интеграционного тестирования биллинговой системы банка
Особенности интеграционного тестирования биллинговой системы банкаОсобенности интеграционного тестирования биллинговой системы банка
Особенности интеграционного тестирования биллинговой системы банкаSQALab
 
Docker в автоматизации тестирования
Docker в автоматизации тестированияDocker в автоматизации тестирования
Docker в автоматизации тестированияCOMAQA.BY
 
Метрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцахМетрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцахSQALab
 
Автоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающихАвтоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающихCOMAQA.BY
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QAFest
 

Viewers also liked (7)

Example of TAF with batch execution of test cases
 Example of TAF with batch execution of test cases  Example of TAF with batch execution of test cases
Example of TAF with batch execution of test cases
 
ReportPortal.io - Open Source experience. Showcase, benefits
ReportPortal.io - Open Source experience. Showcase, benefits ReportPortal.io - Open Source experience. Showcase, benefits
ReportPortal.io - Open Source experience. Showcase, benefits
 
Особенности интеграционного тестирования биллинговой системы банка
Особенности интеграционного тестирования биллинговой системы банкаОсобенности интеграционного тестирования биллинговой системы банка
Особенности интеграционного тестирования биллинговой системы банка
 
Docker в автоматизации тестирования
Docker в автоматизации тестированияDocker в автоматизации тестирования
Docker в автоматизации тестирования
 
Метрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцахМетрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцах
 
Автоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающихАвтоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающих
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
 

Similar to Parallel run selenium tests in a good way

Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовCOMAQA.BY
 
Writing useful automated tests for the single page applications you build
Writing useful automated tests for the single page applications you buildWriting useful automated tests for the single page applications you build
Writing useful automated tests for the single page applications you buildAndrei Sebastian Cîmpean
 
Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3Ahmed Misbah
 
SF1 - Apex Development Best Practises
SF1 - Apex Development Best PractisesSF1 - Apex Development Best Practises
SF1 - Apex Development Best PractisesSebastian Wagner
 
Agile Mumbai 2020 Conference | How to get the best ROI on Your Test Automati...
Agile Mumbai 2020 Conference |  How to get the best ROI on Your Test Automati...Agile Mumbai 2020 Conference |  How to get the best ROI on Your Test Automati...
Agile Mumbai 2020 Conference | How to get the best ROI on Your Test Automati...AgileNetwork
 
Beginners overview of automated testing with Rspec
Beginners overview of automated testing with RspecBeginners overview of automated testing with Rspec
Beginners overview of automated testing with Rspecjeffrey1ross
 
Practical unit testing in c & c++
Practical unit testing in c & c++Practical unit testing in c & c++
Practical unit testing in c & c++Matt Hargett
 
Devtest Orchestration for SDN & NFV
Devtest Orchestration for SDN & NFVDevtest Orchestration for SDN & NFV
Devtest Orchestration for SDN & NFVAlex Henthorn-Iwane
 
Performance tuning Grails applications
 Performance tuning Grails applications Performance tuning Grails applications
Performance tuning Grails applicationsGR8Conf
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - TalkMatthias Noback
 
How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.Matt Eland
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should knowRichard Cheng
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal infoSynapseindiappsdevelopment
 
Automation in the world of project
Automation  in the world of projectAutomation  in the world of project
Automation in the world of projectZbyszek Mockun
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayBizTalk360
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsOrtus Solutions, Corp
 
Testing - How Vital and How Easy to use
Testing - How Vital and How Easy to useTesting - How Vital and How Easy to use
Testing - How Vital and How Easy to useUma Ghotikar
 
Performance tuning Grails applications
Performance tuning Grails applicationsPerformance tuning Grails applications
Performance tuning Grails applicationsLari Hotari
 
Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Stephen Ritchie
 

Similar to Parallel run selenium tests in a good way (20)

Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестов
 
Writing useful automated tests for the single page applications you build
Writing useful automated tests for the single page applications you buildWriting useful automated tests for the single page applications you build
Writing useful automated tests for the single page applications you build
 
Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3
 
SF1 - Apex Development Best Practises
SF1 - Apex Development Best PractisesSF1 - Apex Development Best Practises
SF1 - Apex Development Best Practises
 
Agile testing
Agile testingAgile testing
Agile testing
 
Agile Mumbai 2020 Conference | How to get the best ROI on Your Test Automati...
Agile Mumbai 2020 Conference |  How to get the best ROI on Your Test Automati...Agile Mumbai 2020 Conference |  How to get the best ROI on Your Test Automati...
Agile Mumbai 2020 Conference | How to get the best ROI on Your Test Automati...
 
Beginners overview of automated testing with Rspec
Beginners overview of automated testing with RspecBeginners overview of automated testing with Rspec
Beginners overview of automated testing with Rspec
 
Practical unit testing in c & c++
Practical unit testing in c & c++Practical unit testing in c & c++
Practical unit testing in c & c++
 
Devtest Orchestration for SDN & NFV
Devtest Orchestration for SDN & NFVDevtest Orchestration for SDN & NFV
Devtest Orchestration for SDN & NFV
 
Performance tuning Grails applications
 Performance tuning Grails applications Performance tuning Grails applications
Performance tuning Grails applications
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - Talk
 
How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.How do you tame a big ball of mud? One test at a time.
How do you tame a big ball of mud? One test at a time.
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
 
Automation in the world of project
Automation  in the world of projectAutomation  in the world of project
Automation in the world of project
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration Monday
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applications
 
Testing - How Vital and How Easy to use
Testing - How Vital and How Easy to useTesting - How Vital and How Easy to use
Testing - How Vital and How Easy to use
 
Performance tuning Grails applications
Performance tuning Grails applicationsPerformance tuning Grails applications
Performance tuning Grails applications
 
Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015
 

More from COMAQA.BY

Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...COMAQA.BY
 
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...COMAQA.BY
 
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...COMAQA.BY
 
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьRoman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьCOMAQA.BY
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...COMAQA.BY
 
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...COMAQA.BY
 
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...COMAQA.BY
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...COMAQA.BY
 
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.COMAQA.BY
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.COMAQA.BY
 
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...COMAQA.BY
 
Моя роль в конфликте
Моя роль в конфликтеМоя роль в конфликте
Моя роль в конфликтеCOMAQA.BY
 
Организация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковОрганизация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковCOMAQA.BY
 
Развитие или смерть
Развитие или смертьРазвитие или смерть
Развитие или смертьCOMAQA.BY
 
Эффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиЭффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиCOMAQA.BY
 
Как стать синьором
Как стать синьоромКак стать синьором
Как стать синьоромCOMAQA.BY
 
Open your mind for OpenSource
Open your mind for OpenSourceOpen your mind for OpenSource
Open your mind for OpenSourceCOMAQA.BY
 
JDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingJDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingCOMAQA.BY
 
Out of box page object design pattern, java
Out of box page object design pattern, javaOut of box page object design pattern, java
Out of box page object design pattern, javaCOMAQA.BY
 
Static and dynamic Page Objects with Java \ .Net examples
Static and dynamic Page Objects with Java \ .Net examplesStatic and dynamic Page Objects with Java \ .Net examples
Static and dynamic Page Objects with Java \ .Net examplesCOMAQA.BY
 

More from COMAQA.BY (20)

Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
 
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
 
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
 
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьRoman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
 
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
 
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
 
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
 
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
 
Моя роль в конфликте
Моя роль в конфликтеМоя роль в конфликте
Моя роль в конфликте
 
Организация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковОрганизация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиков
 
Развитие или смерть
Развитие или смертьРазвитие или смерть
Развитие или смерть
 
Эффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиЭффективная работа с рутинными задачами
Эффективная работа с рутинными задачами
 
Как стать синьором
Как стать синьоромКак стать синьором
Как стать синьором
 
Open your mind for OpenSource
Open your mind for OpenSourceOpen your mind for OpenSource
Open your mind for OpenSource
 
JDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingJDI 2.0. Not only UI testing
JDI 2.0. Not only UI testing
 
Out of box page object design pattern, java
Out of box page object design pattern, javaOut of box page object design pattern, java
Out of box page object design pattern, java
 
Static and dynamic Page Objects with Java \ .Net examples
Static and dynamic Page Objects with Java \ .Net examplesStatic and dynamic Page Objects with Java \ .Net examples
Static and dynamic Page Objects with Java \ .Net examples
 

Recently uploaded

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 

Parallel run selenium tests in a good way

  • 1. Parallel Run Selenium Tests in a Good Way Anton Semenchenko
  • 2. Anton Semenchenko Creator of communities www.COMAQA.BY and www.CoreHard.by, founder of company www.DPI.Solutions, «tricky» manager at EPAM Systems. Almost 15 years of experience in IT, main specialization: Automation, С++ and lower development, management, sales. Anton Semenchenko EPAM Systems, Software Testing Manager
  • 3. Why do we need run tests in parallel?
  • 4. Challenge Challenge • How to invest min amount of time money to run tests in parallel • How to maximize QA Automation ROI • ROI >> 0
  • 5. Solution Let’s define Algorithm “How to run tests in parallel efficiently”
  • 6. Algorithm Define Tests properly Tests attributes Define All shared entities Select proper Selenium WebDriver Wrapper Select proper Architecture Test Parallel approach or combination Some standard Test Runner Build instruments Several Processes Selenium Grid OS Language specific multithreading
  • 7. Why do we need run tests in parallel? 2 types of reasons: • Process related reasons • Project specific reasons • Risk based reasons Meaning: • Test == Feedback Mechanism • Test Value == Feedback Value
  • 8. Feedback’s in Scrum example Methodology – as a predictable way of risk management for some context • Pre planning grooming – run-time feedback from customer side • Planning poker during Iteration planning – run-time feedback from team side mostly + customer side too • Daily Stand up – daily feedback, Team side • Iteration Demo – per iteration feedback, customer side • Iteration Retrospective - per iteration feedback, Team side • Pair programming (as an example) – run-time technical feedback • Unit Tests + CI – close to run-time technical feedback • QA Automation Tests + CI + Report + Report Analyses – daily feedback mechanism • And so on
  • 9. Feedback’s in Scrum example Methodology – as a predictable way of risk management for some context
  • 10. Goals 1. Decrease QA Automation “Window” 2. Decrease Test results analysis “Window” 3. Increase Regression frequency 4. Decrease Optimize hardware utilization 1. Electricity 2. Hardware costs (buy or rent) 5. Increase QA Automation ROI >> 0
  • 11. Algorithm – The best way Test attributes Atomic tests without dependencies Some dependency resolver Add specific annotation plus add new feature to existing standard test-runner Develop your own test- runner with integrated dependency resolver
  • 12. Algorithm – The best way How to choose – ROI calculator as a solution Atomic tests without dependencies Some dependency resolver Decreased time to runDecreased test debug time Lower hardware costs + electricityDecreased test update/support time No time spent on dependency definition No time spent on dependency resolver Lower entry barrier for newcomers Less documentation
  • 13. Algorithm – The best way In most cases – no dependencies: • More expensive specialists • Higher hardware and electricity costs
  • 14. Algorithm – The best way o Define All shared entities o Improve Architecture o For example: • Pre-steps using DB • DB Layer:  Singleton  Thread-safe  Optimize (use profiler)  Migrate to Singleton-Bus (instance per thread, in a thread-safe way)  Solution: in an iteration-based way, start from the simplest singleton
  • 15. Algorithm – The best way o Define All shared entities o Improve Architecture o For example: • Logger • Tracer • Report Engine:  +1 more reason to integrate Test Runner and Report Engine, knows how to run in parallel and integrate reports pieces into one document
  • 16. Algorithm – The best way o Define All shared entities o Improve Architecture o For example: • Data-provider • Any other orthogonal entity:  Define  Isolate  Remember
  • 17. Algorithm – The best way o Select proper Selenium WebDriver Wrapper • Mature • Thread-safe • Easy-to-use “downcast” • Examples:  Selenide – easy to use  JDI evolution  Serenity – more complicated to use
  • 18. Algorithm – The best way o Select proper Architecture • Stateless architecture • Static Page Object • Isolate all orthogonal shared entities • Use “From Conditional to Patterns and reverse” Refactoring as a metric + ROI to prof
  • 19. Algorithm – The best way o Select proper Architecture • Convert to Stateful architecture • Dynamic Page Object • Update all isolated orthogonal shared entities • Re-calculate ROI and reuse “From Conditional to Patterns and reverse” in a systematical way
  • 20. Algorithm – The best way o Some standard test-runner • The lowest layer • Standard (or some specialized), stable, efficient, simple, most of instruments use it as a basement
  • 21. Algorithm – The best way o Build instruments • Use parameters to configure test run • Use Test Runner as a basement • Some kind of Test Runner wrapper • + 1 layer => less stable, less efficient, sometimes easier to use • Anyway, doesn’t work without Test Runner • Maven example: Thread Count and param: Test Method, Test Class, both
  • 22. Algorithm – The best way o Several processes • Using CI • Team City (Job Configuration) • Jenkins (Job Configuration) • Extensive way
  • 23. Algorithm – The best way o Selenium Grid • Infrastructure • Could be used for indirect test run, but this is not primary purpose • Could be combined with all other solutions
  • 24. Algorithm – The best way o Language / OS specific mechanisms • Language, focusing on multithreading • Java  Process  Thread / Fork  JVM (Java property config or command line arguments)
  • 25. Out of scope OS and Language related questions of multi-threading
  • 26. Reasons Transition complexity With proper architecture (plus mature, not self-developed, WebDriver wrapper, like Selenide) -> 0, just 3-5-10 places in a solution, QA Automation Architect or Developer should invest several hours With improper architecture (without any wrapper or with a self-developed WebDriver wrapper) - > complicated question Invest days or weeks to Update Architecture and wrapper (better, to use, mature one) Invest weeks or months to update tons of source code places Without any architecture -> nightmare Invest weeks to redesign tests using proper Architecture and mature wrapper Invest months or even years just to update tests ROI as a metric
  • 27. Architecture related questions Static or Dynamic; stateless or statefull: Architecture related questions?
  • 28. Architecture related questions 1. Static: transform to parallel run 2. Dynamic: transform to parallel run 3. Static <=> Dynamic: transformation criteria 4. Transformation example 5. Detailed information about transformation 6. Static or Dynamic – as an architecture basement
  • 29. Leak of stateless examples Leak of stateless examples in standard Selenium documentation IMHO: due to Selenium development process A tiny group of extra professionals developers No processes No backlog No priorities No сcommittee for backlog and backlog items prioritization No “iterations” How to add new feature Just to implement and then add for review
  • 30. 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?
  • 31. 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?
  • 32. 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?
  • 33. “Replace Conditional with Polymorphism refactoring” as a Static <=> Dynamic: transformation criteria Replace Conditional with Polymorphism as criteria
  • 34. 1. You have a conditional that chooses different behavior depending on the type of an object. 2. Move each leg of the conditional to an overriding method in a subclass. Make the original method abstract. 3. And vice versa 4. Example Replace Conditional with Polymorphism and vice versa
  • 35. 1. Replace Conditional Dispatcher with Command Design Pattern Create a Command for each action. Store the Commands in a collection and replace the conditional logic with code to fetch and execute Commands. 2. Replace Conditional Logic with Strategy Design Pattern Create a Strategy for each variant and make the method delegate the “calculation” to a Strategy instance. 3. Replace Conditional Logic with State Design Pattern Create a State for each variant as a part of “State Machine” and make the method delegate tricky “calculation” to the “State Machine”. Replace Conditional with … more sophisticated options
  • 36. 1. Problem: You have a conditional that performs various actions depending on object type or properties. 2. Solution: Create subclasses matching the branches of the conditional. In them, create a shared method and move code from the corresponding branch of the conditional to it. Replace the conditional with the relevant method call. The result is that the proper implementation will be attained via polymorphism depending on the object class. Replace Conditional with Polymorphism – detailed description
  • 37. 1. Transformation example 2. Detailed information about transformation 3. Static or Dynamic – as an architecture basement Example plus some details
  • 38. Custom Test Runner: General scheme Out of scope Parallel Run Selenium Tests in a Bad Way #1 • It starts Wed 12/14/2016 • Wed Dec 14, 2016 1:00 PM - 2:00 PM GMT+3
  • 39. Risks based “good” examples of customized Test Runners Out of scope Parallel Run Selenium Tests in a Bad Way #1 • It starts Wed 12/14/2016 • Wed Dec 14, 2016 1:00 PM - 2:00 PM GMT+3
  • 40. “Bad” examples of customized Test Runners Out of scope Parallel Run Selenium Tests in a Bad Way #1 • It starts Wed 12/14/2016 • Wed Dec 14, 2016 1:00 PM - 2:00 PM GMT+3
  • 41. “Take away” points Algorithm 1. Define Tests properly Tests attributes 2. Define All shared entities 3. Select proper Selenium WebDriver Wrapper 4. Select proper Architecture 5. Test Parallel approach or combination 1. Some standard Test Runner 2. Build instruments 3. Several Processes 4. Selenium Grid 5. OS Language specific multithreading
  • 42. Summary Step by step summary 1. Algorithm 2. Static or Dynamic; stateless or statefull: Architecture related questions 3. Metrics definition 4. Custom Test Runner: General scheme 1. Risks based “good” examples of customized Test Runners 2. “Bad” examples of customized Test Runners
  • 43. What’s next? Parallel Run Selenium Tests in a Bad Way #1 • It starts Wed 12/14/2016 • Wed Dec 14, 2016 1:00 PM - 2:00 PM GMT+3
  • 44. 1. “Refactoring is a controlled technique for improving the design of an existing code base.” 2. “Its essence is applying a series of small behavior-preserving transformations, each of which "too small to be worth doing".” 3. “The cumulative effect of each of these transformations is quite significant.” 4. “By doing Refactoring in small steps you reduce the risk of introducing errors. You also avoid having the system broken while you are carrying out the restructuring - which allows you to gradually refactor a system over an extended period of time.” Refactoring by Martin Fowler
  • 45. 1. Ask yourself "how can I hide some details from the rest of the software?“ 2. What is encapsulation? hide variability hide complexity Details "conflict of interests“ “tech” discussions 3. Example of public member or private member + setter/getter What is really hidden? Where is simplicity? Encapsulation – the most important OOP principle
  • 46. 1. “There is a close relationship between refactoring and patterns.” 2. “Often the best way to use patterns is to gradually refactor your code to use the pattern once you realize it’s needed.” 3. “Joshua Kerievsky’s Refactoring to Patterns explores this topic, making this a great topic to learn about once you’ve got the basic refactoring's under your belt.” 4. “From Refactoring To Design Pattern” path – from pure design to adequate design 5. “From ~Design Patterns To Refactoring” path – from over design to adequate design Refactoring and Design Patterns by Martin Fowler
  • 47. 1. “Refactoring to Patterns is the marriage of refactoring - the process of improving the design of existing code - with patterns, the classic solutions to recurring design problems.” 2. “Refactoring to Patterns suggests that using patterns to improve an existing design is better than using patterns early in a new design. This is true whether code is years old or minutes old.” 3. “We improve designs with patterns by applying sequences of low-level design transformations, known as refactoring's.” 4. And vice versa Refactoring and Design Patterns by Joshua Kerievsky
  • 48. 1. There are more then 90 types of refactoring 2. Refactoring types that relate to a particular field is called a ”Refactoring Language” 3. ”Refactoring Language” gives a common terminology for discussing the situations specialists are faced with: “The elements of this language are entities called Refactoring types”; “Each type of Refactoring describes a problem that occurs over and over again in our environment”; “Each type of Refactoring describes the core of the solution to that “~low level” problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice!” Refactoring Catalog / Language
  • 49. 1. You have a conditional that chooses different behavior depending on the type of an object. 2. Move each leg of the conditional to an overriding method in a subclass. Make the original method abstract. 3. And vice versa 4. Example Replace Conditional with Polymorphism and vice versa
  • 50. 1. Replace Conditional Dispatcher with Command Design Pattern Create a Command for each action. Store the Commands in a collection and replace the conditional logic with code to fetch and execute Commands. 2. Replace Conditional Logic with Strategy Design Pattern Create a Strategy for each variant and make the method delegate the “calculation” to a Strategy instance. 3. Replace Conditional Logic with State Design Pattern Create a State for each variant as a part of “State Machine” and make the method delegate tricky “calculation” to the “State Machine”. Replace Conditional with … more sophisticated options
  • 51. 1. Problem: You have a conditional that performs various actions depending on object type or properties. 2. Solution: Create subclasses matching the branches of the conditional. In them, create a shared method and move code from the corresponding branch of the conditional to it. Replace the conditional with the relevant method call. The result is that the proper implementation will be attained via polymorphism depending on the object class. Replace Conditional with Polymorphism – detailed description
  • 52. 1. This refactoring technique can help if your code contains operators performing various tasks that vary based on: Class of the object or interface that it implements Value of an object's field Result of calling one of an object's methods 2. If a new object property or type appears, you will need to search for and add code in all similar conditionals. Thus the benefit of this technique is multiplied if there are multiple conditionals scattered throughout all of an object's methods. Why refactor
  • 53. 1. This technique adheres to the Tell-Don't-Ask principle: instead of asking an object about its state and then performing actions based on this, it is much easier to simply tell the object what it needs to do and let it decide for itself how to do that. 2. Removes duplicate code. You get rid of many almost identical conditionals. 3. If you need to add a new execution variant, all you need to do is add a new subclass without touching the existing code (Open/Closed Principle). Benefits
  • 54. 1. For this refactoring technique, you should have a ready hierarchy of classes that will contain alternative behaviors. If you do not have a hierarchy like this, create one. Other techniques will help to make this happen: 2. Replace Type Code with Subclasses. Subclasses will be created for all values of a particular object property. This approach is simple but less flexible since you cannot create subclasses for the other properties of the object. 3. Replace Type Code with State/Strategy. A class will be dedicated for a particular object property and subclasses will be created from it for each value of the property. The current class will contain references to the objects of this type and delegate execution to them. 4. The following steps assume that you have already created the hierarchy. Preparing to Refactor
  • 55. 1. If the conditional is in a method that performs other actions as well, perform Extract Method. 2. For each hierarchy subclass, redefine the method that contains the conditional and copy the code of the corresponding conditional branch to that location. 3. Delete this branch from the conditional. 4. Repeat replacement until the conditional is empty. Then delete the conditional and declare the method abstract. Refactoring Steps
  • 56. Regression frequency (RF) Definition • Regression Frequency (RF) = How frequent does automated regression run? «Meaning» • The value of product use is better as higher it is. That is ok for automated tests, if automation test runs are frequent, their importance for customer is bigger. Because of that that metric is one of the key metrics while valuing ROI.
  • 57. Regression frequency (RF) Boundaries • Widespread boundaries / recommendations: smoke – every night full-regression – every weekend Where do we get info from • Automation reports • Continuous Integration (CI)
  • 58. Regression frequency (RF) Examples: • RF and Economical expediency of АТ(ROI); • Facebook and Bamboo • HeadHunter • Kanban: RF and WarGaming experience • Contra example «Absolute» «recommendations» • Contra example «Commit window»
  • 59. Regression frequency (RF) Visualization • Not less than one a week – green color • Not less than once in two weeks – yellow color • Less than one a month - red color • More frequent than once a day - red color Connection between other metrics • Automation testing window (ATW); • Test results analysis window (TRAW); • Economical expediency of АТ (ROI) • “Commit window“ Category: • Quality • Automated testing
  • 60. АТ «Window» Definition • Automated testing «Window» – how much physical time does Automated test run take (full run or subset) • Automated testing «Window» – how much system «lab» time does Automated test run take (full run or subset)
  • 61. АТ «Window» «Meaning» • Time, that is required to be calculated while estimating economical expediency of AUT while analyzing ROI in comparison with manual testing. Metric is required as for making decision about introduction of Automation and as for valuing current state of implemented automation with the aim of looking for narrow places.
  • 62. АТ «Window» Boundaries • Depends on the size of the project, might take from couple of hours to many hours. In general, Smoke after commit should be not longer than one hour, full Regression not more than two days (weekend). Where do we get info from • Test Reports • Continuous Integration (CI)
  • 63. АТ «Window» Examples: • Social networks (Facebook, Bamboo), CMS, CMS templates – before automation tools for vizual testing automated test cases percent was not big; • HeadHunter example • Counterexample – physical time • Counterexample – machine time (Cloud) • Technical details: Stateless and Statefull Automation, parallel run • Technical details: Effective waiters • Technical details: Premature optimization
  • 64. АТ «Window» Visualization • Smoke <= 1 hour, Full Regression <= 12 hours (night) – green color • Smoke <= 2 hours, Full Regression <= 2 days (weekend) – yellow color • Smoke > 2 hours, Full Regression > 2 days(weekend) – red color
  • 65. АТ «Window» Connection between other metrics • Automation progress (AP) • Automated tests coverage percentage • Regression Frequency (RF) • Automated tests stability (ATS) • Economical expediency of АТ (ROI) Category: • Cost / Time • Automated testing
  • 66. Test results analysis “Window” (TRAW) Definition • Analyzing «Window» of automation test results = How much time does it take to analyze received data? «Meaning» • Metric shows how exhaustive and readable are reports, how stabile AT and AUT. When the window is too big, less time would be devoted to tests development, or analysis will be performed not thoroughly enough, which will decrease Automation value.
  • 67. Test results analysis “Window” (TRAW) Boundaries • In dependency of the project can last from some minutes to many hours. In general, analyzing results of Smoke test after commit – should take couple of minutes, analyzing results of full Regression – should take couple of hours, ideally, less than an hour. Where do we get info from • Test Reports • Continuous Integration (CI) • Task Tracking Systems
  • 68. Test results analysis “Window” (TRAW) Examples: • Social networks (Facebook, Bamboo), CMS, CMS templates – before automation tools for vizual testing automated test cases percent was not big; • HeadHunter example • Mature Data Protection Solution, new SQL Denali plug-in, close to 100%; • Mature Secure VPN (R), technological stack; • Counterexamples;
  • 69. Test results analysis “Window” (TRAW) Visualization • Smoke <= 10 minutes, Full Regression <= 2 hours – green color • Smoke <= 20 minutes, Full Regression <= 4 hours – yellow color • Smoke > 20 minutes, Full Regression > 4 hours – red color
  • 70. Test results analysis “Window” (TRAW) • Connection between other metrics • Automation progress (AP) • Automated tests coverage Percentage (ATC) • Regression Frequency (RF) • Automated Tests stability (ATS) • Category: • Cost / Time • Automated testing
  • 71. ROI Definition • Economical expedience of AT (ROI) = Manual efforts – (Automation efforts + Automation investment) / QA investment * 100% «Meaning» • Shows does it have sense to implement automation on the current project in the current time. It might happen, that at some conditions, automation on the project can be economically inappropriate, because manual testing, even in long term future can be cheaper.
  • 72. ROI Boundaries • Out of scope Where do we get info from • Test Strategy • Test Plan • Test Management Systems (TMS) • Task Tracking System
  • 73. ROI Examples: • Variety of projects • Standard «problem» while working with middle+ automation specialists of «old formation» • A set of “alternative” ways of ROI usage (out of scope)
  • 74. ROI (+ additional profit) Visualization • Comparing trends • Manual testing vs Automation • Whole variant of option of implementing / developing automation • Different investment options • Choosing optimal team-trend here and now
  • 75. ROI Connection between other metrics • % of Tests, suitable for AT • Regression frequency (RF) • Automated test creation time (ATDT) • Automated test support time (ATST) • Automated tests stability (ATS) • Automation testing window (ATW) • Test results analysis window (TRAW) Category: • Price / time • Automation testing
  • 77. www.COMAQA.BY Community’s audience Testing specialists (manual and automated) Automation tools developers Managers and sales specialists in IT IT-specialists, thinking about migrating to automation Students looking for perspective profession. Community goals Create unified space for effective communication for all IT-specialists in the context of automated testing. Your profit Ability to listen to reports from leading IT-specialists and share your experience. Take part in «promo»-versions of top IT-conferences in CIS for free. Meet regularly, at different forums, community «offices», social networks and messengers.
  • 79. www.CoreHard.by Community’s audience «Harsh» С++ developers & co, IoT, BigData, High Load, Parallel Computing Automation tools developers Managers and sales specialists in IT Students looking for perspective profession. Community goals Create unified space for effective communication for all IT-specialists in the context of «harsh» development. Your profit Ability to listen to reports from leading IT-specialists and share your experience. Take part in «promo»-versions of top IT-conferences in CIS for free. Meet regularly, at different forums, community «offices», social networks and messengers.

Editor's Notes

  1. Text should be left aligned / icons should be broken into two columns three and three