SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
Automating Tactically and Strategically
SauceCon 2020
Alan Richardson
— @EvilTester
— EvilTester.com
— compendiumdev.co.uk
— digitalonlinetactics.com
@EvilTester 1
What is Tactical vs Strategic?
— Tactical
— for a specific purpose at this point in time,
possibly a bit rough around the edges, not
necessarily completely robust for everyone
— Strategic
— being critical to long term aims, maintained and
maintainable, agreed and committed to
@EvilTester 2
Some Quick Examples
@EvilTester 3
Video Script Generator
— github.com/eviltester/scriptgenerator
— Generates HTML scripts from DSL
— Tactical support of product development Strategy
@EvilTester 4
DSL
Notes:
a basic script
DO:
set of instructions
SAY:
stuff to say
@EvilTester 5
HTML Output
@EvilTester 6
Tactical Implementation as
@Test
@EvilTester 7
public class ScriptFormatterTest {
@Disabled("This is not a build test, this is an adhoc GUI")
@Test
public void givenAScriptFolderCreateAHTMLFiles()
throws IOException {
ScriptPaths paths = new ScriptPaths();
paths.readFrom(""); paths.outputTo("");
//...
ScriptFormatterProcessor processor =
new ScriptFormatterProcessor(paths);
processor.outputAllScripts();
SimpleWriter writer = newSimpleSystemOutBackedWriter();
new ProcessorTextReport(writer).output(processor);
Assertions.assertEquals(0,processor.getErrorReports());
}
}
@EvilTester 8
Strategic Implementation
— Evolved from @Test
— Until 'main' required
@EvilTester 9
Patreon Scraper
— Tactical support of a
marketing Strategy
— every month build a pdf
from patreon posts
— uses unofficial APIs, web gui,
HTTP access
— 'hacked' together code, not
releasable to others
— gradually automates more
on each run
@EvilTester 10
Shakedown Automation Example
Problem:
— External System changing too fast
— Too many simple bugs
— Find problems a!er days of testing
@EvilTester 11
Shakedown Automation Example
Hacked together tactical tool to aid test strategy:
— Model based 'shake down' execution
— Runs for hours filling in forms with random data
combinations
— Any issues investigated
— If it passes, then we test
@EvilTester 12
A Quick Code Example
from:
— github.com/eviltester/automationAbstractions
@EvilTester 13
Tactical - does not mean no
abstractions
@EvilTester 14
@Test
public void canCreateAToDo(){
WebDriver driver = new ExecutionDriver().get();
String siteURL = new TodoMVCSite().getURL();
driver.get(siteURL);
int originalNumberOfTodos = driver.findElements(
By.cssSelector("ul.todo-list li")).size();
WebElement createTodo = driver.findElement(
By.className("new-todo"));
createTodo.click();
createTodo.sendKeys("new task");
createTodo.sendKeys(Keys.ENTER);
Assertions.assertTrue(driver.findElement(
By.className("filters")).isDisplayed());
driver.close();
}
@EvilTester 15
Strategic Code Will Mean
Abstractions
@EvilTester 16
@Test
public void canCreateAToDo(){
WebDriver driver = new ExecutionDriver().get();
TodoMVCUser user = new TodoMVCUser(driver,
new TodoMVCSite());
user.opensApplication().and().
createNewToDo("new task");
TodoMVCPojoPage page =
new TodoMVCPojoPage(driver,
new TodoMVCSite().getURL());
assertThat(page.getCountOfTodoDoItems(), is(1));
assertThat(page.isFooterVisible(), is(true));
ExecutionDriver.closeDriver(driver);
}
@EvilTester 17
Differences?
— Maintainable
— How much hand holding required
— Risk and Trust
— Commitment to creation
— Reusable
— Readable for more people
— Supports creation
@EvilTester 18
Here are some common issues
teams face with Automating
illustrated by a Case Study
@EvilTester 19
A Case Study to Illustrate
— Content Management Based Web Site
— Agile Project
— Sprints
— Not Enough Time for Testing
— Automating Only by Test Team
— Automation New for Company
— Automation becomes Tech Debt
@EvilTester 20
Why?
— Beliefs vs Realities
— Rituals vs Agreement
Because "this is what you do on Agile projects"
@EvilTester 21
We did not have a distinction
between tactical and strategic
@EvilTester 22
We did not have a distinction between tactical and
strategic
— doing strategic work but without strategic
commitment
— automating, stories, sprints, not done
— adopting tactics without knowing the aim (Rituals)
— poor quality standups, stories, etc.
— our work approach did not fit the reality of the
project (Agile Beliefs)
@EvilTester 23
How could a distinction between tactical and Strategic
have helped?
Forces us to recognise we are making a decision.
— Automating is full of decisions
— Heuristics are not absolute (YAGNI, DRY)
@EvilTester 24
Strategic
— Long term project
— Agile best fits end user's release needs
— Approach has project commitment, not role (Tester)
commitment
— Maintenance of the automated execution long term
— Develop features to support automating and time to
automate in sprint
This doesn't really describe the project.
@EvilTester 25
Tactical
— site is a 'one off'
— no real need for 'Agile'
— focus on business requirements, not dev process
— tooling to augment and identify risk manifestation
— automate small chunks not full stories
@EvilTester 26
We did not have a distinction
between Strategic and Tactical
We had "Agile"
@EvilTester 27
Without a distinction there is a risk that we don't make
situational decisions.
— "Agile" is not the Context
— "The Project" is the Context
@EvilTester 28
Not a Binary Distinction
"The distinction between tactical and strategic
planning is o!en made but is seldom made clear.
Decisions that appear to be strategic to one person
may appear to be tactical to another. This suggests
that the distinction is relative rather than absolute."
"A Concept of Corporate Planning", Russell L. Ackoff
@EvilTester 29
Seeking Simpler Distinctions
"We should blunt our sharp points, and unravel the
complications of things;"
"Tao Teh King", Lao-Tze, Translated by James Legge
gutenberg.org/cache/epub/216/pg216.txt
— Not a binary distinction
— Work to understand and remove complications
@EvilTester 30
Something is Tactical until it becomes Strategic
— If the work is tactical then...
— who cares, go do it.
— But when it become strategic...
— it will last longer and impact more people/
systems and consideration of alternatives
becomes more important.
@EvilTester 31
Is this code 'Rubbish' or 'Tactical'
@EvilTester 32
@Test
public void canCreateAToDo(){
WebDriver driver = new ChromeDriver();
String siteURL = "http://todomvc.com/examples/backbone/"
driver.get(siteURL);
int originalNumberOfTodos = driver.findElements(
By.cssSelector("ul.todo-list li")).size();
WebElement createTodo = driver.findElement(
By.className("new-todo"));
createTodo.click();
createTodo.sendKeys("new task");
createTodo.sendKeys(Keys.ENTER);
Assertions.assertTrue(driver.findElement(
By.className("filters")).isDisplayed());
int newToDoCount = driver.findElements(
By.cssSelector("ul.todo-list li")).size();
Assertions.assertTrue(
newToDoCount > originalNumberOfTodos);
driver.close();
}
@EvilTester 33
Cannot tell from code, but it is Sub-Optimal
What is sub-optimal about it?
— no re-use of the driver, or 'site' information across
tests
— everything hard coded
— uses low level WebDriver in the test
— assertion doesn't have readable message if
something goes wrong
— etc.
@EvilTester 34
Rubbish
What would make this 'rubbish'?
If we had 20+ tests, and they all looked like this.
@EvilTester 35
Why, Rubbish?
— Because we would have to maintain all the tests
when URLs or locators change
— Tests require deep familiarity with the application
in order to read, let alone maintain
— This is a very small path, a larger path, written in
this way would be an incredibly long and hard to
maintain test
@EvilTester 36
Tactical
When would this be acceptable for Tactical?
When we decide:
— to take the risk and impact.
— we are not working strategic yet.
@EvilTester 37
Tactical isn't a "Get out of jail
free" word, to justify a long term
sub-optimal approach.
@EvilTester 38
How can this distinction help?
@EvilTester 39
Forces Decision Making
— Is this Tactical or Strategic?
— Different
— Attitude
— Expectations
— Agreements
@EvilTester 40
Tech Debt: stuff we should have
done, but we didn't because we
took a tactical approach, and we
hope it won't bite us later.
@EvilTester 41
Tech Debt is not Strategic
Prioritising tactically, is OK for activities not part of
Strategic path.
But, many of them are, and it is those ones that we
have to go back and pick up the pieces for.
@EvilTester 42
keep that distinction " Strategic / Tactical" in mind
"I think, that if I can keep that distinction " Strategic /
Tactical" in mind when I perform my processes and
daily tasks it will hopefully remind me to tidy up
more a!er the strategic activities, and delete more
a!er the tactical activities."
@EvilTester 43
"Quality is everyone's responsibility"
— Strategy is agreed across all systems
— Automation fails when strategic for 'testing' but not
for 'the project'
— Tactics work best when implemented by skilled staff
— Strategic allows building up everyone's capability to
contribute
— Strategic requires working together
@EvilTester 44
Impact on my work
@EvilTester 45
Start Tactical - Refactor to Strategic
— Start with off the shelf tool
— Script in tool or customise
— Hack out something in an @Test
— Experiment
— Each time I run, revisit the code I refactor
— The more it is used, the more strategic it becomes
@EvilTester 46
Tactical vs Strategic
— Distinction to force Decisions
— Tactical can Evolve To Strategic
— Tactical supports more experimentation
— Strategic requires Commitment
— Tactics can be used within a Strategy
— Not about "Abstractions", it is about Decisions
— Decision and Reality based vs Belief and Ritual
Based
@EvilTester 47
Tactical vs Strategic
A distinction to force decision
making based on the reality of the
situation, not our beliefs about the
situation.
@EvilTester 48
Alan Richardson
— @EvilTester
— EvilTester.com
— compendiumdev.co.uk
— digitalonlinetactics.com
@EvilTester 49

