Categories: 勉強会

アプリ周りのテストのtipsを共有するtestotips.ioにいってきたメモ

テストやテストツールに関するTipsを共有する勉強会にいってきたのでその時のメモです。

今回の会場は恵比寿ガーデンプレイス12Fにあるcookpad様の会場です。

わりかしデモの時間が多かったためあまりメモはのこってないですが・・・\(^o^)/

実際に試してみるしか無いですw

testotips.io

  • 今流行のioをつけたら塩味になったという語源(てすとちっぷ塩)
  • テスト/テストツールに関してTipsを持ち寄って情報を共有するという場
  • web/mobileの話をやっていく予定だが今後どうなるかは未定

Introduce Appium

@Kazu_cocoa

  • Appiumはテストのオートメーションのフレームワーク
    • iosとandroidを対象としていて、WebDriver protocolを使っている
  • appiumサーバが実機やシミュレータなどの端末をiosだったらinstrumentsを通して動かし、androidはUIAutomatorを通して操作したりする
  • 通常のテストフロー
    • unit test -> Integration Test -> GUI Test Feature Test
    • appiumは最後のGUI Test Feature Testをカバーするテスト
  • appiumはノードで動きます
    • $ npm install appium
    • node_module/.bin
      • appium.js これが肝
      • appium-doctor.js 環境が整っているかどうか
  • Capabilities
    • OS, デバイス名、アプリパス、bundleID、カレンダーフォーマット、システム言語を設定したりとか出来る
  • 一つのマシンに対していくつも並列でappiumはテストすることができる。
    • iosはOSの制限で1つまでしかテストできない
    • androidは無限
  • one more tip
    • DroidDriver
    • Integration testをこいつでできるのではないか。
    • cf : DROIDDRIVERなるものがあると知った
    • espressoの速さでアニメーションを描画しつつも、appiumみたいなことを実施できるのではないか

Appiumのテスト結果レポートをSahaginで作ってみる

伊藤望様(TRIDENT)

  • Appium
    • Seleniumと同じようなコマンド体系でうてる
    • エミュでも実機でも動ける
    • ブラウザ & ハイブリッド & ネイティブで動く!
    • javascriptで書かれてるので、バグがあってもなおしやすい

Sahagin

  • Selenium WebDriverテスト結果のHTMLレポート
  • できること1
    • Seleniumのテストスクリプトからレポート生成できます
    • テストごとにスクショをとってくれる
    • テストコードの内容も見られる
    • SeleniumのコマンドやAssertコマンドを自動的に日本語に変換
  • できること2
    • 自分で定義した独自メソッドも日本語化できる
    • @TestDoc(“名前に[{name]をセットする”)みたいなアノテーションをつけるとレポートが生成されるようになる
    • メソッドの中身を階層表示できる
  • 想定している使い方
    • Seleniumテストの内容を上司、お客様、興味ない人にアピールできる
    • 他人が作成したテスト内容が把握しやすい
      • テスト失敗時のエラー調査が効率的になる

Appium + Sahagin

  • sahaginプラグインがjenkinsにあります
    • テストの前後にappiumの起動+終了をする

その他モバイルテストツール

  • ios-driver
    • xcode6に未対応
    • xcode5もsnapshot版でしか対応してない
  • Robotium, Espresso
    • JUnitランナー起動時にJVMに引数を渡せない(多分)

はまったこと

  • Androidエミュレータ上のブラウザで画面キャプチャがとれずに苦戦
    • chromeDriverの問題っぽい
  • Xcode6.2でシミュレータのSafariが動かない
    • ウェブサイトのHTTP接続はできない
    • 下位バージョンのシミュレータが動かせない
  • 画面キャプチャ取得が遅い
  • Jenkinsをルートユーザで起動していると、appiumサーバを起動するときにエラーになる

Appiumのphpクライアントを使う上での工夫

髙橋義典様

  • 全社で使ってるわけじゃないが試しで使っている所
  • はじめに
    • やりたいことは、アプリの品質向上とより高頻度でのリリース
    • クラッシュを削減する方法の必要性
    • 自動化と結果の見える化
  • テストシナリオの実装について
    • phpは弊社内で一番使われていたので導入しやすさがあった
    • 足りない機能は自分で実装
  • プログラム構成としてはAppium PHP Clientを継承して新たにHelperを作った
  • 自作PHPクライアントで一番の課題
    • Testメソッドごとにアプリをインストールする現象があった
      • Appium PHP Clientのコンストラクタでインストールしていた
  • 自作PHPクライアントに追加した機能
    • Sleep使わないために、Elementの存在チェックを追加
      • リトライの制限時間の制御をいれた
    • 標準のswipeは座標を指定してswipeさせたりする問題があったので、エレメント指定してswipeできるように追加
      • ある要素が登場するまでswipeとかできます
    • レポートを作成するためにSSの生成、レポートの自動生成機能を追加
  • アプリテスト自動化の現状
    • androidでやってみているが、ID指定(4.3以上)しやすく、並列実行ができる
    • WebViewへの切り替えも実用的に動いている。(Webでログインしてアプリに戻ったりなど)
    • UI操作のスモークテスト的な位置づけでAppiumを利用している
    • UIの細かい機能はespressoでやる

Appium: iPhone safari Chromedriver : Android Chrome

HC_asagi様

  • Selenium Grid Serverから、iosはAppium, Android はChromeDriverを使ってテストしている
    • エクセルでテストステップを書くとテストケースが作れるものを使っている
  • Appium, ChromeDriverを立ち上げ別のPCからテストを行う
  • configなどもエクセルで作っていく
  • 普通のテスターの方でも、HTML、CSSの読み方などがわかればテストが作れる
    • seleniumのIDEで記録したエレメントを抜くでもいいかもしれない

Running appium tests on Jenkins

@vbanthia

  • appium-jenkins-demoのアプリでjenkinsから動かすデモ
  • ScreenshotEmbedHtmlFormatterを使うとセミオートテストができる

所感

UIテスト周りは実装にも時間がかかるし、仕様変更でたびたび画面がかわったりするところだと制作コストが高い。

今回エクセルでテストケースかいて、それがそのままテストケースになるものを紹介していたが、それだったらエンジニアじゃなくてもかけるし、プロデューサーとかに書いてもらって運用するようにすれば、わりかしいい感じに運用できるのかも・・・?

でもあのエクセルのやつ結局なんてやつだったんだろう・・・

謎のシステム。。。非公開の自作かな?

誰か知ってたらご一報貰えると幸いです。

mogmet

View Comments