Android
          Developer
          Testing

               Developers Summit 2012
12   2   17
                                                         /
                              @snsk
                 Android             / NPO     ASTER
                                                        WG /
                            ACCESS



     
                                 @nowsprinting
              




                                      Developers Summit 2012
12   2   17
 Model
                               @mike_neck
                 Android                                               Java
                  Javascript   Groovy                            SIer




                                                   SQLite
                            @ussy00
                 Android




     
                                        Developers Summit 2012
12   2   17
Android                            (ATEC)

               Android
                  
                  


              



                          Developers Summit 2012
12   2   17
 (            )    1          MTG
           Android
           ABC              /JaSST LT
           @IT              Android
                            400
               2012/2                423
                               Developers Summit 2012
12   2   17

              
               Android
               Android
                    SDK

          
              
                                  Android
               Android
                           Developers Summit 2012
12   2     Testter
         17

               Sponsored by


           @IT


           CI


                          Developers Summit 2012
12   2   17
•
          o https://sites.google.com/site/
              androidtestclub/members
     •                        →Testter
          o https://sites.google.com/site/
              androidtestclub/testter
     •
          o https://sites.google.com/site/
              androidtestclub/business-card
                          Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
v2.0.J01
                         Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
3




         Drive    JUDGE                    Report

              3



                  Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
 Robotium
                  View    GUI


               monkeyrunner
               




                            Developers Summit 2012
12   2   17
11        /



                   Developers Summit 2012
12   2   17
View                               1/3

               ActivityInstrumentationTestCase2
                 Android SDK     android.test           JUnit3
                

               Robotium
                 ↑        Activity

               scirocco
                 ↑

                                Developers Summit 2012
12   2   17
View                              2/3

               NativeDriver
                 By Google. 2011/6                     ASL 2.0
                                JUnit
                
                 apk server-standalone.jar
                 WebDriver, NativeDriver for iOS




                               Developers Summit 2012
12   2   17
View                              3/3

               FoneMonkey
                By Gorilla Logic. 2011/11               GPL v3
                                                 GUI
                         recording/playback
                JUnit            export                TestRunner
                FlaxMonkey, FoneMonkey for iOS




                               Developers Summit 2012
12   2   17
 monkeyrunner
                Android SDK
                                Python
               
                              monkeyrecorder/playback.py
               




                               Developers Summit 2012
12   2   17
 Monkey
                 Android SDK
                

               SIKULI
                
                 PC            Android




                                Developers Summit 2012
12   2   17
 Android Testing Framework
                 AndroidTestCase ActivityUnitTestCase
                 @IT        2           3

               AndroidMock
                 EastMock Android
                 @IT        5       3

               Robolectric
                 JavaVM     Android
                              Developers Summit 2012
12   2   17
GUI




                Developers Summit 2012
12   2   17

                       Android
                  

              
                  
                  


                      Developers Summit 2012
12   2   17

                   Judge
                  

               UI
                                                        UI
                   ActionBar      …


                                Developers Summit 2012
12   2   17




              
                  




                      Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
Android

              •   Activity



              •

                                                          (   C


                             )
                                 Developers Summit 2012
12   2   17
Android Activity
              onCreate(Bundle bundle) {
                //
                  //
                  //
                  //              (         )
                  //
              }
                          Developers Summit 2012
12   2   17
Android Activity
              onCreate(Bundle bundle) {
                //
                  //                               →C
                  //                               →M
                  //              (         )      →V
                  //                               →V/C
              }
                          Developers Summit 2012
12   2   17
Android
         OnClickListener
              onClick(View view) {
                //
                  //
                  //               (         )
                  //
              }

                           Developers Summit 2012
12   2   17
Android
         OnClickListener
              onClick(View view) {
                //                                  →C
                  //                                →M
                  //               (         ) →V
                  //                                →V/C
              }

                           Developers Summit 2012
12   2   17
Activity

                    Model

              View
                    Model

                      Developers Summit 2012
12   2   17
Activity



                http://goo.gl/YiH1w



                    Developers Summit 2012
12   2   17
Model
         -
              •

                  o


                  o



              •

                  o


                  o




                      Developers Summit 2012
12   2   17
Android

              •   Database (SQLite3)
              •               (SNS                   )
              •

                  o



                  o



                  o
                      GPS
                            Developers Summit 2012
12   2   17
•   Activity
                  Activity
              •                                       Activity




                             Developers Summit 2012
12   2   17
•   Model           View
              •   Model   View
              •                                      Model   View




                            Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