Weitere ähnliche Inhalte

Was ist angesagt?

Automating Pragmatically - Testival 20190604
Automating Pragmatically - Testival 20190604Automating Pragmatically - Testival 20190604
Automating Pragmatically - Testival 20190604Alan Richardson
 
Selenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver TutorialSelenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver TutorialAlan Richardson
 
Odinstar 2017 - Real World Automating to Support Testing
Odinstar 2017 - Real World Automating to Support TestingOdinstar 2017 - Real World Automating to Support Testing
Odinstar 2017 - Real World Automating to Support TestingAlan Richardson
 
If you want to automate, you learn to code
If you want to automate, you learn to codeIf you want to automate, you learn to code
If you want to automate, you learn to codeAlan Richardson
 
Evil testers guide to technical testing
Evil testers guide to technical testingEvil testers guide to technical testing
Evil testers guide to technical testingAlan Richardson
 
Add More Security To Your Testing and Automating - Saucecon 2021
Add More Security To Your Testing and Automating - Saucecon 2021Add More Security To Your Testing and Automating - Saucecon 2021
Add More Security To Your Testing and Automating - Saucecon 2021Alan Richardson
 
Technology Based Testing
Technology Based TestingTechnology Based Testing
Technology Based TestingAlan Richardson
 
Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...
Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...
Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...Alan Richardson
 
