SlideShare a Scribd company logo
1 of 87
Download to read offline
@Brunty
BEHAVIOUR DRIVEN
DEVELOPMENT & BEHAT
TELLING STORIES THROUGH CODE
@Brunty
Senior Software Engineer
Viva IT
@Brunty
@PHPem
@Brunty
BEFORE WE TALK
ABOUT BDD
@Brunty
TDD VS BDD
@Brunty
BDD IS TDD ‘DONE RIGHT’
IT’S OFTEN SAID THAT…
@Brunty
TDD IS BUILDING
THE THING RIGHT
@Brunty
BDD IS BUILDING
THE RIGHT THING
@Brunty
WE’LL BE LOOKING
AT SCENARIO BDD
@Brunty
BDD IS A SECOND-GENERATION, OUTSIDE-IN, PULL-
BASED, MULTIPLE-STAKEHOLDER, MULTIPLE-
SCALE, HIGH-AUTOMATION, AGILE METHODOLOGY.
DAN NORTH
http://dannorth.net/whats-in-a-story/
@Brunty
SECOND-GENERATION
BREAK DOWN
@Brunty
MULTIPLE-STAKEHOLDER
BREAK DOWN
@Brunty
AGILE METHODOLOGY
BREAK DOWN
@Brunty
MULTIPLE
STAKEHOLDERS
@Brunty
CONVERSATIONS
ARE KEY
@Brunty
HAVING
CONVERSATIONS >
CAPTURING
CONVERSATIONS
AUTOMATING
CONVERSATIONS>
@Brunty
HAVE CONVERSATIONS
BEFORE YOU START
WRITING CODE
@Brunty
CAPTURE THE CONVERSATIONS
SO YOU CAN USE THEM TO
DRIVE DEVELOPMENT
@Brunty
BDD IS THE ART OF USING EXAMPLES IN
CONVERSATIONS TO ILLUSTRATE BEHAVIOUR
LIZ KEOGH
@Brunty
EXAMPLES ARE
ESSENTIAL
@Bruntyhttps://github.com/cucumber/cucumber/wiki/Gherkin
GHERKIN DSL
@Brunty
HUMAN READABLE
GHERKIN IS…
@Brunty
MULTI-LINGUAL SUPPORT
TOOLS CAN INCLUDE…
@Brunty
EN-PIRATE
INCLUDING
https://github.com/Behat/Gherkin/blob/master/i18n.php#L313
@Brunty
KEYWORD BASED
GHERKIN IS…
@Brunty
LINE ORIENTED
GHERKIN IS…
@Brunty
DOCUMENTATION
GHERKIN IS…
@Brunty
AUTOMATION
GHERKIN ALLOWS…
@Brunty
DEVELOPERS LOVE
AUTOMATION
@Brunty
FEATURES ARE
STORIES
WHEN WRITING STORIES
▸ Be descriptive
▸ Use real-world examples
▸ Describe the business logic
▸ Give context
@Brunty
SINGLE FEATURE
PER FILE
@Brunty
Feature:
As a [role]
I want [feature]
So that [benefit]
@Brunty
Feature:
In order to [achieve value]
As a [role]
I want [feature]
https://lizkeogh.com/2008/05/14/rip-as-a-i-want-so-that/
@Brunty
SCENARIOS
@Brunty
SCENARIOS ARE
EXAMPLES
@Brunty
EXAMPLES ARE
ESSENTIAL
@Brunty
MULTIPLE SCENARIOS
FEATURES CAN HAVE
@Brunty
MULTIPLE STEPS
SCENARIOS HAVE…
@Brunty
GIVEN
PUTS THE SYSTEM IN A KNOWN STATE
@Brunty
WHEN
DESCRIBE A KEY ACTION
@Brunty
THEN
DESCRIBE AN OBSERVABLE OUTCOME
@Brunty
Given I have a “Large T-Shirt” product
When I add a “Large T-Shirt” to my basket
Then I should have a “Large T-Shirt” in my basket
@Brunty
AND
THERE’S ALSO…
@Brunty
BUT
THERE’S ALSO…
@Brunty
Given I have a “Large T-Shirt” product that costs £9.99
And I have an empty basket
And I am a tax-exempt customer
When I add a “Large T-Shirt” to my basket
Then I have a “Large T-Shirt” in my basket
And the basket total should be £9.99
But I do not have tax applied to my order
@Brunty
STORY STRUCTURE:
THE MAKEUP OF A FEATURE
FILE
@Brunty
Feature: As a customer
I want to be able to add products to my basket
So that I can have a gift for my partner
Scenario: I can add a product to the basket
Given I have a "Large T-Shirt" product
When I add a “Large T-Shirt” to my basket
Then I have a “Large T-Shirt” in my basket
FEATURE
@Brunty
SCENARIO
Feature: As a customer
I want to be able to add products to my basket
So that I can have a gift for my partner
Scenario: I can add a product to the basket
Given I have a "Large T-Shirt" product
When I add a “Large T-Shirt” to my basket
Then I have a “Large T-Shirt” in my basket
@Brunty
STEP
Feature: As a customer
I want to be able to add products to my basket
So that I can have a gift for my partner
Scenario: I can add a product to the basket
Given I have a "Large T-Shirt" product
When I add a “Large T-Shirt” to my basket
Then I have a “Large T-Shirt” in my basket
@Brunty
HOW DO DEVELOPERS
WORK WITH IT?
@Brunty
STEP DEFINITIONS
@Brunty
Given I have a "Large T-Shirt" product
When I add a “Large T-Shirt” to my basket
Then I have a “Large T-Shirt” in my basket
@Brunty
ARGUMENTS
@Brunty
@Brunty
TRANSFORMERS
@Brunty
@Brunty
@Brunty
TAGS
@Brunty
@Brunty
HOOKS
@Brunty
BEFORE & AFTER SUITES,
FEATURES, SCENARIOS, STEPS
HOOKS
@Brunty
@Brunty
SUITES &
PROFILES
@Brunty
TEST FEATURES WITH
DIFFERENT CONFIGURATIONS
SUITES ALLOW YOU TO…
@Brunty
SUITES CAN USE THE SAME FEATURE FILES.
OR SUITES CAN USE DIFFERENT FEATURE
FILES
FOR EXAMPLE:
@Brunty
YOU CAN USE THE SAME FEATURE FILE
TO TEST DIFFERENT IMPLEMENTATIONS
WITH SUITES AND TAGS…
@Brunty
@Brunty
@Brunty
YOU CAN HAVE A UI SUITE THAT USES
DIFFERENT STEP DEFINITIONS THAN A
SERVICE / DOMAIN / LOWER LEVEL SUITE
FOR EXAMPLE:
@Brunty
@Brunty
@Brunty
YOU CAN CHANGE IMPLEMENTATION
WITHOUT CHANGING YOUR
DOCUMENTED BUSINESS RULES
WITH SUITES AND TAGS…
@Brunty
THIS IS WHERE THE POWER
LIES
I FIND…
@Brunty
IMPLEMENTATION CHANGES
MORE FREQUENTLY THAN
BUSINESS RULES
@Brunty
WRITING A GOOD
STORY
@Brunty
Scenario: I can add a product to my basket
Given I am on the “/product/1” page
When I press “Add to basket”
Then I will see “Playstation 4”
And I will see £250
@Brunty
Scenario: I can add a single product to my basket
Given I have a “Playstation 4” that costs £250
When I add the “Playstation 4” to my basket
Then I will have 1 product in my basket
And the basket total will be £250
BETTER STORY
@Brunty
Scenario: I can add a product to my basket
Given I am on the “/product/1” page
When I press “Add to basket”
Then I will see “Playstation 4”
And I will see £250
WHAT HAPPENS WHEN THE UI CHANGES TO SAY “ADD TO CART”?
@Brunty
DON’T WRITE
IMPLEMENTATION IN
FEATURES
@Brunty
DEMO TIME!
@Brunty
IN SUMMARY
@Brunty
CONVERSATIONS.
CONVERSATIONS.
CONVERSATIONS.
CONVERSATIONS.
CONVERSATIONS.
@Brunty
STORIES TOLD BY REAL WORLD EXAMPLES.
USER STORIES AS REQUIREMENTS.
INVOLVE MULTIPLE STAKEHOLDERS.
WRITE FEATURES BEFORE CODE.
WRITE FEATURES WITHOUT IMPLEMENTATION.
@Brunty
BEGINNING:
HAVE A CONVERSATION, CAPTURE THAT
CONVERSATION
MIDDLE:
AUTOMATE AND IMPLEMENT THAT CONVERSATION
END:
HAPPY STAKEHOLDERS AND WELL BUILT
SOFTWARE
@Brunty
LINKS & READING
https://cucumber.io/docs
https://adamcod.es/2014/05/15/test-doubles-mock-vs-stub.html
https://github.com/cucumber/cucumber/wiki/Gherkin
http://dannorth.net/whats-in-a-story/
http://dannorth.net/introducing-bdd/
http://lizkeogh.com/category/bdd/
http://lizkeogh.com/2014/01/22/using-bdd-with-legacy-systems/
http://inviqa.com/insights/bdd-guide
https://cucumber.io/blog/2015/03/24/single-source-of-truth
https://github.com/Behat/Gherkin/blob/master/i18n.php#L313
@Brunty
THANKS FOR
LISTENING
@Brunty
@Brunty
@PHPem
matt@mfyu.co.uk

