Bdd for Web Applications at TelecomCity DevCon 2010

1,231 views
1,139 views

Published on

Presentation for the conference TelecomCity DevCon September 23, 2010

Published in: Spiritual
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,231
On SlideShare
0
From Embeds
0
Number of Embeds
111
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Bdd for Web Applications at TelecomCity DevCon 2010

  1. 1. BDD for Web Applications Thomas Lundström, Softhouse @thomaslundstrom TelecomCity DevCon, Karlskrona September 23, 2010
  2. 2. Agenda • What is BDD? • BDD for web applications • BDD + Traditional QA? http://www.flickr.com/photos/puntodevista/84796578/
  3. 3. BDD • What is BDD?
  4. 4. * “BDD aims to bridge the gap bet ween the differing views of computer BDD systems held by Business users and Technologists. It is deeply rooted in the success of TDD and is influenced by ideas like Domain Driven Design. Its focus is on minimizing the hurdles bet ween specification, design, implementation and confirmation of the behaviour of a system.” Stakeholders http://www.flickr.com/photos/zunami/3709268689/
  5. 5. * Golden triangle bet ween analyst’s requirements, acceptance tests from BDD the test department and the “Done” criteria for a feature used by the developers * Team effort - Analyst - Tester Reqs - Developer/Architect Test Done http://www.flickr.com/photos/qthomasbower/3426242870/
  6. 6. User stories - example BDD builds upon the conversation taking place in user stories and acceptance criteria. Context: comments for e.g. articles on a news site As a public user I want to be able to view messages So that I can see what my friends think
  7. 7. Acc. criteria - example Acceptance criteria defines if the soft ware is done One story - Many acceptance criteria This is only 2 of the Given that there are 3 messages in the comment page possible acceptance criteria for the story When I view the comment page Then I should see 3 messages Given that the comment page is empty When I view the comment page Then I should see 0 messages
  8. 8. (If we work with iterations - the same thing applies if we work pull-based) BDD 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 How to use BDD in an iteration?
  9. 9. * Focus on vocabulary - user stories BDD - acceptance criteria Ubiquitous language! Vocabulary http://www.flickr.com/photos/altemark/337248947/
  10. 10. BDD * 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 Outside-in http://www.flickr.com/photos/redcherryhill/389325062/
  11. 11. This is a tool in your toolbox. Use as needed. BDD No silver bullet http://www.flickr.com/photos/williamhook/1506578592/
  12. 12. As said previously: The Holy Grail :) Why BDD? 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 http://www.flickr.com/photos/22280677@N07/3342653727/
  13. 13. Tools Ruby: Cucumber, RSpec Java: JBehave, cuke4duke .NET: NBehave, cuke4nuke @deurell, http://twitpic.com/iqp9c
  14. 14. Focus on process - not tech! Tools Process http://www.flickr.com/photos/nostri-imago/3137422976/
  15. 15. Tool architecture Yellow = the part of the BDD stack that you write Language Runner Glue layer SUT
  16. 16. BDD + Web apps Perfect marriage! All web apps use the same tech to communicate HTML (+ javascript) is the lingua franca for web development http://www.flickr.com/photos/rubyran2626/296913361/
  17. 17. cuke4duke + selenium WebDriver = one of e.g. HtmlUnit, Firefox, Chrome, IE etc. Gherkin Hooks = cuke4duke methods + the page object pattern cuke4duke Hooks Selenium + WebDriver HTML + js
  18. 18. Demo • Domain: Comment functionality • Adding • Viewing • (In the future, it’s possible to add moderation, tagging etc)
  19. 19. Current functionality Demo: current functionality • Viewing comments
  20. 20. New iteration Demo: add comments * new feature * new steps * implement steps * implement web app • New feature: adding comments
  21. 21. New iteration • New feature: paging
  22. 22. How to include this into CI environment the regular CI env? Depends on what you run Here: easy with maven2 In .NET land, e.g. msbuild or Ant/Java, let the build script launching the acceptance criteria run Results from the acc criteria run should be output to html so that we know how far we’ve gotten • Run acceptance criteria in the build
  23. 23. Test automation Is there a difference bet ween BDD and the test automation we’ve previously used? - It depends on how the test automation was done - with BDD, we’ve got test automation aligned with (that are) the requirements! Earlier: test automation prone to breakage. Why? - dev changes stuff (button names etc) that test automation uses (fixed by running everything in the build; everyone is in charge of the build, instead of only the test dept) • BDD vs. Test automation? - Requirements churn (we can’t guard from that) - Unstable tools (no guard here either)
  24. 24. Test automation - imperative/declarative http://www.benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories/
  25. 25. Test automation - imperative/declarative BREAK http://www.benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories/
  26. 26. Test in a BDD process Shift in viewpoint: previously, we We use testers to transform high-level stories to “do this, do that” specs, which preferably are automated. It’s their speciality to find these thngs! • “You can not inspect quality into the product; it’s already there” - W. Edwards Deming
  27. 27. Test in a BDD process Testers can go from performing manual script labour to do more useful stuff - exploratory testing - helping devs & analysts analyse the problem - Performance testing The competence of the testers i.e. translation of abstract Reqs -> hands-on runnables is used when defining acceptance criteria http://en.wikipedia.org/wiki/File:Systems_Engineering_Process_II.gif
  28. 28. Thanks! • Thomas Lundström, Softhouse • thomas.lundstrom@softhouse.se • Twitter: @thomaslundstrom • http://blog.thomaslundstrom.com

×