Technical Testing Webinar
Technical Testing WebinarTechnical Testing Webinar
Technical Testing WebinarAlan Richardson
 
Black Ops Testing Workshop from Agile Testing Days 2014
Black Ops Testing Workshop from Agile Testing Days 2014Black Ops Testing Workshop from Agile Testing Days 2014
Black Ops Testing Workshop from Agile Testing Days 2014Alan Richardson
 
Joy of Coding Conference 2019 slides - Alan Richardson
Joy of Coding Conference 2019 slides - Alan RichardsonJoy of Coding Conference 2019 slides - Alan Richardson
Joy of Coding Conference 2019 slides - Alan RichardsonAlan Richardson
 
Technical and Testing Challenges: Using the "Protect The Square" Game
Technical and Testing Challenges: Using the "Protect The Square" GameTechnical and Testing Challenges: Using the "Protect The Square" Game
Technical and Testing Challenges: Using the "Protect The Square" GameAlan Richardson
 
How To Test With Agility
How To Test With AgilityHow To Test With Agility
How To Test With AgilityAlan Richardson
 
Confessions of an Accidental Security Tester
Confessions of an Accidental Security TesterConfessions of an Accidental Security Tester
Confessions of an Accidental Security TesterAlan Richardson
 
Open source tools - Test Management Summit - 2009
Open source tools - Test Management Summit - 2009Open source tools - Test Management Summit - 2009
Open source tools - Test Management Summit - 2009Alan Richardson
 
Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...
Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...
Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...Alan Richardson
 
Lessons Learned When Automating
Lessons Learned When AutomatingLessons Learned When Automating
Lessons Learned When AutomatingAlan Richardson
 
TestIstanbul May 2013 Keynote Experiences With Exploratory Testing
TestIstanbul May 2013 Keynote Experiences With Exploratory TestingTestIstanbul May 2013 Keynote Experiences With Exploratory Testing
TestIstanbul May 2013 Keynote Experiences With Exploratory TestingAlan Richardson
 
The Evil Tester's Guide to HTTP proxies Tutorial
The Evil Tester's Guide to HTTP proxies TutorialThe Evil Tester's Guide to HTTP proxies Tutorial
The Evil Tester's Guide to HTTP proxies TutorialAlan Richardson
 
Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...
Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...
Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...Alan Richardson
 

Was ist angesagt? (20)

Automating Pragmatically - Testival 20190604
Automating Pragmatically - Testival 20190604Automating Pragmatically - Testival 20190604
Automating Pragmatically - Testival 20190604
 
Selenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver TutorialSelenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver Tutorial
 
Odinstar 2017 - Real World Automating to Support Testing
Odinstar 2017 - Real World Automating to Support TestingOdinstar 2017 - Real World Automating to Support Testing
Odinstar 2017 - Real World Automating to Support Testing
 
If you want to automate, you learn to code
If you want to automate, you learn to codeIf you want to automate, you learn to code
If you want to automate, you learn to code
 
Evil testers guide to technical testing
Evil testers guide to technical testingEvil testers guide to technical testing
Evil testers guide to technical testing
 
Add More Security To Your Testing and Automating - Saucecon 2021
Add More Security To Your Testing and Automating - Saucecon 2021Add More Security To Your Testing and Automating - Saucecon 2021
Add More Security To Your Testing and Automating - Saucecon 2021
 
