SlideShare a Scribd company logo
1 of 62
Download to read offline
Automating Tactically and Strategically
Alan Richardson
4 www.eviltester.com
4 www.compendiumdev.co.uk
4 @eviltester
TESTING ASSEMBLY 09/2017, Helsinki
Do you automate tactically
or strategically?
Automating Tactically
allows us to move fast, and
target immediate needs
Automating Strategically
allows us to gain budget
and support for longer
periods of work
We may believe we are
automating strategically
but are actually automating
tactically
Combine tactical and
strategic approaches to
better our testing efforts.
Secrets of Successful Practical
Automating
4 Get work done
4 Automate Flows
4 Multiple Abstractions
4 Abstract to libraries, not frameworks
Testing field argues about
4 Testing vs Checking
4 You can't automate testing
"Test Automation" is contentious
An Example
"Is what follows a
Test?" ...
@Test
public void createPreviewMVP() throws IOException {
String args[] = {
new File(System.getProperty("user.dir"),
"pandocifier.properties").getAbsolutePath()};
new PandocifierCLI().main(args);
String propertyFileName = args[0];
File propertyFile = new File(propertyFileName);
PandocifierConfig config;
config = new PandocifierConfigFileReader().
fromPropertyFile(propertyFile);
Assert.assertTrue(new File(
config.getPreviewFileName()).exists());
}
An Example "Ce n'est pas un test", ...
4 a Test, it says it is a @Test
4 an Automated Test, it checks something (file exists)
4 an Automated Test, it Asserts on the check
4 a Tool - I use it to automatically build one of my
books
4 not an Application - it doesn't have a GUI or a
standalone execution build
This is automated
execution of a
process
We Automate Parts of our
Development Process:
Coding, Checking,
Asserting, ...
Tactical Reality - I don't
really care, I just want to
get work done
Suggests we also have 'strategic
reality'
Tools vs Abstractions
4 Gherkin
4 Specflow, Cucumber
- - - - - - - - - - - - - -
4 Gherkin is a DSL templating language
4 Specflow, Cucumber are template parsers
4 We have to create abstractions to fill in the gap
E. W. Djkstra on Abstraction
"The purpose of abstraction is not to be
vague, but to create a new semantic level in
which one can be absolutely precise."
4 1972 ACM Turing Lecture: 'The Humble Programmer'
Regression Testing
The system rarely actually suffers
"Regression"
Continuous Condition Assertion
4 TDD, ATDD, Automated execution
4 All of these provide an ongoing safety net which
might mean we don't need to revisit areas in the
future (if we also tested them)
4 They don't mean that we have 'tested' them now
Coverage - All coverage is Model Based
4 Code coverage based on source code model
4 What about requirements, system interfaces,
states, flows?
4 Code coverage is a useful metric for TDD coverage
4 coverage models based on risk
Tactical vs Strategic
Automating
Strategic does not mean 'strategy
document'
Automating as part of a
Testing Strategy
Automating Tactically vs Strategically
What is Tactical? What is Strategic?
Solve a problem Agreed & Understood Goals
Short Term Long Term
Change as necessary Slower to Change
Your Time 'project' time
Warning - sometimes tactics look like
strategy
4 Use of Jenkins is not Continuous Integration
4 Cucumber/Specflow (Gherkin) != ATDD or BDD
4 Automated Deployments != Continuous Delivery
4 Containers != always good environment provision
4 Page Objects != always good system abstractions
You know you are Automating
strategically when...
4 Reduced Maintenance & Change
4 Everyone agrees why
4 No fighting for 'time'
4 It's not about roles
4 It gets done
How do we automate?
4 not about "test automation"
4 it is about automating tasks
4 automate the assertions used to check that the
stories are still 'done'
Automate flows through
the system
- vary data
- abstract the execution
Automating Strategically with
Abstractions
see also "Domain Driven Design"
"modeling the system in code"
4 abstractions are about modelling - people seem to be
scared of having too many models
No Abstractions - Web
Testing Example
@Test
public void canCreateAToDoWithNoAbstraction(){
WebDriver driver = new FirefoxDriver();
driver.get("http://todomvc.com/architecture-examples/backbone/");
int originalNumberOfTodos = driver.findElements(
By.cssSelector("ul#todo-list li")).size();
WebElement createTodo = driver.findElement(By.id("new-todo"));
createTodo.click();
createTodo.sendKeys("new task");
createTodo.sendKeys(Keys.ENTER);
assertThat(driver.findElement(By.id("filters")).isDisplayed(), is(true));
int newToDos = driver.findElements(
By.cssSelector("ul#todo-list li")).size();
assertThat(newToDos, greaterThan(originalNumberOfTodos));
}
But there were Abstractions (Lots of them)
4 WebDriver - abstration of browser
4 FirefoxDriver - abstraction Firefox (e.g. no version)
4 WebElement - abstraction of a dom element
4 createToDo - variable - named for clarity
4 Locator Abstractions via methods e.g. findElement
4 Manipulation Abstractions .sendKeys
4 Locator Strategies By.id
Using Abstractions - Same
flow
@Test
public void canCreateAToDoWithAbstraction(){
TodoMVCUser user =
new TodoMVCUser(driver, new TodoMVCSite());
user.opensApplication().and().createNewToDo("new task");
ApplicationPageFunctional page =
new ApplicationPageFunctional(driver,
new TodoMVCSite());
assertThat(page.getCountOfTodoDoItems(), is(1));
assertThat(page.isFooterVisible(), is(true));
}
What Abstractions were there?
4 TodoMVCUser
4 User
4 Intent/Action Based
4 High Level
4 ApplicationPageFunctional
4 Structural
4 Models the rendering of the application page
REST Test - No
Abstractions
@Test
public void aUserCanAccessWithBasicAuthHeader(){
given().
contentType("text/xml").
auth().preemptive().basic(
TestEnvDefaults.getAdminUserName(),
TestEnvDefaults.getAdminUserPassword()).
expect().
statusCode(200).
when().
get(TestEnvDefaults.getURL().toExternalForm() +
TracksApiEndPoints.todos);
}
But there were Abstractions
4 RESTAssured - given, when, then, expect, auth, etc.
4 RESTAssured is an abstraction layer
4 Environment abstractions i.e. TestEnvDefaults
Lots of Abstractions
But a lack of flexibility
Different abstractions to
support flexibility
@Test
public void aUserCanAuthenticateAndUseAPI(){
HttpMessageSender http = new HttpMessageSender(
TestEnvDefaults.getURL());
http.basicAuth( TestEnvDefaults.getAdminUserName(),
TestEnvDefaults.getAdminUserPassword());
Response response = http.getResponseFrom(
TracksApiEndPoints.todos);
Assert.assertEquals(200, response.getStatusCode());
}
An API Abstraction
@Test
public void aUserCanAuthenticateAndUseAPI(){
TodosApi api = new TodosApi(
TestTestEnvDefaults.getURL(),
TestEnvDefaults.getUser());
Response response = api.getTodos();
Assert.assertEquals(200, response.getStatusCode());
}
Automating API vs GUI
Automate at the interfaces
where you can interact
with the system.
Architecting to Support...
- Testing - Support
- Deployment - Automating
- Monitoring - Devops
- Releasing - etc.
Abstractions support different types
of testing
4 regular automated execution with assertions
4 creation and maintenance by many roles
4 exploratory testing
4 stress/performance testing (bot example) requires
thread safe abstractions
Good abstractions
encourage creativity, they
do not force compliance and
restrict flexibility.
Supports Law of Requisite
Variety
"only variety can destroy variety" -
W. Ross Ashby
"only variety can absorb variety" -
Stafford Beer
Frameworks can 'Destroy' variety
4 Frameworks force us to comply with their structure
4 or things get 'hard'
4 or we don't reap the benefits from the Framework
4 Some things are not possible
4 Some things never occur to you to do
We have a lot of models
4 user intent model - what I want to achieve
4 user action model - how I do that
4 interface messaging model - how the system
implements that
4 admin models, support models, GUI models
And models overlap
e.g. user can use the API or the GUI to
do the same things
When we don't do this
4 test code takes a long time to maintain
4 test code takes too long to write
4 test code is hard to understand
4 test code is brittle - "every time we change the app
the tests break/ we have to change test code"
4 execution is flaky - intermittent test runs - "try
running the tests again"
Example: Tactical Approach on Agile
projects
4 exploratory testing to get the story to done
4 create a tech debt backlog for 'missing' automated
tests
4 @Test code is tactical and we can knock it up (not as
good as production)
Example: Strategic Approach on Agile
Projects
4 automate assertion checking of acceptance criteria
for "done"
4 ongoing execution of the assertions for the life of
the story
Example: Strategic Approach on Agile
Projects implies...
4 maintained for the life of the story in the application
4 deleting the @Test code when no longer relevant
4 amending code structure to make relevant as stories
change and evolve
4 @Test code is strategic asset (just like production
code)
Why labour the point?
4 "test automation" often means "testers do the
automating"
4 testers may not program as well as programmers
4 testers may not know various programming patterns
4 when programmers see @Test code written by testers
they often don't want to touch it or maintain it
Move from Abstractions
such as 'Programming' and
'Testing' to 'Developing'
I say I'm a "Test
Consultant"
I'm really a "Software Development
Consultant"
Testing is Part of the Development
process
Summary
4 Automate Strategically
4 ongoing assertion checking automated in @Test code
4 Abstractions model the system in code
4 Write abstractions at multiple levels
4 Good abstractions can support exploratory testing
4 Write good code all the time
Learn to "Be Evil"
4 www.eviltester.com
4 @eviltester
4 www.youtube.com/user/EviltesterVideos
Learn About Alan Richardson
4 www.compendiumdev.co.uk
4 uk.linkedin.com/in/eviltester
Follow
4 Linkedin - @eviltester
4 Twitter - @eviltester
4 Instagram - @eviltester
4 Facebook - @eviltester
4 Youtube - EvilTesterVideos
4 Pinterest - @eviltester
4 Github - @eviltester
BIO
Alan is a test consultant who enjoys testing at a
technical level using techniques from psychotherapy
and computer science. Alan is the author of the books
"Dear Evil Tester", "Java For Testers" and "Automating
and Testing a REST API". Alan's main website is
compendiumdev.co.uk and he blogs at
blog.eviltester.com (see also TesterHQ.com)

