SlideShare uma empresa Scribd logo
1 de 70
Baixar para ler offline
BDD for UX
Bridging the design/code chasm

with Behavior Driven Development
Jonathan Abbett · @jonabbett
UXPA Boston Conference · 19 May 2017
Why are we here?
Why are we here?
We want to design
useful things that
are possible to build
• Understanding users’ desires,
needs, motivations, and contexts
• Understanding business, technical,
and domain opportunities,
requirements, and constraints
• Using this knowledge as a
foundation for plans to create
products whose form, content, and
behavior is useful, usable, and
desirable, as well as
economically viable and
technically feasible.
—Cooper, About Face 3
How do I know something is useful?
How do I know something can be built?
Personas
Scenarios
Requirements
User

Stories
Storyboards
Prototypes
Wireframes
Sketches
Mental

Models
Journey

Maps
Goals
Personas
Scenarios
Requirements
User

Stories
Storyboards
Prototypes
Wireframes
Sketches
Mental

Models
Journey

Maps
Goals
1010101
☐ Decrease ambiguity
☐ Increase dev focus on users & goals
☐ Improve quality
☐ Guarantee UX for the long term
☐ Engage more of team in the design/dev process
• user stories as requirements
• user stories as the basis for acceptance testing
As an Account Holder

I want to withdraw cash from an ATM

So I can get money when the bank is closed
"I kept coming across the same confusion
and misunderstandings. Programmers
wanted to know where to start, what to
test and what not to test…”
"If we could develop a consistent
vocabulary for analysts, testers,
developers, and the business, then we
would be well on the way to eliminating
some of the ambiguity and
miscommunication that occur when
technical people talk to business people."
FEATURE: Account Holder withdraws cash
Scenario: Account has sufficient funds
Scenario: Account has insufficient funds
Scenario: Card has been disabled
Scenario: The ATM has insufficient funds
FEATURE: Account Holder withdraws cash
Scenario: Account has sufficient funds
Given the account balance is $100
And the card is valid
And the machine contains enough money
When the Account Holder requests $20
Then the ATM should dispense $20
And the account balance should be $80
And the card should be returned
GIVEN
describe an assumption

create the context
WHEN perform an action in the interface
THEN confirm the correct outcome
FEATURE: Account Holder withdraws cash
Scenario: Account has sufficient funds
Given the account balance is $100
And the card is valid
And the machine contains enough money
When the Account Holder requests $20
Then the ATM should dispense $20
And the account balance should be $80
And the card should be returned
ht: @kitt
IE Firefox
Chrome Safari
???
User

Stories
Acceptance
Tests
Behavioral
Scenarios
User

Stories
Acceptance
Tests
Research Goals Personas
Context
Scenarios
Requirements
Research Goals Personas
Context
Scenarios
Behavioral
Scenarios
User

Stories
Acceptance
Tests
• Persona tells us who

(really well, in fact)
• Activities in a scenario tell us what
• Context in the scenario

(from persona goals) tells us why
Pause Point
Any questions so far?
How to

BDD + UX
1. Start with a persona & context scenario
(and usually a wireframe or prototype)
2. Name your feature
3. Name your behavioral scenarios
4. When you write steps, maintain texture
Vivian is a chronic care patient
whose goal is to keep active in her
family, her work, and her community
while keeping her disease under
control.
It's easy for her to get discouraged
when permanent relief from her
symptoms is unlikely.
Once Vivian was diagnosed with Type 2 diabetes, she
and her endocrinologist set a goal in her care plan
to get her hemoglobin A1c under 7% after 3 months.
To do that, Vivian must carefully monitor her blood
glucose.
She logs into her care plan each week and marks
whether her goal is on-track or off-track.
Her endocrinologist gets notified and reaches out
with encouragement or advice as necessary.
Finally, Vivian can report that she's met her HbA1c
target. She visits her care plan, and marks her
HbA1c goal as achieved.
The system notifies her care team of the
achievement, and Vivian is delighted to see confetti
fill the background of her screen, after so many
weeks of hard work.
What’s the goal?
What’s its status?
What’s our target?
MANAGING A CARE GOAL
Requirements
• Set a due date on a goal
• Mark a goal as on track
• Mark a goal as off track
• Mark a goal as achieved
• Notify team members when a goal’s status changes
Feature: MANAGING A CARE GOAL
Requirements Scenarios
• Set a due date on a goal
• Mark a goal as on track
• Mark a goal as off track
• Mark a goal as achieved
• Notify team members when a goal’s status changes
GIVEN
describe an assumption