Technology Based Testing
Technology Based TestingTechnology Based Testing
Technology Based Testing
 
Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...
Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...
Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...
 
Technical Testing Webinar
Technical Testing WebinarTechnical Testing Webinar
Technical Testing Webinar
 
Black Ops Testing Workshop from Agile Testing Days 2014
Black Ops Testing Workshop from Agile Testing Days 2014Black Ops Testing Workshop from Agile Testing Days 2014
Black Ops Testing Workshop from Agile Testing Days 2014
 
Joy of Coding Conference 2019 slides - Alan Richardson
Joy of Coding Conference 2019 slides - Alan RichardsonJoy of Coding Conference 2019 slides - Alan Richardson
Joy of Coding Conference 2019 slides - Alan Richardson
 
Technical and Testing Challenges: Using the "Protect The Square" Game
Technical and Testing Challenges: Using the "Protect The Square" GameTechnical and Testing Challenges: Using the "Protect The Square" Game
Technical and Testing Challenges: Using the "Protect The Square" Game
 
How To Test With Agility
How To Test With AgilityHow To Test With Agility
How To Test With Agility
 
Confessions of an Accidental Security Tester
Confessions of an Accidental Security TesterConfessions of an Accidental Security Tester
Confessions of an Accidental Security Tester
 
Open source tools - Test Management Summit - 2009
Open source tools - Test Management Summit - 2009Open source tools - Test Management Summit - 2009
Open source tools - Test Management Summit - 2009
 
Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...
Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...
Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...
 
Lessons Learned When Automating
Lessons Learned When AutomatingLessons Learned When Automating
Lessons Learned When Automating
 
TestIstanbul May 2013 Keynote Experiences With Exploratory Testing
TestIstanbul May 2013 Keynote Experiences With Exploratory TestingTestIstanbul May 2013 Keynote Experiences With Exploratory Testing
TestIstanbul May 2013 Keynote Experiences With Exploratory Testing
 
The Evil Tester's Guide to HTTP proxies Tutorial
The Evil Tester's Guide to HTTP proxies TutorialThe Evil Tester's Guide to HTTP proxies Tutorial
The Evil Tester's Guide to HTTP proxies Tutorial
 
Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...
Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...
Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...
 

Ähnlich wie Automating Tactically vs Strategically SauceCon 2020

How to apply AI to Testing
How to apply AI to TestingHow to apply AI to Testing
How to apply AI to TestingSAP SE
 
Unit & Automation Testing in Android - Stanislav Gatsev, Melon
Unit & Automation Testing in Android - Stanislav Gatsev, MelonUnit & Automation Testing in Android - Stanislav Gatsev, Melon
Unit & Automation Testing in Android - Stanislav Gatsev, MelonbeITconference
 
New Ideas for Old Code - Greach
New Ideas for Old Code - GreachNew Ideas for Old Code - Greach
New Ideas for Old Code - GreachHamletDRC
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETBen Hall
 
How I Learned to Stop Worrying and Love Legacy Code
How I Learned to Stop Worrying and Love Legacy CodeHow I Learned to Stop Worrying and Love Legacy Code
How I Learned to Stop Worrying and Love Legacy CodeGene Gotimer
 
10 ways to make your code rock
10 ways to make your code rock10 ways to make your code rock
10 ways to make your code rockmartincronje
 
Grails unit testing
Grails unit testingGrails unit testing
Grails unit testingpleeps
 
Integris Security - Hacking With Glue ℠
Integris Security - Hacking With Glue ℠Integris Security - Hacking With Glue ℠
Integris Security - Hacking With Glue ℠Integris Security LLC
 
Building Twitter's SDKs for Android
Building Twitter's SDKs for AndroidBuilding Twitter's SDKs for Android
Building Twitter's SDKs for AndroidAndy Piper
 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in productionMartijn Dashorst
 
#MBLTdev: Разработка первоклассных SDK для Android (Twitter)
#MBLTdev: Разработка первоклассных SDK для Android (Twitter)#MBLTdev: Разработка первоклассных SDK для Android (Twitter)
#MBLTdev: Разработка первоклассных SDK для Android (Twitter)e-Legion
 
A la découverte des google/mock (aka gmock)
A la découverte des google/mock (aka gmock)A la découverte des google/mock (aka gmock)
A la découverte des google/mock (aka gmock)Thierry Gayet
 
6 Traits of a Successful Test Automation Architecture
6 Traits of a Successful Test Automation Architecture6 Traits of a Successful Test Automation Architecture
6 Traits of a Successful Test Automation ArchitectureErdem YILDIRIM
 
Static Analysis in IDEA
Static Analysis in IDEAStatic Analysis in IDEA
Static Analysis in IDEAHamletDRC
 
powershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-londonpowershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-londonnettitude_labs
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Michelangelo van Dam
 

Ähnlich wie Automating Tactically vs Strategically SauceCon 2020 (20)