More Related Content

What's hot

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
 

What's hot (20)

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
 
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
 
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
 
Secrets and Mysteries of Automated Execution Keynote slides
Secrets and Mysteries of Automated Execution Keynote slidesSecrets and Mysteries of Automated Execution Keynote slides
Secrets and Mysteries of Automated Execution Keynote slides
 
How To Test With Agility
How To Test With AgilityHow To Test With Agility
How To Test With Agility
 
How to Improve Your Technical Test Ability - AADays 2015 Keynote
How to Improve Your Technical Test Ability - AADays 2015 KeynoteHow to Improve Your Technical Test Ability - AADays 2015 Keynote
How to Improve Your Technical Test Ability - AADays 2015 Keynote
 
Automating to Augment Testing
Automating to Augment TestingAutomating to Augment Testing
Automating to Augment 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
 
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 ...
 
Technology Based Testing
Technology Based TestingTechnology Based Testing
Technology Based Testing
 
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
 
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)
 
What is Regression Testing?
What is Regression Testing?What is Regression Testing?
What is Regression Testing?
 
Lessons Learned When Automating
Lessons Learned When AutomatingLessons Learned When Automating
Lessons Learned When Automating
 
Selenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver TutorialSelenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver Tutorial
 
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
 
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...
 
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
 
