Difference between revisions of "Test Automation Patterns"

From Test Automation Patterns
Jump to navigation Jump to search
(A pattern is a general reusable solution to a commonly occurring problem within a given context. They are commonly used in software development.)
 
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<div id="content_view" class="wiki" style="display: block"><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">'''What is a pattern?'''</span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">A pattern is a general reusable solution to a commonly occurring problem within a given context. They are commonly used in software development.</span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br /> </span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">A test automation pattern is a way of solving an issue or problems in test automation that has worked in practice for many people. <span style="line-height: 1.5">In other words, a pattern is expert knowledge proven by repeated experience.</span></span></span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br /> <span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"> Patterns do not exist in a void: each is a solution to an issue that occurs under some particular conditions. Also patterns are often associated with other patterns, either because they can only be implemented using other patterns or because they can only be applied after other patterns have been put into practice. As an example think about the pattern “car”: can you really believe that we could use this “pattern” so successfully if we hadn’t also implemented the patterns “paved road” and “gas station”?</span></span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br /> <span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><span style="font-size: 16px"> The relationship to other patterns forms the “grammar” of a pattern language. Just as in English you cannot write the parts of a sentence in a gratuitous sequence, but you must follow rules, so also with test automation patterns you have to follow their natural hierarchy.</span><br /> <span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">In this wiki, we show PATTERNS in CAPS.</span></span><br /> </span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">'''What a pattern is not'''<br /> <span style="font-size: 16px">A pattern is not</span></span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br />  
+
<div id="content_view" class="wiki" style="display: block"><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">
 +
=What is a pattern?=
 +
</span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">A pattern is a general reusable solution to a commonly occurring problem within a given context. They are commonly used in software development.</span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br /> </span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">A test automation pattern is a way of solving an issue or problems in test automation that has worked in practice for many people. <span style="line-height: 1.5">In other words, a pattern is expert knowledge proven by repeated experience.</span></span></span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br /> <span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"> Patterns do not exist in a void: each is a solution to an issue that occurs under some particular conditions. Also patterns are often associated with other patterns, either because they can only be implemented using other patterns or because they can only be applied after other patterns have been put into practice. As an example think about the pattern “car”: can you really believe that we could use this “pattern” so successfully if we hadn’t also implemented the patterns “paved road” and “gas station”?</span></span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br /> <span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><span style="font-size: 16px"> The relationship to other patterns forms the “grammar” of a pattern language. Just as in English you cannot write the parts of a sentence in a gratuitous sequence, but you must follow rules, so also with test automation patterns you have to follow their natural hierarchy.</span><br /> <span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">In this wiki, we show PATTERNS in CAPS.</span></span><br /> </span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">
 +
=What a pattern is not=
 +
<span style="font-size: 16px">A pattern is not</span></span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br />  
  
 
* <span style="line-height: 1.5">a finished solution that you can just "plug in" directly to your situation</span>
 
* <span style="line-height: 1.5">a finished solution that you can just "plug in" directly to your situation</span>
 
* <span style="line-height: 1.5">prescriptive (you must do this)</span>
 
* <span style="line-height: 1.5">prescriptive (you must do this)</span>
 
* <span style="line-height: 1.5">a step-by-step procedure (do this first, then that)</span>
 
* <span style="line-height: 1.5">a step-by-step procedure (do this first, then that)</span>
</span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br /> </span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><span style="font-size: 16px">Patterns are ideas that you can adapt and implement in your own context and which will hopefully help solve some of your issues.</span></span><br /> <span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">'''Typical test automation patterns:'''</span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">The following are some solutions that are described in the patterns in this wiki.</span><br />  
+
</span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><br /> </span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify"><span style="font-size: 16px">Patterns are ideas that you can adapt and implement in your own context and which will hopefully help solve some of your issues
 +
=Typical test automation patterns:=
 +
</span><span style="display: block; font-family: Arial; font-size: 16px; text-align: justify">The following are some solutions that are described in the patterns in this wiki.</span><br />  
  