How to apply AI to Testing
How to apply AI to TestingHow to apply AI to Testing
How to apply AI to Testing
 
Unit & Automation Testing in Android - Stanislav Gatsev, Melon
Unit & Automation Testing in Android - Stanislav Gatsev, MelonUnit & Automation Testing in Android - Stanislav Gatsev, Melon
Unit & Automation Testing in Android - Stanislav Gatsev, Melon
 
New Ideas for Old Code - Greach
New Ideas for Old Code - GreachNew Ideas for Old Code - Greach
New Ideas for Old Code - Greach
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NET
 
How I Learned to Stop Worrying and Love Legacy Code
How I Learned to Stop Worrying and Love Legacy CodeHow I Learned to Stop Worrying and Love Legacy Code
How I Learned to Stop Worrying and Love Legacy Code
 
10 ways to make your code rock
10 ways to make your code rock10 ways to make your code rock
10 ways to make your code rock
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Grails unit testing
Grails unit testingGrails unit testing
Grails unit testing
 
Integris Security - Hacking With Glue ℠
Integris Security - Hacking With Glue ℠Integris Security - Hacking With Glue ℠
Integris Security - Hacking With Glue ℠
 
Building Twitter's SDKs for Android
Building Twitter's SDKs for AndroidBuilding Twitter's SDKs for Android
Building Twitter's SDKs for Android
 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in production
 
#MBLTdev: Разработка первоклассных SDK для Android (Twitter)
#MBLTdev: Разработка первоклассных SDK для Android (Twitter)#MBLTdev: Разработка первоклассных SDK для Android (Twitter)
#MBLTdev: Разработка первоклассных SDK для Android (Twitter)
 
A la découverte des google/mock (aka gmock)
A la découverte des google/mock (aka gmock)A la découverte des google/mock (aka gmock)
A la découverte des google/mock (aka gmock)
 
6 Traits of a Successful Test Automation Architecture
6 Traits of a Successful Test Automation Architecture6 Traits of a Successful Test Automation Architecture
6 Traits of a Successful Test Automation Architecture
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Static Analysis in IDEA
Static Analysis in IDEAStatic Analysis in IDEA
Static Analysis in IDEA
 
Wt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technologyWt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technology
 
Wt unit 2 ppts client side technology
Wt unit 2 ppts client side technologyWt unit 2 ppts client side technology
Wt unit 2 ppts client side technology
 
powershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-londonpowershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-london
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
 

Mehr von Alan Richardson

The Future of Testing Webinar
The Future of Testing WebinarThe Future of Testing Webinar
The Future of Testing WebinarAlan Richardson
 
Programming katas for Software Testers - CounterStrings
Programming katas for Software Testers - CounterStringsProgramming katas for Software Testers - CounterStrings
Programming katas for Software Testers - CounterStringsAlan Richardson
 
About Consultant Alan Richardson Compendium Developments Evil Tester
About Consultant Alan Richardson Compendium Developments Evil TesterAbout Consultant Alan Richardson Compendium Developments Evil Tester
About Consultant Alan Richardson Compendium Developments Evil TesterAlan Richardson
 
Automating and Testing a REST API
Automating and Testing a REST APIAutomating and Testing a REST API
Automating and Testing a REST APIAlan Richardson
 
TDD - Test Driven Development - Java JUnit FizzBuzz
TDD - Test Driven Development - Java JUnit FizzBuzzTDD - Test Driven Development - Java JUnit FizzBuzz
TDD - Test Driven Development - Java JUnit FizzBuzzAlan Richardson
 
Your Automated Execution Does Not Have to be Flaky
Your Automated Execution Does Not Have to be FlakyYour Automated Execution Does Not Have to be Flaky
Your Automated Execution Does Not Have to be FlakyAlan Richardson
 
What is Testability vs Automatability? How to improve your Software Testing.
What is Testability vs Automatability? How to improve your Software Testing.What is Testability vs Automatability? How to improve your Software Testing.
What is Testability vs Automatability? How to improve your Software Testing.Alan Richardson
 
What is Agile Testing? A MindMap
What is Agile Testing? A MindMapWhat is Agile Testing? A MindMap
What is Agile Testing? A MindMapAlan Richardson
 
Evil Tester's Guide to Agile Testing
Evil Tester's Guide to Agile TestingEvil Tester's Guide to Agile Testing
Evil Tester's Guide to Agile TestingAlan Richardson
 
The Evil Tester Show - Episode 001 Halloween 2017
The Evil Tester Show - Episode 001 Halloween 2017The Evil Tester Show - Episode 001 Halloween 2017
The Evil Tester Show - Episode 001 Halloween 2017Alan Richardson
 
What is Regression Testing?
What is Regression Testing?What is Regression Testing?
What is Regression Testing?Alan Richardson
 