When will ai take my job as a tester
When will ai take my job as a testerWhen will ai take my job as a tester
When will ai take my job as a tester
 
How to apply AI to Testing
How to apply AI to TestingHow to apply AI to Testing
How to apply AI to Testing
 

Similar to Automating Strategically or Tactically when Testing

The Testing Planet Issue 2
The Testing Planet Issue 2The Testing Planet Issue 2
The Testing Planet Issue 2
Rosie Sherry
 
Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4
Billie Berzinskas
 

Similar to Automating Strategically or Tactically when Testing (20)

Testing Experience - Evolution of Test Automation Frameworks
Testing Experience - Evolution of Test Automation FrameworksTesting Experience - Evolution of Test Automation Frameworks
Testing Experience - Evolution of Test Automation Frameworks
 
The Automation Firehose: Be Strategic & Tactical With Your Mobile & Web Testing
The Automation Firehose: Be Strategic & Tactical With Your Mobile & Web TestingThe Automation Firehose: Be Strategic & Tactical With Your Mobile & Web Testing
The Automation Firehose: Be Strategic & Tactical With Your Mobile & Web Testing
 
The Automation Firehose: Be Strategic and Tactical by Thomas Haver
The Automation Firehose: Be Strategic and Tactical by Thomas HaverThe Automation Firehose: Be Strategic and Tactical by Thomas Haver
The Automation Firehose: Be Strategic and Tactical by Thomas Haver
 