•

                  o




              •

                  o   ActivityInsterumentationTestCase2<T
                      extends Activity> setUp


                               Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
•   ActivityInstrumentationTestCase2<T extends
                  Activity> getActivity            Activity
                  onCreate onResume
              •           Activity             Database


              •           Activity                      View




                               Developers Summit 2012
12   2   17
•   ActivityInstrumentationTestCase2<T extends
                  Activity> getActivity            Activity
                  onCreate onResume
              •           Activity             Database


              •           Activity                      View


                   →

                               Developers Summit 2012
12   2   17
                  onCreate




                  Developers Summit 2012
12   2   17
Thread




                  Developers Summit 2012
12   2   17
Activity        Thread
         onCreate




                    Developers Summit 2012
12   2   17
Activity

                 Activity
              Model




                             Developers Summit 2012
12   2   17
Model
         Activity



                    Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
Model




              View




                     Developers Summit 2012
12   2   17
ActivityInstrumentation
         TestCase2<T extends Activity>
              •                                    View
              •   Model    View
                   Unit Test
              •   Model
                  Thread   Activity



                               Developers Summit 2012
12   2   17
ActivityInstrumentation
         TestCase2<T extends Activity>
              •                                    View
              •   Model    View
                   Unit Test
              •   Model
                  Thread   Activity



                               Developers Summit 2012
12   2   17
•   Model
                      Thread      Activity



              •
                  o
                                       ×                =   (
                                       )

                               Developers Summit 2012
12   2   17
Android




              Activity



                         Developers Summit 2012
12   2   17
SQLite




                       Developers Summit 2012
12   2   17
 SQL
     @Override
     protected void setUp() throws Exception {
         super.setUp();

          helper = new AllowanceDatabase(new RenamingDelegatingContext(getContext(), "test_"));

          SQLiteDatabase db = helper.getWritableDatabase();
          try {
              db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE,   AMOUNT)   VALUES(1320000000,   1000);");
              db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE,   AMOUNT)   VALUES(1330000000,   5000);");
              db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE,   AMOUNT)   VALUES(1340000000,   10000);");
              db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE,   AMOUNT)   VALUES(1350000000,   2000);");
              db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE,   AMOUNT)   VALUES(1360000000,   3000);");
          } finally {
              db.close();
          }
     }




                                           Developers Summit 2012
12   2   17
Fixture Library

              
                     DBUnit (Java)
                     ActiveRecord (Ruby)
                     Test::Fixture::DBI (Perl)
                     fixture (Python)
                     Factory Girl (Ruby)
                     ???? (Android)


                                  Developers Summit 2012
12   2   17
Fixture for Android

               SQLite Fixture Library
                   https://github.com/ussy/sqlite-fixture


              
                              DB
                   RenamingDelegatingContext


                                Developers Summit 2012
12   2   17

     @Override
     protected void setUp() throws Exception {
         super.setUp();

              importData(FileType.Yaml, "AllowanceLogDataTest");
     }




                              Developers Summit 2012
12   2   17
---
     _id: 1
     LOG_DATE: 1320000000
     AMOUNT: 1000
     ---
     _id: 2
     LOG_DATE: 1330000000
     AMOUNT: 5000
     ---
     _id: 3
     LOG_DATE: 1340000000
     AMOUNT: 10000    Developers Summit 2012
12   ---
     2 17
Fixture Library

              
              
              




                  Developers Summit 2012
12   2   17
   API


              




                        Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17

                  

              




                      Developers Summit 2012
12   2   17
DB




              Developers Summit 2012
12   2   17
                     SQLiteOpenHelper

              https://github.com/ussy/android-dbtest




                  Developers Summit 2012
12   2   17
private Context context;

     protected void setUp() {
         context = new
     RenamingDelegatingContext(getContext(), "test_");

              helper = new SQLiteOpenHelperV1(context);
     }

     public void testMigration() {
         helper = SQLiteOpenHelperFactory.get(context);
         // test code
     }


                              Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17
CI

              
              




                  Developers Summit 2012
12   2   17
Jenkins




               Developers Summit 2012
12   2   17
Android Emulator Plugin

              
              
               APK
               Android
                  
                   OS

                          Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17

              


               Jenkins
              


                          Developers Summit 2012
12   2   17
3

           Level1 Automation
               Record Playback
               Liner Script
           Level2 Automation
               Data-driven
               Functional Decomposition
           Level3 Automation
               Keyword Driven
               Model-based

                                  TEST AUTOMATIONBODY OF KNOWLEDGE(TABOK) GUIDEBOOK Version 1.1

                               Developers Summit 2012