More Related Content

Similar to BDD & Behat for Glasgow PHP

BDD: Telling stories through code [For TechNotts]
BDD: Telling stories through code [For TechNotts]BDD: Telling stories through code [For TechNotts]
BDD: Telling stories through code [For TechNotts]Matt Brunt
 
You Gotta Have Personality: how to connect to today’s customer with video
You Gotta Have Personality: how to connect to today’s customer with videoYou Gotta Have Personality: how to connect to today’s customer with video
You Gotta Have Personality: how to connect to today’s customer with videoTara Hunt
 
Youtube Innovation Lenovo
Youtube Innovation Lenovo Youtube Innovation Lenovo
Youtube Innovation Lenovo Anto Noval
 
Lessons Learned From Spending & €1m on Facebook Ads #InOrbit18 - by @NedPoult...
Lessons Learned From Spending & €1m on Facebook Ads #InOrbit18 - by @NedPoult...Lessons Learned From Spending & €1m on Facebook Ads #InOrbit18 - by @NedPoult...
Lessons Learned From Spending & €1m on Facebook Ads #InOrbit18 - by @NedPoult...Ned Poulter
 
4th Nov 15 - Creating Great Minimum Viable Products - Brian Crofts
4th Nov 15 - Creating Great Minimum Viable Products - Brian Crofts4th Nov 15 - Creating Great Minimum Viable Products - Brian Crofts
4th Nov 15 - Creating Great Minimum Viable Products - Brian CroftsCity Unrulyversity
 