Simple ways to add and work with a `.jar` file in your local maven setup
Simple ways to add and work with a `.jar` file in your local maven setupSimple ways to add and work with a `.jar` file in your local maven setup
Simple ways to add and work with a `.jar` file in your local maven setupAlan Richardson
 
Re-thinking Test Automation and Test Process Modelling (in pictures)
Re-thinking Test Automation and Test Process Modelling (in pictures)Re-thinking Test Automation and Test Process Modelling (in pictures)
Re-thinking Test Automation and Test Process Modelling (in pictures)Alan Richardson
 
Learning in Public - A How to Speak in Public Workshop
Learning in Public - A How to Speak in Public WorkshopLearning in Public - A How to Speak in Public Workshop
Learning in Public - A How to Speak in Public WorkshopAlan Richardson
 
How to Practise to Remove Fear of Public Speaking
How to Practise to Remove Fear of Public SpeakingHow to Practise to Remove Fear of Public Speaking
How to Practise to Remove Fear of Public SpeakingAlan Richardson
 
FAQ - why does my code throw a null pointer exception - common reason #1 Rede...
FAQ - why does my code throw a null pointer exception - common reason #1 Rede...FAQ - why does my code throw a null pointer exception - common reason #1 Rede...
FAQ - why does my code throw a null pointer exception - common reason #1 Rede...Alan Richardson
 

Mehr von Alan Richardson (17)

The Future of Testing Webinar
The Future of Testing WebinarThe Future of Testing Webinar
The Future of Testing Webinar
 
Programming katas for Software Testers - CounterStrings
Programming katas for Software Testers - CounterStringsProgramming katas for Software Testers - CounterStrings
Programming katas for Software Testers - CounterStrings
 
About Consultant Alan Richardson Compendium Developments Evil Tester
About Consultant Alan Richardson Compendium Developments Evil TesterAbout Consultant Alan Richardson Compendium Developments Evil Tester
About Consultant Alan Richardson Compendium Developments Evil Tester
 
Shift left-testing
Shift left-testingShift left-testing
Shift left-testing
 
Automating and Testing a REST API
Automating and Testing a REST APIAutomating and Testing a REST API
Automating and Testing a REST API
 
TDD - Test Driven Development - Java JUnit FizzBuzz
TDD - Test Driven Development - Java JUnit FizzBuzzTDD - Test Driven Development - Java JUnit FizzBuzz
TDD - Test Driven Development - Java JUnit FizzBuzz
 
Your Automated Execution Does Not Have to be Flaky
Your Automated Execution Does Not Have to be FlakyYour Automated Execution Does Not Have to be Flaky
Your Automated Execution Does Not Have to be Flaky
 
What is Testability vs Automatability? How to improve your Software Testing.
What is Testability vs Automatability? How to improve your Software Testing.What is Testability vs Automatability? How to improve your Software Testing.
What is Testability vs Automatability? How to improve your Software Testing.
 
What is Agile Testing? A MindMap
What is Agile Testing? A MindMapWhat is Agile Testing? A MindMap
What is Agile Testing? A MindMap
 
Evil Tester's Guide to Agile Testing
Evil Tester's Guide to Agile TestingEvil Tester's Guide to Agile Testing
Evil Tester's Guide to Agile Testing
 
The Evil Tester Show - Episode 001 Halloween 2017
The Evil Tester Show - Episode 001 Halloween 2017The Evil Tester Show - Episode 001 Halloween 2017
The Evil Tester Show - Episode 001 Halloween 2017
 
What is Regression Testing?
What is Regression Testing?What is Regression Testing?
What is Regression Testing?
 
Simple ways to add and work with a `.jar` file in your local maven setup
Simple ways to add and work with a `.jar` file in your local maven setupSimple ways to add and work with a `.jar` file in your local maven setup
Simple ways to add and work with a `.jar` file in your local maven setup
 
Re-thinking Test Automation and Test Process Modelling (in pictures)
Re-thinking Test Automation and Test Process Modelling (in pictures)Re-thinking Test Automation and Test Process Modelling (in pictures)
Re-thinking Test Automation and Test Process Modelling (in pictures)
 
Learning in Public - A How to Speak in Public Workshop
Learning in Public - A How to Speak in Public WorkshopLearning in Public - A How to Speak in Public Workshop
Learning in Public - A How to Speak in Public Workshop
 
How to Practise to Remove Fear of Public Speaking
How to Practise to Remove Fear of Public SpeakingHow to Practise to Remove Fear of Public Speaking
How to Practise to Remove Fear of Public Speaking
 
FAQ - why does my code throw a null pointer exception - common reason #1 Rede...
FAQ - why does my code throw a null pointer exception - common reason #1 Rede...FAQ - why does my code throw a null pointer exception - common reason #1 Rede...
FAQ - why does my code throw a null pointer exception - common reason #1 Rede...
 

Kürzlich hochgeladen

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Kürzlich hochgeladen (20)

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