create the context
WHEN perform an action in the interface
THEN confirm the correct outcome
Feature: MANAGING A CARE GOAL
Scenario: Mark a goal as achieved
Given Vivian is a patient with a goal in her care plan
When she visits her care plan
Then she sees her goal displayed within it
When she chooses a goal status of 'achieved'
Then she now sees her goal has a status of 'achieved'
And the system notifies her care team of her success
And she sees celebratory confetti, which makes her smile
Given Vivian is a patient with a goal in her
care plan
Create a patient
Create a care plan for the patient
Create a goal within the care plan
Create another care team member to be notified
Log me in as the patient
When she visits her care plan
Navigate to the right screen in the interface
Then she sees her goal displayed within it
Confirm that the goal we set up in the ‘Given’
step appears on the screen before we continue
When she chooses a goal status of 'achieved'
Find the component for changing the goal’s status
Select the new status of “achieved”
Then she now sees her goal has a status of
'achieved'
Now that we’ve made the change, confirm we can
see that our change is reflected in the interface
☑ Decrease ambiguity
☑ Increase dev focus on users & goals
☐ Improve quality
☐ Guarantee UX for the long term
☐ Engage more of team in the design/dev process
Pause Point
Certainly someone has

a question now.
Make it real.
Python Behave pythonhosted.org/behave
Java JBehave jbehave.org
Ruby on Rails
Cucumber
Spinach
cukes.info
codegram.github.io/spinach
JavaScript Yadda github.com/acuminous/yadda
.NET Specflow specflow.org
PHP Behat behat.org
# Fill in a form field 

fill_in 'Name', with: 'Brady Doverspike'
# Find something by its CSS selector and click it 

find('.selector').click
# Check a checkbox/radio 

check('I agree')
# Click a button by its name 

click_button('Submit')
# Check if the page shows some text 

has_text?('Order prescription')
# Confirm the page doesn't show some text 

has_no_text?('Should not see this')
# Confirm the page has some link 

has_link?('Log Out')
# CAPYBARA SYNTAX
☑ Decrease ambiguity
☑ Increase dev focus on users & goals
☑ Improve quality
☑ Guarantee UX for the long term
☐ Engage more of team in the design/dev process
Pause Point
Anybody? Buehler?
Be inclusive.
• Who writes them?
• Where will they be stored?
• How will they be reviewed?
• What to review?
• What if things change?
Who writes them?
• Synthesis-by-receiver confirms understanding
• Draws out ambiguities sooner
• Starts transition from design to implementation
• Writing gives sense of ownership
• Collaboration vs. throwing over wall
Where will they be stored?
• Somewhere suited for collaboration?
• Close to where context scenarios were written?
• (Ultimately code base)
How will they be reviewed?
• Depends on your process.
• Right point for a broad stakeholder review?
• Sales, Accounts, Customer Support, etc.
• One-on-one iteration?
• Is your team co-located or remote?
What to review?
• Feature fully covers context scenario
• Each scenario focuses on single activity
• Givens define just enough context, not more
• Whens are not so implementation-specific
• Thens reflect persona’s goals & challenges
• Identify “non-functional” requirements
Feature: MANAGING A CARE GOAL
Scenario: Mark a goal as achieved
Given Vivian is a patient with a goal in her care plan
When she visits her care plan
Then she sees her goal displayed within it
When she chooses a goal status of 'achieved'
Then she now sees her goal has a status of 'achieved'
And the system notifies her care team of her success
And she sees celebratory confetti, which makes her smile
What if things change?
• You will learn as you build.
• You will learn as you test.
• You will learn after you release.
Pause Point
Last chance before end!
☑ Decrease ambiguity
☑ Increase dev focus on users & goals
☑ Improve quality
☑ Guarantee UX for the long term
☑ Engage more of team in the design/dev process
• Natural language descriptions of functionality
• Easy for non-developers to write, update
• Collaborate through existing tools
• BDD frameworks available in every language
• Cloud services for scalable cross-browser testing
• Stays in sync and validates UX over time
@jonabbett
jonathan@act.md
THANK YOU!
Photo Credits
• Grand Canyon: NNNN
• Chasm: NNNN
• Binary heart: https://www.neuronsnotincluded.com/products/linux-mouse-pad-for-geeks-nerds-and-
scientists
• Dan North: NNNN
• XP process: NNNN
• Automate all the things: NNNN
• Alan Cooper: NNNN
• “Vivian” Persona: https://www.flickr.com/photos/127713902@N07/34332189000

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 
Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...
Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...
Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...
 