* <span style="font-size: 16px">a description of how testware should be organised, designed and developed, in order to solve test automation problems </span><span style="font-size: 16px; line-height: 24px">([[ ABSTRACTION LEVELS]], [[ TESTWARE ARCHITECTURE]]</span>, <span style="font-size: 16px; line-height: 24px">[[ KEYWORD-DRIVEN TESTING]])</span>
+
* <span style="font-size: 16px">a description of how testware should be organised, designed and developed, in order to solve test automation problems </span><span style="font-size: 16px; line-height: 24px">([[ABSTRACTION LEVELS]], [[TESTWARE ARCHITECTURE]]</span>, <span style="font-size: 16px; line-height: 24px">[[KEYWORD-DRIVEN TESTING]])</span>
* <span style="font-size: 16px">a rule about how to perform a particular step in a test automation process, for example to improve efficiency</span><br /> <span style="font-size: 16px"> ([[ AUTOMATE WHAT'S NEEDED]], [[S GOOD PROGRAMMING PRACTICES]], [[E MAINTAIN THE TESTWARE]])</span>
+
* <span style="font-size: 16px">a rule about how to perform a particular step in a test automation process, for example to improve efficiency</span><br /> <span style="font-size: 16px"> ([[ AUTOMATE WHAT'S NEEDED]], [[GOOD PROGRAMMING PRACTICES]], [[MAINTAIN THE TESTWARE]])</span>
* <span style="font-size: 16px">a suggestion about how to resolve a management issue ([[ SET CLEAR GOALS]], [[ DO A PILOT]], [[ DEDICATED RESOURCES]])</span>
+
* <span style="font-size: 16px">a suggestion about how to resolve a management issue ([[SET CLEAR GOALS]], [[DO A PILOT]], [[DEDICATED RESOURCES]])</span>
* <span style="font-size: 16px">ways of dealing with test execution problems ([[ FAIL GRACEFULLY]], [[ STEEL THREAD]], [[ KILL THE ZOMBIES]])</span>
+
* <span style="font-size: 16px">ways of dealing with test execution problems ([[FAIL GRACEFULLY]], [[STEEL THREAD]], [[KILL THE ZOMBIES]])</span>
* <span style="font-size: 16px">a description of a behaviour that, if not contained, may compromize the entire automation project ([[ Failure Patterns]])</span>
+
* <span style="font-size: 16px">a description of a behaviour that, if not contained, may compromize the entire automation project ([[ Failure Patterns]]). These are not actually patterns as we use the term, but "anti-patterns", i.e. things that you should NOT do. They are really issues, but "failure patterns" is a good description of them and is what Michael Stahl called them.</span><br />
<br /> '''<span style="font-size: 16px">Classification of patterns:</span>'''<br /> <span style="font-size: 16px">Patterns have been divided into categories depending on their scope:</span><br />  
+
 
 +
=Classification of patterns:=
 +
<span style="font-size: 16px">Patterns have been divided into categories depending on their scope:</span><br />  
 
{| class="wiki_table"
 
{| class="wiki_table"
 
| <span style="font-size: 16px">[[Process Patterns]]</span><br />
 
| <span style="font-size: 16px">[[Process Patterns]]</span><br />
Line 21: Line 29:
 
| <span style="font-size: 16px">[[Execution Patterns]]</span><br />
 
| <span style="font-size: 16px">[[Execution Patterns]]</span><br />
 
|}
 
|}
<span style="font-size: 16px">Within each category the patterns are listed alphabetically.</span><br /> <br /> <span style="font-size: 16px">The [[Test Automation Patterns Mind Map]] shows an overview of the Test Automation Patterns, and for each of the four categories, there is a mind map showing the Patterns with the next level of patterns (with a "+" symbol to indicate further "called" patterns. These mind maps are static within this wiki (you can't click on them, they are not automatically updated). The mind maps open in a separate tab, so that you can refer back to the "big picture" when you are browsing through the patterns.</span><br /> <br /> <span style="font-size: 16px">[[Home Home]]</span></div>
+
<span style="font-size: 16px">Within each category the patterns are listed alphabetically.</span><br /> <br /> <span style="font-size: 16px">The [[Test Automation Patterns Mind Map]] shows an overview of the Test Automation Patterns, and for each of the four categories, there is a mind map showing the Patterns with the next level of patterns (with a "+" symbol to indicate further "called" patterns. These mind maps are static within this wiki (you can't click on them, they are not automatically updated).</span><br /> <br /> <span style="font-size: 16px">[[Main Page]]</span>

Latest revision as of 11:18, 6 July 2018

What is a pattern?

A pattern is a general reusable solution to a commonly occurring problem within a given context. They are commonly used in software development.
A test automation pattern is a way of solving an issue or problems in test automation that has worked in practice for many people. In other words, a pattern is expert knowledge proven by repeated experience.
Patterns do not exist in a void: each is a solution to an issue that occurs under some particular conditions. Also patterns are often associated with other patterns, either because they can only be implemented using other patterns or because they can only be applied after other patterns have been put into practice. As an example think about the pattern “car”: can you really believe that we could use this “pattern” so successfully if we hadn’t also implemented the patterns “paved road” and “gas station”?

The relationship to other patterns forms the “grammar” of a pattern language. Just as in English you cannot write the parts of a sentence in a gratuitous sequence, but you must follow rules, so also with test automation patterns you have to follow their natural hierarchy.
In this wiki, we show PATTERNS in CAPS.

What a pattern is not

A pattern is not

  • a finished solution that you can just "plug in" directly to your situation
  • prescriptive (you must do this)
  • a step-by-step procedure (do this first, then that)


Patterns are ideas that you can adapt and implement in your own context and which will hopefully help solve some of your issues

Typical test automation patterns:

The following are some solutions that are described in the patterns in this wiki.

Classification of patterns:

Patterns have been divided into categories depending on their scope:

Process Patterns
Management Patterns
Design Patterns
Execution Patterns

Within each category the patterns are listed alphabetically.

The Test Automation Patterns Mind Map shows an overview of the Test Automation Patterns, and for each of the four categories, there is a mind map showing the Patterns with the next level of patterns (with a "+" symbol to indicate further "called" patterns. These mind maps are static within this wiki (you can't click on them, they are not automatically updated).

Main Page