Automating Tactically vs Strategically SauceCon 2020

  • 1. Automating Tactically and Strategically SauceCon 2020 Alan Richardson — @EvilTester — EvilTester.com — compendiumdev.co.uk — digitalonlinetactics.com @EvilTester 1
  • 2. What is Tactical vs Strategic? — Tactical — for a specific purpose at this point in time, possibly a bit rough around the edges, not necessarily completely robust for everyone — Strategic — being critical to long term aims, maintained and maintainable, agreed and committed to @EvilTester 2
  • 4. Video Script Generator — github.com/eviltester/scriptgenerator — Generates HTML scripts from DSL — Tactical support of product development Strategy @EvilTester 4
  • 5. DSL Notes: a basic script DO: set of instructions SAY: stuff to say @EvilTester 5
  • 8. public class ScriptFormatterTest { @Disabled("This is not a build test, this is an adhoc GUI") @Test public void givenAScriptFolderCreateAHTMLFiles() throws IOException { ScriptPaths paths = new ScriptPaths(); paths.readFrom(""); paths.outputTo(""); //... ScriptFormatterProcessor processor = new ScriptFormatterProcessor(paths); processor.outputAllScripts(); SimpleWriter writer = newSimpleSystemOutBackedWriter(); new ProcessorTextReport(writer).output(processor); Assertions.assertEquals(0,processor.getErrorReports()); } } @EvilTester 8
  • 9. Strategic Implementation — Evolved from @Test — Until 'main' required @EvilTester 9
  • 10. Patreon Scraper — Tactical support of a marketing Strategy — every month build a pdf from patreon posts — uses unofficial APIs, web gui, HTTP access — 'hacked' together code, not releasable to others — gradually automates more on each run @EvilTester 10
  • 11. Shakedown Automation Example Problem: — External System changing too fast — Too many simple bugs — Find problems a!er days of testing @EvilTester 11
  • 12. Shakedown Automation Example Hacked together tactical tool to aid test strategy: — Model based 'shake down' execution — Runs for hours filling in forms with random data combinations — Any issues investigated — If it passes, then we test @EvilTester 12
  • 13. A Quick Code Example from: — github.com/eviltester/automationAbstractions @EvilTester 13
  • 14. Tactical - does not mean no abstractions @EvilTester 14
  • 15. @Test public void canCreateAToDo(){ WebDriver driver = new ExecutionDriver().get(); String siteURL = new TodoMVCSite().getURL(); driver.get(siteURL); int originalNumberOfTodos = driver.findElements( By.cssSelector("ul.todo-list li")).size(); WebElement createTodo = driver.findElement( By.className("new-todo")); createTodo.click(); createTodo.sendKeys("new task"); createTodo.sendKeys(Keys.ENTER); Assertions.assertTrue(driver.findElement( By.className("filters")).isDisplayed()); driver.close(); } @EvilTester 15
  • 16. Strategic Code Will Mean Abstractions @EvilTester 16
  • 17. @Test public void canCreateAToDo(){ WebDriver driver = new ExecutionDriver().get(); TodoMVCUser user = new TodoMVCUser(driver, new TodoMVCSite()); user.opensApplication().and(). createNewToDo("new task"); TodoMVCPojoPage page = new TodoMVCPojoPage(driver, new TodoMVCSite().getURL()); assertThat(page.getCountOfTodoDoItems(), is(1)); assertThat(page.isFooterVisible(), is(true)); ExecutionDriver.closeDriver(driver); } @EvilTester 17
  • 18. Differences? — Maintainable — How much hand holding required — Risk and Trust — Commitment to creation — Reusable — Readable for more people — Supports creation @EvilTester 18
  • 19. Here are some common issues teams face with Automating illustrated by a Case Study @EvilTester 19
  • 20. A Case Study to Illustrate — Content Management Based Web Site — Agile Project — Sprints — Not Enough Time for Testing — Automating Only by Test Team — Automation New for Company — Automation becomes Tech Debt @EvilTester 20
  • 21. Why? — Beliefs vs Realities — Rituals vs Agreement Because "this is what you do on Agile projects" @EvilTester 21
  • 22. We did not have a distinction between tactical and strategic @EvilTester 22
  • 23. We did not have a distinction between tactical and strategic — doing strategic work but without strategic commitment — automating, stories, sprints, not done — adopting tactics without knowing the aim (Rituals) — poor quality standups, stories, etc. — our work approach did not fit the reality of the project (Agile Beliefs) @EvilTester 23
  • 24. How could a distinction between tactical and Strategic have helped? Forces us to recognise we are making a decision. — Automating is full of decisions — Heuristics are not absolute (YAGNI, DRY) @EvilTester 24
  • 25. Strategic — Long term project — Agile best fits end user's release needs — Approach has project commitment, not role (Tester) commitment — Maintenance of the automated execution long term — Develop features to support automating and time to automate in sprint This doesn't really describe the project. @EvilTester 25
  • 26. Tactical — site is a 'one off' — no real need for 'Agile' — focus on business requirements, not dev process — tooling to augment and identify risk manifestation — automate small chunks not full stories @EvilTester 26
  • 27. We did not have a distinction between Strategic and Tactical We had "Agile" @EvilTester 27
  • 28. Without a distinction there is a risk that we don't make situational decisions. — "Agile" is not the Context — "The Project" is the Context @EvilTester 28
  • 29. Not a Binary Distinction "The distinction between tactical and strategic planning is o!en made but is seldom made clear. Decisions that appear to be strategic to one person may appear to be tactical to another. This suggests that the distinction is relative rather than absolute." "A Concept of Corporate Planning", Russell L. Ackoff @EvilTester 29
  • 30. Seeking Simpler Distinctions "We should blunt our sharp points, and unravel the complications of things;" "Tao Teh King", Lao-Tze, Translated by James Legge gutenberg.org/cache/epub/216/pg216.txt — Not a binary distinction — Work to understand and remove complications @EvilTester 30
  • 31. Something is Tactical until it becomes Strategic — If the work is tactical then... — who cares, go do it. — But when it become strategic... — it will last longer and impact more people/ systems and consideration of alternatives becomes more important. @EvilTester 31
  • 32. Is this code 'Rubbish' or 'Tactical' @EvilTester 32
  • 33. @Test public void canCreateAToDo(){ WebDriver driver = new ChromeDriver(); String siteURL = "http://todomvc.com/examples/backbone/" driver.get(siteURL); int originalNumberOfTodos = driver.findElements( By.cssSelector("ul.todo-list li")).size(); WebElement createTodo = driver.findElement( By.className("new-todo")); createTodo.click(); createTodo.sendKeys("new task"); createTodo.sendKeys(Keys.ENTER); Assertions.assertTrue(driver.findElement( By.className("filters")).isDisplayed()); int newToDoCount = driver.findElements( By.cssSelector("ul.todo-list li")).size(); Assertions.assertTrue( newToDoCount > originalNumberOfTodos); driver.close(); } @EvilTester 33
  • 34. Cannot tell from code, but it is Sub-Optimal What is sub-optimal about it? — no re-use of the driver, or 'site' information across tests — everything hard coded — uses low level WebDriver in the test — assertion doesn't have readable message if something goes wrong — etc. @EvilTester 34
  • 35. Rubbish What would make this 'rubbish'? If we had 20+ tests, and they all looked like this. @EvilTester 35
  • 36. Why, Rubbish? — Because we would have to maintain all the tests when URLs or locators change — Tests require deep familiarity with the application in order to read, let alone maintain — This is a very small path, a larger path, written in this way would be an incredibly long and hard to maintain test @EvilTester 36
  • 37. Tactical When would this be acceptable for Tactical? When we decide: — to take the risk and impact. — we are not working strategic yet. @EvilTester 37
  • 38. Tactical isn't a "Get out of jail free" word, to justify a long term sub-optimal approach. @EvilTester 38
  • 39. How can this distinction help? @EvilTester 39
  • 40. Forces Decision Making — Is this Tactical or Strategic? — Different — Attitude — Expectations — Agreements @EvilTester 40
  • 41. Tech Debt: stuff we should have done, but we didn't because we took a tactical approach, and we hope it won't bite us later. @EvilTester 41
  • 42. Tech Debt is not Strategic Prioritising tactically, is OK for activities not part of Strategic path. But, many of them are, and it is those ones that we have to go back and pick up the pieces for. @EvilTester 42
  • 43. keep that distinction " Strategic / Tactical" in mind "I think, that if I can keep that distinction " Strategic / Tactical" in mind when I perform my processes and daily tasks it will hopefully remind me to tidy up more a!er the strategic activities, and delete more a!er the tactical activities." @EvilTester 43
  • 44. "Quality is everyone's responsibility" — Strategy is agreed across all systems — Automation fails when strategic for 'testing' but not for 'the project' — Tactics work best when implemented by skilled staff — Strategic allows building up everyone's capability to contribute — Strategic requires working together @EvilTester 44
  • 45. Impact on my work @EvilTester 45
  • 46. Start Tactical - Refactor to Strategic — Start with off the shelf tool — Script in tool or customise — Hack out something in an @Test — Experiment — Each time I run, revisit the code I refactor — The more it is used, the more strategic it becomes @EvilTester 46
  • 47. Tactical vs Strategic — Distinction to force Decisions — Tactical can Evolve To Strategic — Tactical supports more experimentation — Strategic requires Commitment — Tactics can be used within a Strategy — Not about "Abstractions", it is about Decisions — Decision and Reality based vs Belief and Ritual Based @EvilTester 47
  • 48. Tactical vs Strategic A distinction to force decision making based on the reality of the situation, not our beliefs about the situation. @EvilTester 48
  • 49. Alan Richardson — @EvilTester — EvilTester.com — compendiumdev.co.uk — digitalonlinetactics.com @EvilTester 49