SlideShare uma empresa Scribd logo
1 de 23
SHARED UNDERSTANDING
How to maintain and optimize the dependencies
between specifications and software?
YOUR HOSTS
Mark Taling
• Wanna-be architect
• Specflow Wizard
• Certified Specflow Trainer
• Boardgame geek
@MarkTaling
Jonathan Mezach
• Lead Developer (.NET)
• Specflow Wizard
• Certified Specflow Trainer
• Motorcycle-enthusiast
• Foodie
@JMezach
STORY TIME
STORY TIME
• 6 Years Ago, 2 floors from here
• Rebuilding the “ATV” part of the Dutch Food Retail Labor Agreement
• 40 Page RFC Document detailing changes
STORY TIME
6 Years ago, 2 floors from here
• 40 page RFC document detailing
changes
• Written by a specifier, months before
• Testing was so complex, a custom test
“engine” was created
• In production, over the course of four
years, at least 10 “bugs” were
discovered
2 Years ago, 1 floor from here
• 1 Feature file containing 25 scenarios
• Written by the team
• 36 Additional testcases identified and
added
• Discovered multiple bugs in original
code
• In the last two years, no bugs were
found in production
HOW DID WE START
• Specification by Example was hot-and-happening
• Feature files seemed like the solution…
… however, where do I leave all my graphs and pictures?
• Specification by Example doesn’t start with switching tooling
• It starts with changing people and process
“CLASSIC” SOFTWARE DEVELOPMENT
Business
Wish
Requirements
Analyst
Software Engineer
Test Specialist
RFC
Defects / Questions
JAN
MAR APR
APR
Specs
Products
Tests
SWAT/Tooling
SPECIFICATION BY EXAMPLE
9
Business
Wish
Feature
3 Amigos
Product
Specs & Examples
(= Tests)
Products
MTM Testcases
WHAT DID WE LEARN
• Start small
• Keep the business close (especially when using an assigned requirements analyst)
• Domain Language is key to success!
• Provide testers and specifiers with direct feedback to new scenarios.
• Define guidelines for usage of stuff like tags
WHAT DID WE LEARN
WHAT DID WE LEARN
EYE-OPENERS
Implementation
Test
automation
Specifications
EYE-OPENERS
Implementation
Test
automation
Specifications
EYE-OPENERS
EYE-OPENERS
Given the following data is in the database
| empid | fname | lname | sal | mngid |
| 1 | John | Doe | 30000 | 2 |
| 2 | Jane | Doe | 50000 | |
When I calculate my total labor costs per year
Then I see the result 80000 on the screen
Just because you can write
”tables” into your feature file
doesn’t mean you HAVE to.
EYE-OPENERS
Given the following data is in the database
| empid | fname | lname | sal | mngid |
| 1 | John | Doe | 30000 | 2 |
| 2 | Jane | Doe | 50000 | |
When I calculate my total labor costs per year
Then I see the result 80000 on the screen
This column doesn’t seem
relevant to the scenario, so why
include it? Instead fall-back to a
sane default in your automation
code.
TIPS ‘N TRICKS
Since there are actually three
scenario’s here, this column is
used to identify each one of
them. Use it!
Scenario Outline: Salary increase calculation
Given an employee with a salary of <Salary>
And employees with a salary between <Minimum> and <Maximum> are given a
raise of <Percent>
When I calculate the salary increase
Then the result should be <Result>
Examples: Raise
| Description | Salary | Minimum | Maximum | Percent | Result |
| Managers | 50000 | 45000 | 55000 | 10 | 55000 |
| Employees | 30000 | 20000 | 45000 | 5 | 31500 |
| Secretaries | 10000 | 5000 | 20000 | 50 | 20000 |
TIPS ‘N TRICKS
Scenario Outline: Salary increase calculation
Given an employee with a salary of <Salary>
And employees with a salary between <Minimum> and <Maximum> are given a
raise of <Percent>
When I calculate the salary increase
Then the result should be <Result>
Examples: Raise
| Description | Salary | Minimum | Maximum | Percent | Result |
| Managers | 50000 | 45000 | 55000 | 10 | 55000 |
| Employees | 30000 | 20000 | 45000 | 5 | 31500 |
| Secretaries | 10000 | 5000 | 20000 | 50 | 20000 |
Wait a minute?
TIPS ‘N TRICKS
Scenario Outline: Salary increase calculation
Given …
Examples: Raise
| Description | Salary | Minimum | Maximum | Percent | Result |
| Managers | 50000 | 45000 | 55000 | 10 | 55000 |
Examples: No raise
| Description | Salary | Minimum | Maximum | Percent | Result |
| Managers | 60000 | 45000 | 55000 | 10 | 60000 |
Dutch Specflow Users Meetup - Shared understanding
Dutch Specflow Users Meetup - Shared understanding