User Story Workshop
User Story WorkshopUser Story Workshop
User Story Workshop
 
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
 
Agile for Infrastructure Projects
Agile for Infrastructure ProjectsAgile for Infrastructure Projects
Agile for Infrastructure Projects
 
User Story Mapping, Discover the whole story
User Story Mapping, Discover the whole storyUser Story Mapping, Discover the whole story
User Story Mapping, Discover the whole story
 
Agile for IT service delivery , governance and management
Agile for IT service delivery , governance and managementAgile for IT service delivery , governance and management
Agile for IT service delivery , governance and management
 
DevOps-CoE
DevOps-CoEDevOps-CoE
DevOps-CoE
 
DevOps 101
DevOps 101DevOps 101
DevOps 101
 
Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...
Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...
Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...
 
Effective user stories for your agile or Scrum team
Effective user stories for your agile or Scrum teamEffective user stories for your agile or Scrum team
Effective user stories for your agile or Scrum team
 
Deep Service Design
Deep Service DesignDeep Service Design
Deep Service Design
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Why Microservices
Why MicroservicesWhy Microservices
Why Microservices
 
Splitting User Stories
Splitting User StoriesSplitting User Stories
Splitting User Stories
 
How to write good user stories
How to write good user storiesHow to write good user stories
How to write good user stories
 
Async Messaging in CQRS: Part 1 - Masstransit + DDD Intro
Async Messaging in CQRS: Part 1 - Masstransit + DDD IntroAsync Messaging in CQRS: Part 1 - Masstransit + DDD Intro
Async Messaging in CQRS: Part 1 - Masstransit + DDD Intro
 
Agile and user story workshop Peter Saddington
Agile and user story workshop   Peter SaddingtonAgile and user story workshop   Peter Saddington
Agile and user story workshop Peter Saddington
 
User Stories Fundamentals
User Stories FundamentalsUser Stories Fundamentals
User Stories Fundamentals
 

Semelhante a Behavior-Driven Development for UX Teams

Newer way to notify customer about features
Newer way to notify customer about featuresNewer way to notify customer about features
Newer way to notify customer about features
Arunoda Susiripala
 
[UserZoom Webinar] The Online Shopping Experience: Benchmarking Four Ecommerc...
[UserZoom Webinar] The Online Shopping Experience: Benchmarking Four Ecommerc...[UserZoom Webinar] The Online Shopping Experience: Benchmarking Four Ecommerc...
[UserZoom Webinar] The Online Shopping Experience: Benchmarking Four Ecommerc...
UserZoom
 

Semelhante a Behavior-Driven Development for UX Teams (20)

