Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc....

26
Copyright © 2012 Intridea Inc. All rights reserved. Confidential. Ted O’Meara: UXDD User Experience Driven Development Friday, March 9, 12

Transcript of Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc....

Page 1: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

Ted O’Meara: UXDD

User Experience Driven Development

Friday, March 9, 12

Page 2: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Intro

User Experience Driven Development

Build for your users, not your tests!

Friday, March 9, 12

Page 3: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / About Me

Ted O’Meara

Project Manager & User Experience [email protected]@tomeara

Friday, March 9, 12

Page 4: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Intridea

» www.intridea.com

• Founded in 2007 in Washington, DC• Clients from coast to coast. • Range from startups to Fortune 500 • 50+ Full-time employees• One of the fastest growing software companies in 2011 - Inc 500

Expertise in: UX/UI Design & Usability, Agile Development, Ruby on Rails, Social Media, Enterprise 2.0/Web 2.0, Mobile Applications, Collaboration Technologies, Corporate Communications, business strategy.

Friday, March 9, 12

Page 5: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Tests

Everyone <3’s Tests...

So do we!

Friday, March 9, 12

Page 6: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Tests

...but sometimes tests don’t work

Well, they do work; but they don’t bridge all of the gaps

Friday, March 9, 12

Page 7: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Tests

...and NO ONE reads this crapa. performance

i. timeii. space

b. operational environmenti. hardware platformii. software platformiii. external software interoperability

c. standards conformanced. general characteristics

i. reliabilityii. robustnessiii. accuracy of dataiv. correctnessv. securityvi. privacyvii.safetyviii.portabilityix. modifiability and extensibility

Friday, March 9, 12

Page 8: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Tests

...and NO ONE reads this crapa. performance

i. timeii. space

b. operational environmenti. hardware platformii. software platformiii. external software interoperability

c. standards conformanced. general characteristics

i. reliabilityii. robustnessiii. accuracy of dataiv. correctnessv. securityvi. privacyvii.safetyviii.portabilityix. modifiability and extensibility

This type of requirements analysis blows.

Friday, March 9, 12

Page 9: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Architecture

User Flows

• Help to build conceptual models of an application• Will help shine light on dead-ends• Allows more insight into how modeled data will be used

Friday, March 9, 12

Page 10: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Architecture / User Flows

Friday, March 9, 12

Page 11: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Architecture

User Stories

• Cucumber Features• Translates business logic• Creates instructions that a user should follow to obtain a goal• Creates expectations that a system should receive from a user

Friday, March 9, 12

Page 12: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Architecture / User Stories

Turn the user into a machine.

Think of it as the user and the system should maintain a connection with a specific protocol.

Break it down to elementary school math.

Friday, March 9, 12

Page 13: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Architecture / User Stories

Given that John has 30 piesWhen he eats 3 of them a dayAnd he eats them for 10 daysThen he should not be hungry

...but he might gain 50 lbs.

Friday, March 9, 12

Page 14: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Review

UI Breakpoints

Time to step away from the console and use Selenium, WATIR, or other browser automation to force yourself to view the UI

It does add extra time to your test suite, but totally worth it.

Friday, March 9, 12

Page 15: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Review / UI Breakpoints

WATIRrequire "rubygems"require "rspec"require "watir-webdriver"

describe "google.com" do let(:browser) { @browser ||= Watir::Browser.new :firefox }

before { browser.goto "http://google.com" } after { browser.close }

it "should search for watir" do browser.text_field(:name => "q").set "watir" browser.button.click browser.div(:id => "resultStats").wait_until_present browser.title.should == "watir - Google Search" endend

http://watir.com/frameworks/

Friday, March 9, 12

Page 16: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Review / UI Breakpoints

WATIRrequire "rubygems"require "rspec"require "watir-webdriver"

describe "google.com" do let(:browser) { @browser ||= Watir::Browser.new :firefox }

before { browser.goto "http://google.com" } after { browser.close }

it "should search for watir" do browser.text_field(:name => "q").set "watir" browser.button.click browser.div(:id => "resultStats").wait_until_present browser.title.should == "watir - Google Search" endend

http://watir.com/frameworks/

Friday, March 9, 12

Page 17: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Review

Onion Skinning

• Overlay a screenshot of the app, with a screenshot of the design• Show inconsistencies of a UI design that may have been overlooked while building a feature

Friday, March 9, 12

Page 18: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Review / Onion Skinning

GitHub Diffs

Pro• Really super, kickass feature

Con• Doesn’t really work for our use case• Would have to commit to test

https://github.com/cameronmcefee/Image-Diff-View-Modes/

Friday, March 9, 12

Page 19: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Review / Onion Skinning

Photoshop Layers

Pro• This is the only real way to check (right now)

Con• Photoshop is expensive• Taking screenshots and setting them up istime intensive

Friday, March 9, 12

Page 20: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Future

That’s cool. We’ve seen most of that stuff before. Is there any more to UXDD?

Friday, March 9, 12

Page 21: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Future

What’s Next?

• Visual Test Suite w/ WAITR or Selenium• Use Chunky PNG and/or Compatriot as a foundation to build on

Friday, March 9, 12

Page 22: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Future

Chunky PNG

• Inspired by a post from Jeff Kreeftmeijer showing how to create your own GitHub diffs

http://jeffkreeftmeijer.com/2011/comparing-images-and-creating-image-diffs/https://github.com/wvanbergen/chunky_png

Friday, March 9, 12

Page 23: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Future

Chunky PNGrequire 'chunky_png'

images = [  ChunkyPNG::Image.from_file('1.png'),  ChunkyPNG::Image.from_file('2.png')]

diff = []

images.first.height.times do |y|  images.first.row(y).each_with_index do |pixel, x|    diff << [x,y] unless pixel == images.last[x,y]  endend

puts "pixels (total): #{images.first.pixels.length}"puts "pixels changed: #{diff.length}"puts "pixels changed (%): #{(diff.length.to_f / images.first.pixels.length) * 100}%"

x, y = diff.map{ |xy| xy[0] }, diff.map{ |xy| xy[1] }

images.last.rect(x.min, y.min, x.max, y.max, ChunkyPNG::Color.rgb(0,255,0))images.last.save('diff.png')

http://jeffkreeftmeijer.com/2011/comparing-images-and-creating-image-diffs/

Friday, March 9, 12

Page 24: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

UXDD / Future

Compatriot

• Started by Carol Nichols • Uses Chunky PNG to do crossbrowser testing with Selenium• Could probably be extended to not only test crossbrowser, but also to run “UI Design Acceptance” tests.

https://github.com/clnclarinet/compatriot

Friday, March 9, 12

Page 25: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

Thank You

Gracias

ありがとう

Merci

Danke

谢谢

Friday, March 9, 12

Page 26: Ted O’Meara: UXDDfiles.meetup.com/1397868/Ted-MountainRuby2012.pdfCopyright © 2012 Intridea Inc. All rights reserved. Confidential. UXDD / Review / UI Breakpoints WATIR require

Copyright © 2012 Intridea Inc. All rights reserved. Confidential.

Ted O’Meara

@tomeara

[email protected]

www.intridea.com

Friday, March 9, 12