Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
株式会社 NTTテクノクロス
PDF, PPTX
3,691 views
Androidテスティング実践2 システムテスト編
NTTソフトウェア社内のソフト道場研修で実施した、Androidテスティング実践研修テキストの2. システムテスト編です。
Technology
◦
Read more
4
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 64
2
/ 64
3
/ 64
4
/ 64
5
/ 64
6
/ 64
7
/ 64
8
/ 64
9
/ 64
10
/ 64
11
/ 64
12
/ 64
13
/ 64
14
/ 64
15
/ 64
16
/ 64
17
/ 64
18
/ 64
19
/ 64
20
/ 64
21
/ 64
22
/ 64
23
/ 64
24
/ 64
25
/ 64
26
/ 64
27
/ 64
28
/ 64
29
/ 64
30
/ 64
31
/ 64
32
/ 64
33
/ 64
34
/ 64
35
/ 64
36
/ 64
37
/ 64
38
/ 64
39
/ 64
40
/ 64
41
/ 64
42
/ 64
43
/ 64
44
/ 64
45
/ 64
46
/ 64
47
/ 64
48
/ 64
49
/ 64
50
/ 64
51
/ 64
52
/ 64
53
/ 64
54
/ 64
55
/ 64
56
/ 64
57
/ 64
58
/ 64
59
/ 64
60
/ 64
61
/ 64
62
/ 64
63
/ 64
64
/ 64
More Related Content
PDF
Androidテスティング実践 基礎編
by
株式会社 NTTテクノクロス
DOCX
Maruti Suzuki India Pvt. Limited final
by
Aman Bharti
PDF
Androidテスティング実践3 ユニットテスト・CI編
by
株式会社 NTTテクノクロス
PDF
「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04
by
Makoto Nonaka
PDF
はじめてのソフトウェアテスト2019
by
Rina Fukuda
PDF
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
by
H Iseri
PPTX
アジャイルメトリクス実践ガイド
by
Hiroyuki Ito
PDF
Ctfl at sample exam a v1.2 questions
by
Neeraj Kumar Singh
Androidテスティング実践 基礎編
by
株式会社 NTTテクノクロス
Maruti Suzuki India Pvt. Limited final
by
Aman Bharti
Androidテスティング実践3 ユニットテスト・CI編
by
株式会社 NTTテクノクロス
「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04
by
Makoto Nonaka
はじめてのソフトウェアテスト2019
by
Rina Fukuda
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
by
H Iseri
アジャイルメトリクス実践ガイド
by
Hiroyuki Ito
Ctfl at sample exam a v1.2 questions
by
Neeraj Kumar Singh
What's hot
PPT
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
by
Masashi Umezawa
PDF
ITエンジニアのための英語勉強法
by
Etsuji Nakai
PPTX
探索的テストはじめの一歩 #wacate
by
Toshiyuki Kawanishi
PDF
生成系AIで変わるソフトウェア開発の現在と未来(修正版).pdf
by
KunihiroSugiyama1
PDF
STAC2022 ローコード開発におけるテストピラミッド考察
by
Satoshi Sakashita
PDF
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
by
Hironori Washizaki
PDF
iOSアプリ UIテスト自動化入門
by
Shingo Tamaki
PDF
Organizational study report (MBA)
by
Cochin University
PPTX
Maruti Strategy
by
Nadarasan Niroshan
PPTX
Chapter 1 - Requirement Engineering
by
Neeraj Kumar Singh
PPTX
LINE のUI自動テスト事例
by
LINE Corporation
PDF
How BDD enables True CI/CD
by
Roger Turnau
PPTX
Istqb foundation level
by
Le Trung Hieu
PPTX
Chapter 2 - Testing Throughout the Development LifeCycle
by
Neeraj Kumar Singh
PPTX
HPCL PPT
by
Veraat Bharat
PDF
はじめてのスクラム体験ワークショップ 〜 アジャイル時代のテスターを目指して
by
Rakuten Group, Inc.
PDF
Answers to ISTQB Test Analyst sample questions
by
Neeraj Kumar Singh
PDF
WACATE 2010夏 ゆもつよ講演スライド
by
Tsuyoshi Yumoto
PDF
ISTQB Foundation Level Mock Exam 1
by
Neeraj Kumar Singh
PPTX
Hyundai india ltd
by
Misab P.T
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
by
Masashi Umezawa
ITエンジニアのための英語勉強法
by
Etsuji Nakai
探索的テストはじめの一歩 #wacate
by
Toshiyuki Kawanishi
生成系AIで変わるソフトウェア開発の現在と未来(修正版).pdf
by
KunihiroSugiyama1
STAC2022 ローコード開発におけるテストピラミッド考察
by
Satoshi Sakashita
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
by
Hironori Washizaki
iOSアプリ UIテスト自動化入門
by
Shingo Tamaki
Organizational study report (MBA)
by
Cochin University
Maruti Strategy
by
Nadarasan Niroshan
Chapter 1 - Requirement Engineering
by
Neeraj Kumar Singh
LINE のUI自動テスト事例
by
LINE Corporation
How BDD enables True CI/CD
by
Roger Turnau
Istqb foundation level
by
Le Trung Hieu
Chapter 2 - Testing Throughout the Development LifeCycle
by
Neeraj Kumar Singh
HPCL PPT
by
Veraat Bharat
はじめてのスクラム体験ワークショップ 〜 アジャイル時代のテスターを目指して
by
Rakuten Group, Inc.
Answers to ISTQB Test Analyst sample questions
by
Neeraj Kumar Singh
WACATE 2010夏 ゆもつよ講演スライド
by
Tsuyoshi Yumoto
ISTQB Foundation Level Mock Exam 1
by
Neeraj Kumar Singh
Hyundai india ltd
by
Misab P.T
Viewers also liked
PDF
Androidアプリケーション開発中級研修 前編
by
株式会社 NTTテクノクロス
PDF
20150319 testotipsio
by
Kazuaki Matsuo
PDF
Appiumのテスト結果レポートをsahaginで作ってみる
by
Nozomi Ito
PDF
JUnitテストを1日やってみた
by
Mima Yuki
PDF
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
by
Nozomi Ito
PDF
はてなにおける Android アプリのソフトウェアテスト
by
Yu Nobuoka
PPT
テストプラットフォームサービスの舞台裏
by
Yuto Tachibana
PDF
UIAutomatorでボット作ってみた
by
akkuma
PDF
CoreDataをバックグラウンドで扱うためのTips
by
Yohei Yamaguchi
PPTX
Open STF Plugin 作ってみた
by
justice_sm
PDF
第3回Ques ここからはじめる!Androidアプリのテスト自動化
by
Koji Hasegawa
PPTX
Testing android apps with espresso
by
Édipo Souza
PDF
フロントエンド開発者のためのJenkins
by
Satake Hiroyuki
PPTX
Appium を使って iOS / Android の UI テストを共通化
by
Kenichi Tatsuhama
PPTX
EC2とLinuxディストロ事情
by
Emma Haruka Iwao
PDF
Seleniumの薄っすい話 百八式 @ 第3回 日本Seleniumユーザーコミュニティ勉強会
by
Hiroshi Toda
PPTX
STFとAppiumをもちいたAndroidアプリの自動テスト
by
Toshiyuki Hirata
PDF
20160913 cookpad ios_jp
by
Kazuaki Matsuo
PDF
第3回日本seleniumユーザーコミュニティ勉強会
by
Nozomi Ito
PPTX
WebサービスのソフトウェアQAと自動テスト戦略
by
Masaki Nakagawa
Androidアプリケーション開発中級研修 前編
by
株式会社 NTTテクノクロス
20150319 testotipsio
by
Kazuaki Matsuo
Appiumのテスト結果レポートをsahaginで作ってみる
by
Nozomi Ito
JUnitテストを1日やってみた
by
Mima Yuki
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
by
Nozomi Ito
はてなにおける Android アプリのソフトウェアテスト
by
Yu Nobuoka
テストプラットフォームサービスの舞台裏
by
Yuto Tachibana
UIAutomatorでボット作ってみた
by
akkuma
CoreDataをバックグラウンドで扱うためのTips
by
Yohei Yamaguchi
Open STF Plugin 作ってみた
by
justice_sm
第3回Ques ここからはじめる!Androidアプリのテスト自動化
by
Koji Hasegawa
Testing android apps with espresso
by
Édipo Souza
フロントエンド開発者のためのJenkins
by
Satake Hiroyuki
Appium を使って iOS / Android の UI テストを共通化
by
Kenichi Tatsuhama
EC2とLinuxディストロ事情
by
Emma Haruka Iwao
Seleniumの薄っすい話 百八式 @ 第3回 日本Seleniumユーザーコミュニティ勉強会
by
Hiroshi Toda
STFとAppiumをもちいたAndroidアプリの自動テスト
by
Toshiyuki Hirata
20160913 cookpad ios_jp
by
Kazuaki Matsuo
第3回日本seleniumユーザーコミュニティ勉強会
by
Nozomi Ito
WebサービスのソフトウェアQAと自動テスト戦略
by
Masaki Nakagawa
Similar to Androidテスティング実践2 システムテスト編
PPTX
Sansan における Android アプリ自動テスト導入事例
by
Kenichi Tatsuhama
PPTX
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
by
Kenichi Tatsuhama
PPTX
Device Farm を使ったスマホアプリの自動テスト
by
Kenichi Tatsuhama
KEY
Androidリリース作業の効率化(2)
by
Kenichi Kambara
PPTX
Robotium を使った UI テスト
by
Kenichi Tatsuhama
PDF
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
by
Yahoo!デベロッパーネットワーク
PPTX
Androidアプリ開発のテスト環境
by
Toshiyuki Hirata
KEY
GroovyなAndroidテスト #atest_hack
by
Takahiro Yoshimura
PPTX
Win7 * appium * androidで実機自動テストやってみた。
by
Naoto Kishino
PPTX
JaSST'16 Tokyo モバイルセッション
by
mirer
PDF
5分で分かるselenium conference berlin 2017
by
Toshiya Komoda
PDF
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin
by
Takeshi Fujimoto
PDF
Screenshots Test spoon + espresso
by
Shinobu Okano
PDF
Mastering Xamarin.UITest
by
Takeshi Fujimoto
PDF
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
by
Koji Hasegawa
PPTX
アプリの不具合を少なくするために
by
Kenichi Tatsuhama
PDF
ブラウザのUIテストをしてみた話
by
Mitsushige Ishiguro
PPTX
Robotium を使った UI テストとレイアウト確認の効率化
by
Kenichi Tatsuhama
PDF
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
by
Yasuhiko Yamamoto
PDF
Appium 2.0 ではじめるモバイルアプリテスト
by
Masayuki Wakizaka
Sansan における Android アプリ自動テスト導入事例
by
Kenichi Tatsuhama
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
by
Kenichi Tatsuhama
Device Farm を使ったスマホアプリの自動テスト
by
Kenichi Tatsuhama
Androidリリース作業の効率化(2)
by
Kenichi Kambara
Robotium を使った UI テスト
by
Kenichi Tatsuhama
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
by
Yahoo!デベロッパーネットワーク
Androidアプリ開発のテスト環境
by
Toshiyuki Hirata
GroovyなAndroidテスト #atest_hack
by
Takahiro Yoshimura
Win7 * appium * androidで実機自動テストやってみた。
by
Naoto Kishino
JaSST'16 Tokyo モバイルセッション
by
mirer
5分で分かるselenium conference berlin 2017
by
Toshiya Komoda
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin
by
Takeshi Fujimoto
Screenshots Test spoon + espresso
by
Shinobu Okano
Mastering Xamarin.UITest
by
Takeshi Fujimoto
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
by
Koji Hasegawa
アプリの不具合を少なくするために
by
Kenichi Tatsuhama
ブラウザのUIテストをしてみた話
by
Mitsushige Ishiguro
Robotium を使った UI テストとレイアウト確認の効率化
by
Kenichi Tatsuhama
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
by
Yasuhiko Yamamoto
Appium 2.0 ではじめるモバイルアプリテスト
by
Masayuki Wakizaka
More from 株式会社 NTTテクノクロス
PPTX
ブロックチェーン活用事例
by
株式会社 NTTテクノクロス
PPTX
Open stack界でのコンテナの現状
by
株式会社 NTTテクノクロス
PDF
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
by
株式会社 NTTテクノクロス
PDF
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
by
株式会社 NTTテクノクロス
PDF
ネットワーク構築訓練 入門
by
株式会社 NTTテクノクロス
PDF
WebRTC研修
by
株式会社 NTTテクノクロス
PDF
Androidアプリケーション開発中級研修 後編
by
株式会社 NTTテクノクロス
PDF
OpenStack入門 2016/06/27
by
株式会社 NTTテクノクロス
PDF
OpenStack入門 2016/06/10
by
株式会社 NTTテクノクロス
ブロックチェーン活用事例
by
株式会社 NTTテクノクロス
Open stack界でのコンテナの現状
by
株式会社 NTTテクノクロス
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
by
株式会社 NTTテクノクロス
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
by
株式会社 NTTテクノクロス
ネットワーク構築訓練 入門
by
株式会社 NTTテクノクロス
WebRTC研修
by
株式会社 NTTテクノクロス
Androidアプリケーション開発中級研修 後編
by
株式会社 NTTテクノクロス
OpenStack入門 2016/06/27
by
株式会社 NTTテクノクロス
OpenStack入門 2016/06/10
by
株式会社 NTTテクノクロス
Androidテスティング実践2 システムテスト編
1.
Androidテスティング実践 ②システムテスト編
2.
本スライドは、NTTソフトウェア社内技術者育成研修(ソフト道場研修)テキストです。 【著作権・免責事項】 本セミナーコースの内容、本資料のすべての著作権は、NTTソフトウェア株式会社に帰属します。 無断での本資料の複写、複製、再利用、転載、転用を禁じます。
本資料と演習等で利用するすべての教材は、NTTソフトウェア株式会社からの保証なしに提供されます。 本書に記載されている会社名および製品名は、一般に各社の商標または登録商標です。 56 ※ 演習問題に関するスライドは、一部を除き、本ファイルには含まれておりません。 また、演習に必要なソースコードも含まれておりません。ご了承ください。 Copyright © 2016, NTT Software Corporation.
3.
2. システムテストの自動化 この研修で紹介するツールの使い分け
Robotium (座学+演習) Espresso (座学+演習) UI Automator (座学+演習) Appium (座学) 57Copyright © 2016, NTT Software Corporation.
4.
この研修で紹介するツールの使い分け 画面単位のホワイトボックステストがしたい Espresso 1アプリ内複数画面にまたがるブラックボックス テストがしたい Robotium・UI Automator・Appium 複数アプリにまたがる(ブラックボックス) テストがしたい UI Automator:
1テストケース内でEspressoと併用OK Appium: Selenium WebDriver経験者向け。 iOSもテストOK 58Copyright © 2016, NTT Software Corporation.
5.
59 Robotium Copyright © 2016,
NTT Software Corporation.
6.
【Robotium】概要 UIテストを容易に自動化できるフレームワーク ブラックボックステスト向け Android 2.2以上対応 Instrumented Testとして実装 URL:
https://github.com/RobotiumTech/robotium Apache License 2.0 Copyright © 2016, NTT Software Corporation. 60 https://github.com/RobotiumTech/robotium よりロゴを引用
7.
【Robotium】おすすめポイント ネイティブアプリ・WebView両方ともテストできる WebView対応はAndroid 4.0以降 テストシナリオの書き方が直感的で分かりやすい 画面のレイアウトヒエラルキーを気にせず、見た目だけで書ける。 「OKと表示されたButtonを押せ」 「画面上から6番目のEditTextに"Hello"と入力せよ」 etc. 複数画面(Activity)にまたがるテストができる 61Copyright ©
2016, NTT Software Corporation.
8.
【Robotium】注意点 Google公式ではない Android最新バージョンへの追随が遅いことも Androidの非公開APIを利用して実装されている 機種によっては動作しない可能性あり うまく動かない場合はFAQ参照 https://goo.gl/nbWkTA 複数アプリにまたがったテストができない Copyright © 2016,
NTT Software Corporation. 62
9.
【Robotium】環境設定 ATSLの設定に加えて、app/build.gradleに以下を追加 63 dependencies { // ATSLの設定は省略 androidTestCompile
¥ 'com.jayway.android.robotium:robotium-solo:5.5.4' } Copyright © 2016, NTT Software Corporation.
10.
【Robotium】テストコードの書き方: setup 64 @RunWith(AndroidJUnit4.class) public class
MyRobotiumTest { // ActivityTestRuleの宣言は省略 @Rule public ActivityTestRule<...> activityTestRule = ...; private Solo solo; @Before public void setUp() throws Exception { solo = new Solo(InstrumentationRegistry. getInstrumentation(), activityTestRule.getActivity()); } Robotiumの主要クラスSoloをインスタンス化する Copyright © 2016, NTT Software Corporation.
11.
【Robotium】テストコードの書き方: tear down 65 ... @After public
void tearDown() throws Exception { solo.finishOpenedActivities(); } } Solo#finishOpenedActivities()を呼び出す Copyright © 2016, NTT Software Corporation.
12.
【Robotium】テスト用APIの紹介: 概要 Javadoc http://recorder.robotium.com/javadoc/ Soloクラス 全てのテスト用APIは、Soloクラスのメソッドに集約 Copyright ©
2016, NTT Software Corporation. 66
13.
【Robotium】テスト用APIの紹介: 文字列指定操作 UI部品の表示文字列(正規表現)を指定してクリック 67 solo.clickOnText("Dialog"); solo.clickOnButton("Text Entry
dialog"); 「.」「+」「*」などの メタキャラクタはエスケープが必要 Copyright © 2016, NTT Software Corporation.
14.
【Robotium】テスト用APIの紹介: 位置指定操作 UI部品の番号を指定してクリック 68 ⑦ ② ③ ④ ⑤ ⑥ ① solo.clickInList(4); リストの4行目(1始まり)をクリック ⑦ ② ③ ④ ⑤ ⑥ ① ⓪ index 7(0始まり)のボタンをクリック solo.clickOnButton(7); Copyright
© 2016, NTT Software Corporation.
15.
【Robotium】テスト用APIの紹介: 文字列取得・入力 表示文字列の取得・テキスト入力 69 メソッド(Soloクラス) 概要 searchText(String)
指定された正規表現にマッチする文字列を表示し ているUI部品を探す。見付かればtrueを返す。 enterText(int, String) 指定されたindex(0始まり)に存在するEditText に対して、指定された文字列を入力する。 getText(String) 指定された正規表現にマッチする文字列を表示し ているTextViewを返す。 getEditText(int) 指定されたindex(0始まり)に存在するEditText を返す。 画面のどこにでも良いから文字列が表示されているか確認する場合は searchText()が便利 特定のViewに表示されている文字列を確認する場合は、 getText()・getEditText()でTextView・EditTextを取得してから TextView#getText()・EditText#getText()を使う Copyright © 2016, NTT Software Corporation.
16.
【Robotium】テスト用APIの紹介: そのほか そのほか 70 メソッド(Soloクラス) 概要 assertCurrentActivity(St ring,
Class) 現在の画面が指定されたActivity(クラス) であることをassertする。 takeScreenshot() 画面のスクリーンショットを撮る。 /sdcard/Robotium-Screenshots/に保存。 clickOnWebElement(By) 指定された検索条件(Byオブジェクト)に合致した WebView内HTML部品をクリックする。 typeTextInWebElement(By, String) 指定された検索条件(Byオブジェクト)に合致した WebView内HTML部品(フォーム)に対して、 指定された文字列を入力する。 ※スクリーンショットを撮る場合は、テスト対象アプリ側に、以下のパー ミッション宣言が必要 <uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" /> Copyright © 2016, NTT Software Corporation.
17.
【Robotium】演習2-2 Robotiumを使って、以下のテストシナリオを実現してくだ さい。 1つめのEditTextに「5」を入力する 2つめのEditTextに「8」に入力する 「この画面に表示」ボタンをクリックする 画面のどこかに「13」と表示されることを確認する テストクラス名: RobotiumTest 参考スライド ①基礎編【演習1-1】ATSLのための設定 【Robotium】環境設定 【Robotium】テストコードの書き方 【Robotium】テスト用APIの紹介: 表示文字列の取得・テキスト入力 71Copyright
© 2016, NTT Software Corporation.
18.
72 Espresso Copyright © 2016,
NTT Software Corporation.
19.
【Espresso】概要 Google謹製の、ホワイトボックステスト向けUI テストフレームワーク コードの簡潔さ、信頼性の高さに定評有り APIレベル8, 10, 15-19,
21に対応 概ねAndroid 2.2以上(3.x除く) Instrumented Testとして実装 URL: https://goo.gl/x8eP5C https://goo.gl/lmrlJI Apache License 2.0 Copyright © 2016, NTT Software Corporation. 73 https://google.github.io/android-testing-support-library/docs/espresso/cheatsheet/index.html よりロゴを引用
20.
【Espresso】おすすめポイント Google謹製なので最新バージョンへの素早い追随が期待 できる Google社内で実際に使われている テスト結果もRobotiumより安定 ネイティブアプリ・WebView両方ともテストできる テストシナリオの書き方がシンプル 比較的実行速度が速い 74Copyright © 2016,
NTT Software Corporation.
21.
【Espresso】注意点 複数Activityにまたがったテストができない 複数アプリにまたがったテストもできない APIが独特なので学習コストが高い 75Copyright © 2016,
NTT Software Corporation.
22.
【Espresso】環境設定 ATSLの設定に加えて、app/build.gradleに以下を追加 76 dependencies { // ATSLの設定は省略 androidTestCompile
¥ 'com.android.support.test.espresso:espresso-core:2.2.2' } モジュール名:バージョン 概要 espresso-intents:2.2.2 別Activity起動時に発行するIntentを確認できる 起動元Intentのモックを作成できる espresso-web:2.2.2 WebView内部をテストできる 以下の追加モジュールもあり(詳細は省略) Copyright © 2016, NTT Software Corporation.
23.
【Espresso】テストコードの書き方: setup/tear down 77 @RunWith(AndroidJUnit4.class) public
class MyEspressoTest { @Rule public ActivityTestRule<...> activityTestRule = ...; ... } ATSLのための準備だけでOK Copyright © 2016, NTT Software Corporation.
24.
【Espresso】テスト用APIの紹介: 概要 78 概要 ViewMatcher Viewの検索条件を指定する。ViewMatchersクラス参照。 withId(),
withClassName(), withText(), ... ※hamcrestのallOf(), not(), is(),なども使える ViewAction Viewに対する操作を指定する。ViewActionsクラス参照。 clearText(), typeText(), click(), ... ViewAssertion 確認条件を指定する。ViewAssertionsクラス参照。 doesNotExist(), matches(ViewMatcher), ... onView(ViewMatcher) .perform(ViewAction) .check(ViewAssertion); 以下の基本形を理解する ※perform(), check()は省略可 「ViewMatcher」にあてはまる Viewに対して 「ViewAction」を実行した結果 そのViewが「ViewAssertion」 を満たすことを確認する Copyright © 2016, NTT Software Corporation.
25.
【Espresso】テスト用APIの紹介: 概要 Javadoc http://goo.gl/UwGTdf (android.support.test.espresso.*パッケージ) Espresso Cheat
Sheet https://goo.gl/6xcuqd 以下の3クラスが重要 android.support.test.espresso.matcher.ViewMatchers android.support.test.espresso.action.ViewActions android.support.test.espresso.assertion.ViewAssertions Copyright © 2016, NTT Software Corporation. 79
26.
【Espresso】テスト用APIの紹介: ViewMatchers 検索条件を表すメソッドが定義されている 80 メソッド 概要 withId(int)
指定されたIDを持つView withText(String) 指定されたテキストが表示されている View withContentDescription(String) 指定されたcontentDescription属性を 持ったView withClassName(Matcher<String>) 指定されたクラス名のView ※引数には「is(クラス名)」を指定する hamcrestのmatcherを使うこともある(CoreMatchers) allOf(条件1, 条件2, ...) anyOf(条件1, 条件2, ...) is() not() Copyright © 2016, NTT Software Corporation.
27.
【Espresso】テスト用APIの紹介: ViewActions onView()で特定したViewに対する操作を表すメソッド が定義されている 81 メソッド 概要 click()
クリックする pressBack() 戻るキーを押す(どのViewに対して実行しても同じ) typeText(String) 指定された文字列を入力する scrollTo() onView()で指定されたViewまでスクロールする Copyright © 2016, NTT Software Corporation.
28.
【Espresso】テスト用APIの紹介: ViewAssertions onView()で特定したViewに対してチェックするメソッ ドが定義されている 82 メソッド 概要 doesNotExist()
そのViewが存在しないことを確認する matches(Matcher) そのViewが、引数で指定した条件を満たしていることを確 認する maches()の引数には、任意のViewMatchersが指定できる テキスト"text"が表示されているか確認する matches(withText("text")) Viewが画面に表示されていることを確認する matches(isDisplayed()) Copyright © 2016, NTT Software Corporation.
29.
【Espresso】実例紹介(1/2) TextView (IDはR.id.textview)に"Hello"と表示されてい ることを確認する。 83 onView(withId(R.id.textview)) .check(matches(withText("Hello"))); "Press Me"と書かれているボタンを押す。 onView(withText("Press
Me")).perform(click()); "Hello"と書かれているボタンを押す。 ただし、"Hello"と書かれているTextViewも存在。 onView(allOf(withClassName(is(Button.class.getName())), withText("Hello"))) .perform(click()); Copyright © 2016, NTT Software Corporation.
30.
【Espresso】実例紹介(2/2) EditText (IDはR.id.input)に"Hello"と入力してからソフ トウェアキーボードを閉じる。 84 onView(withId(R.id.input)) .perform(typeText("Hello"), closeSoftKeyboard()); 画面外にあるかも知れない"Press
Me"と書かれているボ タンを押す。 onView(withText("Press Me")) .perform(scrollTo(), click()); ※perform()の引数に複数ViewActionを並べると、左から順番に実行する。 Copyright © 2016, NTT Software Corporation.
31.
【Espresso】そのほかの応用的な機能 AdapterView (ListViewなど)の中身を検索したいとき onView()の代わりにonData()を使う https://goo.gl/UFhj8h WebViewの中身を検索したいとき Espresso-Webを使う。APIも異なる。 https://goo.gl/X3hu4K そのほかいろいろ 「Espresso Advanced
Samples」 https://goo.gl/RN3vOc Copyright © 2016, NTT Software Corporation. 85
32.
【Espresso】演習2-3 Espressoを使って、以下のテストシナリオを 実現してください。 1つめのEditTextに「5」を入力する 2つめのEditTextに「8」に入力する 「この画面に表示」ボタンをクリックする 「結果:」の右にあるTextViewに「13」と表示されることを確認する テストクラス名: EspressoTest 参考スライド ①基礎編【演習1-1】ATSLのための設定 【Espresso】環境設定 【Espresso】テストコードの書き方 【Espresso】テスト用APIの紹介 86Copyright ©
2016, NTT Software Corporation.
33.
87 UI Automator Copyright ©
2016, NTT Software Corporation.
34.
【UI Automator】概要 Google謹製の、ブラックボックステスト向けUI テストフレームワーク 別アプリにまたがったテストができる 他人が作ったアプリやプリインアプリでもOK Android 4.3以上に対応 安定性の面でAndroid
5.0以上が無難 Instrumented Testとして実装 Espressoと混ぜて使うのもOK URL: https://goo.gl/6ZFz89 Apache License 2.0 Copyright © 2016, NTT Software Corporation. 88
35.
【UI Automator】おすすめポイント 3rd-party製アプリの試験ができる apkが無くても試験可能 Espressoと共用できる 89Copyright ©
2016, NTT Software Corporation.
36.
【UI Automator】注意点 できることが限定されている UI部品の操作と状態確認、表示文字列確認に限定 Instrumentation対象のアプリ以外が持つ インスタンス(ActivityやViewなど)へのアクセス不可 明示的に同期を取る必要がある EditTextに入力した直後だと、 まだ入力された文字列が取得できないことも。 同じ目的のAPIが複数ある (動作仕様や、できることが微妙に違う) UiObject: スクロールサポート充実。同期系APIが貧弱。 UiObject2:
スクロールサポートなし。柔軟な同期系API。 90Copyright © 2016, NTT Software Corporation.
37.
【UI Automator】環境設定 ATSLの設定に加えて、app/build.gradleに以下を追加 91 dependencies { //
ATSLの設定は省略 androidTestCompile ¥ 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' } Copyright © 2016, NTT Software Corporation.
38.
【UI Automator】テストコードの書き方 92 @RunWith(AndroidJUnit4.class) public class
MyUiautomatorTest { @Rule public ActivityTestRule<...> activityTestRule = ...; private UiDevice uiDevice; @Before public void setUp() throws Exception { uiDevice = UiDevice.getInstance(InstrumentationRegistry .getInstrumentation()); } ... } ATSLの設定に加えて UiDeviceオブジェクトの初期化が必要 Copyright © 2016, NTT Software Corporation.
39.
【UI Automator】テスト用APIの紹介: 検索(1/2) 条件にあったUI部品を検索する 93 UiObject
uiObject = uiDevice.findObject(<検索条件1>) // または UiObject2 uiObject = uiDevice.findObject(<検索条件2>) 検索条件1はUiSelectorオブジェクトで表現 //検索条件1 new UiSelector().text("OK").className(Button.class) 検索条件2はBySelectorオブジェクトで表現 //検索条件2 By.text("OK").clazz(Button.class) Copyright © 2016, NTT Software Corporation.
40.
【UI Automator】テスト用APIの紹介: 検索(2/2) 94 UiSelector検索条件
(UiObject向け) メソッド 概要 className(Class) Viewのクラス(EditTextやButtonなど)を条件に指定する text(String) Viewの表示文字列を条件に指定する description(String) ViewのcontentDescription属性値を条件に指定する resourceId(String) ViewのリソースID(文字列表現)を条件に指定する BySelector検索条件 (UiObject2向け) メソッド 概要 clazz(Class) Viewのクラス(EditTextやButtonなど)を条件に指定する text(String) Viewの表示文字列を条件に指定する desc(String) ViewのcontentDescription属性値を条件に指定する res(String) ViewのリソースID(文字列表現)を条件に指定する Copyright © 2016, NTT Software Corporation.
41.
【UI Automator】テスト用APIの紹介: UiObject系 UiObject/UiObject2で同名のメソッド 95 メソッド
概要 click() クリックする setText(String) 指定された文字列を入力する getText() 設定されている文字列を取得する isFocused() フォーカスが当たっているかどうかを取得する Copyright © 2016, NTT Software Corporation.
42.
【UI Automator】テスト用APIの紹介: UiObject系 96 「OK」ボタンをクリックする例 //
UiObjectを使う場合 UiObject okButton = uiDevice.findObject(new UiSelector().text("OK"). className(Button.class)); okButton .click(); // UiObject2を使う場合 UiObject2 okButton2 = uiDevice.findObject(By.text("OK").clazz(Button.class)); okButton2.click(); Copyright © 2016, NTT Software Corporation.
43.
【UI Automator】テスト用APIの紹介: 同期系(1/4) UiObjectを使うときはUiObjectのメソッドを呼ぶ 97 メソッド(引数はタイムアウト値)
概要 clickAndWaitForNewWindow(long) クリックしてから、新しい窓(ダイアログ など)が表示されるまで待つ waitForExists(long) このViewが表示されるまで待つ // 「OK」ボタンを押して、ダイアログが表示されるまで待つ UiObject okButton = uiDevice.findObject(new UiSelector().text("OK"). className(Button.class)); // ダイアログが表示されるまで2000msec待つ。タイムアウト時はテスト失敗。 assertThat(okButton.clickAndWaitForNewWindow(2000L), is(true)); // ここから表示されたダイアログに対する操作を行う サンプルコード ※タイムアウトした場合は、falseが返される Copyright © 2016, NTT Software Corporation.
44.
【UI Automator】テスト用APIの紹介: 同期系(2/4) UiObject2は以下の汎用的なメソッドを使う 98 メソッド(引数は条件とタイムアウト値)
概要 clickAndWait(EventCondition, long) クリックしてから、指定された条件が満 たされるまで待つ wait(SearchCondition, long) ※UiObject2とUiDeviceの両方に存在 指定された条件が満たされるまで待つ wait(UiObject2Condition, long) 指定された条件が満たされるまで待つ 良く使う「条件」はUntilクラスに用意されている Untilクラスのstaticメソッド 概要 newWindow() 新しい窓(ダイアログ)が表示されるまで textEquals(String) 表示文字列が引数で指定された通りになるまで gone(BySelector) 条件に合致するViewが見付からなくなるまで ※タイムアウトした場合は、null/0/falseが返される Copyright © 2016, NTT Software Corporation.
45.
【UI Automator】テスト用APIの紹介: 同期系(3/4) 99 サンプルコード //
「OK」ボタンを押して、ダイアログが表示されるまで待つ UiObject2 okButton2 = uiDevice.findObject(By.text("OK").clazz(Button.class)); // ダイアログが表示されるまで2000msec待つ boolean result = okButton2.clickAndWait(Until.newWindow(), 2000L); // タイムアウトしたときはテストを失敗させる assertThat(result, is(true)); // ここからダイアログの操作などを行う Copyright © 2016, NTT Software Corporation.
46.
【UI Automator】テスト用APIの紹介: 同期系(4/4) 同期APIを使えば使うほど遅くなる! 使いすぎ注意! 独立した複数のボタンやテキストボックスを 連続操作するような場合は同期不要 同期APIの使いどころ 一連の操作による、画面の変化を確認したい場合 →確認する直前で同期する ある操作によって画面遷移・ダイアログ表示が発生する場合 →その操作の直後に同期する 100Copyright
© 2016, NTT Software Corporation.
47.
【UI Automator】テスト用APIの紹介: 検索契機 いつ部品を検索しに行くか? UiObject系の場合 操作メソッド(click()など)呼び出し時に検索する 見付からなかったらUiObjectNotFoundException 同じ検索条件なら、複数画面で使い回しOK UiObject2系の場合 findObject(BySelector)呼び出し時に検索する 見付からなかったらnullが返される 画面レイアウトが変わるとUiObject2は無効になる →StaleObjectException 101Copyright
© 2016, NTT Software Corporation.
48.
【UI Automator】インスペクタの利用 Viewの検索条件は、画面の見た目だけでは分からない 調査ツール uiautomatorviewer
を使う 1. Android Device Monitor起動 2. [Devices]タブで調査したい デバイスを選ぶ 3. uiautomatorボタンを押す 102Copyright © 2016, NTT Software Corporation.
49.
【UI Automator】Tips: UiScrollable スクロールすれば現れる画面外の要素を操作できる 103 //
標準ホームアプリのアプリ一覧から、画面外にある //「足し算アプリ」アイコンをタップして起動する。 UiScrollable appViews = new UiScrollable(new UiSelector(). scrollable(true)); // スクロール方向を水平方向に設定 appViews.setAsHorizontalList(); // "足し算アプリ"アプリを起動する UiObject myApp = appViews.getChildByText(new UiSelector(). className(TextView.class), "足し算アプリ"); myApp.clickAndWaitForNewWindow(); Copyright © 2016, NTT Software Corporation.
50.
【UI Automator】Tips: 日本語入力 UiObject/UiObject2クラスの setText(String)メソッド Android
5.0以上: 日本語入力OK Android 4.4以下: 指定できるのはASCII文字のみ Android 4.4以下で日本語を使う場合は専用のIMEを使う UIAutomator Unicode Input Helper https://github.com/sumio/uiautomator-unicode-input-helper Copyright © 2016, NTT Software Corporation. 104 // 上記IMEをインストールした状態で実行する。 // 「&」が含まれていないASCII文字の入力は今まで通り UiObject editText = uiDevice.findObject(...); editText.setText("Thank you"); // それ以外の文字を入力する時はUtf7ImeHelper.e()で文字列をラップする editText.setText(Utf7ImeHelper.e("ありがとう"));
51.
【UI Automator】演習2-4 UI Automatorを使って、以下のテストシナリオを 実現してください。 1つめのEditTextに「5」を入力する 2つめのEditTextに「8」に入力する 「この画面に表示」ボタンをクリックする 「結果:」の右「13」と表示されることを確認する テストクラス名:
UiautomatorTest UiObject2系のAPIを使ってください リソースIDの文字列表現はuiautomatorviewerで 調べましょう 105Copyright © 2016, NTT Software Corporation.
52.
106 Appium Copyright © 2016,
NTT Software Corporation.
53.
【Appium】概要 Copyright © 2016,
NTT Software Corporation. 107 End2End UIテストフレームワーク Android 2.3.3以上/iOS 6.0以上両対応 別アプリにまたがったテストができる Selenium WebDriverと同様にテストが書ける URL: http://appium.io/ Apache License 2.0 https://github.com/appium よりロゴを引用
54.
【Appium】アーキテクチャ Copyright © 2016,
NTT Software Corporation. 108 http://www.atmarkit.co.jp/ait/articles/1504/27/news025.html より引用 Appiumサーバ: クライアント-テスト対象端末間のプロ キシとして動作 テストスクリプトのプログラム言語は色々選べる
55.
【Appium】おすすめポイント Selenium WebDriver経験者にとって学習コストが低い テストスクリプトの言語を選べる Ruby, Python,
Java, ... ネイティブ・WebViewどちらもテスト可能 Android・iOS両方とも同じようなコードでテストが書ける 簡単にインストールできるGUI版が配布されている (Mac/Windows) 109Copyright © 2016, NTT Software Corporation.
56.
【Appium】注意点 アーキテクチャの性質上、実行速度が遅い 公式ドキュメントが最新化されていない・少ない Appium 1.3.4向けの日本語解説記事あり @IT「SeleniumのUIテスト自動化をiOS/Androidにもたらす Appiumの基礎知識とインストール方法、基本的な使い方」 http://www.atmarkit.co.jp/ait/articles/1504/27/news025.html テスト対象アプリのAndroidバージョンや、WebView利 用有無によって、テストスクリプトの書き方が変化する 書きはじめる前に確認が必要 Copyright ©
2016, NTT Software Corporation. 110
57.
【Appium】Appium Desktop Appのインストール Appium
ServerのGUI版 ダウンロードページ https://bitbucket.org/appium/appium.app/downloads/ インストーラを実行するだけでOK Android開発環境と同一PCにインストールすること 動作に必要なソフトウェア .NET Framework 4.5再配布可能パッケージ (Windowsのみ) JDK7以上 Android SDK Copyright © 2016, NTT Software Corporation. 111
58.
【Appium】テストプロジェクトのセットアップ (Androidではない)通常のJavaプロジェクト EclipseやIntelliJ IDEAなどで。 build.gradle 112 apply plugin:
'java' // JavaソースコードのエンコーディングをUTF-8とする。 def defaultEncoding = 'UTF-8' tasks.withType(AbstractCompile).each { it.options.encoding = defaultEncoding } repositories { mavenCentral() } dependencies { // Appiumクライアントライブラリを利用するための宣言 testCompile 'io.appium:java-client:3.4.0' testCompile 'junit:junit:4.12' } Copyright © 2016, NTT Software Corporation.
59.
【Appium】テストコードの書き方: setup AndroidDriverを初期化する そのためにDesired Capabilityの指定が必要 113 public
class AppiumTest { private AndroidDriver<MobileElement> mDriver; @Before public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); ... mDriver = new AndroidDriver<>( new URL("http://localhost:4723/wd/hub"), capabilities); } Copyright © 2016, NTT Software Corporation.
60.
【Appium】テストコードの書き方: tear down AndroidDriverを終了する 114 ... @After public
void tearDown() throws Exception { mDriver.quit(); } } Copyright © 2016, NTT Software Corporation.
61.
【Appium】テストコードの書き方: Desired Capabilities テストが実行されるAppiumサーバの性質・機能を表す 詳細は http://www.atmarkit.co.jp/ait/articles/1506/02/news017.html#021 参照 Copyright
© 2016, NTT Software Corporation. 115
62.
【Appium】テスト用APIの紹介: 概要 基本形 Copyright ©
2016, NTT Software Corporation. 116 WebElement elem = mDriver.findElement(<検索条件>); elem.<操作> 検索条件(Byクラス・MobileByクラス) http://www.atmarkit.co.jp/ait/articles/1506/02/news017_2.html#031 操作(WebElementクラスのメソッド) http://www.atmarkit.co.jp/ait/articles/1506/02/news017_2.html#034 状態取得(WebElementクラスのメソッド) http://www.atmarkit.co.jp/ait/articles/1506/02/news017_2.html#035
63.
【Appium】テスト用APIの紹介: 記述例 解説記事のサンプルプログラム https://goo.gl/chfSjz
参照 Appium最新版に対応するために以下の修正が必要 依存ライブラリバージョンの最新化(p.112参照) AndroidDriverをAndroidDriver<MobileElement>に MobileCapabilityTypeをAndroidMobileCapabilityTypeに ChromeDriver関係のエラーが発生する場合 以下から古い(現時点でv2.20)chromedriverをダウンロード、展開 https://goo.gl/0lVlTE 展開した実行ファイルのフルパスを、Appiumの 「Chromedriver Path」に入力 Copyright © 2016, NTT Software Corporation. 117
64.
https://www.ntts.co.jp/products/soft_dojyo/index.html
Download