TDD with BDD in PHP and Symfony

Kamil Adryjanek
Kamil AdryjanekSotware Engineer at Level 7 Systems Ltd
Kamil Adryjanek <kamil@level7systems.pl>
TDD with BDD
in PHP and Symfony
Kamil Adryjanek <kamil@level7systems.pl>
Kamil AdryjanekKamil Adryjanek
Head of Development at
Level7Systems.pl
PHP / Symfony2 trainer
Blogger
KamilAdryjanek.com
Football amateur
Kamil Adryjanek <kamil@level7systems.pl>
Level 7 Systems LtdLevel 7 Systems Ltd
Level 7 Systems delivers business and residential communication
services based on the SIP technology.
VoIPstudio is a next generation communication platform tailored to a specific
business requirements
Powerful SIP Trunking solution for inbound and outbound calls aimed at
companies which have their own PBX.
Kamil Adryjanek <kamil@level7systems.pl>
We are hiring!We are hiring!
1)Junior PHP / Symfony2 developer
2)PHP / Symfony2 developer
Kamil Adryjanek <kamil@level7systems.pl>
AgendaAgenda
1) Why we should write tests?
2) What is TDD?
3) What is BDD?
4) StoryBDD with Behat
5) SpecBDD with PhpSpec
Kamil Adryjanek <kamil@level7systems.pl>
TestingTesting
„There are two types of programmers:
those who write tests,
and those who will be writing tests.”
Kamil Adryjanek <kamil@level7systems.pl>
TestingTesting
Why should we write tests?
Why don't we write tests?
Kamil Adryjanek <kamil@level7systems.pl>
TestingTesting
Kamil Adryjanek <kamil@level7systems.pl>
TestingTesting
How to write tests?
Kamil Adryjanek <kamil@level7systems.pl>
Test-Driven DevelopmentTest-Driven Development
Tests go first...
Kamil Adryjanek <kamil@level7systems.pl>
Test-Driven DevelopmentTest-Driven Development
Kamil Adryjanek <kamil@level7systems.pl>
Test-Driven DevelopmentTest-Driven Development
How to write tests for something that
does not exist?
Kamil Adryjanek <kamil@level7systems.pl>
The projectThe project
Kamil Adryjanek <kamil@level7systems.pl>
The project – customer needsThe project – customer needs
Kamil Adryjanek <kamil@level7systems.pl>
The projectThe project
The first step in every project is a discussion
about the behaviors of the software or feature
to be built.
Kamil Adryjanek <kamil@level7systems.pl>
Behaviour-Driven DevelopmentBehaviour-Driven Development
BDD is a methodology for developing software
through continuous example-based
communication between developers and a
business. This communication happens in a form
that both the business and developers can
clearly understand - examples
Kamil Adryjanek <kamil@level7systems.pl>
BDDBDD
Business Development
requirements
examples
Kamil Adryjanek <kamil@level7systems.pl>
BDDBDD
●
Better understanding of business
●
Better ideas
●
Developers can improve system
●
Developers can help business
Kamil Adryjanek <kamil@level7systems.pl>
TDD vs BDDTDD vs BDD
●
TDD focuses on the DEVELOPER's opinion
on how parts of the software should work
●
BDD focuses on the USERs’ opinion on how
they want your application to behave.
Kamil Adryjanek <kamil@level7systems.pl>
Evolution of TDDEvolution of TDD
StoryBDD ~ functional testing
SpecBDD ~ unit testing
Instead of writing tests you should think of
specifying behavior.
Kamil Adryjanek <kamil@level7systems.pl>
StoryBDDStoryBDD
Scenarios (examples) go first...
Kamil Adryjanek <kamil@level7systems.pl>
StoryBDDStoryBDD
StoryBDD helps ensuring that development team
has understanding of business on the same level
that client does
Kamil Adryjanek <kamil@level7systems.pl>
What is Behat?What is Behat?
● Open Source framwork
●
official BDD tool for PHP
● design tool (design by example)
● inspired by Ruby’s Cucumber project
●
easy integration with Symfony framework
Kamil Adryjanek <kamil@level7systems.pl>
BehatBehat
Is Behat a testing tool for business?
Kamil Adryjanek <kamil@level7systems.pl>
BehatBehat
No, Behat is about communication
between business and development.
Kamil Adryjanek <kamil@level7systems.pl>
Behat - installationBehat - installation
composer require --dev behat/behat
composer require --dev behat/mink
composer require --dev behat/mink-extension
Kamil Adryjanek <kamil@level7systems.pl>
Behat scenarioBehat scenario
Scenario: Some description of the scenario
Given some context
When some event
Then outcome
Kamil Adryjanek <kamil@level7systems.pl>
Behat scenarioBehat scenario
Scenario: Some description of the scenario
Given some context
And more context
When some event
And second event occurs
Then outcome
And another outcome
But another outcome
Kamil Adryjanek <kamil@level7systems.pl>
BehatBehat
How does it work?
Kamil Adryjanek <kamil@level7systems.pl>
Behat – context classBehat – context class
Kamil Adryjanek <kamil@level7systems.pl>
Behat – translationBehat – translation
Kamil Adryjanek <kamil@level7systems.pl>
FeatureFeature
I want to be able to log in with username and
password via login page
Kamil Adryjanek <kamil@level7systems.pl>
Behat featureBehat feature
In order to access admin dashboard
As user
I need to be able to log in
Kamil Adryjanek <kamil@level7systems.pl>
Scenario 1: login formScenario 1: login form
Scenario: login form
Given I am on the „homepage” page
When I press „Login”
Then I should be on the „Login” page
And I should see „email” field
And I should see „password” field
And I should see „Login” button
Kamil Adryjanek <kamil@level7systems.pl>
Scenario 2 – unsuccessful loginScenario 2 – unsuccessful login
Scenario: Login with empty data
Given I am on the „Login” page
When I press „Login”
Then I should still be on the „Login” page
And I should see „E-mail and/or password is required.”
Kamil Adryjanek <kamil@level7systems.pl>
Scenario 3 – successful loginScenario 3 – successful login
Scenario: successful login to admin panel
Given I am on the „Login” page
When I fill in "email" with: "user@example.com"
And I fill in "password" with: "$secret"
And I press „Login”
Then I should be on the „Dashboard” page
And I should see „Admin dashboard”
Kamil Adryjanek <kamil@level7systems.pl>
BehatBehat
What about „testing” REST API?
Kamil Adryjanek <kamil@level7systems.pl>
FeatureFeature
I want to be able to register customer account
via REST API
Kamil Adryjanek <kamil@level7systems.pl>
Behat featureBehat feature
In order to list my CDRs
As api user
I need to be able to register customer
Kamil Adryjanek <kamil@level7systems.pl>
Scenario 1 – invalid HTTP methodScenario 1 – invalid HTTP method
Scenario: register with invalid method
Given I am not authenticated
When I send GET request to „/customers”
Then the response status code should be 405
Kamil Adryjanek <kamil@level7systems.pl>
Scenario 2 – POST empty dataScenario 2 – POST empty data
Scenario: register customer with empty data
Given I am not authenticated
When I send POST request to „/customers”
Then the response status code should be 400
And only following properties should exist:
message
errors
And the „message” property should contain
„Validation errors.”
And the „errors” property should be array with „2”
elements
Kamil Adryjanek <kamil@level7systems.pl>
Scenario 3 – successful registrationScenario 3 – successful registration
Scenario: successful customer registration
Given I am not authenticated
When I send POST request to „/customers” with data:
email: user@example.com
password: $ecret
And the response status should be 201
And only following properties should exist:
data
links
Kamil Adryjanek <kamil@level7systems.pl>
Bug-Driven Development?
Kamil Adryjanek <kamil@level7systems.pl>
BehatBehat
1) Create scenario that will produce a „bug”
2) Run Behat scenario that will fail
3) Fix the bug / refactor
4) Go to step 2 until scenario passes
Kamil Adryjanek <kamil@level7systems.pl>
What about code specification?
Kamil Adryjanek <kamil@level7systems.pl>
SpecBDDSpecBDD
(Code) specifications go first...
Kamil Adryjanek <kamil@level7systems.pl>
What is PhpSpec?What is PhpSpec?
● Open Source framwork
● design tool (design by specification)
● allows to describe the behaviour of an object
you are about to write / create
● inspired by Ruby’s RSpec project
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpecPhpSpec
Create (design) simple class for storing tasks
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec - featurePhpSpec - feature
We are going to implement a class that:
● will store a collection of tasks;
● we can add a task to;
● can be marked as done.
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec - installationPhpSpec - installation
● create composer.json file:
● and install:
composer install
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – describePhpSpec – describe
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – runPhpSpec – run
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – treePhpSpec – tree
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – TaskCollectionSpecPhpSpec – TaskCollectionSpec
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – specifyPhpSpec – specify
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – runPhpSpec – run
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – runPhpSpec – run
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – runPhpSpec – run
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – TaskCollectionPhpSpec – TaskCollection
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – codePhpSpec – code
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – TaskCollectionPhpSpec – TaskCollection
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – specifyPhpSpec – specify
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – runPhpSpec – run
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – Task interfacePhpSpec – Task interface
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – runPhpSpec – run
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – runPhpSpec – run
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – codePhpSpec – code
Kamil Adryjanek <kamil@level7systems.pl>
PhpSpec – runPhpSpec – run
Kamil Adryjanek <kamil@level7systems.pl>
Sylius and Behat / PhpSpecSylius and Behat / PhpSpec
Kamil Adryjanek <kamil@level7systems.pl>
Thank you!
1 of 70

