This document provides an overview of behavior driven development (BDD). It defines BDD as an agile software development technique that encourages collaboration between different project stakeholders. The document outlines some key practices of BDD, including writing test cases using a natural language format called Gherkin and using mocks to implement test scenarios before developing the actual code. It also discusses some popular BDD frameworks like Cucumber, JBehave, and RSpec that allow automating test execution based on scenarios written in a language non-technical users can understand.
Shape Shift is a JIRA plugin devoted to manage large distributed Agile Teams.
These slides were presented by Fabio Armani during the XP 2009 Conference
Lean Agile Adoption Enterprise Challenges - XP 2012Fabio Armani
The migration process from Mainstream and Waterfall approaches to Agile Methodologies, at a broad and full company level, is a complex challenge that requires courage, dedication and ability to face difficulties and errors.
This short paper is the real story (hence the sub title: “Enterprise Challenges”) of my long experience as a CTO and Senior Manager, which has been committed and involved into spreading agile methodologies in Italy at Enterprise level (in particular by adopting Agile Modeling, eXtreme Programming, Scrum, Kanban and Lean Development methodologies), thus involving all levels of the company, starting from the organization structure and vision to the strategic operational details (eg: open source tools for project management and full life-cycle).
This lighting talk aims to explore, from an holistic point of view as opposed to the reductionist thinking, how the Lean Agile methodologies can be considered as part of the “turning point” in the crisis of Western reductionist way of thinking. Recent scientific discoveries indicate that all life – from the most primitive cells, up to human societies, corporations and nation-states, even the global economy – is organized along the same basic patterns and principles: those of the network. Both (Lean & Agile) offer a thinking tool set that allow us to create new models and different approaches. Hence, in this lighting talk I would like to affirm how tightly humans are connected with the fabric of life and make it clear that it is imperative to organize our world according to a different set of values and beliefs.
This presentation, that was presented at the Italian Agile Day 2012 conference by Fabio Armani. It deals with Lean Agile Contracts in terms of related principles, topics, typologies and models.
Shape Shift is a JIRA plugin devoted to manage large distributed Agile Teams.
These slides were presented by Fabio Armani during the XP 2009 Conference
Lean Agile Adoption Enterprise Challenges - XP 2012Fabio Armani
The migration process from Mainstream and Waterfall approaches to Agile Methodologies, at a broad and full company level, is a complex challenge that requires courage, dedication and ability to face difficulties and errors.
This short paper is the real story (hence the sub title: “Enterprise Challenges”) of my long experience as a CTO and Senior Manager, which has been committed and involved into spreading agile methodologies in Italy at Enterprise level (in particular by adopting Agile Modeling, eXtreme Programming, Scrum, Kanban and Lean Development methodologies), thus involving all levels of the company, starting from the organization structure and vision to the strategic operational details (eg: open source tools for project management and full life-cycle).
This lighting talk aims to explore, from an holistic point of view as opposed to the reductionist thinking, how the Lean Agile methodologies can be considered as part of the “turning point” in the crisis of Western reductionist way of thinking. Recent scientific discoveries indicate that all life – from the most primitive cells, up to human societies, corporations and nation-states, even the global economy – is organized along the same basic patterns and principles: those of the network. Both (Lean & Agile) offer a thinking tool set that allow us to create new models and different approaches. Hence, in this lighting talk I would like to affirm how tightly humans are connected with the fabric of life and make it clear that it is imperative to organize our world according to a different set of values and beliefs.
This presentation, that was presented at the Italian Agile Day 2012 conference by Fabio Armani. It deals with Lean Agile Contracts in terms of related principles, topics, typologies and models.
A collaborative talk on lean agile transitions, challenges and experiences guided by a Lean Change approach. Tao as well as music and arts are possible keys of learning.
Secondo incontro del Roma-xpug nel quale si effettuerà una 'round-table' sui valori e i principi che sono alla base delle metodologie Lean e Agili. L'incontro prevede una breve presentazione di Fabio Armani a cui seguirà un panel aperto per scambiarsi opinioni e esperienze.
Second Meeting of the Rome-xpug in which we'll make a 'round-table' on the values and principles that are the basis of Lean and Agile methodologies. The meeting includes a short presentation by Fabio Armani, followed by an open panel to exchange views and experiences.
Perché parliamo di Scaling Lean Agile?
Ci sono due aspetti primari inerenti lo scalare delle tecniche agili a livello di Enterprise che è necessario considerare. In primo luogo lo scalare delle tecniche agili a livello di progetto per affrontare le sfide peculiari che i team di progetto devono affrontare. In secondo luogo è lo scalare la vostra strategia agile attraverso l'intero reparto IT, in modo appropriato. E' abbastanza semplice applicare Lean Agile su una manciata di progetti, ma può essere molto difficile far evolvere la cultura e l’intera struttura organizzativa per adottare appieno il modo agile di lavorare.
Lean e Agile (in particolar modo metodologie come Scrum e XP) hanno pienamente dimostrato il loro valore a livello di team. Cosa succede però nel momento in cui tentiamo di utilizzarle in contesti reali più complessi? Nelle reali organizzazioni che caratterizzano un’importante parte del panorama dell'IT in Italia? Muovendosi dal livello dei team verso il livello dell'organizzazione si incontrano una serie di problematiche più complesse e per un certo verso nuove. Ecco quindi l'importanza di conoscere valori e principi che sono alla base del tema del Lean Agile Scaling. Esistono parecchi modelli che negli ultimi anni si confrontano con le realtà delle organizzazioni.
In questo talk tratteremo a livello olistico questo tema e confronteremo alcuni di tali modelli di Scaling Lean Agile, quali: Scrum standard (Ken Schwaber, Mike Cohn, ...) – il modello di Larmann & Vodde - SAFe – Disciplined Agile Delivery di Scott Ambler – Path to Agility (Ken Schwaber). Inoltre verranno affrontate e discusse le esperienze personali effettuate in diverse società in fase di adozione o utilizzo su larga scala di Lean Agile.
The design patterns are recurring solutions to common problems in software design.
The design patterns in computer science were formally described for the first time in the book "Design Patterns: Elements of Reusable Object-Oriented Software", whose authors are often called the Gang of Four, GoF or Go4.
Scrumban a Methodology Fusion - Bettersoftware & Codemotion 2011Fabio Armani
Scrumban - A methodology Fusion
di Fabio Armani
In this talk I will describe the use, in a real context, of Kanban and Scrum agile methodologies combined with some practices of Extreme Programming. In the scenery of the agile methodologies, Scrum has certainly gained a position of clear dominance in terms of adoption and obtained successes.
This remarkable result is undoubtedly due to its peculiarities to know how to answer to the agile's values and principles in a revolutionary way, and of fostering a very pragmatic approach. Moreover, its characteristic of not being prescriptive with regard to technological aspects, allows a Scrum team to integrate eXtreme Programming practices to agile skills with a great success through their gradual introduction.
As also shown and described in my article "Lean Agile Adoption - an enterprise-war story" Scrum can scale to enterprise-level and can be used to guide the transformation process itself of a company into an agile one. Our real-world experience, based on principles of continuous experimentation and adaptation, soon led us to devise and use a form of merging Scrum with Lean methodologies, and in particular with Kanban.
The purpose of this short paper is therefore to share the direct practical experience of teams led by me, in order to help others in their process of adopting agile methodologies.
Scrum buts » but Scrum - which is worse?Fabio Armani
The term "scrumbut" could mean:
1. A person engaged in only partially Agile project management or development methodologies
2. One who engages in either semi-agile or quasi-waterfall development methodologies.
3. One who adopts only some tenents of the Scrum methodology.
4. In general, one who uses the word “but” when answering the question “Do you do Scrum?”
ScrumButs are reasons why teams can’t take full advantage of Scrum to solve the problems and realize the benefits.
But Scrum ...
- Yes, these are bad situations. But let's look at the flipside - let's look at 'But Scrum.'
- 'But Scrum' is when a person/team/organization flips off their 'thinking bit' and just burps up whatever Scrum tells them to do.
Agile soft skills suitecase - iad 2011Fabio Armani
An Agile soft-skill suite case: set of values, principles and practices for agile and lean coaching.
During this presentation will be described and discussed a large set of agile coaching skills.
This set of design patterns are related to Enterprise Patterns. In it you can find, J2EE, Presentation, Business & Integration Patterns (such as: ApplicaCon Controller, Data Transfer Object (DTO), Business Object (BO) & Data Access Object (DAO) among others ...)
Lean UX presented by Fabio Armani at the Bettersoftware 2012 Conference in september 2012.
Cosa è Lean UX?
User Centered Design x Lean Startup (Customer Development + approcci Lean & Agile).
Per la prima volta, i metodi User Centered Design hanno il dovuto slancio nel mondo degli affari.
Quando la comunità imprenditoriale comincia a misurare il valore dell'esperienza dell'utente, è il momento in cui essa investe su questo importante aspetto come un driver di valore, piuttosto che come un costo da minimizzare.
Quando la scienza del Lean Startup include lo "user centered design" come uno dei suoi attrattori principali, noi progettisti abbiamo una nuova opportunità di fare grandi cose.
In questo talk vorrei parlare dell'importanza del movimento Lean UX e di come questo possa condurre alla realizzazione di un team integrato che superi il semplice concetto di Product Owner, andando a definire un più vasto concetto di Product Ownership.
Oltre alla trattazione teorica dei concetti fondamentali, verranno forniti esempi tratti dalle mie molteplici esperienze di Coaching e Consulting in diversi contesti con aziende di medie e grandi dimensioni.
Agile requirements - alla ricerca del filo rosso (iad 2013)Fabio Armani
requisiti rappresentano, a mio avviso, il ‘fil rouge’ di tutto lo sviluppo software, sia che si tratti di applicazioni web o mobile, sia che siano coinvolti grandi sistemi Enterprise. Cerchiamo di capire perché.
Possiamo affermare che Lean Agile sta di fatto divenendo uno delle metodologie più adottate (se non il main-stream stesso) in ambito informatico e conseguentemente anche in ambiti connessi con l’informatica.
Nel mio talk (che spero possa trasformarsi in una tavola rotonda sul tema degli agile requirements e di ciò che ruota attorno ad essi) desidero presentare le varie possibilità di gestire i requisiti in modo agile e di seguire ad esempio il percorso delle “user story” (uno dei più efficaci metodi inventati in ambito agile o meglio nella metodologia eXtreme Programming per gestire i requisiti) in tutte le diverse fasi della loro ‘vita’ : a partire da ‘theme’, ‘epic’ e poi ‘story’ realizzata durante una determinata iterazione, fino al loro testing mediante Acceptance Test Driven Development e convalida business sul campo con gli utenti finali e i diversi stakeholder.
Bene… per poter effettuare questo affascinante itinerario cosa e chi viene coinvolto? Scopriremo assieme (ed argomenteremo le diverse soluzioni) che un’intera organizzazione Enterprise si dovrà plasmare per consentire ad una storia di divenire parte di una nuova funzionalità di successo.
Per avere realmente successo dovremmo scomodare molte metodologie tra le quali Lean , Agile, Lean StartUp, Lean UX e questo ci porterà nuovamente al punto di partenza. Perché vogliamo realizzare proprio questa storia? Quale era il requisito da cui siamo partiti. A quale Vision ci siamo ispirati?
Sono certo che il tema è affascinante e sarà interessante affrontarlo collettivamente, specialmente se trattato in ambito di round table.
In this talk we will discuss various topics related to how Lean Agile methodologies can scale to the Enterprise level, we will compare various scaling models, including, standard Scrum or hybrid Scrum methodologies (such as Scrum plus eXtreme Programming or Scrum + Kanban) have fully demonstrated their value to the team level.
But … What happens when we try to use these models in real more complex environments and contexts? Or, when we try to scale Lean Agile in real organizations that characterize an important amount of the landscape of IT in Italy? Moving from the level of the team to the level of the organization (program and portfolio) we will encounter a number of complex issues to some extent new. Hence the importance of knowing the values and principles that constitute the foundations of the concepts of Lean Agile Scaling. There are several models, born in recent years, who are confronted with the reality of the Enterprise. We will discuss this issue at an holistic level and we will compare some of these scaling models, such as: - the standard Scrum ( Ken Schwaber , Mike Cohn , ... ) - Larmann & Vodde - SAFe - DAD - Management 3.0 - CDE – plus other models and approaches taken from my consulting and managerial coaching Enterprise experiences.
User Stories Writing - Codemotion 2013Fabio Armani
Stefano Leli (Freelance) - Fabio Armani (OpenWare)
Scrivere user stories dovrebbe essere facile...almeno in teoria. In realtà nella pratica ci troviamo troppo spesso a combattere con storie vaghe o troppo tecniche, storie che non possono essere testate o addirittura che non portano alcun valore. In questo workshop cercheremo assieme di comprendere la differenza tra requisiti funzionali e User Story, tra User Story e Use Case, mediante dei case study.
Liftoff - how to launch Agile teams and projectsFabio Armani
Liftoff - come lanciare team e progetti Agili
di Fabio Armani
Come per mettere in orbita un razzo è importante effettuare molteplici operazioni preliminare che sono fondamentali per il successo della missione, così per lanciare un progetto o creare un team Agile è fondamentale una fase di 'Liftoff'.
Questo talk, che parte dall'interessantissimo lavoro di Diana Larsen e Ainsley Nies intende combinare le pratiche della fase di Agile Inception portate avanti dall'autore sin dal 2001 con i più moderni principi derivanti da Lean StartUp.
Building In Quality: The Beauty Of Behavior Driven Development (BDD)Synerzip
Behavior Driven Development (BDD) began as a means of helping developers practice Test Driven Development (TDD).
In this it was successful, but it quickly proved its value in many other ways. In this presentation, Larry Apke quotes heavily from the work of Uncle Bob Martin to make the case for TDD and then explains how developers can use BDD to take advantage of this excellent software development practice.
Larry also talks about his “Ten Reasons BDD Changes Everything” along with some easy ways to begin implementation of BDD in your software development organization immediately and what the corresponding future steps would be to take full advantage of this technique.
Bdd For Web Applications from Scandinavian Developer Conference 2010Thomas Lundström
Presentation about using BDD for web applications from Scandinavian Developer Conference, March 17 in Gothenburg, Sweden.
The presentation is designed to work with demonstrations, where I show how Cucumber is used to specify a Java Wicket web app.
A collaborative talk on lean agile transitions, challenges and experiences guided by a Lean Change approach. Tao as well as music and arts are possible keys of learning.
Secondo incontro del Roma-xpug nel quale si effettuerà una 'round-table' sui valori e i principi che sono alla base delle metodologie Lean e Agili. L'incontro prevede una breve presentazione di Fabio Armani a cui seguirà un panel aperto per scambiarsi opinioni e esperienze.
Second Meeting of the Rome-xpug in which we'll make a 'round-table' on the values and principles that are the basis of Lean and Agile methodologies. The meeting includes a short presentation by Fabio Armani, followed by an open panel to exchange views and experiences.
Perché parliamo di Scaling Lean Agile?
Ci sono due aspetti primari inerenti lo scalare delle tecniche agili a livello di Enterprise che è necessario considerare. In primo luogo lo scalare delle tecniche agili a livello di progetto per affrontare le sfide peculiari che i team di progetto devono affrontare. In secondo luogo è lo scalare la vostra strategia agile attraverso l'intero reparto IT, in modo appropriato. E' abbastanza semplice applicare Lean Agile su una manciata di progetti, ma può essere molto difficile far evolvere la cultura e l’intera struttura organizzativa per adottare appieno il modo agile di lavorare.
Lean e Agile (in particolar modo metodologie come Scrum e XP) hanno pienamente dimostrato il loro valore a livello di team. Cosa succede però nel momento in cui tentiamo di utilizzarle in contesti reali più complessi? Nelle reali organizzazioni che caratterizzano un’importante parte del panorama dell'IT in Italia? Muovendosi dal livello dei team verso il livello dell'organizzazione si incontrano una serie di problematiche più complesse e per un certo verso nuove. Ecco quindi l'importanza di conoscere valori e principi che sono alla base del tema del Lean Agile Scaling. Esistono parecchi modelli che negli ultimi anni si confrontano con le realtà delle organizzazioni.
In questo talk tratteremo a livello olistico questo tema e confronteremo alcuni di tali modelli di Scaling Lean Agile, quali: Scrum standard (Ken Schwaber, Mike Cohn, ...) – il modello di Larmann & Vodde - SAFe – Disciplined Agile Delivery di Scott Ambler – Path to Agility (Ken Schwaber). Inoltre verranno affrontate e discusse le esperienze personali effettuate in diverse società in fase di adozione o utilizzo su larga scala di Lean Agile.
The design patterns are recurring solutions to common problems in software design.
The design patterns in computer science were formally described for the first time in the book "Design Patterns: Elements of Reusable Object-Oriented Software", whose authors are often called the Gang of Four, GoF or Go4.
Scrumban a Methodology Fusion - Bettersoftware & Codemotion 2011Fabio Armani
Scrumban - A methodology Fusion
di Fabio Armani
In this talk I will describe the use, in a real context, of Kanban and Scrum agile methodologies combined with some practices of Extreme Programming. In the scenery of the agile methodologies, Scrum has certainly gained a position of clear dominance in terms of adoption and obtained successes.
This remarkable result is undoubtedly due to its peculiarities to know how to answer to the agile's values and principles in a revolutionary way, and of fostering a very pragmatic approach. Moreover, its characteristic of not being prescriptive with regard to technological aspects, allows a Scrum team to integrate eXtreme Programming practices to agile skills with a great success through their gradual introduction.
As also shown and described in my article "Lean Agile Adoption - an enterprise-war story" Scrum can scale to enterprise-level and can be used to guide the transformation process itself of a company into an agile one. Our real-world experience, based on principles of continuous experimentation and adaptation, soon led us to devise and use a form of merging Scrum with Lean methodologies, and in particular with Kanban.
The purpose of this short paper is therefore to share the direct practical experience of teams led by me, in order to help others in their process of adopting agile methodologies.
Scrum buts » but Scrum - which is worse?Fabio Armani
The term "scrumbut" could mean:
1. A person engaged in only partially Agile project management or development methodologies
2. One who engages in either semi-agile or quasi-waterfall development methodologies.
3. One who adopts only some tenents of the Scrum methodology.
4. In general, one who uses the word “but” when answering the question “Do you do Scrum?”
ScrumButs are reasons why teams can’t take full advantage of Scrum to solve the problems and realize the benefits.
But Scrum ...
- Yes, these are bad situations. But let's look at the flipside - let's look at 'But Scrum.'
- 'But Scrum' is when a person/team/organization flips off their 'thinking bit' and just burps up whatever Scrum tells them to do.
Agile soft skills suitecase - iad 2011Fabio Armani
An Agile soft-skill suite case: set of values, principles and practices for agile and lean coaching.
During this presentation will be described and discussed a large set of agile coaching skills.
This set of design patterns are related to Enterprise Patterns. In it you can find, J2EE, Presentation, Business & Integration Patterns (such as: ApplicaCon Controller, Data Transfer Object (DTO), Business Object (BO) & Data Access Object (DAO) among others ...)
Lean UX presented by Fabio Armani at the Bettersoftware 2012 Conference in september 2012.
Cosa è Lean UX?
User Centered Design x Lean Startup (Customer Development + approcci Lean & Agile).
Per la prima volta, i metodi User Centered Design hanno il dovuto slancio nel mondo degli affari.
Quando la comunità imprenditoriale comincia a misurare il valore dell'esperienza dell'utente, è il momento in cui essa investe su questo importante aspetto come un driver di valore, piuttosto che come un costo da minimizzare.
Quando la scienza del Lean Startup include lo "user centered design" come uno dei suoi attrattori principali, noi progettisti abbiamo una nuova opportunità di fare grandi cose.
In questo talk vorrei parlare dell'importanza del movimento Lean UX e di come questo possa condurre alla realizzazione di un team integrato che superi il semplice concetto di Product Owner, andando a definire un più vasto concetto di Product Ownership.
Oltre alla trattazione teorica dei concetti fondamentali, verranno forniti esempi tratti dalle mie molteplici esperienze di Coaching e Consulting in diversi contesti con aziende di medie e grandi dimensioni.
Agile requirements - alla ricerca del filo rosso (iad 2013)Fabio Armani
requisiti rappresentano, a mio avviso, il ‘fil rouge’ di tutto lo sviluppo software, sia che si tratti di applicazioni web o mobile, sia che siano coinvolti grandi sistemi Enterprise. Cerchiamo di capire perché.
Possiamo affermare che Lean Agile sta di fatto divenendo uno delle metodologie più adottate (se non il main-stream stesso) in ambito informatico e conseguentemente anche in ambiti connessi con l’informatica.
Nel mio talk (che spero possa trasformarsi in una tavola rotonda sul tema degli agile requirements e di ciò che ruota attorno ad essi) desidero presentare le varie possibilità di gestire i requisiti in modo agile e di seguire ad esempio il percorso delle “user story” (uno dei più efficaci metodi inventati in ambito agile o meglio nella metodologia eXtreme Programming per gestire i requisiti) in tutte le diverse fasi della loro ‘vita’ : a partire da ‘theme’, ‘epic’ e poi ‘story’ realizzata durante una determinata iterazione, fino al loro testing mediante Acceptance Test Driven Development e convalida business sul campo con gli utenti finali e i diversi stakeholder.
Bene… per poter effettuare questo affascinante itinerario cosa e chi viene coinvolto? Scopriremo assieme (ed argomenteremo le diverse soluzioni) che un’intera organizzazione Enterprise si dovrà plasmare per consentire ad una storia di divenire parte di una nuova funzionalità di successo.
Per avere realmente successo dovremmo scomodare molte metodologie tra le quali Lean , Agile, Lean StartUp, Lean UX e questo ci porterà nuovamente al punto di partenza. Perché vogliamo realizzare proprio questa storia? Quale era il requisito da cui siamo partiti. A quale Vision ci siamo ispirati?
Sono certo che il tema è affascinante e sarà interessante affrontarlo collettivamente, specialmente se trattato in ambito di round table.
In this talk we will discuss various topics related to how Lean Agile methodologies can scale to the Enterprise level, we will compare various scaling models, including, standard Scrum or hybrid Scrum methodologies (such as Scrum plus eXtreme Programming or Scrum + Kanban) have fully demonstrated their value to the team level.
But … What happens when we try to use these models in real more complex environments and contexts? Or, when we try to scale Lean Agile in real organizations that characterize an important amount of the landscape of IT in Italy? Moving from the level of the team to the level of the organization (program and portfolio) we will encounter a number of complex issues to some extent new. Hence the importance of knowing the values and principles that constitute the foundations of the concepts of Lean Agile Scaling. There are several models, born in recent years, who are confronted with the reality of the Enterprise. We will discuss this issue at an holistic level and we will compare some of these scaling models, such as: - the standard Scrum ( Ken Schwaber , Mike Cohn , ... ) - Larmann & Vodde - SAFe - DAD - Management 3.0 - CDE – plus other models and approaches taken from my consulting and managerial coaching Enterprise experiences.
User Stories Writing - Codemotion 2013Fabio Armani
Stefano Leli (Freelance) - Fabio Armani (OpenWare)
Scrivere user stories dovrebbe essere facile...almeno in teoria. In realtà nella pratica ci troviamo troppo spesso a combattere con storie vaghe o troppo tecniche, storie che non possono essere testate o addirittura che non portano alcun valore. In questo workshop cercheremo assieme di comprendere la differenza tra requisiti funzionali e User Story, tra User Story e Use Case, mediante dei case study.
Liftoff - how to launch Agile teams and projectsFabio Armani
Liftoff - come lanciare team e progetti Agili
di Fabio Armani
Come per mettere in orbita un razzo è importante effettuare molteplici operazioni preliminare che sono fondamentali per il successo della missione, così per lanciare un progetto o creare un team Agile è fondamentale una fase di 'Liftoff'.
Questo talk, che parte dall'interessantissimo lavoro di Diana Larsen e Ainsley Nies intende combinare le pratiche della fase di Agile Inception portate avanti dall'autore sin dal 2001 con i più moderni principi derivanti da Lean StartUp.
Building In Quality: The Beauty Of Behavior Driven Development (BDD)Synerzip
Behavior Driven Development (BDD) began as a means of helping developers practice Test Driven Development (TDD).
In this it was successful, but it quickly proved its value in many other ways. In this presentation, Larry Apke quotes heavily from the work of Uncle Bob Martin to make the case for TDD and then explains how developers can use BDD to take advantage of this excellent software development practice.
Larry also talks about his “Ten Reasons BDD Changes Everything” along with some easy ways to begin implementation of BDD in your software development organization immediately and what the corresponding future steps would be to take full advantage of this technique.
Bdd For Web Applications from Scandinavian Developer Conference 2010Thomas Lundström
Presentation about using BDD for web applications from Scandinavian Developer Conference, March 17 in Gothenburg, Sweden.
The presentation is designed to work with demonstrations, where I show how Cucumber is used to specify a Java Wicket web app.
An overview of Behavioral Driven Development (BDD). This deck covers the basics with an overview as well as some information on why to use Behavioral Driven Development.
German Testing Day 2015 - How behavior-driven development fuses developers an...Bastian Seehaus
What was our motivation at Deutsche Post Adress to use Behaviour Driven Development (BDD), how did we implement it and what benefits did we discover afterwards.
The prelude with the motivation was done in Prezi: https://prezi.com/yon4j9tec8bd/deutschepostadress_and_s-labgermantestingday-part1/
• What is Behavior Driven Development?
• What is its value?
• How does BDD differ from Test-Driven Development?
• What is the role of the customer/product owner in BDD?
• What about teams that have traditional manual testers?
• What about teams that have developers but not testers?
• What is a good BDD test?
• What should be tested manually?
An important activity for Agile scrum teams is to be able to write user stories, and setting appropriate acceptance critieria so that the story is considered ready for sprint planning.
In this session we will explore the semantics and theory behind Behavior Driven Development and how it can unify a team with its ubiquitous language. We will then go in a tour of TestBox for applying BDD/TDD into our CFML applications. Our tour will end with setting up a Jenkins Continous Integration Server and building scripts for automated testing and reporting.
User Experience in alien contexts, issues, challenges, opportunities with user scenarios, interviews, bias... Some SciFi masterpieces descriptions, philosophy and metaphors and dialogues by Fabio armani and Virginia Capoluongo ad FuffaDay 2022 (www.fuffaday.org)
Slides of the 'deep' talk presented @ Agile O'Day 2017 #agileoday on the topic of "Business Agility" - Business agility is the "ability of a business system to rapidly respond to change by adapting its initial stable configuration”
User Story Mapping - mini iad 2014 (Armani, Rodriguez)Fabio Armani
Riteniamo, che non vi sia dubbio sul fatto le User Story (introdotte da eXtreme Programming) e il Product Backlog (definito in Scrum) rappresentino due portentosi strumenti per la gestione agile dei requisiti e delle specifiche sia funzionali che non funzionali. Ma … hanno alcuni limiti.
Ad esempio, nonostante le notevoli caratteristiche del Product Backlog, la sua unidimensionalità non consente di creare un modello dei requisiti adatto a scalare e che consenta di gestire le dipendenze che possono essere presenti tra i vari elementi che lo costituiscono.
In questo workshop presenteremo e utilizzeremo un altro potente strumento che spesso utilizziamo durante gli User Story Workshop sia in fase d’Inception, sia all’inizio di ogni nuova release di un prodotto. Si chiama “User Story Mapping”.
Ci divertiremo con voi ad utilizzarlo in una simulazione che partendo dalla Vision di un prodotto ci consentirà di mappare i bisogni di un numero selezionato di utenti su un insieme di funzionalità organizzate in una mappa.
Inoltre vedremo come sia possibile utilizzare questo strumento per gestire le diverse release di un prodotto a partire dal così detto “Walking Skeleton” fino alle successive MMF (Mininum Markatable Feature)
Sapete cos’è il modello di Kano, FURPS+, o come il nome della capitale della Russia possa essere utilizzato per assegnare priorità alle diverse storie? Se vi abbiamo incuriosito, o se pensate che avere un nuovo strumento mentale da aggiungere alla vostra cassetta degli attrezzi potrebbe esservi utile, partecipate. Sarete certamente i benvenuti.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
5. Behavior driven development
• Behavior driven development (or BDD) is an agile software
development technique that encourages collaboration
between developers, QA and non-technical or business
participants in a software project.
– It was originally named in 2003 by Dan North as a response to Test
Driven Development, including Acceptance Test or Customer Test
Driven Development practices as found in Extreme Programming.
– It has evolved over the last few years
6. BDD definition
Behaviour-driven development is an “outside-in”
methodology. It starts at the outside by identifying business
outcomes, and then drills down into the feature set that will
achieve those outcomes.
Each feature is captured as a “story”, which defines the
scope of the feature along with its acceptance criteria.
7. BDD definition
• BDD is a second-generation, outside-in, pull-based, multiple-
stakeholder, multiple-scale, high-automation, agile
methodology.
• It describes a cycle of interactions with well-defined outputs,
resulting in the delivery of working, tested software that
matters.
8. BDD definition
• BDD focuses on obtaining a clear understanding of desired
software behavior
• It extends TDD by writing test cases in a natural language that
non-programmers can read, through discussion with
stakeholders.
14. How to use BDD in an iteration?
Before we do something, we need to agree upon what
we should deliver = before stories are accepted into
the iteration, we define the acceptance criteria for the
story
Based on the acceptance criteria and our estimations,
we include X number of stories to deliver in the
iteration
Important: we can’t commit to deliver something
unless we know what to deliver = be thorough in
splitting a story in acceptance criteria
15. BDD » Vocabulary
* Focus on vocabulary
- user stories
- acceptance criteria
Ubiquitous language!
16. BDD » Outside-in
• Outside-in
- onion
- use the words of the user, not the programmer
• Connection DDD - BDD: use ubiquitous
language when specifying the user words
• Unit-level tests are still needed
17. BDD » No silver bullet
This is a tool in your
toolbox.
Use as needed.
18. BDD » The Holy Grail
As said previously: The Holy Grail :)
This is what I find the most interesting
with the whole discussion about BDD.
• executable specifications
• focus on requirements
• everything builds upon user
stories/acceptance criteria
28. Characteristics of a good story
• The title should describe an activity
• The narrative should include a role, a feature and a benefit
• The scenario title should say what’s different
• The scenario should be described in terms of Givens, Events and
Outcomes
• The givens should define all of, and no more than, the required
context
• The event should describe the feature
• The story should be small enough to fit in an iteration
29. User story template
• In common use within the Dan North company there was
already a story template that looked like this:
As a [X]
I want [Y]
so that [Z]
where Y is some feature, Z is the benefit or value of the
feature, and X is the person (or role) who will benefit.
30. Acceptance Criteria
• Answer the question: How will know when we are done?
• High level criteria from the perspective of the user or
stakeholder
• There are Positive and Negative criteria
• Collaborate with tester to create good acceptance criteria
31. Given-when-than
Given some initial context (the givens),
when an event occurs,
then ensure some outcomes.
32. ATM user story
Title: Customer withdraws cash
As a customer,
I want to withdraw cash from an ATM,
so that I don’t have to wait in line at the bank
33. ATM user story
Title: Customer withdraws cash
BDD builds upon the conversation
As a customer, taking place in user stories and
acceptance criteria.
I want to withdraw cash from an ATM,
Context: comments for e.g.
so that I don’t have to wait in line at the bankarticles on a news site
34. Scenarios
• So how do we know when we have delivered this story?
• There are several scenarios to consider:
• the account may be in credit,
• the account may be overdrawn but within the overdraft limit,
• the account may be overdrawn beyond the overdraft limit.
• Of course, there will be other scenarios, such as if the
account is in credit but this withdrawal makes it overdrawn, or
if the dispenser has insufficient cash.
35. Scenario 1
• Using the given-when-then template, the first two scenarios might
look like this:
Scenario 1: Account is in credit
Given the account is in credit
And the card is valid
And the dispenser contains cash
When the customer requests cash
Then ensure the account is debited
And ensure cash is dispensed
And ensure the card is returned
36. Scenario 2
Scenario 2: Account is overdrawn past the overdraft limit
Acceptance criteria defines if the
Given the account is overdrawn software is done
And the card is valid
One story – Many acceptance criteria
When the customer requests cash
Then ensure a rejection message is displayed This are only 2 of the possible
And ensure cash is not dispensed acceptance criteria for the story
And ensure the card is returned
38. JBehave
• The fragments of the scenario – the givens, event, and
outcomes – are fine-grained enough to be represented
directly in code.
• JBehave defines an object model that enables us to directly
map the scenario fragments to Java classes.
39. JBehave
• You write a class representing each given:
public class AccountIsInCredit implements Given {
public void setup(World world) {
…
}
}
public class CardIsValid implements Given {
public void setup(World world) {
…
}
}
40. JBehave
• And one for the event:
public class CustomerRequestsCash implements Event {
public void occurIn(World world) {
…
}
}
• And so on for the outcomes.
41. JBehave
• JBehave then wires these all together and executes them.
• It creates a “world,” which is just somewhere to store your objects,
and passes it to each of the givens in turn so they can populate the
world with known state.
• JBehave then tells the event to “occur in” the world, which carries
out the actual behaviour of the scenario.
• Finally it passes control to any outcomes we have defined for the
story.
42. JBehave
• Having a class to represent each fragment enables us to reuse
fragments in other scenarios or stories.
• At first, the fragments are implemented using mocks to set an
account to be in credit or a card to be valid.
• These form the starting points for implementing behaviour.
• As you implement the application, the givens and outcomes are
changed to use the actual classes you have implemented, so that by
the time the scenario is completed, they have become proper end-
to-end functional tests.
43. BDD frameworks
• Dan North created the first ever BDD framework, JBehave,
followed by a story-level BDD framework for Ruby called
RBehave which was later integrated into the RSpec project.
• He also worked with David Chelimsky, Aslak Hellesøy and
others to develop RSpec and also to write "The RSpec Book:
Behaviour Driven Development with RSpec, Cucumber, and
Friends".
44. BDD frameworks
• The first story-based framework in RSpec was later replaced
by Cucumber mainly developed by Aslak Hellesøy.
• In 2008, Chris Matts, who was involved in the first discussions
around BDD, came up with the idea of Feature Injection,
allowing BDD to cover the analysis space and provide a full
treatment of the software lifecycle from vision through to code
and release.
45.
46. Agenda
What is BDD? _1
BDD Practices _2
Gherkin _3
Using Mocks _4
RSpec _5
47. Agenda
What is BDD? _1
BDD Practices _2
Gherkin _3
Using Mocks _4
RSpec _5
49. The practices of BDD
• Establishing the goals of different stakeholders required for a vision to be implemented
• Drawing out features which will achieve those goals using feature injection
• Involving stakeholders in the implementation process through outside-in software development
• Using examples to describe the behavior of the application, or of units of code
• Automating those examples to provide quick feedback and regression testing
• Using 'should' when describing the behavior of software to help clarify responsibility and allow the
software's functionality to be questioned
• Using 'ensure' when describing responsibilities of software to differentiate outcomes in the scope of
the code in question from side-effects of other elements of code.
• Using mocks to stand-in for collaborating modules of code which have not yet been written
51. Outside-in 1/3
• BDD is driven by business value; that is, the benefit to the
business which accrues once the application is in production.
• The only way in which this benefit can be realized is through
the user interface(s) to the application, usually (but not always)
a GUI.
52. Outside-in 2/3
• In the same way, each piece of code, starting with the UI, can
be considered a stakeholder of the other modules of code
which it uses.
• Each element of code provides some aspect of behavior which,
in collaboration with the other elements, provides the
application behavior.
53. Outside-in 3/3
• The first piece of production code that BDD developers implement is
the UI.
• Developers can then benefit from quick feedback as to whether the UI
looks and behaves appropriately.
• Through code, and using principles of good design and refactoring,
developers discover collaborators of the UI, and of every unit of code
thereafter.
• This helps them adhere to the principle of YAGNI, since each piece of
production code is required either by the business, or by another
piece of code already written.
54. Agenda
What is BDD? _1
BDD Practices _2
Gherkin _3
Using Mocks _4
RSpec _5
55. Agenda
What is BDD? _1
BDD Practices _2
Gherkin _3
Using Mocks _4
RSpec _5
57. Gherkin
• The requirements of a retail application might be, "Refunded
or exchanged items should be returned to stock."
• In BDD, a developer or QA engineer might clarify the
requirements by breaking this down into specific examples.
• The language of the following examples is called Gherkin and
is used in cucumber for ruby, lettuce for python, specflow for
dotnet and behat for php.
58. Scenario 1: Refunded items should be returned to stock
Given a customer previously bought a black sweater from me
and I currently have three black sweaters left in stock
when he returns the sweater for a refund
then I should have four black sweaters in stock
59. Scenario 2: Replaced items should be returned to stock
Given that a customer buys a blue garment
and I have two blue garments in stock
and three black garments in stock.
When he returns the garment for a replacement in black,
Then I should have three blue garments in stock
and two black garments in stock
60. Scenarios as exemplars
• Each scenario is an exemplar, designed to illustrate a specific
aspect of behavior of the application.
• An exemplar, in the sense developed by philosopher of science
Thomas Kuhn, is a well known usage of a scientific theory.
61. Scenarios as exemplars
• When discussing the scenarios, participants question whether the
outcomes described always result from those events occurring in the
given context.
• This can help to uncover further scenarios which clarify the
requirements.
• For instance, a domain expert noticing that refunded items are not
always returned to stock might reword the requirements as
"Refunded or replaced items should be returned to stock, unless
faulty."
62. Given, when … then
• This in turn helps participants to pin down the scope of
requirements, which leads to better estimates of how long those
requirements will take to implement.
• The words Given, When and Then are often used to help drive out
the scenarios, but are not mandated.
• These scenarios can also be automated, if an appropriate tool exists
to allow automation at the UI level.
• If no such tool exists then it may be possible to automate at the next
level in, i.e.: if an MVC design pattern has been used, the level of
the Controller.
63. Programmer-domain examples and behavior
• The same principles of examples, using contexts, events and
outcomes are used to drive development at the level of abstraction
of the programmer, as opposed to the business level.
• For instance, the following examples describe an aspect of behavior
of a list:
Example 1: New lists are empty
Given a new list
Then the list should be empty.
Example 2: Lists with things in them are not empty.
Given a new list
When we add an object
Then the list should not be empty.
64. TDD Frameworks
• Both these examples are required to describe the behavior of the
list.isEmpty()
method, and to derive the benefit of the method.
• These examples are usually automated using TDD frameworks.
• In BDD these examples are often encapsulated in a single method,
with the name of the method being a complete description of the
behavior.
• Both examples are required for the code to be valuable, and
encapsulating them in this way makes it easy to question, remove or
change the behavior.
65. JUnit
• For instance, using Java and JUnit 4, the above examples might
become:
public class ListTest {
@Test
public void shouldKnowWhetherItIsEmpty() {
List list1 = new List();
assertTrue(list1.isEmpty());
List list2 = new List();
list2.add(new Object());
assertFalse(list2.isEmpty());
}
}
66. Splitting
• Other practitioners, particularly in the Ruby community, prefer
to split these into two separate examples, based on separate
contexts for when the list is empty or has items in.
• This technique is based on Dave Astels' practice, "One
assertion per test".
67. • Sometimes the difference between the context, events and
outcomes is made more explicit. For instance:
public class WindowControlBehavior {
@Test
public void shouldCloseWindows() {
// Given
WindowControl control = new WindowControl("My AFrame");
AFrame frame = new AFrame();
// When
control.closeWindow();
// Then
ensureThat(!frame.isShowing());
}
}
68. • However the example is phrased, the effect describes the behavior
of the code in question.
• For instance, from the examples above one can derive:
• List should know when it is empty
• WindowControl should close windows
69. Regression tests
• The description is intended to be useful if the test fails, and to
provide documentation of the code's behavior.
• Once the examples have been written they are then run and the
code implemented to make them work in the same way as TDD.
• The examples then become part of the suite of regression tests.
70. Agenda
What is BDD? _1
BDD Practices _2
Gherkin _3
Using Mocks _4
RSpec _5
71. Agenda
What is BDD? _1
BDD Practices _2
Gherkin _3
Using Mocks _4
RSpec
73. Using Mocks
• BDD proponents claim that the use of "should" and
"ensureThat" in BDD examples encourages developers to
question whether the responsibilities they're assigning to their
classes are appropriate, or whether they can be delegated or
moved to another class entirely.
74. Using Mocks
• Practitioners use an object which is simpler than the
collaborating code, and provides the same interface but more
predictable behavior.
• This is injected into the code which needs it, and examples of
that code's behavior are written using this object instead of
the production version.
75. Using Mocks
• These objects can either be created by hand, or created using
a mocking framework such as Mockito, Moq, NMock, Rhino
Mocks, JMock or EasyMock.
• Questioning responsibilities in this way, and using mocks to
fulfill the required roles of collaborating classes, encourages
the use of Role-based Interfaces.
• It also helps to keep the classes small and loosely coupled.
76. Agenda
What is BDD? _1
BDD Practices _2
Gherkin _3
Using Mocks _4
RSpec _5
77. Agenda
What is BDD? _1
BDD Practices _2
Gherkin _3
Using Mocks _4
RSpec _5
79. What are User Stories?
• Acceptance Tests for RSpec
• Describe the functionality of your application in terms your
customer will understand
• Prove that the application does what it is supposed to.
80. A Simple Authentication System
• Write the feature
• Write verification code for the feature
• Specify the controller
• Implement the controller
• Specify the models
• Implement the models
• Verify the feature works as required
• Refactor
81. Write our Feature
• Write our feature and save it as features/allow-a-user-to-
login.feature
• Show it to the customer and have it approved
• Run rake features
82. Feature: Allow a User to log in
• As a user,
• I want to log in,
• So I can see my stuff
• Scenario: Successful login
• Given a user called Fabio with a password of secret
• And 15 items of stuff
• When I log in as Fabio with password secret
• Then I should see the Dashboard page
• And it should list my 15 items of stuff
• Scenario: Unsuccessful login
• Given a user called Fabio with a password of secret
• When I log in as Fabio with password potato
• Then I should see the Login page
• And I should see a message saying “an incorrect username or password was supplied”
83. rake features
• When we run ‘rake features’ it tells us that none of the
features are implemented
• So we start with the first step and implement that
84. Steps - proving a feature works
• Create Ruby files, registration-steps.rb and session-
steps.rb, in features/steps
• These contain the code verifying that the feature works as
expected
85. registration and session steps
Given /^a user called (.*) with a password of (.*)$/ do | username, password |
user = User.find_by_username username
user.destroy unless user.nil?
visits '/registrations/new'
fills_in 'User name', :with => username
fills_in 'Password', :with => password
fills_in 'Password Confirmation', :with => password
clicks_button 'Register'
end
When /^I log in as (.*) with password (.*)$/ do | username, password |
visits '/sessions/new'
fills_in 'User name', :with => username
fills_in 'Password', :with => password
clicks_button 'Log in'
end
Then /^I should see the Dashboard page$/ do
response.should redirect_to('/dashboard')
end
86. • ‘rake features’ fails
• So we need to start writing some code to make it pass
• But before we write any code, we need a specification
• So we run…
ruby script/generate rspec_controller Registrations
…to build a blank controller and specification
• Now to implement the RegistrationsController.
• Similar work needs to be done with the SessionsController for
actually logging in.
89. Conclusions
• Behaviour-driven development uses a story as the basic unit of
functionality, and therefore of delivery.
• The acceptance criteria are an intrinsic part of the story – in effect
they define the scope of its behaviour, and give us a shared
definition of “done”.
• They are also used as the basis for estimation when we come to do
our planning.
90. Conclusions
• Most importantly, the stories are the result of conversations between
the project stakeholders, business analysts, testers and developers.
• BDD is as much about the interactions between the various people
in the project as it is about the outputs of the development process.
91. Future of BDD
• The vision is to have a round-trip editor so that BAs and testers can
capture stories in a regular text editor that can generate stubs for the
behaviour classes, all in the language of the business domain.