Appiumに手を出してみた
この記事は「Qiita Advent Calendar 2016 Android その2」の10日目の記事です。
自己紹介
私は、株式会社サイバーエージェント CA ProFit-X という広告プロダクトで、メディア様の収益を最大化することを目標にエンジニアをやってます。 CA ProFit-X は、モバイル向けネイティブ広告(主にインフィード広告)専業のSSP事業者なのです! また個人的には、今年から 日本Androidの会 の運営メンバーにも入ってたり。
お題
今回はテスト自動化を目標に、 Appium に手を出し始めた話しをしたいと思います。
Appiumって?
Appiumとは、iOSおよびAndroidプラットフォーム上で動く - ネイティブアプリ - モバイルウェブサービス - ハイブリッドアプリ 等を自動化するオープンソースのツールです。
- 作者: Manoj Hans,太田健一郎,児島修
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/11/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
なぜ必要に?
現在、広告配信タグ(モバイルウェブサービス用)のE2EテストにNightmareを使用しています。 しかし、 モバイルSafariでしか発生しない事象 (Mac Safariでも再現しない)にぶち当たり、実機(シミュレータ)を使用したE2Eテストの必要性が出てきました。 また、せっかくなら広告配信SDK(ネイティブアプリ用)のテストにも使っていきたいと思い。 そこで、SeleniumぽくてWebDriberの流れを組むやつをチームメンバーに紹介されたので試してみました。
GUI vs CUI
お試しくらいならGUIの方が分かりやすいかなと思い、今回はGUIで試しました。 結構、ハマった。。。 後から公式を読んでいて分かったのはGUIはバージョンが古く更新されてなかったので、Android/iOSの対応バージョンが古いのかも。
ウェブブラウザとネイティブアプリの起動
いちおう、両方ともやってみた。
環境準備
環境変数を定義する
GUIでAppium Doctorを立ち上げるbash
が起動するので、~/.bashrc
にJAVA_HOME
とANDROID_HOME
をかきました。
書かないとエラーが出て先に進めず・・・。
AVDで適当に用意する
実機より簡単かなと思い、適当に3端末分用意してみた。
Launch AVD
なぜかAVDで設定した3端末中2端末しか出てこない。意味分からん。
ウェブブラウザを起動してみる
Use Browser
なぜかChromeが起動できない。 Chromeがインストールされていない端末なら分かるけど、インストールされていても起動できない。 Browserならできた。意味分からん。
ブラウザ起動に失敗すると
手がかりすくな!
コンソールには・・・?
なるほど。ウェブブラウザ起動するだけなのに、アプリパスを指定しろと。なんでだよ!
たしかに置いていないので・・・
適当に置いた上でリトライすると・・・
キタ━━━━(゚∀゚)━━━━!!
ネイティブアプリを起動してみる
こんなかんじ。
広告配信SDKを開発する際のサンプルアプリが自動で起動した!!!
ここまでの感想
GUIでやる意味がなかた。GUIだとAppium上に画面が出てきてそこにフォーカスをあてると、どのようなviewかわかる(インスペクタ機能)ものの、CUIでよかた。 iOSは最初からCUIでお試しに入ろうと思う。
最後に
E2Eテストが充実するとリリース前の確認はもちろんですが、リリース後に大きなメリットがあると思っています。 例えば、僕たち広告配信側としては僕らの知らないところで発生しているメディア様の変更に、追従していけると他事業者様との競争にも優位になれそうな気がしています。 なので、ウェブサービス/ネイティブアプリ問わず、同じ仕組みで全てのテスト自動化の仕組みを構築していくことが重要かなと思っており、今後もE2Eテストを充実させていこうと思っています。
次は、 Selenium Grid をかけ合わせてみたい。
ABC2016Springにブースを出展してきました
こんにちは!
去年のAB2015Summerに引き続き、今年もVRネタを引っさげ、
ABC 2016 Springにブースを出展してきました!!
今年のポスターは社内のデザファクで作成して頂いたきました!
カラーはドロイド君を意識して、緑に。すげー、良いでき!!
ゼミ紹介もこれさえあれば、簡単です(笑)
今回、ゼミ活動と共に一緒に紹介したいのはこれ!
CA Profit-X のアプリチームで企画しているセミナーイベント。
今回は「メディアの効果的な画像の選び方」です。僕達が新たにつくった広告商品も紹介する予定です。
上記イベントは下記リンクから申し込めます!
キュレーションメディア運営あるあるが聞けるかも!?
さて、今回のABCの会場は青山学院大学(青山キャンパス)でした。
会社から荷物をもって直接行ったのですが、どこの校舎か迷う迷う・・・。
会場についたら、みんなで設営。
ポスターを貼り、チラシを準備し、ダンボールで作成した自作パネルを置き、ノベルティのGoogle CardBoard(簡易的なVR用のHMD)を組み立て。
今回のVRゲームは『GEARCLOPS』の展示は、Unity VR Expo Shibuyaにブースを出していたバッカム株式会社 の黒川社長のご協力のもと実現しました!
その黒川社長がイベント前日夜に、急ぎ描いた力作。
時間なくて、ぜんぶ手描きです。
今回のノベルティは後々、自分たちの手元に何かが残るように、名刺と交換とさせて頂きました。
それでも、30個が余裕でなくなる・・・。
日本Androidの会 理事 長谷川さんに、
「CAの小栗さんの力を借りたい」とノセられてしまい、急遽、学生部のアカデミックな発表の寸評役をやることに。
1人だと不安なのでメンバにも寸評をやってもらうなど。
うちの息子が大ハマリしていたウ◯コ。
ABC開催前に、実行委員長の石塚宏紀さんがオフィスに来てくださり、
今回のABCはいつもと違う、色んな人達とIoTの橋渡し・結びつきを作っていけるのは僕たちだけだ!と仰っていた通り、今回のABCは登壇される方と内容が、いつも以上に締まっていた気がします。
でも、やっぱりABC好きとしては、いつもどおりの混沌とした世界(ペッパーくんがウロウロして喋っていたり、床を何かのマシンが走っていたり、Android以外の人達がいたり、ウ◯コがいたり)。
今回も楽しかったです。
ABC 2016 Spring のスタッフ皆々様、ステキなイベントをありがとうございました!
JSON作成時に特定の機種のみでハマったこと
ざつだん1
長男の保育園卒園式で、ジバニャンのコスプレして、これを踊ることになりました。
【妖怪ウォッチ】ようかい体操第一 - YouTube
ほんだい
件名の内容をQiitaに投稿しました
JSON作成時に特定の機種のみでハマったこと - Qiita
ざつだん2
最近、この本が会社の本棚に追加されていたので読んでます。
珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造
- 作者: ジョンベントリー,Jon Bentley,小林健一郎
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/10
- メディア: 単行本
- 購入: 30人 クリック: 551回
- この商品を含むブログ (163件) を見る
Androidでインストール検知をしてみた
本題前にクリスマスネタ。
うちには保育園児の子供が二人いるのですが、
クリスマスプレゼントに何を買いました?
長男はこれ
- 出版社/メーカー: バンダイ
- 発売日: 2014/07/29
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
次男はこれ
トミカ ハイパーレスキュー ハイパーレスキュー グレートアンビュランス(初回スペシャルトミカつき)
- 出版社/メーカー: タカラトミー
- 発売日: 2014/10/18
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
次はお年玉に誕生日か。。。
Androidでインストール検知をしてみた
BroadcastReceiverを使って、インストール検知してみた。
Service & AIDLを復習してみた
- インストール検知したアプリをServiceでゴニョゴニョしたい
- 複数アプリで1つのServiceを使いまわしたい
Android - ServiceをAIDLを使って弄ぶ練習 - Qiita
と思って復習してみたんだけど、途中でIntentServiceの方がいいかなと思って、それがこれ。
結局、複数アプリから1つのServiceを起動するのはやめた。
BroadcastReceiverはインストール検知時に起動する。こいつはメインスレッドで動くけど、onReceiveの処理が終了したら終了してくれる。
BroadcastReceiverからIntentServiceを起動してゴニョゴニョする。IntentServiceはキューが全部終了したら、勝手に終了してくれるから、後片付けが楽。
Android - アプリが新規にインストールされたら、IntentServiceを呼んでログを吐く - Qiita
おしまい
Android Advent Calendar 2014
今週のお題「2014年のお別れ」〈2014年をふりかえる 3〉
今年のAdvent Calendar当番日も今日で最後になりました。
今回のネタ以外だと、僕が今よくわかってなくて、知りたい事と言えば、
AndroidでActivityを修正せずに、AOPみたいな感じでログを吐く処理を突っ込む仕組みをライブラリとして配布する。
そんなネタをやりたかったけど、良い方法が思いつきませんでした。
下記以外で、何か良い案があったら教えてください。
- Application#registerActivityLifecycleCallbacks
- コンパイル時に動的に突っ込む
というわけで、Advento Calendarのお題は↓にしました
広告 - ネイティブアドのすゝめ(Android) - Qiita
Android Studio 1.Xの起動時に「Java not found」?
Android Studioを起動した際に「Java not found」って出た時の対応について
Qiitaにまとめたので、みてやってください。
間違った対処をしないように、お互いに気をつけていきましょう。
AndroidStudio - Android Studio 1.Xの起動時に「Java not found」? - Qiita
保育園の出し物で、コスプレ?出し物を2つほど頼まれた。
- アナ雪か妖怪ウオッチのコスプレ
キャラクター着ぐるみ 妖怪ウォッチ コマさん着ぐるみ帽子 フリーサイズ BAN-014
- 出版社/メーカー: サザック
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
- パンストを被る
前者はママ友で、後者はパパ友。
絶対にスベるよねパンストって、受けたことないもん。
Android de Go !
#golang #android https://t.co/gyvLYuPfAv
— toguri (@neiraza) 2014, 12月 15
Go 1.4 でAndroidを公式サポートするって、随分前からあれこれ試している方は多かったわけですが、正式リリースされると反響はやっぱり大きいですね。
Go 1.4 is released - The Go Blog
今後、このシャツにドロイド君とのコラボシャツとかが出てくるんですかね?
- メディア: ウェア&シューズ
- この商品を含むブログを見る
僕はNDKとかサパーリなので環境構築に苦労するわけですが、しばらくは先人たちのリンクを集めながら、あれこれ試してみようと思ってます。
go.mobile を使った Android 開発のまとめ - Qiita
とか
golang - go.mobileを動かしてみた。 - Qiita
golangをサーバ側でガンガン使っている会社さんもあるので、
Mobileでも使えるようになると、幸せになれる人が増えそうですね。
おまけ
先日、保育園の家族個別行事で、普段の生活姿をこっそり覗くというやつなんですが、
子供の中に「しろくまちゃんのほっとけーきTシャツ」を着ている子がいて、
その場で妻とAmazonで探して購入してしまいました。
大人用を・・・。
しろくまちゃんのほっとけーきTシャツ 大人用 ≪限定カラー≫ (L,ミント)
- 出版社/メーカー: クワッド
- メディア: Baby Product
- この商品を含むブログを見る
これスカジャンの下に着てたらカッコよくないすかね。