Recommended

Cucumber and Spock Primer by
Cucumber and Spock PrimerCucumber and Spock Primer
Cucumber and Spock PrimerJohn Ferguson Smart Limited
3.9K views51 slides
RedisConf18 - Techniques for Synchronizing In-Memory Caches with Redis by
RedisConf18 - Techniques for Synchronizing In-Memory Caches with RedisRedisConf18 - Techniques for Synchronizing In-Memory Caches with Redis
RedisConf18 - Techniques for Synchronizing In-Memory Caches with RedisRedis Labs
4.6K views31 slides
Agile Is the New Waterfall by
Agile Is the New WaterfallAgile Is the New Waterfall
Agile Is the New WaterfallNaresh Jain
68.1K views95 slides
Spark SQL Adaptive Execution Unleashes The Power of Cluster in Large Scale wi... by
Spark SQL Adaptive Execution Unleashes The Power of Cluster in Large Scale wi...Spark SQL Adaptive Execution Unleashes The Power of Cluster in Large Scale wi...
Spark SQL Adaptive Execution Unleashes The Power of Cluster in Large Scale wi...Databricks
3.1K views23 slides
How to Facilitate Product Backlog Refinement Sessions by
How to Facilitate Product Backlog Refinement SessionsHow to Facilitate Product Backlog Refinement Sessions
How to Facilitate Product Backlog Refinement SessionsSvetlana Mukhina ICP, -ATF, -BVA, - ACC, PSM I, CSPO
3.2K views18 slides
Kafka to the Maxka - (Kafka Performance Tuning) by
Kafka to the Maxka - (Kafka Performance Tuning)Kafka to the Maxka - (Kafka Performance Tuning)
Kafka to the Maxka - (Kafka Performance Tuning)DataWorks Summit
6.4K views66 slides

