SlideShare a Scribd company logo
1 of 14
Automatisch Testen met
SpecFlow
Martijn Vermaat
Hoeveel van jullie hebben
automatische tests ingericht op jullie
project?
SpecFlow is een framework om
leesbare tests te schrijven
‘SpecFlow’ test
1. Setup
2. Execution
3. Assertion
Een test heeft 3 stappen
1. Given a situation
2. When an action is performed
3. Then something happened
In SpecFlow werkt dat zo:
SpecFlow scenario’s kunnen
handig per feature worden
ingedeeld
Feature
Scenario A
Scenario B
Scenario C
Opportunity Management
Salesperson can create
a quote for proposal
Salesperson creates an
order after a quote has
been accepted
Sales manager can
view opportunity
pipeline of his
department
Achter de SpecFlow scenario’s zit
c# code
• Zet een BindingAttribute boven je class
• Zet 1 of meerdere attributes boven je method
• GivenAttribute, WhenAttribute, ThenAttribute
• De tekst in de attribute wordt gematched met de tekst in het scenario.
• Je kan parameters opgeven door RegEx expressies in je attributes
• De parameters voor je method zijn in volgorde op basis van de attribute
tekst. Waarbij de table altijd achteraan komt
Hoe werkt de koppeling tussen scenario’s en code?
Je kan op allerlei manieren
inhaken op SpecFlow
• Zet een Before/After xxxxx attribute boven je method
• Test Run, Feature, Scenario, Block, Step
• Mogelijkheid tot filteren met tags
Hooks
• Voeg een parameter toe aan je constructor
• Object wordt door SpecFlow geïnstantieerd
• De scope van het object is een scenario
Dependency Injection
• Op basis van Tags een transformatie uitvoeren op je
app.config
• Bijvoorbeeld de browser laten wisselen op basis van tags
App.config transformaties
Er zijn libraries beschikbaar
• SpecFlow helper library
• SpecFlow library voor CRM
• Nuget: ‘Vermaat.Crm.Specflow’
• https://github.com/mVermaat/Crm.Specflow
• EasyRepro
• UI Testing library voor CRM (vanaf 8.1)
• Nuget: ‘Dynamics365.UIAutomation.Api’
• https://github.com/Microsoft/EasyRepro
Met een paar simpele stappen
kan je de meeste scenario’s al
afdekken
Given a {entityname} named {alias} with the following
values
• EntityName bepaald het type records
• Alias wordt gebruikt om naar dit record te
refereren in volgende stappen
• De table bevat een lijst met de attributen van het
record.
• De CRM metadata API wordt gebruikt om display
names om te zetten naar technische namen
Given
Met een paar simpele stappen
kan je de meeste scenario’s al
afdekken
When {alias} is updated with the following values
• Meestal moet je een record updaten dat je in je
setup gemaakt hebt. Je kan simpel via het alias
refereren naar welk record je wilt updaten
• De tabel bepaald welke velden worden aangepast
• De CRM metadata API wordt gebruikt om display
names om te zetten naar technische namen
When
Met een paar simpele stappen
kan je de meeste scenario’s al
afdekken
Then an {entityname} exists with the following values
• Controleren of er een bepaald record besaat in
CRM
Then
Then {alias} has the following values
• Controleren of een record dat eerder in de tests
gebruikt is nu een aantal specifieke waardes heeft
Then
Soms moet/wil je specifieke
stappen schrijven
• Voor speciale acties in CRM zoals het kwalificeren
van leads of het sluiten van opportunities
• Wanneer je een set van stappen heel vaak
herhaalt in verschillende tests
• Bijvoorbeeld het opzetten van een account
met een set van opportunities, quotes en
orders
• Te veel stappen zorgt voor onderhoudsproblemen
en het maakt het lastig om de goede stap te
bepalen bij het schrijven van tests.
Wanneer schrijf ik specifieke stappen?
SpecFlow heeft mooie
rapportages over de uitvoer van
de tests
Een CDD Review process in
CRM

More Related Content

Similar to Automated testing with SpecFlow

Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changesArjen van Vliet
 