Mais conteúdo relacionado

Semelhante a Dutch Specflow Users Meetup - Shared understanding

Semelhante a Dutch Specflow Users Meetup - Shared understanding (20)

What's New in Sitecore 8 - St. Louis Sitecore User Group Meetup
What's New in Sitecore 8 - St. Louis Sitecore User Group MeetupWhat's New in Sitecore 8 - St. Louis Sitecore User Group Meetup
What's New in Sitecore 8 - St. Louis Sitecore User Group Meetup
 
Building a Data Warehouse for Business Analytics using Spark SQL-(Blagoy Kalo...
Building a Data Warehouse for Business Analytics using Spark SQL-(Blagoy Kalo...Building a Data Warehouse for Business Analytics using Spark SQL-(Blagoy Kalo...
Building a Data Warehouse for Business Analytics using Spark SQL-(Blagoy Kalo...
 
Seeing the Wood for the Trees - John Tinsley (Iconic Translation Machines)
Seeing the Wood for the Trees - John Tinsley (Iconic Translation Machines)Seeing the Wood for the Trees - John Tinsley (Iconic Translation Machines)
Seeing the Wood for the Trees - John Tinsley (Iconic Translation Machines)
 
MT Evaluation: Seeing the Wood for the Trees
MT Evaluation: Seeing the Wood for the TreesMT Evaluation: Seeing the Wood for the Trees
MT Evaluation: Seeing the Wood for the Trees
 
OSMC 2019 | Directing the Director by Martin Schurz
OSMC 2019 | Directing the Director by Martin SchurzOSMC 2019 | Directing the Director by Martin Schurz
OSMC 2019 | Directing the Director by Martin Schurz
 
Rule jenkins with configuration as code
Rule jenkins with configuration as codeRule jenkins with configuration as code
Rule jenkins with configuration as code
 
Using feature teams to deliver high business value
Using feature teams to deliver high business valueUsing feature teams to deliver high business value
Using feature teams to deliver high business value
 
EAC Hunter Fan Presentation
EAC Hunter Fan PresentationEAC Hunter Fan Presentation
EAC Hunter Fan Presentation
 
Hunter Fan + EAC Presentation
Hunter Fan + EAC PresentationHunter Fan + EAC Presentation
Hunter Fan + EAC Presentation
 
Developer Night Opticon 2017
Developer Night Opticon 2017Developer Night Opticon 2017
Developer Night Opticon 2017
 
Creating Compensation and Benefit Statements with Crystal (Hidden Paycheck)
Creating Compensation and Benefit Statements with Crystal (Hidden Paycheck)Creating Compensation and Benefit Statements with Crystal (Hidden Paycheck)
Creating Compensation and Benefit Statements with Crystal (Hidden Paycheck)
 
Spec By Example or How to teach people talk to each other
Spec By Example or How to teach people talk to each otherSpec By Example or How to teach people talk to each other
Spec By Example or How to teach people talk to each other
 
Learning and Business Impact: Making the Case through Metrics and Analytics
Learning and Business Impact: Making the Case through Metrics and AnalyticsLearning and Business Impact: Making the Case through Metrics and Analytics
Learning and Business Impact: Making the Case through Metrics and Analytics
 
Learning and Business Impact: Making the Case through Metrics and Analytics
Learning and Business Impact: Making the Case through Metrics and AnalyticsLearning and Business Impact: Making the Case through Metrics and Analytics
Learning and Business Impact: Making the Case through Metrics and Analytics
 
Pivots for real for LASTConf sept 2015
Pivots for real for LASTConf sept 2015Pivots for real for LASTConf sept 2015
Pivots for real for LASTConf sept 2015
 
Standard work training
Standard work trainingStandard work training
Standard work training
 
Optimization Direct: Introduction and recent case studies
Optimization Direct: Introduction and recent case studiesOptimization Direct: Introduction and recent case studies
Optimization Direct: Introduction and recent case studies
 
Journey to APIs and Microservices: Best Practices
Journey to APIs and Microservices: Best PracticesJourney to APIs and Microservices: Best Practices
Journey to APIs and Microservices: Best Practices
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Jan de Vries - How to convince your boss that it is DevOps that he wants
Jan de Vries - How to convince your boss that it is DevOps that he wantsJan de Vries - How to convince your boss that it is DevOps that he wants
Jan de Vries - How to convince your boss that it is DevOps that he wants
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Dutch Specflow Users Meetup - Shared understanding

  • 1. SHARED UNDERSTANDING How to maintain and optimize the dependencies between specifications and software?
  • 2. YOUR HOSTS Mark Taling • Wanna-be architect • Specflow Wizard • Certified Specflow Trainer • Boardgame geek @MarkTaling Jonathan Mezach • Lead Developer (.NET) • Specflow Wizard • Certified Specflow Trainer • Motorcycle-enthusiast • Foodie @JMezach
  • 4. STORY TIME • 6 Years Ago, 2 floors from here • Rebuilding the “ATV” part of the Dutch Food Retail Labor Agreement • 40 Page RFC Document detailing changes
  • 5. STORY TIME 6 Years ago, 2 floors from here • 40 page RFC document detailing changes • Written by a specifier, months before • Testing was so complex, a custom test “engine” was created • In production, over the course of four years, at least 10 “bugs” were discovered 2 Years ago, 1 floor from here • 1 Feature file containing 25 scenarios • Written by the team • 36 Additional testcases identified and added • Discovered multiple bugs in original code • In the last two years, no bugs were found in production
  • 6. HOW DID WE START • Specification by Example was hot-and-happening • Feature files seemed like the solution… … however, where do I leave all my graphs and pictures? • Specification by Example doesn’t start with switching tooling • It starts with changing people and process
  • 7. “CLASSIC” SOFTWARE DEVELOPMENT Business Wish Requirements Analyst Software Engineer Test Specialist RFC Defects / Questions JAN MAR APR APR
  • 10. Specs & Examples (= Tests) Products MTM Testcases
  • 11. WHAT DID WE LEARN • Start small • Keep the business close (especially when using an assigned requirements analyst) • Domain Language is key to success! • Provide testers and specifiers with direct feedback to new scenarios. • Define guidelines for usage of stuff like tags
  • 12. WHAT DID WE LEARN
  • 13. WHAT DID WE LEARN
  • 17. EYE-OPENERS Given the following data is in the database | empid | fname | lname | sal | mngid | | 1 | John | Doe | 30000 | 2 | | 2 | Jane | Doe | 50000 | | When I calculate my total labor costs per year Then I see the result 80000 on the screen Just because you can write ”tables” into your feature file doesn’t mean you HAVE to.
  • 18. EYE-OPENERS Given the following data is in the database | empid | fname | lname | sal | mngid | | 1 | John | Doe | 30000 | 2 | | 2 | Jane | Doe | 50000 | | When I calculate my total labor costs per year Then I see the result 80000 on the screen This column doesn’t seem relevant to the scenario, so why include it? Instead fall-back to a sane default in your automation code.
  • 19. TIPS ‘N TRICKS Since there are actually three scenario’s here, this column is used to identify each one of them. Use it! Scenario Outline: Salary increase calculation Given an employee with a salary of <Salary> And employees with a salary between <Minimum> and <Maximum> are given a raise of <Percent> When I calculate the salary increase Then the result should be <Result> Examples: Raise | Description | Salary | Minimum | Maximum | Percent | Result | | Managers | 50000 | 45000 | 55000 | 10 | 55000 | | Employees | 30000 | 20000 | 45000 | 5 | 31500 | | Secretaries | 10000 | 5000 | 20000 | 50 | 20000 |
  • 20. TIPS ‘N TRICKS Scenario Outline: Salary increase calculation Given an employee with a salary of <Salary> And employees with a salary between <Minimum> and <Maximum> are given a raise of <Percent> When I calculate the salary increase Then the result should be <Result> Examples: Raise | Description | Salary | Minimum | Maximum | Percent | Result | | Managers | 50000 | 45000 | 55000 | 10 | 55000 | | Employees | 30000 | 20000 | 45000 | 5 | 31500 | | Secretaries | 10000 | 5000 | 20000 | 50 | 20000 | Wait a minute?
  • 21. TIPS ‘N TRICKS Scenario Outline: Salary increase calculation Given … Examples: Raise | Description | Salary | Minimum | Maximum | Percent | Result | | Managers | 50000 | 45000 | 55000 | 10 | 55000 | Examples: No raise | Description | Salary | Minimum | Maximum | Percent | Result | | Managers | 60000 | 45000 | 55000 | 10 | 60000 |

Notas do Editor

  1. Blaat verhaal over 6 jaar terug Jonathan interupt, ik herinner me dat anders Mark: klopt, 2 jaar terug nog een keer gedaan … met veel beter resultaat
  2. Mark verteld hoe een ontwikkelaar 6 jaar geleden begonnen is aan de aan herbouw van ATV. Wanneer hij bij het derde punt komt, valt Jonathan hem in de reden en zegt dat hij zich dat herinnerd maar dacht dat het maar 2 jaar geleden was…
  3. Geen versiebeheer op Sharepoint en Enterprise Architect Geen relatie tussen specs en producten (code). Er zit een gat tussen, niemand weet hoe groot. Er zijn specs van dingen die niet bestaan Specs van zaken die anders werken Specs van zaken die allang achterhaald staan Geen relatie tussen test en product/specs. Er wordt “vanuit de verte” gekeken naar het product Binnen de specs geen relatie tussen Sharepoint documenten en Enterprise Architect
  4. Level of automation
  5. The featurefiles represent an UI Being able to test everything still doesn’t mean you should!
  6. ATDD-circle => Refactoring isn’t limited to (implementation) code It’s okay to use predefined testsets “auto-completion” is a perfectly valid approach Functional Testcoverage will never be perfect Gherkin supports “tables”, doesn’t mean you should put down actual tables
  7. ATDD-circle => Refactoring isn’t limited to (implementation) code It’s okay to use predefined testsets “auto-completion” is a perfectly valid approach Functional Testcoverage will never be perfect Gherkin supports “tables”, doesn’t mean you should put down actual tables
  8. ATDD-circle => Refactoring isn’t limited to (implementation) code It’s okay to use predefined testsets “auto-completion” is a perfectly valid approach Functional Testcoverage will never be perfect Gherkin supports “tables”, doesn’t mean you should put down actual tables
  9. ATDD-circle => Refactoring isn’t limited to (implementation) code It’s okay to use predefined testsets “auto-completion” is a perfectly valid approach Functional Testcoverage will never be perfect Gherkin supports “tables”, doesn’t mean you should put down actual tables
  10. ATDD-circle => Refactoring isn’t limited to (implementation) code It’s okay to use predefined testsets “auto-completion” is a perfectly valid approach Functional Testcoverage will never be perfect Gherkin supports “tables”, doesn’t mean you should put down actual tables
  11. Description column in Scenario Outline Examples Use different “actors” where appropriate (Don’t keep editing the same scenario) Don’t be afraid to refactor, the testset is it’s own insurance policy Don’t forget to check whether your scenarios can actually fail A scenario outline can have multiple (named) example sets
  12. Description column in Scenario Outline Examples Use different “actors” where appropriate (Don’t keep editing the same scenario) Don’t be afraid to refactor, the testset is it’s own insurance policy Don’t forget to check whether your scenarios can actually fail A scenario outline can have multiple (named) example sets
  13. Description column in Scenario Outline Examples Use different “actors” where appropriate (Don’t keep editing the same scenario) Don’t be afraid to refactor, the testset is it’s own insurance policy Don’t forget to check whether your scenarios can actually fail A scenario outline can have multiple (named) example sets