More Related Content

What's hot

Agile-overview: Agile Manifesto, Agile principles and Agile Methodologies by
Agile-overview: Agile Manifesto, Agile principles and Agile MethodologiesAgile-overview: Agile Manifesto, Agile principles and Agile Methodologies
Agile-overview: Agile Manifesto, Agile principles and Agile MethodologiesBalaji Sathram
16.9K views21 slides
Introduction To Scrum by
Introduction To ScrumIntroduction To Scrum
Introduction To ScrumDave Neuman
3.6K views46 slides
Sqoop on Spark for Data Ingestion-(Veena Basavaraj and Vinoth Chandar, Uber) by
Sqoop on Spark for Data Ingestion-(Veena Basavaraj and Vinoth Chandar, Uber)Sqoop on Spark for Data Ingestion-(Veena Basavaraj and Vinoth Chandar, Uber)
Sqoop on Spark for Data Ingestion-(Veena Basavaraj and Vinoth Chandar, Uber)Spark Summit
11.5K views29 slides
How to Ensure your Definition of Done is Well Done not Half-Baked by
How to Ensure your Definition of Done is Well Done not Half-BakedHow to Ensure your Definition of Done is Well Done not Half-Baked
How to Ensure your Definition of Done is Well Done not Half-BakedSusan Schanta
1.3K views29 slides
Understanding Scrum by
Understanding ScrumUnderstanding Scrum
Understanding ScrumClayDesk
187 views10 slides
IIT Academy: 204 User stories and acceptance criteria by
IIT Academy: 204 User stories and acceptance criteriaIIT Academy: 204 User stories and acceptance criteria
IIT Academy: 204 User stories and acceptance criteriaSteven HK Ma | 馬國豪
2.1K views49 slides

What's hot(20)

