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

Technology-Driven Development: Using Automation...

Technology-Driven Development: Using Automation and Development Techniques to Grow an Agile Culture

This is the report presented at Agile2014 on "Experience Report" track.
「Agile2014」の「Experience Report」トラックで発表したスライドです。

Agile2014
http://agile2014.agilealliance.org/
Track information
http://agile2014.sched.org/event/356d50c44035cafe4c27c33da03c2b80#

Automation and development techniques such as Continuous Integration/Continuous Delivery, TDD (Test-Driven Development) and BDD (Behavior-Driven Development) are useful for not only efficiency but also learning and collaboration.
I explained these practices as "Technology-Driven Development".

CI/CD・TDD・BDD といった自動化技術・技術プラクティスは、業務効率化だけではなく、メンバーの成長およびコラボレーションの促進にも効果があります。
これらのプラクティスを "Technology-Driven Development" と命名・整理した資料になります。

Hiroyuki Ito (TheHiro)

August 25, 2014
Tweet

More Decks by Hiroyuki Ito (TheHiro)

Other Decks in Technology

Transcript

  1. Technology-Driven Development: Using Automation and Development Techniques to Grow an

    Agile Culture Jul/29/2014 Hiroyuki Ito Development Process Optimization Department, Rakuten, Inc. http://www.rakuten.co.jp/
  2. 10 Agenda 1. Conditions and Challenges 3. TDD 2. CI/CD

    4. BDD 5. Results, Problems, Possibility and Future 6. Conclusions
  3. 11 1. Conditions and Challenges 3. TDD 2. CI/CD 4.

    BDD 5. Results, Problems, Possibility and Future 6. Conclusions
  4. 13 At the end of April 2013 Business Analyst Agile

    Coach (The Hiro) UI/UX Designers Developers HELP!
  5. 17 Conditions and Challenges None of the team members had

    any experience with agile There had been many manual operations
  6. 18 Conditions and Challenges None of the team members had

    any experience with agile There had been many manual operations Most of the team members were young and immature
  7. 23 1. Conditions and Challenges 3. TDD 2. CI/CD 4.

    BDD 5. Results, Problems, Possibility and Future 6. Conclusions
  8. 24 Challenges Low performance •  So many manual tasks Going

    in circles •  No clear vision and no requirements •  No timely progress information
  9. 25 Before CI/CD •  Install applications : 0.5 hour/change • 

    5-minite work for 6 persons •  Regression testing : 4 hours/change •  Need to retry if we find bugs… •  Change requests : 3 times/week 13.5 hours/week
  10. 29 The Implementation of CI/CD in our project Check-in build

    (hourly) My PC Build applications and run regression tests automatically
  11. 30 The Implementation of CI/CD in our project Check-in build

    (hourly) My PC Deliver to all team members automatically Build applications and run regression tests automatically
  12. 31 The Implementation of CI/CD in our project Check-in build

    (hourly) My PC We demonstrate latest application to the business analyst and managers in every daily scrum Deliver to all team members automatically Build applications and run regression tests automatically
  13. 32 Shared understanding by the working software Business Analyst UI/UX

    Designers Developers Get fast feedback Know about the progress
  14. 33 •  Install applications : 2 minutes/change •  Regression testing

    : 3 minutes/change •  Change requests : 3 times/week 15 minutes/week After CI/CD
  15. 34 •  Install applications : 2 minutes/change •  Regression testing

    : 3 minutes/change •  Change requests : 3 times/week 15 minutes/week After CI/CD 13 hours!
  16. 35 1. Conditions and Challenges 3. TDD 2. CI/CD 4.

    BDD 5. Results, Problems, Possibility and Future 6. Conclusions
  17. 36 Challenge Lack of skill and knowledge of Android • 

    the architecture of Android •  how to develop the Android application •  how to access the database on the device •  how to implement the UI
  18. 37 Before TDD Model Controller DB Dao Activity DB Dao

    DB Dao •  Could not test after we implemented all components (Debug Later Programming) •  It took five days to implement one activity set
  19. 40 Too difficult to use Android JUnit ! java.lang.RuntimeException: Stub!

    (゚Д゚) Why we need an emulator or a device? :-o
  20. 41 Too difficult to use Android JUnit ! java.lang.RuntimeException: Stub!

    (゚Д゚) Why we need an emulator or a device? :-o Please don’t start a heavy lifecycle of Android for each test case :-<
  21. 43 Solution to do TDD on Android •  Robolectric :

    Do all unit testing only on JVM •  http://robolectric.org/ •  Without any emulator or device!
  22. 44 Solution to do TDD on Android •  Robolectric :

    Do all unit testing only on JVM •  http://robolectric.org/ •  Without any emulator or device! •  Mockito : Can use the “Test Double” •  http://code.google.com/p/mockito/
  23. 45 @Before public void setUp() { Create database for Test;

    Insert test data; } @Test public void findXxx() { Assertions; } @After public void tearDown() { Drop Database for Test; } Image of Unit testing for Dao by using Robolectric 5 minutes -> 0.5 seconds to run each test case.
  24. 46 After TDD Model Controller DB Dao Activity DB Dao

    DB Dao •  Can test each component independently and separately •  It takes one day to implement one activity set (five times faster than at the start of the project)
  25. 47 1. Conditions and Challenges 3. TDD 2. CI/CD 4.

    BDD 5. Results, Problems, Possibility and Future 6. Conclusions
  26. 48 Challenges Avoid feature creep Detect bugs and regressions on

    use-cases Learn domain knowledge effectively
  27. 51 Example of feature creep Business Analyst UI/UX Designers Developers

    MORE! MORE! MORE! More features! DONE! NUUN L
  28. 52 Example of feature creep Business Analyst UI/UX Designers Developers

    MORE! MORE! MORE! More features! DONE! NUUN L Need discipline!
  29. 53 Calabash-android: improve the discipline •  The wrapper of Cucumber

    for Android •  As an executable specification •  As a communication tool Specifying collaboratively with business analyst, designers and developers •  By specification with examples
  30. 54 Example of BDD test scenario with Calabash-Android Feature: Input

    Scenario: Input today’s data Given I kick drumroll And drumroll show today When press next Then I should see ”xxx" screen When I press keys and calculator should show like this: | 2 | 2 | | 0 | 20 | | 0 | 200 | | * | 200 | | 3 | 3 | | = | 600 | Then take photo … •  Feature : name of all cases •  Scenario : name of each case These statements are RUNNABLE! We can write data with table style like this
  31. 55 We want to… Process of BDD Business Analyst UI/UX

    Designers Developers We want to…
  32. 56 Process of BDD Business Analyst UI/UX Designers Developers GIVEN

    … WHEN … THEN … Is that right? MORE! MORE! MORE! We want to…
  33. 57 Process of BDD Business Analyst UI/UX Designers Developers MORE!

    MORE! MORE! OK, go ahead! GIVEN … WHEN … THEN … Is that right?
  34. 59 Process of BDD Business Analyst UI/UX Designers Developers MORE!

    MORE! MORE! Sure! GIVEN … WHEN … THEN … Is it OK?
  35. 62 1. Conditions and Challenges 3. TDD 2. CI/CD 4.

    BDD 5. Results, Problems, Possibility and Future 6. Conclusions
  36. 65 [Example] Changing scope Business Analyst Agile Coach (The Hiro)

    UI/UX Designers Developers Please change scope! Please change scope! Please change scope!
  37. 66 [Example] Changing scope Business Analyst Agile Coach (The Hiro)

    UI/UX Designers Developers No! Do all we planned at first! Please change scope! Please change scope! Please change scope!
  38. 67 Business Analyst Agile Coach (The Hiro) UI/UX Designers Developers

    Belong to another (subsidiary) company It’s impossible to change the scope within our company… [Example] Changing scope
  39. 69 Technical excellence and working software are not the only

    way to improve projects. Point Anything is OK for improving your situation! (Anything goes/Vale tudo)
  40. 73 [Example] Growing a collaborative culture Developers Got some slack

    time! Too slow emulator… How about Genymotion?
  41. 74 [Example] Growing a collaborative culture Developers •  Over 10

    times faster •  Can run via Calabash-Android Got some slack time! Too slow emulator… How about Genymotion?
  42. 75 •  Install applications : 2 minutes/change •  Regression testing

    : 3 minutes/change •  Change requests : 3 times/week Can enhance “TDD” by numerical measurement [e.g.]
  43. 76 Business Analyst Executive Manager Agile Coach (The Hiro) UI/UX

    Designers Developers Use “TDD” as a measure for total optimization Over barriers/silos
  44. 78 1. Conditions and Challenges 3. TDD 2. CI/CD 4.

    BDD 5. Results, Problems, Possibility and Future 6. Conclusions
  45. 82 We found this practice •  through the project • 

    with passionate members •  with a lot of trial and error