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" と命名・整理した資料になります。
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
Technology-Driven Development: Using Automation and Development Techniques to Grow an Agile Culture
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/
18. 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
29. 29
The Implementation of CI/CD in our project
Check-in build (hourly) My PC
Build applications
and run regression tests
automatically
30. 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
31. 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
32. 32
Shared understanding by the working software
Business
Analyst
UI/UX
Designers
Developers
Get fast feedback
Know about
the progress
35. 35
1. Conditions and Challenges
3. TDD
2. CI/CD
4. BDD
5. Results, Problems, Possibility and Future
6. Conclusions
36. 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
39. 39
Too difficult to use Android JUnit
java.lang.RuntimeException: Stub! (゚Д゚)
40. 40
Too difficult to use Android JUnit
java.lang.RuntimeException: Stub! (゚Д゚)
Why we need an emulator or a device? :-o
41. 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 :-<
43. 43
Solution to do TDD on Android
• Robolectric : Do all unit testing only on JVM
• http://robolectric.org/
• Without any emulator or device!
44. 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/
45. 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.
50. 50
Example of feature creep
Business
Analyst
UI/UX
Designers
Developers
MORE!
MORE!
MORE!
More features!
DONE!
51. 51
Example of feature creep
Business
Analyst
UI/UX
Designers
Developers
MORE!
MORE!
MORE!
More features!
DONE!
NUUN
52. 52
Example of feature creep
Business
Analyst
UI/UX
Designers
Developers
MORE!
MORE!
MORE!
More features!
DONE!
NUUN
53. 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
54. 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
69. 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)
72. 72
[Example] Growing a collaborative culture
Developers
Got some slack time!
Too slow
emulator…
73. 73
[Example] Growing a collaborative culture
Developers
Got some slack time!
Too slow
emulator…
How about
Genymotion?
74. 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?
Hello everyone.
In this session, I’d like to talk about “Technology-Driven Development”.
My name is Hiroyuki Ito.
Please call me “The Hiro”.
I’m from Japan.
I belong to “Test-Driven Development Group” in Rakuten.
I have 2 certifications of Scrum.
Now I’m working as an Agile Coach.
About Rakuten.
Rakuten is an e-commerce company from Japan.
We provide so many services like this.
Today, I’m here as a speaker.
Again, this session’s theme is “Technology-Driven Development”.
Of course, this name is derived from “Test-Driven Development”.
Anyway, what is “Technology-Driven Development”?
It means the new possibilities of Automation.
“Technology-Driven Development” stands for 3 purposes.
I used these approaches to achieve those purposes.
From the tool’s aspect.
I’ll talk the details later.
Here is this session’s agenda.
At first, I will talk about the conditions and the challenges of my project.
Next, I will explain the concrete approaches, CI/CD, TDD, and BDD.
After that, I will talk about the results, problems, possibilities, and the future of Technology-Driven Development.
At last I will conclude this report.
At first, conditions and the challenges of my project.
Our product was Android!
These are top 3 challenges.
These are top 3 challenges.
These are top 3 challenges.
These are top 3 challenges.
If you are in the same position.
In Japanese, YeaOh!
Therefore, I was highly-motivated!
So, I tried to improve the project with these three approaches.
Next, about CI/CD.
At first, we tried to get over these challenges.
We tried to measure the current status like this.
Next, TDD.
Our challenge is very simple : we did not have enough skill and knowledge of Android at that time.
Finally, we adopted the new test harness for Android.
Finally, we adopted the new test harness for Android.
Finally, we adopted the new test harness for Android.
So, I tried to improve the project with these three approaches.
Here is the example of BDD test scenarios.
Next, I’d like to evaluate “Technology-Driven Development”.
Of course, we achieved the target!
I’d like to share the example of the collaborative culture by Technology-Driven Development in our team.
Automation nurtures the team members.
I’d like to share the example of the collaborative culture by Technology-Driven Development in our team.
Automation nurtures the team members.
I’d like to share the example of the collaborative culture by Technology-Driven Development in our team.
Automation nurtures the team members.
I’d like to share the example of the collaborative culture by Technology-Driven Development in our team.
Automation nurtures the team members.
At last, conclude this session.
“Technology-Driven Development” has 3 purposes.
I used these approaches to achieve those purposes.