android unit tesing at i/o rewind 2015
TRANSCRIPT
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
สมเกยรต ปยสงเนน
somkiat.cc
สยามานาญกจ
@somkiat
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Fast release !!
http://www.inc.com/guides/201104/how-to-keep-up-with-a-fast-growing-company.html
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
http://www.quickmeme.com/
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
“Never test the depth of the waterwith both feet“
- unknown -
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Android Testing
Unit test
Espresso
Android unit test
Monkey runner
UI Automator
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Android Testing
Unit test
Espresso
Android unit test
Monkey runner
UI Automator
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Unit Test
Unit test
Espresso
Android unit test
Monkey runner
UI Automator
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
“Android Studio 1.2+สนบสนบ Unit test แลวนะ“
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
เพม JUnit Library ใน build.gradle
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
มาเขยน Unit test กนเถอะ !!
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
เขาใจ requirement กอน
• คะแนนมากกวาเทากบ 80 ไดเกรด A• คะแนนมากกวาเทากบ 70 ไดเกรด B• คะแนนมากกวาเทากบ 60 ไดเกรด C• คะแนนมากกวาเทากบ 50 ไดเกรด D• คะแนนตากวา 50 ไดเกรด F
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
เรมตนดวย Example
Input Expected Result
80 A
70 B
60 C
50 D
40 F
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Espresso
Unit test
Espresso
Android unit test
Monkey runner
UI Automator
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
https://code.google.com/p/android-test-kit
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Espresso ?
• A funny little Android UI test APIs
• Created by Google
• Easy APIs
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Why Espresso ?
“Developer Developer Developer”
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Why Espresso ?
• Developer need …• easy• reliable• durable
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Why Espresso ?
• On all API Levels
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Easy :: API for testing
What would a device user do ?
• Find a view• Do something with it• Check some state
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Find view & Do
onView(withId(R.id.calculate_button)) .perform(click());
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Check something
onView(withText(“Your grade is A")) .check(matches(isDisplayed()));
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Install Android suport repositoryTools -> Android -> SDK Manager
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Create first test !!
Default in src/androidTest/java/<your package>• GradeConvertorEspressoTest.java
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Step 3 :: create test case
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
How to run test ?Run -> Edit configuration -> Add android tests
Runner = android.support.test.runner.AndroidJUnitRunner
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
How to run test ?On command line or terminal
$./gradlew connectedAndroidTest
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Step 1 :: Parameterised runner
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Step 4 :: create constrictor
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Step 5 :: create test case
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Android Testing
Unit test
Espresso
Android unit test
Monkey runner
UI Automator
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Monkey Testing ?
• Monkey button push testing
• Smart monkey testing
• Brilliant monkey testing
• Dumb monkey testing
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Monkey for Android
• Command line tool
• Random events
http://developer.android.com/tools/help/monkey.html
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
How to use ?
$adb shell monkey -p <your package> -v <# of events>
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
For my app
adb shell monkey -p workshop.gdg2015 -v 2000
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
“อยากเหน developer ไทยเขยน test ได“
- พตนไมไดกลาว -
SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
Useful resource
https://github.com/googlesamples/android-testing