How Oracle Management Cloud enabled a successful scratch of a 7-year old per...
How Oracle Management Cloud enabled a successful scratch of a 7-year old per...How Oracle Management Cloud enabled a successful scratch of a 7-year old per...
How Oracle Management Cloud enabled a successful scratch of a 7-year old per...Lucas Jellema
 
Object Oriented Programming for web applications
Object Oriented Programming for web applicationsObject Oriented Programming for web applications
Object Oriented Programming for web applicationsEdwin Vlieg
 
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo BruggeHTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo BruggePureplexity
 
Fail fast Fail cheap - Agile Development, Testing & Delivery
Fail fast Fail cheap - Agile Development, Testing & DeliveryFail fast Fail cheap - Agile Development, Testing & Delivery
Fail fast Fail cheap - Agile Development, Testing & Deliveryltebbens
 
Test automation in een BDD context
Test automation in een BDD contextTest automation in een BDD context
Test automation in een BDD contextchristiantester
 
FME WT 2014: (NL) Kwaliteitscontrole en correctie van geografische data
FME WT 2014: (NL) Kwaliteitscontrole en correctie van geografische dataFME WT 2014: (NL) Kwaliteitscontrole en correctie van geografische data
FME WT 2014: (NL) Kwaliteitscontrole en correctie van geografische dataGIM_nv
 
Agnl sessie aris test designerm - 8 nov v 1.0
Agnl sessie   aris test designerm - 8 nov v 1.0Agnl sessie   aris test designerm - 8 nov v 1.0
Agnl sessie aris test designerm - 8 nov v 1.0Niels Doeleman
 
Introductie at framework
Introductie at frameworkIntroductie at framework
Introductie at frameworkErwin Heitzman
 
2009 10 Sdc 2009 Iw02 Nick Boumans E Commerce
2009 10 Sdc 2009 Iw02 Nick Boumans   E Commerce2009 10 Sdc 2009 Iw02 Nick Boumans   E Commerce
2009 10 Sdc 2009 Iw02 Nick Boumans E CommerceNick Boumans
 
Load En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af FinalLoad En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af FinalPlutonIT
 
Niet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenNiet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenRick Beerendonk
 
De 10 geboden van WordPress Development
De 10 geboden van WordPress DevelopmentDe 10 geboden van WordPress Development
De 10 geboden van WordPress DevelopmentFloris Lof
 
Demo ui
Demo uiDemo ui
Demo uidd354
 
Azure DevOps Update: nieuws en best practices - februari 2024.pdf
Azure DevOps Update: nieuws en best practices - februari 2024.pdfAzure DevOps Update: nieuws en best practices - februari 2024.pdf
Azure DevOps Update: nieuws en best practices - februari 2024.pdfDelta-N
 
Drupal Uitgebreide Starters Training
Drupal Uitgebreide Starters TrainingDrupal Uitgebreide Starters Training
Drupal Uitgebreide Starters TrainingLuciuswebsystems
 

Similar to Automated testing with SpecFlow (20)

Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changes
 
How Oracle Management Cloud enabled a successful scratch of a 7-year old per...
How Oracle Management Cloud enabled a successful scratch of a 7-year old per...How Oracle Management Cloud enabled a successful scratch of a 7-year old per...
How Oracle Management Cloud enabled a successful scratch of a 7-year old per...
 
Object Oriented Programming for web applications
Object Oriented Programming for web applicationsObject Oriented Programming for web applications
Object Oriented Programming for web applications
 
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo BruggeHTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
 
JDBC en embedded SQL
JDBC en embedded SQLJDBC en embedded SQL
JDBC en embedded SQL
 
Javascript Dhtml
Javascript DhtmlJavascript Dhtml
Javascript Dhtml
 
Cooking Cake
Cooking CakeCooking Cake
Cooking Cake
 
Fail fast Fail cheap - Agile Development, Testing & Delivery
Fail fast Fail cheap - Agile Development, Testing & DeliveryFail fast Fail cheap - Agile Development, Testing & Delivery
Fail fast Fail cheap - Agile Development, Testing & Delivery
 
Test automation in een BDD context
Test automation in een BDD contextTest automation in een BDD context
Test automation in een BDD context
 
FME WT 2014: (NL) Kwaliteitscontrole en correctie van geografische data
FME WT 2014: (NL) Kwaliteitscontrole en correctie van geografische dataFME WT 2014: (NL) Kwaliteitscontrole en correctie van geografische data
FME WT 2014: (NL) Kwaliteitscontrole en correctie van geografische data
 