Adressing nfr-with-agile-practices (english) - dec 16th
Adressing nfr-with-agile-practices (english) - dec 16thAdressing nfr-with-agile-practices (english) - dec 16th
Adressing nfr-with-agile-practices (english) - dec 16th
 
Creating Your Dashboard & Universal Measures with Userzoom – The Deep-Dive Ho...
Creating Your Dashboard & Universal Measures with Userzoom – The Deep-Dive Ho...Creating Your Dashboard & Universal Measures with Userzoom – The Deep-Dive Ho...
Creating Your Dashboard & Universal Measures with Userzoom – The Deep-Dive Ho...
 
UX Field Research Toolkit - A Workshop at Big Design - 2017
UX Field Research Toolkit - A Workshop at Big Design - 2017UX Field Research Toolkit - A Workshop at Big Design - 2017
UX Field Research Toolkit - A Workshop at Big Design - 2017
 
Newer way to notify customer about features
Newer way to notify customer about featuresNewer way to notify customer about features
Newer way to notify customer about features
 
PM Growth Playbook: Growth Framework + Product Core Loop
PM Growth Playbook: Growth Framework + Product Core LoopPM Growth Playbook: Growth Framework + Product Core Loop
PM Growth Playbook: Growth Framework + Product Core Loop
 
Intro agile for PO's
Intro agile for PO'sIntro agile for PO's
Intro agile for PO's
 
Tech Smart - How to improve member experience
Tech Smart - How to improve member experienceTech Smart - How to improve member experience
Tech Smart - How to improve member experience
 
Strategizing for Growth
Strategizing for GrowthStrategizing for Growth
Strategizing for Growth
 
Use Cases and Use in Agile world
Use Cases and Use in Agile worldUse Cases and Use in Agile world
Use Cases and Use in Agile world
 
Driving better requirements through DevOps
Driving better requirements through DevOpsDriving better requirements through DevOps
Driving better requirements through DevOps
 
How to use Scenarios
How to use ScenariosHow to use Scenarios
How to use Scenarios
 
Product talks andrei karol - kano&unit economy rules
Product talks   andrei karol - kano&unit economy rulesProduct talks   andrei karol - kano&unit economy rules
Product talks andrei karol - kano&unit economy rules
 
[UserZoom Webinar] The Online Shopping Experience: Benchmarking Four Ecommerc...
[UserZoom Webinar] The Online Shopping Experience: Benchmarking Four Ecommerc...[UserZoom Webinar] The Online Shopping Experience: Benchmarking Four Ecommerc...
[UserZoom Webinar] The Online Shopping Experience: Benchmarking Four Ecommerc...
 
Webinar: Understanding Product Strategy by fmr Flipkart Sr Mgr Products
Webinar: Understanding Product Strategy by fmr Flipkart Sr Mgr ProductsWebinar: Understanding Product Strategy by fmr Flipkart Sr Mgr Products
Webinar: Understanding Product Strategy by fmr Flipkart Sr Mgr Products
 
Zero to One Startup Masterclass Series - Week Two
Zero to One Startup Masterclass Series - Week TwoZero to One Startup Masterclass Series - Week Two
Zero to One Startup Masterclass Series - Week Two
 
ALE2012 - Pirate metrics AARRR
ALE2012 - Pirate metrics AARRRALE2012 - Pirate metrics AARRR
ALE2012 - Pirate metrics AARRR
 
thinkLA AdU: Digital Production 101
thinkLA AdU: Digital Production 101thinkLA AdU: Digital Production 101
thinkLA AdU: Digital Production 101
 
Writing User Stories (04/2012)
Writing User Stories (04/2012)Writing User Stories (04/2012)
Writing User Stories (04/2012)
 
UX Webinar: Always Be Testing
UX Webinar: Always Be TestingUX Webinar: Always Be Testing
UX Webinar: Always Be Testing
 
User Story Splitting.pptx
User Story Splitting.pptxUser Story Splitting.pptx
User Story Splitting.pptx
 

Último