Agile-overview: Agile Manifesto, Agile principles and Agile Methodologies by Balaji Sathram
Agile-overview: Agile Manifesto, Agile principles and Agile MethodologiesAgile-overview: Agile Manifesto, Agile principles and Agile Methodologies
Agile-overview: Agile Manifesto, Agile principles and Agile Methodologies
Balaji Sathram16.9K views
Introduction To Scrum by Dave Neuman
Introduction To ScrumIntroduction To Scrum
Introduction To Scrum
Dave Neuman3.6K views
Sqoop on Spark for Data Ingestion-(Veena Basavaraj and Vinoth Chandar, Uber) by Spark Summit
Sqoop on Spark for Data Ingestion-(Veena Basavaraj and Vinoth Chandar, Uber)Sqoop on Spark for Data Ingestion-(Veena Basavaraj and Vinoth Chandar, Uber)
Sqoop on Spark for Data Ingestion-(Veena Basavaraj and Vinoth Chandar, Uber)
Spark Summit11.5K views
How to Ensure your Definition of Done is Well Done not Half-Baked by Susan Schanta
How to Ensure your Definition of Done is Well Done not Half-BakedHow to Ensure your Definition of Done is Well Done not Half-Baked
How to Ensure your Definition of Done is Well Done not Half-Baked
Susan Schanta1.3K views
Understanding Scrum by ClayDesk
Understanding ScrumUnderstanding Scrum
Understanding Scrum
ClayDesk187 views
Agile Lean Kanban Training 1 hour by Ryan Polk
Agile Lean Kanban Training 1 hourAgile Lean Kanban Training 1 hour
Agile Lean Kanban Training 1 hour
Ryan Polk8.8K views
Overcome the 6 Antipatterns of Agile Adoption by Agile Velocity
Overcome the 6 Antipatterns of Agile AdoptionOvercome the 6 Antipatterns of Agile Adoption
Overcome the 6 Antipatterns of Agile Adoption
Agile Velocity918 views
Agile Anti-patterns by Andrew Cox
Agile Anti-patternsAgile Anti-patterns
Agile Anti-patterns
Andrew Cox958 views
Introduction agile scrum methodology by Amit Verma
Introduction agile scrum methodologyIntroduction agile scrum methodology
Introduction agile scrum methodology
Amit Verma1K views
Agile-Scrum Methodology-An Introduction by XBOSoft
Agile-Scrum Methodology-An IntroductionAgile-Scrum Methodology-An Introduction
Agile-Scrum Methodology-An Introduction
XBOSoft3.5K views
Introduction to Kanban boards by ProofHub
Introduction to Kanban boardsIntroduction to Kanban boards
Introduction to Kanban boards
ProofHub2.4K views
Agile software development methodology by justinleague0819
Agile software development methodologyAgile software development methodology
Agile software development methodology
justinleague0819755 views
Scrum Process by John Lewis
Scrum ProcessScrum Process
Scrum Process
John Lewis15.2K views
Introduction to Agile & Scrum by Hawkman Academy
Introduction to Agile & ScrumIntroduction to Agile & Scrum
Introduction to Agile & Scrum
Hawkman Academy2.6K views
Elephant Carpaccio by Lars Thorup
Elephant CarpaccioElephant Carpaccio
Elephant Carpaccio
Lars Thorup6.3K views
Using Time Window Compaction Strategy For Time Series Workloads by Jeff Jirsa
Using Time Window Compaction Strategy For Time Series WorkloadsUsing Time Window Compaction Strategy For Time Series Workloads
Using Time Window Compaction Strategy For Time Series Workloads
Jeff Jirsa5.1K views
Building Streaming Data Pipelines with Google Cloud Dataflow and Confluent Cl... by HostedbyConfluent
Building Streaming Data Pipelines with Google Cloud Dataflow and Confluent Cl...Building Streaming Data Pipelines with Google Cloud Dataflow and Confluent Cl...
Building Streaming Data Pipelines with Google Cloud Dataflow and Confluent Cl...
HostedbyConfluent1.1K views

Viewers also liked

BDD in Symfony2 by
BDD in Symfony2BDD in Symfony2
BDD in Symfony2Konstantin Kudryashov
11.3K views114 slides
Test Driven Development with PHPUnit by
Test Driven Development with PHPUnitTest Driven Development with PHPUnit
Test Driven Development with PHPUnitTuan Nguyen
1K views23 slides
Test Driven Development (TDD) by
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
31.9K views40 slides
Programacion Web con Haskell by
Programacion Web con HaskellProgramacion Web con Haskell
Programacion Web con Haskellfebuiles
2.1K views31 slides
BDD, Behat & Drupal by
BDD, Behat & DrupalBDD, Behat & Drupal
BDD, Behat & DrupalBozhidar Boshnakov
1K views66 slides
Madison neighborhood conference, 2014 by
Madison neighborhood conference, 2014Madison neighborhood conference, 2014
Madison neighborhood conference, 2014erik_paulson
6.2K views47 slides