Agnl sessie aris test designerm - 8 nov v 1.0
Agnl sessie   aris test designerm - 8 nov v 1.0Agnl sessie   aris test designerm - 8 nov v 1.0
Agnl sessie aris test designerm - 8 nov v 1.0
 
Introductie at framework
Introductie at frameworkIntroductie at framework
Introductie at framework
 
Performance Testing
Performance TestingPerformance Testing
Performance Testing
 
2009 10 Sdc 2009 Iw02 Nick Boumans E Commerce
2009 10 Sdc 2009 Iw02 Nick Boumans   E Commerce2009 10 Sdc 2009 Iw02 Nick Boumans   E Commerce
2009 10 Sdc 2009 Iw02 Nick Boumans E Commerce
 
Load En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af FinalLoad En Stress Testers Te Slim Af Final
Load En Stress Testers Te Slim Af Final
 
Niet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenNiet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappen
 
De 10 geboden van WordPress Development
De 10 geboden van WordPress DevelopmentDe 10 geboden van WordPress Development
De 10 geboden van WordPress Development
 
Demo ui
Demo uiDemo ui
Demo ui
 
Azure DevOps Update: nieuws en best practices - februari 2024.pdf
Azure DevOps Update: nieuws en best practices - februari 2024.pdfAzure DevOps Update: nieuws en best practices - februari 2024.pdf
Azure DevOps Update: nieuws en best practices - februari 2024.pdf
 
Drupal Uitgebreide Starters Training
Drupal Uitgebreide Starters TrainingDrupal Uitgebreide Starters Training
Drupal Uitgebreide Starters Training
 

More from Dynamics 365 Customer Engagement Professionals Netherlands (CEProNL)

More from Dynamics 365 Customer Engagement Professionals Netherlands (CEProNL) (14)

Omnichannel Engagement Hub
Omnichannel Engagement HubOmnichannel Engagement Hub
Omnichannel Engagement Hub
 
Dynamics 365 Customer Insights
Dynamics 365 Customer InsightsDynamics 365 Customer Insights
Dynamics 365 Customer Insights
 
URS in Dynamics 365
URS in Dynamics 365URS in Dynamics 365
URS in Dynamics 365
 
Dynamics 365 for Marketing
Dynamics 365 for MarketingDynamics 365 for Marketing
Dynamics 365 for Marketing
 
Dynamics 365 - AI & Bots
Dynamics 365 - AI & BotsDynamics 365 - AI & Bots
Dynamics 365 - AI & Bots
 
Automated Deployment - Deploying Dynamics 365 with TFS
Automated Deployment - Deploying Dynamics 365 with TFSAutomated Deployment - Deploying Dynamics 365 with TFS
Automated Deployment - Deploying Dynamics 365 with TFS
 
Business process flows, business rules, queues en status reason
Business process flows, business rules, queues en status reasonBusiness process flows, business rules, queues en status reason
Business process flows, business rules, queues en status reason
 
Transformation with Dynamics 365, beyond the hype
Transformation with Dynamics 365, beyond the hypeTransformation with Dynamics 365, beyond the hype
Transformation with Dynamics 365, beyond the hype
 
The new Customer Service Hub
The new Customer Service HubThe new Customer Service Hub
The new Customer Service Hub
 
TypeScripting Dynamics 365
TypeScripting Dynamics 365TypeScripting Dynamics 365
TypeScripting Dynamics 365
 
Get connected with Azure Logic Apps & Flow
Get connected with Azure Logic Apps & FlowGet connected with Azure Logic Apps & Flow
Get connected with Azure Logic Apps & Flow
 
Azure Functions and Dynamics 365
Azure Functions and Dynamics 365Azure Functions and Dynamics 365
Azure Functions and Dynamics 365
 
What's new in the July 2017 Update for Dynamics 365 - Developer features
What's new in the July 2017 Update for Dynamics 365 - Developer featuresWhat's new in the July 2017 Update for Dynamics 365 - Developer features
What's new in the July 2017 Update for Dynamics 365 - Developer features
 
