Submit Search
20141018 selenium appium_cookpad
•
26 likes
•
20,561 views
Kazuaki Matsuo
Follow
第2回 日本Seleniumユーザーコミュニティ勉強会の資料です。
Read less
Read more
1 of 55
Download now
Downloaded 38 times
More Related Content
20141018 selenium appium_cookpad
1.
クックパッドアプリの開発を支援する Appiumの話し 2014/10/18
第2回 日本Seleniumユーザーコミュニティ勉強
2.
私 • 松尾和昭
• テストエンジニア at Cookpad • Twitter: @Kazu_cocoa ! • 関連 • JaSST’14 Hokkaido • 『モバイルアプリ開発体制の継続的改善』
5.
Appium
6.
第1回日本Seleniumユーザーコミュニティ勉強会 http://www.slideshare.net/hugs/selenium-appium
8.
Web Page: http://appium.io/
GitHub: https://github.com/appium/appium
9.
参照: http://www.3pillarglobal.com/insights/appium-a-cross-browser-mobile-automation-tool
10.
UIAutomation uiautomator (API
16 (Android 4.1) or higher)
11.
Philosophy
13.
MVCなどで切り分けて テストしにくい
14.
描画要素をテスト SDK +
専用ビルド
15.
「SDK+専用ビルド」は リリースされない
16.
SDK+専用ビルド + リリースビルド
17.
リリースビルド + Appium
18.
リリースモジュールを テストする
20.
自分たちの開発環境に、 Appiumを統合する
22.
Ruby + RSpec
+ Turnip ImageMagick or perceptualdiff Selenium Grid ! 目的に見合ったツール群の組み合わせ
23.
よいとこ ! よくはない
24.
よいとこ • リリースビルドをテスト可能
• 多彩なツールの組み合わせ • Appiumはあくまでもアプリ操作 • 黒魔術を使わないのでOSの変化に追従しやすそう
25.
よくはない • 実例がない
• 実行に時間がかかる • 工夫が必要 • 誰もがAppiumを使える環境の構築が手間 • 社内に広げるきっかけの妨げ
26.
Cookpadにおける活用事例
27.
私の今の立ち位置 • テストエンジニア
• Android / iOS アプリ • 開発行程の改善 • テストに関わる社内への情報伝搬
28.
iOS クックパッドアプリ •
ネイティブアプリ • UIの修正が頻繁 • 修正規模の大小はあるが • 約2週間毎のAppStoreへのサブミット • 実装は数人のチーム
29.
テストレベル Web API
30.
リリース工程 企画期間開発期間 検証期間
master branch release branch
31.
Appiumを使うタイミング
32.
企画期間開発期間 master branch
検証期間 release branch
33.
主な確認対象 • 画面遷移
• レイアウト崩れ
34.
テストケース数と時間 • テストケース数
• 100ケース/1capability • Capability • 2 ~ 3 種類 • 1種類にかかる時間 • 1時間 今の開発周期ではこの時 間で十分なので、これ以上は 頑張っていない
35.
工夫
36.
変化への追従
37.
• 使い始めた当初は、Appium 1.0.0
よりも前 • 修正が入る可能性が大いにある • 実行シナリオは変更したくない • テストケースの変更にのみ依存するようにしたい • 具体的な実装からは切り離したい
38.
責務の分離 シナリオ .feature
実装コード *_steps.rb ラッパー .rb appium_lib Appium シナリオ変更の吸収Appium
39.
役割 シナリオ .feature
実装コード *_steps.rb ラッパー .rb appium_lib Appium シナリオ変更の吸収Appium シナリオの修正に のみ追従したいAppium側の修正を、 シナリオから分離したい Appium側の 修正に依存
40.
$ rspec
41.
login.feature hs| |_YMcWRdCG= ||Z^bTQS]aRd
||_YMEOFOeKNQUSd]IcWRdDNAJ?I@N ||||pr|%5*$|ImiPj |||||421!23342|_YIcWRdDN |||||fxL|70$3%|?toBOH=N |||||[VbdZ`]P|2$1.2)/3|J=wpIkN ! ||{ ||||:|%5*$|||:|421!23342||:|||70$3%|||||:|2$1.2)/3|: ||||:|*0)/.|:|X[]|||||:|gqDNun|:|$0341 |: ||||:|*0)/.|:|vz|||||||:|gqDNun|:|$0341|: ||||:|*0)/.|:|yz|||||||:|gqDNun|:|$0341
42.
|:
43.
login_steps.rb -/%4,|2302 ||230|lM|$$/4.3|J|022|IcWRdDN|%/|:$$/4.3|022:
||||,-.32||373'*,%2 ||||,-.32 2.%!+82|$$/4.3 ||||,-.32 2.%!+82|022 ||||#433/.cWRd$,*$+ ||.% ! ||230|lM|421|_YIcWRdDN|%/|:421: ||||*'|421||vz ||||||$$/4.3||!! ||||||022||!! ||||,2*'|421||yz ||||||$$/4.3||!! ||||||022||!! ||||,2 ||||||$$/4.3|| ||||||022|| ||||.% ||||2.%|lM|$$/4.3|J|022|IcWRdDN|$$/4.3|022 ||.% ! ||230|[VbdZ`]P|'*,.-|J=wpIkN|%/|:'*,.-: ||||25!2$1.!6*3)! !2'*,.- ||.% ! ||230|fxL|.-|?toBOH=N|%/|:.-: ||||2,0| ||||70$3|6*3|9|'*.%!,-.3$$22*#*,*38!*%|.-|;%*20,8%|3/|#|314 ||.% .%
44.
薄いラッパー層 -/%4,|00*4-2341 |||'*.%|,-.3|6*3)|$$22*#*,*38!*%|2313(8
||%'|30!.-,-.3!.- ||||2,0| ||||'*.%!,-.3$$22*#*,*38!*%|,-.3!.-$,*$+ ||.% ! |||'*.%|,-.3|6*3)|703)|2313(8 ||%'|30!703),-.3!703) ||||2,0| ||||'*.%!,-.3703)|,-.3!703)$,*$+ ||.% ! ||%'|30!373373!.- ||||2,0| ||||373373!.-$,*$+ ||.% .%
45.
Ruby コード JavaScript
46.
どんなテストをAppiumに 任せるか
47.
機械が実行可能なタスクは 機械に任せる
48.
人が忘れがちなシナリオは 機械に任せる
49.
シナリオの統合/作り替え
50.
• アカウントの状態に依存しない処理はアカウントの 各状態ではシナリオを用意しない
• 複数の操作を1つのシナリオで内包できる場合、内 包させ、テストケースを削減 • 他の手段(UIから確認しなくても良い方法に対応し たなど)が見つかったシナリオは削除、もしくは操 作を限定
51.
機械が実施していない領域を 探索的にテスト
52.
• 機能 •
状態が関係するような複雑性を増した手順 • 非機能 • ユーザビリティ • ISO 2941 • Context of use など
53.
これまでの成果 • 検証期間中のタスク内容の変化
• 致命的な不具合の検出(落ちバグ系) • Crashlytics/お問い合わせによるク ラッシュ系不具合、不具合報告が減少
54.
これからの課題 • Appiumを使っているところ
• iOS8対応 • Androidのシナリオ充実 • 社内への他アプリへの展開 • モバイルアプリの評価自体 • 評価体制のスケール
55.
まとめ • Appium
• Android / iOS (FireFox) • ツールの組み合わせ • よいとこ / よくないとこ • Cookpadでの活用事例
56.
Questions ?
Download