怎样办理巴斯大学毕业证(Bath毕业证书)成绩单留信认证
怎样办理巴斯大学毕业证(Bath毕业证书)成绩单留信认证怎样办理巴斯大学毕业证(Bath毕业证书)成绩单留信认证
怎样办理巴斯大学毕业证(Bath毕业证书)成绩单留信认证
eeanqy
 
Q4-Trends-Networks-Module-3.pdfqquater days sheets123456789
Q4-Trends-Networks-Module-3.pdfqquater days sheets123456789Q4-Trends-Networks-Module-3.pdfqquater days sheets123456789
Q4-Trends-Networks-Module-3.pdfqquater days sheets123456789
CristineGraceAcuyan
 
Top profile Call Girls In fatehgarh [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In fatehgarh [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In fatehgarh [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In fatehgarh [ 7014168258 ] Call Me For Genuine Models...
gajnagarg
 
Top profile Call Girls In eluru [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In eluru [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In eluru [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In eluru [ 7014168258 ] Call Me For Genuine Models We ...
gajnagarg
 
Top profile Call Girls In Mau [ 7014168258 ] Call Me For Genuine Models We ar...
Top profile Call Girls In Mau [ 7014168258 ] Call Me For Genuine Models We ar...Top profile Call Girls In Mau [ 7014168258 ] Call Me For Genuine Models We ar...
Top profile Call Girls In Mau [ 7014168258 ] Call Me For Genuine Models We ar...
nirzagarg
 
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
wpkuukw
 
Top profile Call Girls In Sonipat [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Sonipat [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In Sonipat [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Sonipat [ 7014168258 ] Call Me For Genuine Models W...
nirzagarg
 
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman MuscatAbortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion pills in Kuwait Cytotec pills in Kuwait
 
怎样办理伦敦国王学院毕业证(KCL毕业证书)成绩单留信认证
怎样办理伦敦国王学院毕业证(KCL毕业证书)成绩单留信认证怎样办理伦敦国王学院毕业证(KCL毕业证书)成绩单留信认证
怎样办理伦敦国王学院毕业证(KCL毕业证书)成绩单留信认证
eeanqy
 

Último (20)

Just Call Vip call girls Fatehpur Escorts ☎️8617370543 Two shot with one girl...
Just Call Vip call girls Fatehpur Escorts ☎️8617370543 Two shot with one girl...Just Call Vip call girls Fatehpur Escorts ☎️8617370543 Two shot with one girl...
Just Call Vip call girls Fatehpur Escorts ☎️8617370543 Two shot with one girl...
 
LANDSCAPE ARCHITECTURE PORTFOLIO - MAREK MITACEK
LANDSCAPE ARCHITECTURE PORTFOLIO - MAREK MITACEKLANDSCAPE ARCHITECTURE PORTFOLIO - MAREK MITACEK
LANDSCAPE ARCHITECTURE PORTFOLIO - MAREK MITACEK
 
怎样办理巴斯大学毕业证(Bath毕业证书)成绩单留信认证
怎样办理巴斯大学毕业证(Bath毕业证书)成绩单留信认证怎样办理巴斯大学毕业证(Bath毕业证书)成绩单留信认证
怎样办理巴斯大学毕业证(Bath毕业证书)成绩单留信认证
 
TRose UXPA Experience Design Concord .pptx
TRose UXPA Experience Design Concord .pptxTRose UXPA Experience Design Concord .pptx
TRose UXPA Experience Design Concord .pptx
 
Q4-Trends-Networks-Module-3.pdfqquater days sheets123456789
Q4-Trends-Networks-Module-3.pdfqquater days sheets123456789Q4-Trends-Networks-Module-3.pdfqquater days sheets123456789
Q4-Trends-Networks-Module-3.pdfqquater days sheets123456789
 
Independent Escorts Goregaon WhatsApp +91-9930687706, Best Service
Independent Escorts Goregaon WhatsApp +91-9930687706, Best ServiceIndependent Escorts Goregaon WhatsApp +91-9930687706, Best Service
Independent Escorts Goregaon WhatsApp +91-9930687706, Best Service
 
Call Girls Jalaun Just Call 8617370543 Top Class Call Girl Service Available
Call Girls Jalaun Just Call 8617370543 Top Class Call Girl Service AvailableCall Girls Jalaun Just Call 8617370543 Top Class Call Girl Service Available
Call Girls Jalaun Just Call 8617370543 Top Class Call Girl Service Available
 
Top profile Call Girls In fatehgarh [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In fatehgarh [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In fatehgarh [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In fatehgarh [ 7014168258 ] Call Me For Genuine Models...
 
Q4-W4-SCIENCE-5 power point presentation
Q4-W4-SCIENCE-5 power point presentationQ4-W4-SCIENCE-5 power point presentation
Q4-W4-SCIENCE-5 power point presentation
 
Top profile Call Girls In eluru [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In eluru [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In eluru [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In eluru [ 7014168258 ] Call Me For Genuine Models We ...
 
Top profile Call Girls In Mau [ 7014168258 ] Call Me For Genuine Models We ar...
Top profile Call Girls In Mau [ 7014168258 ] Call Me For Genuine Models We ar...Top profile Call Girls In Mau [ 7014168258 ] Call Me For Genuine Models We ar...
Top profile Call Girls In Mau [ 7014168258 ] Call Me For Genuine Models We ar...
 
Furniture & Joinery Details_Designs.pptx
Furniture & Joinery Details_Designs.pptxFurniture & Joinery Details_Designs.pptx
Furniture & Joinery Details_Designs.pptx
 
How to Create a Productive Workspace Trends and Tips.pdf
How to Create a Productive Workspace Trends and Tips.pdfHow to Create a Productive Workspace Trends and Tips.pdf
How to Create a Productive Workspace Trends and Tips.pdf
 
Pondicherry Escorts Service Girl ^ 9332606886, WhatsApp Anytime Pondicherry
Pondicherry Escorts Service Girl ^ 9332606886, WhatsApp Anytime PondicherryPondicherry Escorts Service Girl ^ 9332606886, WhatsApp Anytime Pondicherry
Pondicherry Escorts Service Girl ^ 9332606886, WhatsApp Anytime Pondicherry
 
Gamestore case study UI UX by Amgad Ibrahim
Gamestore case study UI UX by Amgad IbrahimGamestore case study UI UX by Amgad Ibrahim
Gamestore case study UI UX by Amgad Ibrahim
 
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
 
The hottest UI and UX Design Trends 2024
The hottest UI and UX Design Trends 2024The hottest UI and UX Design Trends 2024
The hottest UI and UX Design Trends 2024
 
Top profile Call Girls In Sonipat [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Sonipat [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In Sonipat [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Sonipat [ 7014168258 ] Call Me For Genuine Models W...
 
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman MuscatAbortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
 
怎样办理伦敦国王学院毕业证(KCL毕业证书)成绩单留信认证
怎样办理伦敦国王学院毕业证(KCL毕业证书)成绩单留信认证怎样办理伦敦国王学院毕业证(KCL毕业证书)成绩单留信认证
怎样办理伦敦国王学院毕业证(KCL毕业证书)成绩单留信认证
 

Behavior-Driven Development for UX Teams

  • 1. BDD for UX Bridging the design/code chasm
 with Behavior Driven Development Jonathan Abbett · @jonabbett UXPA Boston Conference · 19 May 2017
  • 2. Why are we here?
  • 3.
  • 4. Why are we here?
  • 5. We want to design useful things that are possible to build • Understanding users’ desires, needs, motivations, and contexts • Understanding business, technical, and domain opportunities, requirements, and constraints • Using this knowledge as a foundation for plans to create products whose form, content, and behavior is useful, usable, and desirable, as well as economically viable and technically feasible. —Cooper, About Face 3
  • 6. How do I know something is useful? How do I know something can be built?
  • 7.
  • 10.
  • 11. ☐ Decrease ambiguity ☐ Increase dev focus on users & goals ☐ Improve quality ☐ Guarantee UX for the long term ☐ Engage more of team in the design/dev process
  • 12.
  • 13. • user stories as requirements • user stories as the basis for acceptance testing
  • 14. As an Account Holder
 I want to withdraw cash from an ATM
 So I can get money when the bank is closed
  • 15. "I kept coming across the same confusion and misunderstandings. Programmers wanted to know where to start, what to test and what not to test…”
  • 16. "If we could develop a consistent vocabulary for analysts, testers, developers, and the business, then we would be well on the way to eliminating some of the ambiguity and miscommunication that occur when technical people talk to business people."
  • 17. FEATURE: Account Holder withdraws cash Scenario: Account has sufficient funds Scenario: Account has insufficient funds Scenario: Card has been disabled Scenario: The ATM has insufficient funds
  • 18. FEATURE: Account Holder withdraws cash Scenario: Account has sufficient funds Given the account balance is $100 And the card is valid And the machine contains enough money When the Account Holder requests $20 Then the ATM should dispense $20 And the account balance should be $80 And the card should be returned
  • 19. GIVEN describe an assumption
 create the context WHEN perform an action in the interface THEN confirm the correct outcome
  • 20. FEATURE: Account Holder withdraws cash Scenario: Account has sufficient funds Given the account balance is $100 And the card is valid And the machine contains enough money When the Account Holder requests $20 Then the ATM should dispense $20 And the account balance should be $80 And the card should be returned
  • 22.
  • 28. • Persona tells us who
 (really well, in fact) • Activities in a scenario tell us what • Context in the scenario
 (from persona goals) tells us why
  • 31.
  • 32. 1. Start with a persona & context scenario (and usually a wireframe or prototype) 2. Name your feature 3. Name your behavioral scenarios 4. When you write steps, maintain texture
  • 33. Vivian is a chronic care patient whose goal is to keep active in her family, her work, and her community while keeping her disease under control. It's easy for her to get discouraged when permanent relief from her symptoms is unlikely.
  • 34. Once Vivian was diagnosed with Type 2 diabetes, she and her endocrinologist set a goal in her care plan to get her hemoglobin A1c under 7% after 3 months. To do that, Vivian must carefully monitor her blood glucose.
  • 35. She logs into her care plan each week and marks whether her goal is on-track or off-track. Her endocrinologist gets notified and reaches out with encouragement or advice as necessary.
  • 36. Finally, Vivian can report that she's met her HbA1c target. She visits her care plan, and marks her HbA1c goal as achieved. The system notifies her care team of the achievement, and Vivian is delighted to see confetti fill the background of her screen, after so many weeks of hard work.
  • 37. What’s the goal? What’s its status? What’s our target?
  • 38. MANAGING A CARE GOAL Requirements • Set a due date on a goal • Mark a goal as on track • Mark a goal as off track • Mark a goal as achieved • Notify team members when a goal’s status changes
  • 39. Feature: MANAGING A CARE GOAL Requirements Scenarios • Set a due date on a goal • Mark a goal as on track • Mark a goal as off track • Mark a goal as achieved • Notify team members when a goal’s status changes
  • 40. GIVEN describe an assumption
 create the context WHEN perform an action in the interface THEN confirm the correct outcome
  • 41. Feature: MANAGING A CARE GOAL Scenario: Mark a goal as achieved Given Vivian is a patient with a goal in her care plan When she visits her care plan Then she sees her goal displayed within it When she chooses a goal status of 'achieved' Then she now sees her goal has a status of 'achieved' And the system notifies her care team of her success And she sees celebratory confetti, which makes her smile
  • 42. Given Vivian is a patient with a goal in her care plan Create a patient Create a care plan for the patient Create a goal within the care plan Create another care team member to be notified Log me in as the patient
  • 43. When she visits her care plan Navigate to the right screen in the interface
  • 44. Then she sees her goal displayed within it Confirm that the goal we set up in the ‘Given’ step appears on the screen before we continue
  • 45. When she chooses a goal status of 'achieved' Find the component for changing the goal’s status Select the new status of “achieved”
  • 46. Then she now sees her goal has a status of 'achieved' Now that we’ve made the change, confirm we can see that our change is reflected in the interface
  • 47. ☑ Decrease ambiguity ☑ Increase dev focus on users & goals ☐ Improve quality ☐ Guarantee UX for the long term ☐ Engage more of team in the design/dev process
  • 48. Pause Point Certainly someone has
 a question now.
  • 50.
  • 51. Python Behave pythonhosted.org/behave Java JBehave jbehave.org Ruby on Rails Cucumber Spinach cukes.info codegram.github.io/spinach JavaScript Yadda github.com/acuminous/yadda .NET Specflow specflow.org PHP Behat behat.org
  • 52. # Fill in a form field 
 fill_in 'Name', with: 'Brady Doverspike' # Find something by its CSS selector and click it 
 find('.selector').click # Check a checkbox/radio 
 check('I agree') # Click a button by its name 
 click_button('Submit') # Check if the page shows some text 
 has_text?('Order prescription') # Confirm the page doesn't show some text 
 has_no_text?('Should not see this') # Confirm the page has some link 
 has_link?('Log Out') # CAPYBARA SYNTAX
  • 53.
  • 54. ☑ Decrease ambiguity ☑ Increase dev focus on users & goals ☑ Improve quality ☑ Guarantee UX for the long term ☐ Engage more of team in the design/dev process
  • 57. • Who writes them? • Where will they be stored? • How will they be reviewed? • What to review? • What if things change?
  • 58. Who writes them? • Synthesis-by-receiver confirms understanding • Draws out ambiguities sooner • Starts transition from design to implementation • Writing gives sense of ownership • Collaboration vs. throwing over wall
  • 59. Where will they be stored? • Somewhere suited for collaboration? • Close to where context scenarios were written? • (Ultimately code base)
  • 60. How will they be reviewed? • Depends on your process. • Right point for a broad stakeholder review? • Sales, Accounts, Customer Support, etc. • One-on-one iteration? • Is your team co-located or remote?
  • 61.
  • 62. What to review? • Feature fully covers context scenario • Each scenario focuses on single activity • Givens define just enough context, not more • Whens are not so implementation-specific • Thens reflect persona’s goals & challenges • Identify “non-functional” requirements
  • 63. Feature: MANAGING A CARE GOAL Scenario: Mark a goal as achieved Given Vivian is a patient with a goal in her care plan When she visits her care plan Then she sees her goal displayed within it When she chooses a goal status of 'achieved' Then she now sees her goal has a status of 'achieved' And the system notifies her care team of her success And she sees celebratory confetti, which makes her smile
  • 64. What if things change? • You will learn as you build. • You will learn as you test. • You will learn after you release.
  • 65. Pause Point Last chance before end!
  • 66. ☑ Decrease ambiguity ☑ Increase dev focus on users & goals ☑ Improve quality ☑ Guarantee UX for the long term ☑ Engage more of team in the design/dev process
  • 67. • Natural language descriptions of functionality • Easy for non-developers to write, update • Collaborate through existing tools • BDD frameworks available in every language • Cloud services for scalable cross-browser testing • Stays in sync and validates UX over time
  • 70. Photo Credits • Grand Canyon: NNNN • Chasm: NNNN • Binary heart: https://www.neuronsnotincluded.com/products/linux-mouse-pad-for-geeks-nerds-and- scientists • Dan North: NNNN • XP process: NNNN • Automate all the things: NNNN • Alan Cooper: NNNN • “Vivian” Persona: https://www.flickr.com/photos/127713902@N07/34332189000