SlideShare a Scribd company logo
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 110/23/2018 Nelson Johnson Behavior Driven Development www.broadpoint.net 1
Behavior Driven
Development
By Nelson Johnson
Solution Architect
BroadPoint Technologies
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 2
Who is Nelson Johnson?
• Started programming 1977…in high school…on a mainframe
• Became full time software consultant in 1982
• BS in MIS and Decision Science from George Mason University
• Worked at DARPA creating web apps in 1996
• Working with CRM since version 3
• Solution Architect for BroadPoint Technologies, LLC
• Email: njohnson@broadpoint.net
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 3
What is Behavior Driven Development (BDD)
• Framework for software testing
• Abstraction layer on top of typical Test Driven Development
• Uses structured English phrases to invoke TDD functions
• Gherkin Language (https://cucumber.io/)
• User defined – very flexible
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 4
Why BDD
• Makes it easier to involve end users to develop tests
• Added transparency between requirement and test
• Separates user behavior from test implementation
• Utilizes dev-ops methodologies for higher business value
• Increases turnaround time
• Build Verification Testing
• CRM Upgrade Testing
• There is a downside
• Can take a long time to run
• Complex logic may be difficult to verify
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 5
How easy is it to learn Gherkin?
Feature: SearchByPhone_PhoneCall
As an end user I need the ability to
search for contacts by phone number
@SearchByPhoneNumber
Scenario: Return Login Only
Given I log into CRM
When I navigate to Sales to get to Activities
When I click on Phone Call
And I set field phonenumber to '2369874125'
Then Check the value of lookup field bpt_callercontact to see if it is 1 Login Only Phone
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 6
Parts needed
• Dynamics 365 CE
• Visual Studio
• Unit test project
• EasyRepro
• Includes Selenium framework
• SpecFlow
• Browser Drivers
• Chromedriver.exe
• Geckodriver.exe
• Project/bin/debug folder
MSTest
Step.cs
SpecFlow Generated Feature.CS
Selenium
Feature Test Script
EasyRepro
Browser Driver
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 7
<packages>
<package id="Dynamics365.UIAutomation.Api" version="9.0.1.4" targetFramework="net47" />
<package id="MSTest.TestAdapter" version="1.2.1" targetFramework="net471" />
<package id="MSTest.TestFramework" version="1.2.1" targetFramework="net471" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net471" />
<package id="Selenium.Chrome.WebDriver" version="2.38" targetFramework="net471" />
<package id="Selenium.Support" version="3.11.2" targetFramework="net471" />
<package id="Selenium.WebDriver" version="3.11.2" targetFramework="net471" />
<package id="SpecFlow" version="2.3.2" targetFramework="net471" />
<package id="SpecFlow.MsTest" version="2.3.2" targetFramework="net471" />
<package id="System.ValueTuple" version="4.3.0" targetFramework="net471" />
</packages>
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 8
Setting it up
• Create new Unit test project
• Rename UnitTest1.cs to AllSteps.cs
• Build the project
• Verify there are no issues
• Set up credentials
• Choose Browser
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 9
Add SpecFlow Feature file
• Add
• New Item
• SpecFlow Feature File
• CreateContact
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 10
Create first test
Feature: CreateContact
In order to make sure we can create a user
@mytag
Scenario: Create regular contact
Given I log into CRM
When I Quick Create Contact
When I set keypress field email to 'njohnsontest@mailinator.com'
When I set keypress field firstname to 'Neil'
When I set keypress field lastname to 'Johnson'
When I click on Save
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 11
Resources
• Wael Hamze Blog:
https://waelhamze.wordpress.com/2018/02/27/bdd-for-dynamics-
365-ce/
• Wael Hamze GitHub: https://github.com/WaelHamze/dyn365-ce-bdd
• EasyRepro: https://github.com/Microsoft/EasyRepro
• SpecFlow: https://specflow.org/getting-started/
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 12www.broadpoint.net
Q&A
Nelson Johnson
njohnson@broadpoint.net
301-634-2442
https://www.linkedin.com/in/nelsonjohnson/
10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 13www.broadpoint.net
Thank You!
Nelson Johnson
njohnson@broadpoint.net
301-634-2442
https://www.linkedin.com/in/nelsonjohnson/

More Related Content

What's hot

Java Beginners Meetup February 2017: Testing and TDD
Java Beginners Meetup February 2017: Testing and TDDJava Beginners Meetup February 2017: Testing and TDD
Java Beginners Meetup February 2017: Testing and TDD
Patrick Kostjens
 
The Task Model
The Task ModelThe Task Model
The Task Model
Jernej Virag
 
Automated test: How to increase his power
Automated test: How to increase his powerAutomated test: How to increase his power
Automated test: How to increase his power
Daniel Gordillo
 
8 tips for mastering node.js
8 tips for mastering node.js8 tips for mastering node.js
8 tips for mastering node.js
Solution Analysts
 
All Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of WorkAll Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of Work
Davide Benvegnù
 
Three amigos: Bitbucket + Jenkins + Docker
Three amigos: Bitbucket + Jenkins + DockerThree amigos: Bitbucket + Jenkins + Docker
Three amigos: Bitbucket + Jenkins + Docker
Daniel Gordillo
 
Test driven development in meteor
Test driven development in meteorTest driven development in meteor
Test driven development in meteor
Michael Lazarski
 
10 Myth of DevSecOps
10 Myth of DevSecOps10 Myth of DevSecOps
10 Myth of DevSecOps
DevOps Indonesia
 
Close Encounters: Connecting with Users to Improve Content
Close Encounters: Connecting with Users to Improve ContentClose Encounters: Connecting with Users to Improve Content
Close Encounters: Connecting with Users to Improve Content
patricia_gale
 
Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018
Puppet
 
DevOps or DevSecOps
DevOps or DevSecOpsDevOps or DevSecOps
DevOps or DevSecOps
Michelangelo van Dam
 
Behavior driven development. Testing drupal using behat
Behavior driven development. Testing drupal using behatBehavior driven development. Testing drupal using behat
Behavior driven development. Testing drupal using behat
Andrei Jechiu
 
Continuous Integration (CI) - An effective development practice
Continuous Integration (CI) - An effective development practiceContinuous Integration (CI) - An effective development practice
Continuous Integration (CI) - An effective development practice
Dao Ngoc Kien
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
Virendra Bhalothia
 
DevOps Days Columbus - Derek Weeks - 2019
DevOps Days Columbus - Derek Weeks - 2019DevOps Days Columbus - Derek Weeks - 2019
DevOps Days Columbus - Derek Weeks - 2019
Sonatype
 
TDD in functional testing with WebDriver
TDD in functional testing with WebDriverTDD in functional testing with WebDriver
TDD in functional testing with WebDriver
Mikalai Alimenkou
 
Continuous integration with Jenkins
Continuous integration with JenkinsContinuous integration with Jenkins
Continuous integration with Jenkins
Mohammad Hossein Rimaz
 
Behavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlowBehavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlow
Rachid Kherrazi
 
Get your Hero Groove On - Heroes Reborn
Get your Hero Groove On - Heroes RebornGet your Hero Groove On - Heroes Reborn
Get your Hero Groove On - Heroes Reborn
Caleb Jenkins
 

What's hot (19)

Java Beginners Meetup February 2017: Testing and TDD
Java Beginners Meetup February 2017: Testing and TDDJava Beginners Meetup February 2017: Testing and TDD
Java Beginners Meetup February 2017: Testing and TDD
 
The Task Model
The Task ModelThe Task Model
The Task Model
 
Automated test: How to increase his power
Automated test: How to increase his powerAutomated test: How to increase his power
Automated test: How to increase his power
 
8 tips for mastering node.js
8 tips for mastering node.js8 tips for mastering node.js
8 tips for mastering node.js
 
All Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of WorkAll Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of Work
 
Three amigos: Bitbucket + Jenkins + Docker
Three amigos: Bitbucket + Jenkins + DockerThree amigos: Bitbucket + Jenkins + Docker
Three amigos: Bitbucket + Jenkins + Docker
 
Test driven development in meteor
Test driven development in meteorTest driven development in meteor
Test driven development in meteor
 
10 Myth of DevSecOps
10 Myth of DevSecOps10 Myth of DevSecOps
10 Myth of DevSecOps
 
Close Encounters: Connecting with Users to Improve Content
Close Encounters: Connecting with Users to Improve ContentClose Encounters: Connecting with Users to Improve Content
Close Encounters: Connecting with Users to Improve Content
 
Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018
 
DevOps or DevSecOps
DevOps or DevSecOpsDevOps or DevSecOps
DevOps or DevSecOps
 
Behavior driven development. Testing drupal using behat
Behavior driven development. Testing drupal using behatBehavior driven development. Testing drupal using behat
Behavior driven development. Testing drupal using behat
 
Continuous Integration (CI) - An effective development practice
Continuous Integration (CI) - An effective development practiceContinuous Integration (CI) - An effective development practice
Continuous Integration (CI) - An effective development practice
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
 
DevOps Days Columbus - Derek Weeks - 2019
DevOps Days Columbus - Derek Weeks - 2019DevOps Days Columbus - Derek Weeks - 2019
DevOps Days Columbus - Derek Weeks - 2019
 
TDD in functional testing with WebDriver
TDD in functional testing with WebDriverTDD in functional testing with WebDriver
TDD in functional testing with WebDriver
 
Continuous integration with Jenkins
Continuous integration with JenkinsContinuous integration with Jenkins
Continuous integration with Jenkins
 
Behavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlowBehavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlow
 
Get your Hero Groove On - Heroes Reborn
Get your Hero Groove On - Heroes RebornGet your Hero Groove On - Heroes Reborn
Get your Hero Groove On - Heroes Reborn
 

Similar to Behavior Driven Development

Prasad cv
Prasad cvPrasad cv
Prasad cv
indu452
 
Extending D365 with Azure
Extending D365 with AzureExtending D365 with Azure
Extending D365 with Azure
Nelson Johnson
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWD
Vikas Sarin
 
Rakesh_Resume
Rakesh_ResumeRakesh_Resume
Rakesh_Resume
Rakesh Br
 
Sasikumar Selvaraj CV- Mainframe
Sasikumar Selvaraj CV- MainframeSasikumar Selvaraj CV- Mainframe
Sasikumar Selvaraj CV- Mainframe
sasikumar s
 
4 Outcomes of an Advanced Repo Manager Strategy
4 Outcomes of an Advanced Repo Manager Strategy4 Outcomes of an Advanced Repo Manager Strategy
4 Outcomes of an Advanced Repo Manager Strategy
Sonatype
 
DevOps in Practice
DevOps in PracticeDevOps in Practice
DevOps in Practice
Derek Chen
 
Droidcon Paris 2015
Droidcon Paris 2015Droidcon Paris 2015
Droidcon Paris 2015
Renaud Boulard
 
What you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloadsWhat you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloads
Dennis Doomen
 
Murali_CV
Murali_CVMurali_CV
Madhu_Resume
Madhu_ResumeMadhu_Resume
Madhu_Resume
madhu latha pulimi
 
Priyanka Singh_testing_resume
Priyanka Singh_testing_resumePriyanka Singh_testing_resume
Priyanka Singh_testing_resume
Priyanka Singh
 
Developer Night Opticon 2017
Developer Night Opticon 2017Developer Night Opticon 2017
Developer Night Opticon 2017
Optimizely
 
TestProject-X-Webinar_June-22.pptx
TestProject-X-Webinar_June-22.pptxTestProject-X-Webinar_June-22.pptx
TestProject-X-Webinar_June-22.pptx
VishalPatil105290
 
20220329 Ariel Partners Configuring Jira For Maximum Agility
20220329 Ariel Partners Configuring Jira For Maximum Agility20220329 Ariel Partners Configuring Jira For Maximum Agility
20220329 Ariel Partners Configuring Jira For Maximum Agility
Craeg Strong
 
Continuous Delivery With Selenium Grid And Docker
Continuous Delivery With Selenium Grid And DockerContinuous Delivery With Selenium Grid And Docker
Continuous Delivery With Selenium Grid And Docker
Barbara Gonzalez
 
Browserscope oscon 2011
Browserscope oscon 2011Browserscope oscon 2011
Browserscope oscon 2011
lsimon
 
test_automation_POC
test_automation_POCtest_automation_POC
test_automation_POC
Rafael Battesti
 
VishalBendreQa
VishalBendreQaVishalBendreQa
VishalBendreQa
Vishal Bendre
 
Yogesh_Kadam
Yogesh_KadamYogesh_Kadam
Yogesh_Kadam
Yogesh kadam
 

Similar to Behavior Driven Development (20)

Prasad cv
Prasad cvPrasad cv
Prasad cv
 
Extending D365 with Azure
Extending D365 with AzureExtending D365 with Azure
Extending D365 with Azure
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWD
 
Rakesh_Resume
Rakesh_ResumeRakesh_Resume
Rakesh_Resume
 
Sasikumar Selvaraj CV- Mainframe
Sasikumar Selvaraj CV- MainframeSasikumar Selvaraj CV- Mainframe
Sasikumar Selvaraj CV- Mainframe
 
4 Outcomes of an Advanced Repo Manager Strategy
4 Outcomes of an Advanced Repo Manager Strategy4 Outcomes of an Advanced Repo Manager Strategy
4 Outcomes of an Advanced Repo Manager Strategy
 
DevOps in Practice
DevOps in PracticeDevOps in Practice
DevOps in Practice
 
Droidcon Paris 2015
Droidcon Paris 2015Droidcon Paris 2015
Droidcon Paris 2015
 
What you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloadsWhat you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloads
 
Murali_CV
Murali_CVMurali_CV
Murali_CV
 
Madhu_Resume
Madhu_ResumeMadhu_Resume
Madhu_Resume
 
Priyanka Singh_testing_resume
Priyanka Singh_testing_resumePriyanka Singh_testing_resume
Priyanka Singh_testing_resume
 
Developer Night Opticon 2017
Developer Night Opticon 2017Developer Night Opticon 2017
Developer Night Opticon 2017
 
TestProject-X-Webinar_June-22.pptx
TestProject-X-Webinar_June-22.pptxTestProject-X-Webinar_June-22.pptx
TestProject-X-Webinar_June-22.pptx
 
20220329 Ariel Partners Configuring Jira For Maximum Agility
20220329 Ariel Partners Configuring Jira For Maximum Agility20220329 Ariel Partners Configuring Jira For Maximum Agility
20220329 Ariel Partners Configuring Jira For Maximum Agility
 
Continuous Delivery With Selenium Grid And Docker
Continuous Delivery With Selenium Grid And DockerContinuous Delivery With Selenium Grid And Docker
Continuous Delivery With Selenium Grid And Docker
 
Browserscope oscon 2011
Browserscope oscon 2011Browserscope oscon 2011
Browserscope oscon 2011
 
test_automation_POC
test_automation_POCtest_automation_POC
test_automation_POC
 
VishalBendreQa
VishalBendreQaVishalBendreQa
VishalBendreQa
 
Yogesh_Kadam
Yogesh_KadamYogesh_Kadam
Yogesh_Kadam
 

Recently uploaded

SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
YAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring detailsYAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring details
NishanthaBulumulla1
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 

Recently uploaded (20)

SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
YAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring detailsYAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring details
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 

Behavior Driven Development

  • 1. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 110/23/2018 Nelson Johnson Behavior Driven Development www.broadpoint.net 1 Behavior Driven Development By Nelson Johnson Solution Architect BroadPoint Technologies
  • 2. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 2 Who is Nelson Johnson? • Started programming 1977…in high school…on a mainframe • Became full time software consultant in 1982 • BS in MIS and Decision Science from George Mason University • Worked at DARPA creating web apps in 1996 • Working with CRM since version 3 • Solution Architect for BroadPoint Technologies, LLC • Email: njohnson@broadpoint.net
  • 3. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 3 What is Behavior Driven Development (BDD) • Framework for software testing • Abstraction layer on top of typical Test Driven Development • Uses structured English phrases to invoke TDD functions • Gherkin Language (https://cucumber.io/) • User defined – very flexible
  • 4. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 4 Why BDD • Makes it easier to involve end users to develop tests • Added transparency between requirement and test • Separates user behavior from test implementation • Utilizes dev-ops methodologies for higher business value • Increases turnaround time • Build Verification Testing • CRM Upgrade Testing • There is a downside • Can take a long time to run • Complex logic may be difficult to verify
  • 5. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 5 How easy is it to learn Gherkin? Feature: SearchByPhone_PhoneCall As an end user I need the ability to search for contacts by phone number @SearchByPhoneNumber Scenario: Return Login Only Given I log into CRM When I navigate to Sales to get to Activities When I click on Phone Call And I set field phonenumber to '2369874125' Then Check the value of lookup field bpt_callercontact to see if it is 1 Login Only Phone
  • 6. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 6 Parts needed • Dynamics 365 CE • Visual Studio • Unit test project • EasyRepro • Includes Selenium framework • SpecFlow • Browser Drivers • Chromedriver.exe • Geckodriver.exe • Project/bin/debug folder MSTest Step.cs SpecFlow Generated Feature.CS Selenium Feature Test Script EasyRepro Browser Driver
  • 7. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 7 <packages> <package id="Dynamics365.UIAutomation.Api" version="9.0.1.4" targetFramework="net47" /> <package id="MSTest.TestAdapter" version="1.2.1" targetFramework="net471" /> <package id="MSTest.TestFramework" version="1.2.1" targetFramework="net471" /> <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net471" /> <package id="Selenium.Chrome.WebDriver" version="2.38" targetFramework="net471" /> <package id="Selenium.Support" version="3.11.2" targetFramework="net471" /> <package id="Selenium.WebDriver" version="3.11.2" targetFramework="net471" /> <package id="SpecFlow" version="2.3.2" targetFramework="net471" /> <package id="SpecFlow.MsTest" version="2.3.2" targetFramework="net471" /> <package id="System.ValueTuple" version="4.3.0" targetFramework="net471" /> </packages>
  • 8. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 8 Setting it up • Create new Unit test project • Rename UnitTest1.cs to AllSteps.cs • Build the project • Verify there are no issues • Set up credentials • Choose Browser
  • 9. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 9 Add SpecFlow Feature file • Add • New Item • SpecFlow Feature File • CreateContact
  • 10. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 10 Create first test Feature: CreateContact In order to make sure we can create a user @mytag Scenario: Create regular contact Given I log into CRM When I Quick Create Contact When I set keypress field email to 'njohnsontest@mailinator.com' When I set keypress field firstname to 'Neil' When I set keypress field lastname to 'Johnson' When I click on Save
  • 11. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 11 Resources • Wael Hamze Blog: https://waelhamze.wordpress.com/2018/02/27/bdd-for-dynamics- 365-ce/ • Wael Hamze GitHub: https://github.com/WaelHamze/dyn365-ce-bdd • EasyRepro: https://github.com/Microsoft/EasyRepro • SpecFlow: https://specflow.org/getting-started/
  • 12. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 12www.broadpoint.net Q&A Nelson Johnson njohnson@broadpoint.net 301-634-2442 https://www.linkedin.com/in/nelsonjohnson/
  • 13. 10/23/2018 Nelson Johnson Extending D365 with Azure www.broadpoint.net 13www.broadpoint.net Thank You! Nelson Johnson njohnson@broadpoint.net 301-634-2442 https://www.linkedin.com/in/nelsonjohnson/

Editor's Notes

  1. Credentials are coming from the system environment as class properties in AllSteps.cs Browser options set up in TestSettings class.