Contenu connexe
Similaire à Androidテスティング実践 基礎編 (20)
Plus de 株式会社 NTTテクノクロス (8)
Androidテスティング実践 基礎編
- 5. 本研修の講義目的と到達目標(2/3)
5Copyright © 2016, NTT Software Corporation.
学習すること
自動ユニットテストの位置付けとメリット
Androidアプリのユニットテストの書き方
Android Studio、Robolectric、Mockitoを利用します
ありがちなシーン別に演習中心に学習します
システムテスト自動化ツールの特徴と
基本的なテストスクリプトの書き方
【座学+演習】Robotium、Espresso、UI Automator
【座学のみ】Appium
- 8. 本研修の講義内容
8
1日目 2日目
午前
9:30〜
12:00
Androidテスティング基礎
自動テストについての考え方
テストアーキテクチャ
(演習あり)
ユニットテストの自動化
基本的な使い方
ビジネスロジックのテスト
(演習あり)
昼休憩 12:00〜13:00
午後
13:00〜
17:30
システムテストの自動化
Robotium (演習あり)
Espresso (演習あり)
UI Automator (演習あり)
Appium
イベントリスナのテスト
(演習のみ)
HTTP通信を行うメソッド
のテスト (演習のみ)
DBアクセスするメソッドの
テスト (演習のみ)
CI
※60〜90分ごとに適宜休憩を入れます
Copyright © 2016, NTT Software Corporation.
- 9. 本研修で紹介するツール
9
ツール名 概要
JUnit4 単体テストフレームワーク
Robotium 直感的に書けるのが特徴のUIテストフレームワーク
Espresso White-boxテストができるUIテストフレームワーク
UI Automator アプリにまたがったテストができる
UIテストフレームワーク
Appium Seleniumと似たAPIを持つUIテストフレームワーク
Robolectric 通常のJVM上でAndroidの単体試験を
実施するためのフレームワーク
Mockito モッククラスを簡単に作成するためのライブラリ
Android Studio Android向けの新しい統合開発環境
Gradle Android標準となったGroovyベースのビルドツール
Copyright © 2016, NTT Software Corporation.
- 10. 1. Androidテスティング基礎
自動テストについての考え方
Androidの開発環境
Local Unit TestとInstrumented Test
JUnit4とAndroid Testing Support Library
テスト対象アプリの紹介
10Copyright © 2016, NTT Software Corporation.
- 15. 【考え方】どうすれば良いのか(1/4)
Copyright © 2016, NTT Software Corporation. 15
自動化の目的は効率化
手作業を繰り返すよりもコスト(稼働)が減る
「自動化」には自動化するためのコスト
がかかる
学習コスト
最初にテストコードを書くコスト
改造時にメンテし続けていくコスト
自動化すべき箇所はどこ?
- 24. 【考え方】(参考)Android特有の試験観点(3/3)
公式ドキュメント: Core App Quality Guidelines
http://developer.android.com/distribute/googleplay/quality/core.html
4つの観点 (※)
Visual Design and User Interaction
Functionality
Performance and Stability
Google Play
Test Procedure
CR-0: 全部の画面やダイアログについて、実際に遷移させてみる
CR-1: 全部の画面について、
ホームキーを押してから再度アプリを起動してみる
CR-2: 全部の画面について、別アプリに切り替えてから、
元のアプリに戻してみる
etc.
Copyright © 2016, NTT Software Corporation. 24
※ 具体例は、書籍「Androidアプリテスト技法」p.197参照
http://www.amazon.co.jp/dp/4798037044
- 26. Androidの新しい開発環境: Android Studio
概要
「Google I/O 2013」で発表された、
新しいAndroid向け統合開発環境
IntelliJ IDEA Community Editionから派生
インストール
http://developer.android.com/sdk/index.html
インストーラが立ち上がるので、指示通りに進める
「Android Studioセットアップガイド」が参考になる
https://keiji.github.io/the-androidstudio-book/
26Copyright © 2016, NTT Software Corporation.
※Eclipse+ADTは2015年12月で公式サポートが打ち切られました
- 28. Android Studioの動作環境
RAM: 最低2GB、推奨8GB
HDD: 最低2GB、推奨4GB (Android SDK含む)
解像度: 最低1280×800
Java: JDK8最新版 (JAVA_HOME環境変数)
CPU: 以下の機能を搭載していること
Intel VT-x
Intel EM64T (Intel 64)
Execute Disable (XD) Bit
28Copyright © 2016, NTT Software Corporation.
- 32. Android Studioで良く使うショートカット
行の補完: Ctrl+Shift+Enter
コンテンツアシスト: Ctrl+SPC
テストの実行: Ctrl+Shift+F10
コードフォーマット: Ctrl+Alt+L
選択行の移動: Alt+Shift+↑↓
選択行の複製: Ctrl+D
テストメソッドの生成など: Alt+Insert
インテンション(EclipseのCtrl+1): Alt+Enter
Find Action: Shift2回押し
Copyright © 2016, NTT Software Corporation. 32
※ [File]>[Settings...]>[Keymap]で好みのショートカットに
変更できます。
- 34. Androidが用意しているテストの仕組み(1/2)
Local Unit Test
JVM上(開発マシン上)で動作
高速だが実環境ではない
Android Framework APIは原則呼び出せない
(Robolectricを使えば可能。2日目に説明します。)
Copyright © 2016, NTT Software Corporation. 34
local JVM (Java SE)
テストコード
JUnitなど Android Framework API (空実装)
プロダクトコード
※ 用語の定義は https://developer.android.com/training/testing/start/index.html
を参考にしています
- 37. app/build.gradleについて
dependenciesブロックの書き方に注意
Copyright © 2016, NTT Software Corporation. 37
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'commons-io:commons-io:2.5'
androidTestCompile 'com.android.support.test:runner:0.5'
testCompile 'org.robolectric:robolectric:3.0'
}
プロダクトコードで使うもの
(compile)
Instrumented Testで使うもの
(androidTestCompile)
Local Unit Testで使うもの
(testCompile)
- 39. Copyright © 2016, NTT Software Corporation. 39
JUnit4とAndroid Testing Support Library
- 41. JUnit4 (2/3)
テスト結果が期待通りかどうかは
assertThat(actual, expected)
を使う
41
// この2つをstatic importしておく
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;
...
// 使用例
assertThat(x, is(3));
assertThat(x, is(not(4)));
assertThat(myList, hasItem("3"));
※ 参考: マイナビニュース
『速攻解説! JUnit 4.4 - 新アサーションメソッド「assertThat」の用途とは』
http://news.mynavi.jp/articles/2007/07/20/junit1/
Copyright © 2016, NTT Software Corporation.
- 42. JUnit4 (3/3)
(参考)JUnit3との違い
Copyright © 2016, NTT Software Corporation. 42
JUnit3 JUnit4
テストクラス TestCaseクラスを継承 特に制限なし
テストメソッ
ド
「test」から始まる
メソッド
「@Test」が付いているメソッド
前処理 「setUp()」を
オーバーライド
「@Before」が付いているメソッド
後処理 「tearDown()」を
オーバーライド
「@After」が付いているメソッド
検証 assertEquals(expected,
actual)
assertThat(actual, expected)
- 43. ATSL (Android Testing Support Library)
Instrumented Testで事実上必須のライブラリ
'com.android.support.test:<ライブラリ名>:<バージョン>'
Copyright © 2016, NTT Software Corporation. 43
ライブラリ名 概要
runner 【必須】JUnit4が使えるようになる
rules 【必須】JUnit4でActivityにアクセスできるようになる
espresso:* Espressoが使えるようになる
uiautomator:* UI Automatorが使えるようになる
SDK Managerで以下をダウンロードしておく必要がある
Extras>Android Support Repository
Extras>Android Support Library
- 53. ATSLのための設定: build.gradle
app/build.gradle
Copyright © 2016, NTT Software Corporation. 53
android {
defaultConfig {
...
testInstrumentationRunner ¥
'android.support.test.runner.AndroidJUnitRunner'
}
}
dependencies {
androidTestCompile ¥
'com.android.support.test:runner:0.5'
androidTestCompile ¥
'com.android.support.test:rules:0.5'
}
- 54. ATSLのための設定: テストクラス
テストクラス(app/src/androidTest/java/配下)
Copyright © 2016, NTT Software Corporation. 54
@RunWith(AndroidJUnit4.class)
public class SimpleInstrumentationTest {
@Rule
public ActivityTestRule<AdditionViewActivity> activityTestRule
= new ActivityTestRule<>( AdditionViewActivity.class );
private AdditionViewActivity activity;
@Before
public void setUp() throws Exception {
activity = activityTestRule.getActivity();
}
@Test public void isValid_normal() { ... }
}
日本語名のテストメソッドだと
メソッド指定のテスト実行不可
テスト対象Activity