Contenu connexe
Similaire à 実践Android Developer Testing
Similaire à 実践Android Developer Testing (20)
実践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
- 10. v2.0.J01
Developers Summit 2012
12 2 17
- 12. 3
Drive JUDGE Report
3
Developers Summit 2012
12 2 17
- 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 Testing Framework
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
- 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
- 41. •
o
•
o ActivityInsterumentationTestCase2<T
extends Activity> setUp
Developers Summit 2012
12 2 17
- 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
- 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
- 64. API
Developers Summit 2012
12 2 17
- 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
- 71. CI
Developers Summit 2012
12 2 17
- 72. Jenkins
Developers Summit 2012
12 2 17
- 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