Viewers also liked(18)

Test Driven Development with PHPUnit by Tuan Nguyen
Test Driven Development with PHPUnitTest Driven Development with PHPUnit
Test Driven Development with PHPUnit
Tuan Nguyen1K views
Test Driven Development (TDD) by David Ehringer
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
David Ehringer31.9K views
Programacion Web con Haskell by febuiles
Programacion Web con HaskellProgramacion Web con Haskell
Programacion Web con Haskell
febuiles2.1K views
Madison neighborhood conference, 2014 by erik_paulson
Madison neighborhood conference, 2014Madison neighborhood conference, 2014
Madison neighborhood conference, 2014
erik_paulson6.2K views
Symfony 3 est sorti! Forum PHP 2015 by nicolas.grekas
Symfony 3 est sorti! Forum PHP 2015Symfony 3 est sorti! Forum PHP 2015
Symfony 3 est sorti! Forum PHP 2015
nicolas.grekas8K views
Unit and Functional Testing with Symfony2 by Fabien Potencier
Unit and Functional Testing with Symfony2Unit and Functional Testing with Symfony2
Unit and Functional Testing with Symfony2
Fabien Potencier20.4K views
Test Driven Development for Embedded C by James Grenning
Test Driven Development for Embedded CTest Driven Development for Embedded C
Test Driven Development for Embedded C
James Grenning4.5K views
TDD, BDD, RSpec by Nascenia IT
TDD, BDD, RSpecTDD, BDD, RSpec
TDD, BDD, RSpec
Nascenia IT2.8K views
Double Loop: TDD & BDD Done Right! by Jessica Mauerhan
Double Loop: TDD & BDD Done Right!Double Loop: TDD & BDD Done Right!
Double Loop: TDD & BDD Done Right!
Jessica Mauerhan2.6K views
Principles and patterns for test driven development by Stephen Fuqua
Principles and patterns for test driven developmentPrinciples and patterns for test driven development
Principles and patterns for test driven development
Stephen Fuqua4.2K views
BDD presentation by temebele
BDD presentationBDD presentation
BDD presentation
temebele8.2K views
Test and Behaviour Driven Development (TDD/BDD) by Lars Thorup
Test and Behaviour Driven Development (TDD/BDD)Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)
Lars Thorup16K views

Similar to TDD with BDD in PHP and Symfony

Onlne Retail Management By Jitendra by
Onlne Retail Management By JitendraOnlne Retail Management By Jitendra
Onlne Retail Management By JitendraJitendra
1.7K views19 slides
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-... by
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Stefan Richter
72.6K views91 slides
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota) by
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)Cathrine Wilhelmsen
1.8K views119 slides
I Love APIs - Oct 2015 by
I Love APIs - Oct 2015I Love APIs - Oct 2015
I Love APIs - Oct 2015Mike McNeil
902 views68 slides
Afupday lille-2020 by
Afupday lille-2020Afupday lille-2020
Afupday lille-2020Nicolas De Boose
382 views44 slides
C# with Renas by
C# with RenasC# with Renas
C# with RenasRenas Rekany
266 views128 slides

Similar to TDD with BDD in PHP and Symfony(20)

