---
title: 快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
tags:  #stac2017  
author: [Yahoo!デベロッパーネットワーク](https://www.docswell.com/user/ydnjp)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/8JDWWLM5EG.jpg?width=480
description: システムテスト自動化カンファレンス2017 ( https://testautomationresearch.connpass.com/event/50928/ ) での発表資料です。
published: April 20, 17
canonical: https://www.docswell.com/s/ydnjp/ZN2MW5-2017-04-20-123002
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/8JDWWLM5EG.jpg)

快適・簡単・安心な
アプリE2Eテストの実行環境
2017/03/19
西島 寛
1
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 2

![Page Image](https://bcdn.docswell.com/page/VEP992RD78.jpg)

自己紹介
西島 寛
•
•
•
2
Co p yrig ht © 2 0 1 7
2010年ヤフージャパン入
社
E2Eテスト基盤開発エンジ
ニア
これまではGYAO、トップ
ページ、検索プラットフォー
ムなどで開発を担当
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 3

![Page Image](https://bcdn.docswell.com/page/27VMMDRG7Q.jpg)

取り上げる話題
• アプリ E2E テスト実行環境の話
3
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 4

![Page Image](https://bcdn.docswell.com/page/5JGGGY6DJL.jpg)

取り上げない話題
• E2E テストの作り方については触れません！
4
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 5

![Page Image](https://bcdn.docswell.com/page/47QXXM4XJP.jpg)

アジェンダ
•
•
•
•
•
•
•
5
ヤフーのアプリ開発について
アプリE2Eテスト実行環境 Applicat の紹介
開発の背景
自社で作ると決めるまで
Appium をスケールさせるための工夫
安定したテスト実行のための工夫
他にも...
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 6

![Page Image](https://bcdn.docswell.com/page/KE466VQ2J1.jpg)

ヤフーのアプリ開発
について
0 1 7 Yahoo
Yaho o Japan
Jap anCorporation.
Co rp o ratio n.AllAll
Rig hts
Reserved .
Co
p yrig ht ©
Copyright
Rights
Reserved.
© 22017


# Page. 7

![Page Image](https://bcdn.docswell.com/page/L71VV3PKJG.jpg)

ヤフー・ジャパンのアプリ
提供アプリ数
100 以上
7
※出典：Yahoo! JAPAN Annual Report 2016
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 8

![Page Image](https://bcdn.docswell.com/page/G7WLLP2PJ2.jpg)

ヤフー・ジャパンのアプリ
累計ダウンロード数
3億8000万
以上
8
※2016年3月末時点
※出典：App Annie 2015年アプリ市場総括レポート
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4JZMMKD673.jpg)

開発体制
開発・運営のメンバーは2000名以上
サービスごとにチームが分離
開発フロー・テストなど多くが権限移譲
9
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 10

![Page Image](https://bcdn.docswell.com/page/YE6NNQ1LEV.jpg)

アプリの開発・テスト環境
開発
Gitに
コミット
Co p yrig ht © 2 0 1 7
CI上で単体
テスト
&amp;ビルド
社内アプリ
配布サイト
にデプロイ
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
ダウンロード
して手動テ
スト


# Page. 11

![Page Image](https://bcdn.docswell.com/page/GE555R4ME4.jpg)

アプリE2Eテスト
実行環境
0 1 7 Yahoo
Yaho o Japan
Jap anCorporation.
Co rp o ratio n.AllAll
Rig hts
Reserved .
Co
p yrig ht ©
Copyright
Rights
Reserved.
© 22017


# Page. 12

![Page Image](https://bcdn.docswell.com/page/972NNDVRJR.jpg)

E2Eテスト実行環境 Applicat
E2Eテスト
開発
GITに
コミット
Co p yrig ht © 2 0 1 7
CI上で単体
テスト
&amp;ビルド
社内アプリ
配布サイト
にデプロイ
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
ダウンロード
して手動テ
スト


# Page. 13

![Page Image](https://bcdn.docswell.com/page/DJYPP235JM.jpg)

開発の背景
0 1 7 Yahoo
Yaho o Japan
Jap anCorporation.
Co rp o ratio n.AllAll
Rig hts
Reserved .
Co
p yrig ht ©
Copyright
Rights
Reserved.
© 22017


# Page. 14

![Page Image](https://bcdn.docswell.com/page/V7N558V4E8.jpg)

サービス開発の声
以前からサービスによってはアプリE2Eテス
ト自動化は取り組んでいた
テストケースの維持が大
変
手動実行じゃなくて
CI連携したい！
iOS では Mac が必要だけど
置く場所がない！
動かす環境によって
結果が安定しない！
複数端末で
並列実行したい！
14
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 15

![Page Image](https://bcdn.docswell.com/page/YJ9YYK6473.jpg)

課題
「アプリE2Eテストの実行環境」の整備は大変
• テスト対象のアプリのビルド
ビルド環境構築が大変
ビルド失敗でテスト失敗に
• テスト実行端末の起動・初期化
初期化が大変
毎回同じ環境を作れない
• テストスクリプトを実行
並列実行が難しい
• 結果を保存
• PJ関係者に周知
手作業だと忘れる
仕組みをつくるのも大変
ビルド
端末準備
テスト実行
結果保存や
共有
15
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GJ866RZVED.jpg)

気づき
• アプリのE2Eテストの実行環境整備は
サービスの開発と両立しない
• 実行環境は全社共通で整備したほうがよ
い
16
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 17

![Page Image](https://bcdn.docswell.com/page/LJL99KDR7R.jpg)

開発の方針
• ヤフーの規模で快適に使える
• 簡単にCIツールと連携できる
• 安心してテスト実行ができる
17
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 18

![Page Image](https://bcdn.docswell.com/page/47MZZ2PPJW.jpg)

Applicat の特徴
• テストフレームワークに Appium を採用
• 複数の端末で並列実行が可能
• テスト実行の前後の処理を工夫し、テストの
実行を安定化
• 昨年9月から運用開始し、現在およそ200件/
日のテストを実行
18
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 19

![Page Image](https://bcdn.docswell.com/page/P7R66M1YE9.jpg)

自社開発すると
決めるまで
0 1 7 Yahoo
Yaho o Japan
Jap anCorporation.
Co rp o ratio n.AllAll
Rig hts
Reserved .
Co
p yrig ht ©
Copyright
Rights
Reserved.
© 22017


# Page. 20

![Page Image](https://bcdn.docswell.com/page/PJXMMVY4EX.jpg)

クラウドサービスの利用検討
• Sauce Labs
• AWS Device Farm
• Xamarin Test Cloud
• …
20
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 21

![Page Image](https://bcdn.docswell.com/page/3JKGGQ3P7D.jpg)

クラウドサービスの利用検討
メリット
デメリット
結果が安定
リリース前のアプリの外部公
開になる
スケールする
自社開発することに
社内ネットワーク上の開発用
APIを使ったテストができない
導入までのスピード
21
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 22

![Page Image](https://bcdn.docswell.com/page/LE3NNPG4E5.jpg)

フレームワークの選定
Appium
OS 標準
(Espresso/
XCUITest)
テスト記述言語
仕様の安定性
動作の安定性
実績
主要言語
◎
○
◎
◎
◎
XCUITest △
Java/Swift
？
Espresso
仕様の安定性と実績から Appium を採用
22
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 23

![Page Image](https://bcdn.docswell.com/page/8EDWWL157G.jpg)

Appiumでのテストを
スケールさせる
0 1 7 Yahoo
Yaho o Japan
Jap anCorporation.
Co rp o ratio n.AllAll
Rig hts
Reserved .
Co
p yrig ht ©
Copyright
Rights
Reserved.
© 22017


# Page. 24

![Page Image](https://bcdn.docswell.com/page/V7P992QDJ8.jpg)

Appium とは
UIAutomator
UI Automation
XCUITest
HTTP
Appium
テスト実行
iOS /
Android
端末の排他制御・実行待ち・冗長構成
がスケールさせるために足りない
24
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 25

![Page Image](https://bcdn.docswell.com/page/2JVMMD5GJQ.jpg)

Appium をスケールアウトさせるOSS
• Selenium Grid
•
•
複数の Appium へのアクセスを振り分けるロードバ
ランサー的なもの
Selenium Project が開発
• Selenium Grid Router
•
•
25
複数の Selenium Grid へのアクセスを振り分ける
ロードバランサー的なもの
ロシアの Yandex が開発
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 26

![Page Image](https://bcdn.docswell.com/page/5EGGGYPDEL.jpg)

Grid Router – Grid - Appium
Selenium
Grid
HTTP
Grid Router
Selenium
Grid
テスト実行
26
写真:アフロ
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Appium
Appium
Appium


# Page. 27

![Page Image](https://bcdn.docswell.com/page/4JQXXM2XEP.jpg)

Grid Router – Grid - Appium
Selenium
Grid
HTTP
Grid Router
Selenium
Grid
テスト実行
27
写真:アフロ
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Appium
Appium
Appium


# Page. 28

![Page Image](https://bcdn.docswell.com/page/K7466VL2E1.jpg)

Grid Router – Grid - Appium
Selenium
Grid
HTTP
Grid Router
Selenium
Grid
テスト実行
28
写真:アフロ
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Appium
Appium
Appium


# Page. 29

![Page Image](https://bcdn.docswell.com/page/LJ1VV3LKEG.jpg)

Grid Router – Grid - Appium
Selenium
Grid
HTTP
Grid Router
Selenium
Grid
テスト実行
29
写真:アフロ
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
Appium
Appium
Appium


# Page. 30

![Page Image](https://bcdn.docswell.com/page/GJWLLPVPE2.jpg)

Grid Router – Grid - Appium
Selenium
Grid
単一障害点
HTTP
Grid Router
Appium
Appium
フルスクラッチで開発することに
Selenium
Grid
テスト実行
Appium
Grid / Grid Router では大規模な運用は難しい
30
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 31

![Page Image](https://bcdn.docswell.com/page/4EZMMK46J3.jpg)

開発したテスト実行環境
テスト実行キュー
クラスタ
Appium / テスト実行
ワーカー
31
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 32

![Page Image](https://bcdn.docswell.com/page/Y76NNQ3L7V.jpg)

テスト実行キュー
• テスト実行を Work Queue で管理
• 並列実行
• Worker を増やすことでスケールアウト可能に
• 「Android 7 の実機のどれか」といった曖昧な
形でキューに登録
• 少ない端末でやりくり
32
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 33

![Page Image](https://bcdn.docswell.com/page/G7555RLM74.jpg)

整備した環境
Upload
app
add
CIツール
• Android 6.0 実機
リポジトリ
アプリ配布
• サイト
Android 7.0Git実機
テスト結果ページ
Fetch
test code
• Android
7.0
エミュレーター
Fetch app
でテストconsume
テスト実行キュー
社内チャットに
結果通知
Appium / テスト実行
ワーカー
33
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 34

![Page Image](https://bcdn.docswell.com/page/9J2NNDLRER.jpg)

整備した環境
•
•
•
•
•
34
Git リポジトリ
アプリ配布
サイト
使用端末確保
Upload
app
端末初期化
Appiumadd起動
CIツール
テスト実行テスト実行キュー
結果レポート作成
Fetch app
テスト結果ページ
Fetch test code
consume
Co p yrig ht © 2 0 1 7
社内チャットに
結果通知
Appium / テスト実行
ワーカー
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 35

![Page Image](https://bcdn.docswell.com/page/DEYPP2Q5EM.jpg)

整備した環境
Git リポジトリ
アプリ配布
サイト
Upload
app
Fetch app
テスト結果ページ
Fetch test code
テストがおわった
add
CIツール
consume
テスト実行キュー
社内チャットに
結果通知
Appium / テスト実行
ワーカー
35
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 36

![Page Image](https://bcdn.docswell.com/page/VJN558K478.jpg)

安定したテスト実行のた
めの工夫
0 1 7 Yahoo
Yaho o Japan
Jap anCorporation.
Co rp o ratio n.AllAll
Rig hts
Reserved .
Co
p yrig ht ©
Copyright
Rights
Reserved.
© 22017


# Page. 37

![Page Image](https://bcdn.docswell.com/page/YE9YYKV4J3.jpg)

ビルド
• 社内標準のCIツー
ル上でビルドされた
バイナリでテストを
実行
社内アプリ配信サ
イト
Applicat
37
テスター
Co p yrig ht © 2 0 1 7
• iOS は再署名をして
テスト実施
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 38

![Page Image](https://bcdn.docswell.com/page/GE866RPV7D.jpg)

iOS アプリを再署名
Provisioning
Profile / entitlements
アプリの実行
ファイル
証明書
開発元: ヤフー
テスト実行: 不可
38
写真:アフロ
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 39

![Page Image](https://bcdn.docswell.com/page/LEL99K1RJR.jpg)

iOS アプリを再署名
Provisioning
Profile / entitlements
アプリの実行
ファイル
証明書
開発元: Applicat
テスト実行: 可
• 再署名には fastlane の sigh を利用
39
写真:アフロ
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 40

![Page Image](https://bcdn.docswell.com/page/4JMZZ2WPEW.jpg)

実行前処理：端末初期化
• 初期化ができていないとテスト結果がぶれる
• 実機のリセットは難しい
•
Android
• 他アプリの Shared Preference
• 他アプリをすべて削除すれば OK
• iOS
• Key Chain
• アプリからしか消せない
40
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 41

![Page Image](https://bcdn.docswell.com/page/PJR66MYY79.jpg)

実行前準備
iOS のテスト前初期化用
アプリを用意
テスト実行前にKey Chain
を削除
41
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 42

![Page Image](https://bcdn.docswell.com/page/PEXMMVG47X.jpg)

リトライ機能
• テスト失敗時、同条件の別端末で再実行
するリトライ機能
• テストが失敗したとき、テストケース自体
の問題でなく環境起因で失敗していること
もあるため
42
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 43

![Page Image](https://bcdn.docswell.com/page/3EKGGQ4PJD.jpg)

デバイス監視
• 実機との接続が切れることがある
• 定期的にコマンドでデバイスの接続を確
認し、接続がなくなった場合アラートを投
げる
43
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 44

![Page Image](https://bcdn.docswell.com/page/L73NNPL475.jpg)

安定して実行されるように
44
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 45

![Page Image](https://bcdn.docswell.com/page/87DWWLN5JG.jpg)

他にも…
0 1 7 Yahoo
Yaho o Japan
Jap anCorporation.
Co rp o ratio n.AllAll
Rig hts
Reserved .
Co
p yrig ht ©
Copyright
Rights
Reserved.
© 22017


# Page. 46

![Page Image](https://bcdn.docswell.com/page/VJP9925DE8.jpg)

ライブラリの提供
• 全社で共通に使う処理をライブラリ化
• Yahoo! JAPAN IDのログイン機能
• ネットワーク設定機能 (hosts)
46
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 47

![Page Image](https://bcdn.docswell.com/page/2EVMMDPGEQ.jpg)

ログイン機能
• ログイン機能はほとんどのアプリで実装
• テストケースにアノテーションをつけるだけでログイ
ン状態にできる
@YJLogin(&quot;Yahoo_Japan_ID&quot;)
@Test
public void ログイン状態でのトップ画面表示を確認() {
47
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 48

![Page Image](https://bcdn.docswell.com/page/57GGGYQD7L.jpg)

ネットワーク設定機能
• 設定ファイルを置くことで、WebAPIリクエストの宛先
を開発環境のものに変更
• /etc/hosts の書き換えのようなもの
• 実機/エミュレーターそれぞれにフォワードプロキ
シーを割り当てて実現
48
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 49

![Page Image](https://bcdn.docswell.com/page/4EQXXMKX7P.jpg)

フレームワークの整備
• テストの書き方のサポート
• ドキュメントの整備
• PageObject パターンでテストがかけるフレーム
ワークの提供
• 適度なタイミングで画面遷移待ち
49
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 50

![Page Image](https://bcdn.docswell.com/page/KJ466VP271.jpg)

Appium への貢献 (すこし)
マージされました
50
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 51

![Page Image](https://bcdn.docswell.com/page/LE1VV39K7G.jpg)

まとめ
0 1 7 Yahoo
Yaho o Japan
Jap anCorporation.
Co rp o ratio n.AllAll
Rig hts
Reserved .
Co
p yrig ht ©
Copyright
Rights
Reserved.
© 22017


# Page. 52

![Page Image](https://bcdn.docswell.com/page/GEWLLPQP72.jpg)

まとめ
簡単
「アプリE2Eテストの実行環境」の整備は大変
• テスト対象のアプリのビルド
全社のCIツールでビルドしてテ
ビルド環境構築が大変
スト！
ビルド失敗でテスト失敗に
• テスト実行端末の起動・初期化
初期化が大変
シミュレーターだけでなく実機
毎回同じ環境を作れない
でも毎回同じ環境！
• テストスクリプトを実行
気にしないでも並列実行！
並列実行が難しい
リトライもしてくれる
• 結果を保存
• PJ関係者に周知
デフォルトで保存！
手作業だと忘れる
通知も設定するだけ
仕組みをつくるのも大変
ビルド
端末準備
テスト実行
結果保存や
共有
52
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 53

![Page Image](https://bcdn.docswell.com/page/47ZMMKW6E3.jpg)

最後に
アプリのE2Eテストを実行しやすい環境は整
えられた
でも、まだまだこれから、、
ヤフーでは開発環境の整備に興味があるエ
ンジニアも募集しています！
53
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 54

![Page Image](https://bcdn.docswell.com/page/YJ6NNQGLJV.jpg)

おわり
0 1 7 Yahoo
Yaho o Japan
Jap anCorporation.
Co rp o ratio n.AllAll
Rig hts
Reserved .
Co
p yrig ht ©
Copyright
Rights
Reserved.
© 22017