A Sampling of Tools
A Sampling of ToolsA Sampling of Tools
A Sampling of Tools
 
Lessons Learned in a Continuously Developing Service-Oriented Architecture
Lessons Learned in a Continuously Developing Service-Oriented ArchitectureLessons Learned in a Continuously Developing Service-Oriented Architecture
Lessons Learned in a Continuously Developing Service-Oriented Architecture
 
To Automate or Not to Automate
To Automate or Not to Automate To Automate or Not to Automate
To Automate or Not to Automate
 
WEBINAR: To Automate or Not to Automate
WEBINAR: To Automate or Not to AutomateWEBINAR: To Automate or Not to Automate
WEBINAR: To Automate or Not to Automate
 
The Testing Planet Issue 2
The Testing Planet Issue 2The Testing Planet Issue 2
The Testing Planet Issue 2
 
'BIG Testing' with Hans Buwalda
'BIG Testing' with Hans Buwalda 'BIG Testing' with Hans Buwalda
'BIG Testing' with Hans Buwalda
 
Test Drive Development
Test Drive DevelopmentTest Drive Development
Test Drive Development
 
TLC2018 Thomas Haver: The Automation Firehose - Be Strategic and Tactical
TLC2018 Thomas Haver: The Automation Firehose - Be Strategic and TacticalTLC2018 Thomas Haver: The Automation Firehose - Be Strategic and Tactical
TLC2018 Thomas Haver: The Automation Firehose - Be Strategic and Tactical
 
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
 
Automated testing-whitepaper
Automated testing-whitepaperAutomated testing-whitepaper
Automated testing-whitepaper
 
M. Holovaty, Концепции автоматизированного тестирования
M. Holovaty, Концепции автоматизированного тестированияM. Holovaty, Концепции автоматизированного тестирования
M. Holovaty, Концепции автоматизированного тестирования
 
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
 
Testing 2 - Thinking Like A Tester
Testing 2 - Thinking Like A TesterTesting 2 - Thinking Like A Tester
Testing 2 - Thinking Like A Tester
 
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
 
Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4
 
Susan windsor soft test 16th november 2005
Susan windsor soft test   16th november 2005Susan windsor soft test   16th november 2005
Susan windsor soft test 16th november 2005
 
Design Pattern Mastery - Momentum Dev Con 19 Apr 2018
Design Pattern Mastery - Momentum Dev Con 19 Apr 2018Design Pattern Mastery - Momentum Dev Con 19 Apr 2018
Design Pattern Mastery - Momentum Dev Con 19 Apr 2018
 

More from Alan Richardson

More from Alan Richardson (14)

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
 
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
 
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
 
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
 
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
 

Recently uploaded

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Recently uploaded (20)

Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
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 ...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 

