SauceLabsを使ってAndroid/iOSの自動テストを外に出してみた

最近、いくつかCI環境のサービスを調べているのですが、どうせならモバイルアプリのテストも外サービスに出して、サービス開発に力を注げるような環境を構築できたらなと思いSauceLabsを使ってみました。

SauceLabsを使った理由としては、Appiumの開発に強く関わっているところだからなだけです。

良い点

  • 各々の操作時にスクリーンショットをSauceLab側でキャプチャしてくれるので、シナリオの中でどこでキャプチャをとるとかをいちいち考えなくてよい
    • この操作起因でAppium Serverが不安定になる懸念を除ける!
  • ビデオも撮ってくれる
    • 不具合発生時の再現画面をみることができる
  • 実行環境のメンテナンスを外に任せることができる
    • iOSもAndroidも同時実行できる環境を用意するのは結構面倒。
    • Appium + Seleniium Gridや、少し頑張れば自前でも分散環境作れるけれど
      • 自前で少し作ったことありますが、保守する所を外に出せるって、テストに集中できるのであり互いのですよね。
  • AppiumをOSSとして提供しているので、シナリオ自体の動作確認を手元でできる(料金体系の外でできる)のは良い

懸念点

  • Pricingの体系が、月々の価格によっている
    • E2Eのテストは多くの場合実行に時間がかかるので、優先度をつけての良い取捨選択を結構シビアにする必要がでてきそう
    • DailyやWeeklyというような間隔で実行する形でないと、例えばコミット毎とかは時間の縛り上無理そう

では、内容。
Androidに関しては、実際に試用したコードも載せてます。

“SauceLabsを使ってAndroid/iOSの自動テストを外に出してみた” の続きを読む

Appiumを使ってRSpecの記述とTurnipの記述とで、結局はどちらが受け入れとして使えそうか

比較的、ぱっと見て操作を想像できることが受け入れ試験では大事だと思います。
そう考えると、RSpecはshared_exampleなんかで操作をまとめることができるのですが、Turnip/Cucumber形式のシナリオアウトラインを使った方が綺麗にかけそう。

一方、capybaraのように、RSpecの拡張としてFeature specを使うこともできる形があります。なら、Appiumを使って同様に受け入れ試験の形を模倣するならば、CapybaraのFeature specを参考に類似した記述を模倣すれば、RSpecのみである程度読みやすい受け入れ試験もかけるかもと思い、以下をまとめてみた。

“Appiumを使ってRSpecの記述とTurnipの記述とで、結局はどちらが受け入れとして使えそうか” の続きを読む

TurnipでScenario Outline

Turnip+Appiumで使ってキーワード駆動のシナリオテストが実施できそうね
“Turnip or RSpec” x Appium
受け入れ試験レベルの抽象度のシナリオを、Appium x “RSpec or Turnip”で比較してみた
TurnipでAppiumを使ってみる

とAppiumとTurnipを使ってみたけれど、Turnipでscenario outlinesかけることが確認できたので、私の中でようやっとこの方向性が一段落しそう。
あとは、RSpecのshared_exampleの記述と少し比較してみて、という作業もいるけれど。

“TurnipでScenario Outline” の続きを読む

Turnip+Appiumで使ってキーワード駆動のシナリオテストが実施できそうね

Genymotionの制御用引数がAppiumにプルリクされている所をみて、AppiumのOSSとしての成長加速時期がき始めているのかなと感じる最近です。Appium 0.17.3の次のリリースで含まれるのでしょうか。Androidの検証基盤としても本格的な立ち位置になりそう。

今日はStory Testでお世話になるであろうData / Keyword Driven Testingを少しおさらい。

“Turnip+Appiumで使ってキーワード駆動のシナリオテストが実施できそうね” の続きを読む

“Turnip or RSpec” x Appium

過去、こちらにて、AppiumにおけるテストシナリオをTurnipとRSpecのそれぞれの記述で比較してみました。
当時からまたいろいろ試し、考えてみた結果、ひとまずこうかな、という結論に達したのでメモがてら。

““Turnip or RSpec” x Appium” の続きを読む

受け入れてテスト自動化に向けて

も少しいろいろ考えてみたけれど、受け入れテストを実際に書く場合、
1. Turnip部(.feature, .step)には主要ストーリ、変更の少ない箇所を記述する。featureの記述者の想定はユーザストーリーを描く人ら。
2. RSpec部で、より細かな確認事項を書く

とするのはどうかなと思い始めた。
というのも、保守観点を意識すると、RSpecのほうがエンジニアは保守しやすいのではないかなと。
私自身、RSpecのほうが気軽にかけましたし。

“受け入れてテスト自動化に向けて” の続きを読む

受け入れ試験レベルの抽象度のシナリオを、Appium x “RSpec or Turnip”で比較してみた

最近、スマホアプリの受け入れテストの機能的側面を自動化する場合、どのような手段が妥当なのか?ということを考える。
それを、Appiumを基本に、RSpecとTurnipの2つを中心に比較して考えてみる。

どちらを選択したら良いのかなということに対して結論からいうと、何がよいのかという判断自体は
– 誰が受け入れ試験のシナリオを記述するか
– 誰が自動化コードをメンテするか
– どのような開発スタイルか

に大きく依存しますかね。

“受け入れ試験レベルの抽象度のシナリオを、Appium x “RSpec or Turnip”で比較してみた” の続きを読む