Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building the quality in

1a4e1f98f3aeef310273366c8c785207?s=47 Jakub Zalas
September 16, 2013

Building the quality in

Agile methodologies are very popular these days. Writing user stories with acceptance criteria, standup meetings and other agile ceremonies are nothing new to the most of us.

Going one step further and automating the acceptance criteria with tools like Behat, improves the outer quality of the software we write, by focusing the development on the business goals from the very beginning.

On the other hand, tools like PhpSpec aim to ensure the inner quality of code, supporting the developer at every step by almost suggesting next actions to take.

During the talk Jakub presented development practices for developers focused on building quality into the application with a test-first approach.

1a4e1f98f3aeef310273366c8c785207?s=128

Jakub Zalas

September 16, 2013
Tweet

Transcript

  1. Building the quality in by Jakub Zalas BrightonPHP, 16th Sep

    2013
  2. Who am I? o  I work @SensioLabsUK o  I tweet

    @jakub_zalas o  I code @jakzal
  3. QUALITY? What is

  4. How would you define software quality? @jakub_zalas

  5. for me software quality is defined by factor how easy

    is to introduce and manage change without breaking product @cakper
  6. clean, readable code. documentation where appropriate. complementary test suite. peer

    reviewed. @rich_81 oh and bug-free ;-)
  7. easier to maintain = less technical debt = less cost

    financially. @rich_81 plus, who likes working on crappy projects? ;-)
  8. Easy to maintain and extend. @sprain

  9. software quality is very subjective! It's not only about the

    code @hhamon but also availability, ease to use, ease to change, failures tolerance, performance, backups management...
  10. WTF per minute per user Jacek

  11. I would distinguish between internal and external quality. @CiaranMcNulty

  12. Quality is really two levers: external and internal quality. External

    quality is the quality perceived by the customer. [Internal quality is] Quality of internals of the system: how well it is designed, how good the internal tests are, and so on.
  13. the extent to what the software takes into account what

    matters most for the customer & the maintainability of the source code @_md External quality Internal quality
  14. software quality? That the software delivers real value and is

    built in a sustainable way. @IanDominey External quality Internal quality
  15. IGNORE THE QUALITY? What if we

  16. Ignoring the external quality

  17. Ignoring the internal quality

  18. Ignoring the internal quality  Care No care Time #

    of features
  19. IS OUR PROFESSIONAL RESPONSIBILITY Ensuring the internal quality

  20. CONTINUOUSLY REVIEW THE DESIGN To MAINTAIN the internal quality

  21. REFACTOR To MAINTAIN the internal quality

  22. TESTS There’s no refactoring without

  23. IS OUR PROFESSIONAL RESPONSIBILITY Writing tests

  24. DESIGN WELL To BUILD the internal quality

  25. DRIVE YOUR CODE WITH TESTS To BUILD the internal quality

  26. WE LEARN HOW TO KEEP THE DESIGN SIMPLE Writing tests

    FIRST
  27. IS OUR PROFESSIONAL RESPONSIBILITY Writing tests FIRST

  28. THE EXTERNAL QUALITY? What about

  29. Requirements Design Coding QA Support External quality Internal quality

  30. CREATE A COMMON UNDERSTANDING To build the external quality into

    your software
  31. Failing   step   Failing   test   Code  

    Refactor   Passing   step   External Internal
  32. INTERNAL AND EXTERNAL QUALITIES WON’T BE ALIGNED If you’re not

    building them in
  33. DEMO

  34. Feature: Language detection In order to avoid frustration As a

    Visitor I want my language to be automatically detected Scenario: British visitor Given I am in the UK When I visit the homepage Then I should see the website in English Scenario: French visitor Given I am in France When I visit the homepage Then I should see the website in French Scenario: Unrecognised language Given my language cannot be determined based on location When I visit the homepage Then I should see the website in English
  35. Language Detection Listener •  Sets a locale on the Request

    if it can be determined •  Does nothing if locale cannot be determined
  36. Geo Ip Dictionary •  It returns a locale found by

    ip •  It returns a default locale if country could not be determined •  It returns a default locale if country is not supported
  37. THE END

  38. Credits •  http://www.rgbstock.com/photo/mfXiaE4/Angry+Sumo •  http://www.nightmarefactory.com/cgi-bin/shopper?preadd=action&key=RU909885 •  http://en.wikipedia.org/wiki/Blind_men_and_an_elephant •  http://www.rgbstock.com/download/RWLinder/mC5Xudi.jpg