12   2   17
3


                     1.



                     2.



                     3.                    *1




                    *1                 3


              Developers Summit 2012
12   2   17
Developers Summit 2012
12   2   17

実践Android Developer Testing

  • 1.
    Android Developer Testing Developers Summit 2012 12 2 17
  • 2.
    / @snsk  Android / NPO ASTER WG / ACCESS  @nowsprinting  Developers Summit 2012 12 2 17
  • 3.
     Model @mike_neck  Android Java Javascript Groovy SIer  SQLite @ussy00  Android  Developers Summit 2012 12 2 17
  • 4.
    Android (ATEC)  Android    Developers Summit 2012 12 2 17
  • 5.
     ( ) 1 MTG  Android  ABC /JaSST LT  @IT Android  400  2012/2 423 Developers Summit 2012 12 2 17
  • 6.
      Android  Android  SDK    Android  Android Developers Summit 2012 12 2  Testter 17
  • 7.
     Sponsored by  @IT  CI Developers Summit 2012 12 2 17
  • 8.
    o https://sites.google.com/site/ androidtestclub/members • →Testter o https://sites.google.com/site/ androidtestclub/testter • o https://sites.google.com/site/ androidtestclub/business-card Developers Summit 2012 12 2 17
  • 9.
  • 10.
    v2.0.J01 Developers Summit 2012 12 2 17
  • 11.
  • 12.
    3 Drive JUDGE Report 3 Developers Summit 2012 12 2 17
  • 13.
  • 14.
     Robotium  View GUI  monkeyrunner  Developers Summit 2012 12 2 17
  • 15.
    11 / Developers Summit 2012 12 2 17
  • 16.
    View 1/3  ActivityInstrumentationTestCase2  Android SDK android.test JUnit3   Robotium  ↑ Activity  scirocco  ↑ Developers Summit 2012 12 2 17
  • 17.
    View 2/3  NativeDriver  By Google. 2011/6 ASL 2.0  JUnit   apk server-standalone.jar  WebDriver, NativeDriver for iOS Developers Summit 2012 12 2 17
  • 18.
    View 3/3  FoneMonkey  By Gorilla Logic. 2011/11 GPL v3  GUI  recording/playback  JUnit export TestRunner  FlaxMonkey, FoneMonkey for iOS Developers Summit 2012 12 2 17
  • 19.
     monkeyrunner  Android SDK  Python   monkeyrecorder/playback.py  Developers Summit 2012 12 2 17
  • 20.
     Monkey  Android SDK   SIKULI   PC Android Developers Summit 2012 12 2 17
  • 21.
     Android TestingFramework  AndroidTestCase ActivityUnitTestCase  @IT 2 3  AndroidMock  EastMock Android  @IT 5 3  Robolectric  JavaVM Android Developers Summit 2012 12 2 17
  • 22.
    GUI Developers Summit 2012 12 2 17
  • 23.
     Android     Developers Summit 2012 12 2 17
  • 24.
     Judge   UI  UI  ActionBar … Developers Summit 2012 12 2 17
  • 25.
      Developers Summit 2012 12 2 17
  • 26.
  • 27.
    Android • Activity • ( C ) Developers Summit 2012 12 2 17
  • 28.
    Android Activity onCreate(Bundle bundle) { // // // // ( ) // } Developers Summit 2012 12 2 17
  • 29.
    Android Activity onCreate(Bundle bundle) { // // →C // →M // ( ) →V // →V/C } Developers Summit 2012 12 2 17
  • 30.
    Android OnClickListener onClick(View view) { // // // ( ) // } Developers Summit 2012 12 2 17
  • 31.
    Android OnClickListener onClick(View view) { // →C // →M // ( ) →V // →V/C } Developers Summit 2012 12 2 17
  • 32.
    Activity Model View Model Developers Summit 2012 12 2 17
  • 33.
    Activity http://goo.gl/YiH1w Developers Summit 2012 12 2 17
  • 34.
    Model - • o o • o o Developers Summit 2012 12 2 17
  • 35.
    Android • Database (SQLite3) • (SNS ) • o o o GPS Developers Summit 2012 12 2 17
  • 36.
    Activity Activity • Activity Developers Summit 2012 12 2 17
  • 37.
    Model View • Model View • Model View Developers Summit 2012 12 2 17
  • 38.
  • 39.
  • 40.
  • 41.
    o • o ActivityInsterumentationTestCase2<T extends Activity> setUp Developers Summit 2012 12 2 17
  • 42.
  • 43.
  • 44.
    ActivityInstrumentationTestCase2<T extends Activity> getActivity Activity onCreate onResume • Activity Database • Activity View Developers Summit 2012 12 2 17
  • 45.
    ActivityInstrumentationTestCase2<T extends Activity> getActivity Activity onCreate onResume • Activity Database • Activity View  → Developers Summit 2012 12 2 17
  • 46.
    onCreate Developers Summit 2012 12 2 17
  • 47.
    Thread Developers Summit 2012 12 2 17
  • 48.
    Activity Thread onCreate Developers Summit 2012 12 2 17
  • 49.
    Activity  Activity Model Developers Summit 2012 12 2 17
  • 50.
    Model Activity Developers Summit 2012 12 2 17
  • 51.
  • 52.
    Model View Developers Summit 2012 12 2 17
  • 53.
    ActivityInstrumentation TestCase2<T extends Activity> • View • Model View Unit Test • Model Thread Activity Developers Summit 2012 12 2 17
  • 54.
    ActivityInstrumentation TestCase2<T extends Activity> • View • Model View Unit Test • Model Thread Activity Developers Summit 2012 12 2 17
  • 55.
    Model Thread Activity • o × = ( ) Developers Summit 2012 12 2 17
  • 56.
    Android Activity Developers Summit 2012 12 2 17
  • 57.
    SQLite Developers Summit 2012 12 2 17
  • 58.
     SQL @Override protected void setUp() throws Exception { super.setUp(); helper = new AllowanceDatabase(new RenamingDelegatingContext(getContext(), "test_")); SQLiteDatabase db = helper.getWritableDatabase(); try { db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE, AMOUNT) VALUES(1320000000, 1000);"); db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE, AMOUNT) VALUES(1330000000, 5000);"); db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE, AMOUNT) VALUES(1340000000, 10000);"); db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE, AMOUNT) VALUES(1350000000, 2000);"); db.execSQL("INSERT INTO ALLOWANCE_LOG(LOG_DATE, AMOUNT) VALUES(1360000000, 3000);"); } finally { db.close(); } } Developers Summit 2012 12 2 17
  • 59.
    Fixture Library   DBUnit (Java)  ActiveRecord (Ruby)  Test::Fixture::DBI (Perl)  fixture (Python)  Factory Girl (Ruby)  ???? (Android) Developers Summit 2012 12 2 17
  • 60.
    Fixture for Android  SQLite Fixture Library  https://github.com/ussy/sqlite-fixture   DB  RenamingDelegatingContext Developers Summit 2012 12 2 17
  • 61.
    @Override protected void setUp() throws Exception { super.setUp(); importData(FileType.Yaml, "AllowanceLogDataTest"); } Developers Summit 2012 12 2 17
  • 62.
    --- _id: 1 LOG_DATE: 1320000000 AMOUNT: 1000 --- _id: 2 LOG_DATE: 1330000000 AMOUNT: 5000 --- _id: 3 LOG_DATE: 1340000000 AMOUNT: 10000 Developers Summit 2012 12 --- 2 17
  • 63.
    Fixture Library    Developers Summit 2012 12 2 17
  • 64.
    API  Developers Summit 2012 12 2 17
  • 65.
  • 66.
      Developers Summit 2012 12 2 17
  • 67.
    DB Developers Summit 2012 12 2 17
  • 68.
    SQLiteOpenHelper https://github.com/ussy/android-dbtest Developers Summit 2012 12 2 17
  • 69.
    private Context context; protected void setUp() { context = new RenamingDelegatingContext(getContext(), "test_"); helper = new SQLiteOpenHelperV1(context); } public void testMigration() { helper = SQLiteOpenHelperFactory.get(context); // test code } Developers Summit 2012 12 2 17
  • 70.
  • 71.
    CI   Developers Summit 2012 12 2 17
  • 72.
    Jenkins Developers Summit 2012 12 2 17
  • 73.
    Android Emulator Plugin    APK  Android   OS Developers Summit 2012 12 2 17
  • 74.
  • 75.
      Jenkins  Developers Summit 2012 12 2 17
  • 76.
    3  Level1 Automation  Record Playback  Liner Script  Level2 Automation  Data-driven  Functional Decomposition  Level3 Automation  Keyword Driven  Model-based TEST AUTOMATIONBODY OF KNOWLEDGE(TABOK) GUIDEBOOK Version 1.1 Developers Summit 2012 12 2 17
  • 77.
    3 1. 2. 3. *1 *1 3 Developers Summit 2012 12 2 17
  • 78.