Onlne Retail Management By Jitendra by Jitendra
Onlne Retail Management By JitendraOnlne Retail Management By Jitendra
Onlne Retail Management By Jitendra
Jitendra1.7K views
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-... by Stefan Richter
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Stefan Richter72.6K views
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota) by Cathrine Wilhelmsen
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)
Level Up Your Biml: Best Practices and Coding Techniques (SQLSaturday Minnesota)
Cathrine Wilhelmsen1.8K views
I Love APIs - Oct 2015 by Mike McNeil
I Love APIs - Oct 2015I Love APIs - Oct 2015
I Love APIs - Oct 2015
Mike McNeil902 views
Aws Deployment Tools - Overview, Details, Implementation by serkancapkan
Aws Deployment Tools - Overview, Details, ImplementationAws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, Implementation
serkancapkan100 views
Yii2 by Peter Jack Kambey by k4ndar
Yii2 by Peter Jack KambeyYii2 by Peter Jack Kambey
Yii2 by Peter Jack Kambey
k4ndar3.4K views
Bridging the gap between business and technology - Behaviour Driven Developme... by marcin_pajdzik
Bridging the gap between business and technology - Behaviour Driven Developme...Bridging the gap between business and technology - Behaviour Driven Developme...
Bridging the gap between business and technology - Behaviour Driven Developme...
marcin_pajdzik340 views
Introduction To Code Igniter by Amzad Hossain
Introduction To Code IgniterIntroduction To Code Igniter
Introduction To Code Igniter
Amzad Hossain5.6K views
PHP CE 2018 - Building Symfony application with Ports and Adapters approach a... by Dariusz Drobisz
PHP CE 2018 - Building Symfony application with Ports and Adapters approach a...PHP CE 2018 - Building Symfony application with Ports and Adapters approach a...
PHP CE 2018 - Building Symfony application with Ports and Adapters approach a...
Dariusz Drobisz250 views
Agile software architecture by Scott Hsieh
Agile software architectureAgile software architecture
Agile software architecture
Scott Hsieh256 views
Level Up Your Biml: Best Practices and Coding Techniques (SQLDay 2018) by Cathrine Wilhelmsen
Level Up Your Biml: Best Practices and Coding Techniques (SQLDay 2018)Level Up Your Biml: Best Practices and Coding Techniques (SQLDay 2018)
Level Up Your Biml: Best Practices and Coding Techniques (SQLDay 2018)
ColdFusion 11 Overview - CFSummit 2013 by Rupesh Kumar
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013
Rupesh Kumar484 views
Create ABS Project In Twenty Minutes by BENOIS Jérôme
Create ABS Project In Twenty MinutesCreate ABS Project In Twenty Minutes
Create ABS Project In Twenty Minutes
BENOIS Jérôme913 views
01 Introduction to programming by maznabili
01 Introduction to programming01 Introduction to programming
01 Introduction to programming
maznabili262 views
Modular Web Applications With Netzke by netzke
Modular Web Applications With NetzkeModular Web Applications With Netzke
Modular Web Applications With Netzke
netzke1.1K views
Web Components: back to the future by DA-14
Web Components: back to the futureWeb Components: back to the future
Web Components: back to the future
DA-14710 views
“One man” development process model by Silicon Straits
“One man” development process model“One man” development process model
“One man” development process model
Silicon Straits670 views

Recently uploaded

MVP and prioritization.pdf by
MVP and prioritization.pdfMVP and prioritization.pdf
MVP and prioritization.pdfrahuldharwal141
37 views8 slides
20231123_Camunda Meetup Vienna.pdf by
20231123_Camunda Meetup Vienna.pdf20231123_Camunda Meetup Vienna.pdf
20231123_Camunda Meetup Vienna.pdfPhactum Softwareentwicklung GmbH
45 views73 slides
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Safe Software
317 views86 slides
Unit 1_Lecture 2_Physical Design of IoT.pdf by
Unit 1_Lecture 2_Physical Design of IoT.pdfUnit 1_Lecture 2_Physical Design of IoT.pdf
Unit 1_Lecture 2_Physical Design of IoT.pdfStephenTec
15 views36 slides
STPI OctaNE CoE Brochure.pdf by
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdfmadhurjyapb
14 views1 slide
Case Study Copenhagen Energy and Business Central.pdf by
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdfAitana
17 views3 slides

Recently uploaded(20)

Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software317 views
Unit 1_Lecture 2_Physical Design of IoT.pdf by StephenTec
Unit 1_Lecture 2_Physical Design of IoT.pdfUnit 1_Lecture 2_Physical Design of IoT.pdf
Unit 1_Lecture 2_Physical Design of IoT.pdf
StephenTec15 views
STPI OctaNE CoE Brochure.pdf by madhurjyapb
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdf
madhurjyapb14 views
Case Study Copenhagen Energy and Business Central.pdf by Aitana
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdf
Aitana17 views
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc72 views
The Forbidden VPN Secrets.pdf by Mariam Shaba
The Forbidden VPN Secrets.pdfThe Forbidden VPN Secrets.pdf
The Forbidden VPN Secrets.pdf
Mariam Shaba20 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman38 views
"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays24 views
"Node.js Development in 2024: trends and tools", Nikita Galkin by Fwdays
"Node.js Development in 2024: trends and tools", Nikita Galkin "Node.js Development in 2024: trends and tools", Nikita Galkin
"Node.js Development in 2024: trends and tools", Nikita Galkin
Fwdays17 views
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf

TDD with BDD in PHP and Symfony