Automating Strategically or Tactically when Testing

  • 1. Automating Tactically and Strategically Alan Richardson 4 www.eviltester.com 4 www.compendiumdev.co.uk 4 @eviltester TESTING ASSEMBLY 09/2017, Helsinki
  • 2. Do you automate tactically or strategically?
  • 3. Automating Tactically allows us to move fast, and target immediate needs
  • 4. Automating Strategically allows us to gain budget and support for longer periods of work
  • 5. We may believe we are automating strategically but are actually automating tactically
  • 6. Combine tactical and strategic approaches to better our testing efforts.
  • 7. Secrets of Successful Practical Automating 4 Get work done 4 Automate Flows 4 Multiple Abstractions 4 Abstract to libraries, not frameworks
  • 8. Testing field argues about 4 Testing vs Checking 4 You can't automate testing "Test Automation" is contentious
  • 9. An Example "Is what follows a Test?" ...
  • 10. @Test public void createPreviewMVP() throws IOException { String args[] = { new File(System.getProperty("user.dir"), "pandocifier.properties").getAbsolutePath()}; new PandocifierCLI().main(args); String propertyFileName = args[0]; File propertyFile = new File(propertyFileName); PandocifierConfig config; config = new PandocifierConfigFileReader(). fromPropertyFile(propertyFile); Assert.assertTrue(new File( config.getPreviewFileName()).exists()); }
  • 11. An Example "Ce n'est pas un test", ... 4 a Test, it says it is a @Test 4 an Automated Test, it checks something (file exists) 4 an Automated Test, it Asserts on the check 4 a Tool - I use it to automatically build one of my books 4 not an Application - it doesn't have a GUI or a standalone execution build
  • 13. We Automate Parts of our Development Process: Coding, Checking, Asserting, ...
  • 14.
  • 15. Tactical Reality - I don't really care, I just want to get work done Suggests we also have 'strategic reality'
  • 16. Tools vs Abstractions 4 Gherkin 4 Specflow, Cucumber - - - - - - - - - - - - - - 4 Gherkin is a DSL templating language 4 Specflow, Cucumber are template parsers 4 We have to create abstractions to fill in the gap
  • 17. E. W. Djkstra on Abstraction "The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise." 4 1972 ACM Turing Lecture: 'The Humble Programmer'
  • 18. Regression Testing The system rarely actually suffers "Regression"
  • 19. Continuous Condition Assertion 4 TDD, ATDD, Automated execution 4 All of these provide an ongoing safety net which might mean we don't need to revisit areas in the future (if we also tested them) 4 They don't mean that we have 'tested' them now
  • 20. Coverage - All coverage is Model Based 4 Code coverage based on source code model 4 What about requirements, system interfaces, states, flows? 4 Code coverage is a useful metric for TDD coverage 4 coverage models based on risk
  • 21. Tactical vs Strategic Automating Strategic does not mean 'strategy document'
  • 22. Automating as part of a Testing Strategy
  • 23. Automating Tactically vs Strategically What is Tactical? What is Strategic? Solve a problem Agreed & Understood Goals Short Term Long Term Change as necessary Slower to Change Your Time 'project' time
  • 24. Warning - sometimes tactics look like strategy 4 Use of Jenkins is not Continuous Integration 4 Cucumber/Specflow (Gherkin) != ATDD or BDD 4 Automated Deployments != Continuous Delivery 4 Containers != always good environment provision 4 Page Objects != always good system abstractions
  • 25. You know you are Automating strategically when... 4 Reduced Maintenance & Change 4 Everyone agrees why 4 No fighting for 'time' 4 It's not about roles 4 It gets done
  • 26. How do we automate? 4 not about "test automation" 4 it is about automating tasks 4 automate the assertions used to check that the stories are still 'done'
  • 27. Automate flows through the system - vary data - abstract the execution
  • 28. Automating Strategically with Abstractions see also "Domain Driven Design" "modeling the system in code" 4 abstractions are about modelling - people seem to be scared of having too many models
  • 29. No Abstractions - Web Testing Example
  • 30. @Test public void canCreateAToDoWithNoAbstraction(){ WebDriver driver = new FirefoxDriver(); driver.get("http://todomvc.com/architecture-examples/backbone/"); int originalNumberOfTodos = driver.findElements( By.cssSelector("ul#todo-list li")).size(); WebElement createTodo = driver.findElement(By.id("new-todo")); createTodo.click(); createTodo.sendKeys("new task"); createTodo.sendKeys(Keys.ENTER); assertThat(driver.findElement(By.id("filters")).isDisplayed(), is(true)); int newToDos = driver.findElements( By.cssSelector("ul#todo-list li")).size(); assertThat(newToDos, greaterThan(originalNumberOfTodos)); }
  • 31. But there were Abstractions (Lots of them) 4 WebDriver - abstration of browser 4 FirefoxDriver - abstraction Firefox (e.g. no version) 4 WebElement - abstraction of a dom element 4 createToDo - variable - named for clarity 4 Locator Abstractions via methods e.g. findElement 4 Manipulation Abstractions .sendKeys 4 Locator Strategies By.id
  • 32. Using Abstractions - Same flow
  • 33. @Test public void canCreateAToDoWithAbstraction(){ TodoMVCUser user = new TodoMVCUser(driver, new TodoMVCSite()); user.opensApplication().and().createNewToDo("new task"); ApplicationPageFunctional page = new ApplicationPageFunctional(driver, new TodoMVCSite()); assertThat(page.getCountOfTodoDoItems(), is(1)); assertThat(page.isFooterVisible(), is(true)); }
  • 34. What Abstractions were there? 4 TodoMVCUser 4 User 4 Intent/Action Based 4 High Level 4 ApplicationPageFunctional 4 Structural 4 Models the rendering of the application page
  • 35. REST Test - No Abstractions
  • 37. But there were Abstractions 4 RESTAssured - given, when, then, expect, auth, etc. 4 RESTAssured is an abstraction layer 4 Environment abstractions i.e. TestEnvDefaults Lots of Abstractions But a lack of flexibility
  • 39. @Test public void aUserCanAuthenticateAndUseAPI(){ HttpMessageSender http = new HttpMessageSender( TestEnvDefaults.getURL()); http.basicAuth( TestEnvDefaults.getAdminUserName(), TestEnvDefaults.getAdminUserPassword()); Response response = http.getResponseFrom( TracksApiEndPoints.todos); Assert.assertEquals(200, response.getStatusCode()); }
  • 41. @Test public void aUserCanAuthenticateAndUseAPI(){ TodosApi api = new TodosApi( TestTestEnvDefaults.getURL(), TestEnvDefaults.getUser()); Response response = api.getTodos(); Assert.assertEquals(200, response.getStatusCode()); }
  • 43. Automate at the interfaces where you can interact with the system.
  • 44. Architecting to Support... - Testing - Support - Deployment - Automating - Monitoring - Devops - Releasing - etc.
  • 45. Abstractions support different types of testing 4 regular automated execution with assertions 4 creation and maintenance by many roles 4 exploratory testing 4 stress/performance testing (bot example) requires thread safe abstractions
  • 46. Good abstractions encourage creativity, they do not force compliance and restrict flexibility.
  • 47. Supports Law of Requisite Variety "only variety can destroy variety" - W. Ross Ashby "only variety can absorb variety" - Stafford Beer
  • 48. Frameworks can 'Destroy' variety 4 Frameworks force us to comply with their structure 4 or things get 'hard' 4 or we don't reap the benefits from the Framework 4 Some things are not possible 4 Some things never occur to you to do
  • 49. We have a lot of models 4 user intent model - what I want to achieve 4 user action model - how I do that 4 interface messaging model - how the system implements that 4 admin models, support models, GUI models
  • 50. And models overlap e.g. user can use the API or the GUI to do the same things
  • 51. When we don't do this 4 test code takes a long time to maintain 4 test code takes too long to write 4 test code is hard to understand 4 test code is brittle - "every time we change the app the tests break/ we have to change test code" 4 execution is flaky - intermittent test runs - "try running the tests again"
  • 52. Example: Tactical Approach on Agile projects 4 exploratory testing to get the story to done 4 create a tech debt backlog for 'missing' automated tests 4 @Test code is tactical and we can knock it up (not as good as production)
  • 53. Example: Strategic Approach on Agile Projects 4 automate assertion checking of acceptance criteria for "done" 4 ongoing execution of the assertions for the life of the story
  • 54. Example: Strategic Approach on Agile Projects implies... 4 maintained for the life of the story in the application 4 deleting the @Test code when no longer relevant 4 amending code structure to make relevant as stories change and evolve 4 @Test code is strategic asset (just like production code)
  • 55. Why labour the point? 4 "test automation" often means "testers do the automating" 4 testers may not program as well as programmers 4 testers may not know various programming patterns 4 when programmers see @Test code written by testers they often don't want to touch it or maintain it
  • 56. Move from Abstractions such as 'Programming' and 'Testing' to 'Developing'
  • 57. I say I'm a "Test Consultant" I'm really a "Software Development Consultant" Testing is Part of the Development process
  • 58. Summary 4 Automate Strategically 4 ongoing assertion checking automated in @Test code 4 Abstractions model the system in code 4 Write abstractions at multiple levels 4 Good abstractions can support exploratory testing 4 Write good code all the time
  • 59. Learn to "Be Evil" 4 www.eviltester.com 4 @eviltester 4 www.youtube.com/user/EviltesterVideos
  • 60. Learn About Alan Richardson 4 www.compendiumdev.co.uk 4 uk.linkedin.com/in/eviltester
  • 61. Follow 4 Linkedin - @eviltester 4 Twitter - @eviltester 4 Instagram - @eviltester 4 Facebook - @eviltester 4 Youtube - EvilTesterVideos 4 Pinterest - @eviltester 4 Github - @eviltester
  • 62. BIO Alan is a test consultant who enjoys testing at a technical level using techniques from psychotherapy and computer science. Alan is the author of the books "Dear Evil Tester", "Java For Testers" and "Automating and Testing a REST API". Alan's main website is compendiumdev.co.uk and he blogs at blog.eviltester.com (see also TesterHQ.com)