The Business of (Tech) Startups - iSummit Orlando - Sept 2014
The Business of (Tech) Startups - iSummit Orlando - Sept 2014The Business of (Tech) Startups - iSummit Orlando - Sept 2014
The Business of (Tech) Startups - iSummit Orlando - Sept 2014Paul Singh
 
Beyond Openness - Open Design Shared Creativity
Beyond Openness - Open Design Shared CreativityBeyond Openness - Open Design Shared Creativity
Beyond Openness - Open Design Shared CreativitySimone Cicero
 
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechniciansAgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechniciansJason Tice
 
Living documentation
Living documentationLiving documentation
Living documentationSamuel ROZE
 
The 9 Most Horrifying Content Marketing Misunderstandings
The 9 Most Horrifying Content Marketing MisunderstandingsThe 9 Most Horrifying Content Marketing Misunderstandings
The 9 Most Horrifying Content Marketing MisunderstandingsCompendium
 
The 9 Most Horrifying Content Marketing Misunderstandings (Chris Moody + Jay ...
The 9 Most Horrifying Content Marketing Misunderstandings (Chris Moody + Jay ...The 9 Most Horrifying Content Marketing Misunderstandings (Chris Moody + Jay ...
The 9 Most Horrifying Content Marketing Misunderstandings (Chris Moody + Jay ...Chris Moody
 
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...Suzzicks
 
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...MobileMoxie
 
Omec workshop 26 april 2010 (final)
Omec workshop 26 april 2010 (final)Omec workshop 26 april 2010 (final)
Omec workshop 26 april 2010 (final)Guru in a Bottle
 
From 'Good Enough' to 'Can’t Get Enough': How to Consistently Create Content ...
From 'Good Enough' to 'Can’t Get Enough': How to Consistently Create Content ...From 'Good Enough' to 'Can’t Get Enough': How to Consistently Create Content ...
From 'Good Enough' to 'Can’t Get Enough': How to Consistently Create Content ...Uberflip
 
The Marriage of Communication and Code: How Strategists and Technicians Can E...
The Marriage of Communication and Code: How Strategists and Technicians Can E...The Marriage of Communication and Code: How Strategists and Technicians Can E...
The Marriage of Communication and Code: How Strategists and Technicians Can E...Andrea Goulet
 
Welcome by Mobile Bootcamp Host: "State of the Industry"
Welcome by Mobile Bootcamp Host: "State of the Industry"Welcome by Mobile Bootcamp Host: "State of the Industry"
Welcome by Mobile Bootcamp Host: "State of the Industry"iMedia Connection
 

Similar to BDD & Behat for Glasgow PHP (20)

BDD: Telling stories through code [For TechNotts]
BDD: Telling stories through code [For TechNotts]BDD: Telling stories through code [For TechNotts]
BDD: Telling stories through code [For TechNotts]
 
You Gotta Have Personality: how to connect to today’s customer with video
You Gotta Have Personality: how to connect to today’s customer with videoYou Gotta Have Personality: how to connect to today’s customer with video
You Gotta Have Personality: how to connect to today’s customer with video
 
Youtube Innovation Lenovo
Youtube Innovation Lenovo Youtube Innovation Lenovo
Youtube Innovation Lenovo
 
Lessons Learned From Spending & €1m on Facebook Ads #InOrbit18 - by @NedPoult...
Lessons Learned From Spending & €1m on Facebook Ads #InOrbit18 - by @NedPoult...Lessons Learned From Spending & €1m on Facebook Ads #InOrbit18 - by @NedPoult...
Lessons Learned From Spending & €1m on Facebook Ads #InOrbit18 - by @NedPoult...
 
4th Nov 15 - Creating Great Minimum Viable Products - Brian Crofts
4th Nov 15 - Creating Great Minimum Viable Products - Brian Crofts4th Nov 15 - Creating Great Minimum Viable Products - Brian Crofts
4th Nov 15 - Creating Great Minimum Viable Products - Brian Crofts
 
The Business of (Tech) Startups - iSummit Orlando - Sept 2014
The Business of (Tech) Startups - iSummit Orlando - Sept 2014The Business of (Tech) Startups - iSummit Orlando - Sept 2014
The Business of (Tech) Startups - iSummit Orlando - Sept 2014
 
Online video marketing part v 1
Online video marketing part v 1Online video marketing part v 1
Online video marketing part v 1
 
Beyond Openness - Open Design Shared Creativity
Beyond Openness - Open Design Shared CreativityBeyond Openness - Open Design Shared Creativity
Beyond Openness - Open Design Shared Creativity
 
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechniciansAgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
 
Living documentation
Living documentationLiving documentation
Living documentation
 
The 9 Most Horrifying Content Marketing Misunderstandings
The 9 Most Horrifying Content Marketing MisunderstandingsThe 9 Most Horrifying Content Marketing Misunderstandings
The 9 Most Horrifying Content Marketing Misunderstandings
 
The 9 Most Horrifying Content Marketing Misunderstandings (Chris Moody + Jay ...
The 9 Most Horrifying Content Marketing Misunderstandings (Chris Moody + Jay ...The 9 Most Horrifying Content Marketing Misunderstandings (Chris Moody + Jay ...
The 9 Most Horrifying Content Marketing Misunderstandings (Chris Moody + Jay ...
 
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
 
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
 
Omec workshop 26 april 2010 (final)
Omec workshop 26 april 2010 (final)Omec workshop 26 april 2010 (final)
Omec workshop 26 april 2010 (final)
 
From 'Good Enough' to 'Can’t Get Enough': How to Consistently Create Content ...
From 'Good Enough' to 'Can’t Get Enough': How to Consistently Create Content ...From 'Good Enough' to 'Can’t Get Enough': How to Consistently Create Content ...
From 'Good Enough' to 'Can’t Get Enough': How to Consistently Create Content ...
 
4. pre production
4. pre production4. pre production
4. pre production
 
4. pre production
4. pre production4. pre production
4. pre production
 
The Marriage of Communication and Code: How Strategists and Technicians Can E...
The Marriage of Communication and Code: How Strategists and Technicians Can E...The Marriage of Communication and Code: How Strategists and Technicians Can E...
The Marriage of Communication and Code: How Strategists and Technicians Can E...
 
Welcome by Mobile Bootcamp Host: "State of the Industry"
Welcome by Mobile Bootcamp Host: "State of the Industry"Welcome by Mobile Bootcamp Host: "State of the Industry"
Welcome by Mobile Bootcamp Host: "State of the Industry"
 

More from Matt Brunt

Content Security Policies: Let's Break Stuff for WordCamp London
Content Security Policies: Let's Break Stuff for WordCamp LondonContent Security Policies: Let's Break Stuff for WordCamp London
Content Security Policies: Let's Break Stuff for WordCamp LondonMatt Brunt
 
CSPs: Let's Break Stuff for PHP Benelux
CSPs: Let's Break Stuff for PHP BeneluxCSPs: Let's Break Stuff for PHP Benelux
CSPs: Let's Break Stuff for PHP BeneluxMatt Brunt
 
Content Security Policies: Let's Break Stuff @ Scotland PHP
Content Security Policies: Let's Break Stuff @ Scotland PHPContent Security Policies: Let's Break Stuff @ Scotland PHP
Content Security Policies: Let's Break Stuff @ Scotland PHPMatt Brunt
 
Content Security Policies: Let's Break Stuff for PHPSW at Bath Digital
Content Security Policies: Let's Break Stuff for PHPSW at Bath DigitalContent Security Policies: Let's Break Stuff for PHPSW at Bath Digital
Content Security Policies: Let's Break Stuff for PHPSW at Bath DigitalMatt Brunt
 
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017Matt Brunt
 
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017Matt Brunt
 
Content Security Policies: Let's Break Stuff
Content Security Policies: Let's Break StuffContent Security Policies: Let's Break Stuff
Content Security Policies: Let's Break StuffMatt Brunt
 
CSP - What? Why? How? PHPNW16
CSP - What? Why? How? PHPNW16CSP - What? Why? How? PHPNW16
CSP - What? Why? How? PHPNW16Matt Brunt
 

More from Matt Brunt (9)

Content Security Policies: Let's Break Stuff for WordCamp London
Content Security Policies: Let's Break Stuff for WordCamp LondonContent Security Policies: Let's Break Stuff for WordCamp London
Content Security Policies: Let's Break Stuff for WordCamp London
 
CSPs: Let's Break Stuff for PHP Benelux
CSPs: Let's Break Stuff for PHP BeneluxCSPs: Let's Break Stuff for PHP Benelux
CSPs: Let's Break Stuff for PHP Benelux
 
Content Security Policies: Let's Break Stuff @ Scotland PHP
Content Security Policies: Let's Break Stuff @ Scotland PHPContent Security Policies: Let's Break Stuff @ Scotland PHP
Content Security Policies: Let's Break Stuff @ Scotland PHP
 
Content Security Policies: Let's Break Stuff for PHPSW at Bath Digital
Content Security Policies: Let's Break Stuff for PHPSW at Bath DigitalContent Security Policies: Let's Break Stuff for PHPSW at Bath Digital
Content Security Policies: Let's Break Stuff for PHPSW at Bath Digital
 
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
 
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
 
Content Security Policies: Let's Break Stuff
Content Security Policies: Let's Break StuffContent Security Policies: Let's Break Stuff
Content Security Policies: Let's Break Stuff
 
CSP - What? Why? How? PHPNW16
CSP - What? Why? How? PHPNW16CSP - What? Why? How? PHPNW16
CSP - What? Why? How? PHPNW16
 
Intro to Gulp
Intro to GulpIntro to Gulp
Intro to Gulp
 

Recently uploaded

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 

Recently uploaded (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 

BDD & Behat for Glasgow PHP