What's new in the July 2017 Update for Dynamics 365 - Functional features
What's new in the July 2017 Update for Dynamics 365 - Functional featuresWhat's new in the July 2017 Update for Dynamics 365 - Functional features
What's new in the July 2017 Update for Dynamics 365 - Functional features
 

Automated testing with SpecFlow

  • 2. Hoeveel van jullie hebben automatische tests ingericht op jullie project?
  • 3. SpecFlow is een framework om leesbare tests te schrijven ‘SpecFlow’ test 1. Setup 2. Execution 3. Assertion Een test heeft 3 stappen 1. Given a situation 2. When an action is performed 3. Then something happened In SpecFlow werkt dat zo:
  • 4. SpecFlow scenario’s kunnen handig per feature worden ingedeeld Feature Scenario A Scenario B Scenario C Opportunity Management Salesperson can create a quote for proposal Salesperson creates an order after a quote has been accepted Sales manager can view opportunity pipeline of his department
  • 5. Achter de SpecFlow scenario’s zit c# code • Zet een BindingAttribute boven je class • Zet 1 of meerdere attributes boven je method • GivenAttribute, WhenAttribute, ThenAttribute • De tekst in de attribute wordt gematched met de tekst in het scenario. • Je kan parameters opgeven door RegEx expressies in je attributes • De parameters voor je method zijn in volgorde op basis van de attribute tekst. Waarbij de table altijd achteraan komt Hoe werkt de koppeling tussen scenario’s en code?
  • 6. Je kan op allerlei manieren inhaken op SpecFlow • Zet een Before/After xxxxx attribute boven je method • Test Run, Feature, Scenario, Block, Step • Mogelijkheid tot filteren met tags Hooks • Voeg een parameter toe aan je constructor • Object wordt door SpecFlow geïnstantieerd • De scope van het object is een scenario Dependency Injection • Op basis van Tags een transformatie uitvoeren op je app.config • Bijvoorbeeld de browser laten wisselen op basis van tags App.config transformaties
  • 7. Er zijn libraries beschikbaar • SpecFlow helper library • SpecFlow library voor CRM • Nuget: ‘Vermaat.Crm.Specflow’ • https://github.com/mVermaat/Crm.Specflow • EasyRepro • UI Testing library voor CRM (vanaf 8.1) • Nuget: ‘Dynamics365.UIAutomation.Api’ • https://github.com/Microsoft/EasyRepro
  • 8. Met een paar simpele stappen kan je de meeste scenario’s al afdekken Given a {entityname} named {alias} with the following values • EntityName bepaald het type records • Alias wordt gebruikt om naar dit record te refereren in volgende stappen • De table bevat een lijst met de attributen van het record. • De CRM metadata API wordt gebruikt om display names om te zetten naar technische namen Given
  • 9. Met een paar simpele stappen kan je de meeste scenario’s al afdekken When {alias} is updated with the following values • Meestal moet je een record updaten dat je in je setup gemaakt hebt. Je kan simpel via het alias refereren naar welk record je wilt updaten • De tabel bepaald welke velden worden aangepast • De CRM metadata API wordt gebruikt om display names om te zetten naar technische namen When
  • 10. Met een paar simpele stappen kan je de meeste scenario’s al afdekken Then an {entityname} exists with the following values • Controleren of er een bepaald record besaat in CRM Then Then {alias} has the following values • Controleren of een record dat eerder in de tests gebruikt is nu een aantal specifieke waardes heeft Then
  • 11. Soms moet/wil je specifieke stappen schrijven • Voor speciale acties in CRM zoals het kwalificeren van leads of het sluiten van opportunities • Wanneer je een set van stappen heel vaak herhaalt in verschillende tests • Bijvoorbeeld het opzetten van een account met een set van opportunities, quotes en orders • Te veel stappen zorgt voor onderhoudsproblemen en het maakt het lastig om de goede stap te bepalen bij het schrijven van tests. Wanneer schrijf ik specifieke stappen?
  • 12. SpecFlow heeft mooie rapportages over de uitvoer van de tests
  • 13.
  • 14. Een CDD Review process in CRM

Editor's Notes

  1. Waarom? <Hier praten met iedereen over de opstakels>
  2. Screenshot met meerdere velden
  3. Screenshot met meerdere velden