とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

3/2 クックパッドアプリのテストを味わう #tryswiftconf

try!Swiftのセッションまとめシリーズです。Kazuaki Matsuoさんの「Tasting tests at Cookpad」についての記事になります。

資料

www.slideshare.net

内容

  • テストと言ってもいろいろなテストがある
  • 今日はUIテストに関しての話をする

  • クックパッド

    • 世界でも有名なレシピサイト
    • 日本では63億のユーザがいる
  • 今日は日本のiOSアプリについて
    • 5年間開発をしている
    • UI、実装を複数回変えている
    • リリースサイクルは2週間〜1ヶ月
    • UIはよく変わる
    • しかしクオリティを保っていかなければならない
  • リファクタリング
  • 多くの開発者はテストは自動化すべきだという
    • レイヤーによってはそうとも限らない
    • UIテスト自動化は大事なこと
    • マニュアルチェックを自動化されたUIテストに寄せていく
    • 様々なOSバージョンのチェックを人を解することなくできるようになる
  • テストピラミッド
    • 理想は、UnitTestが一番多くてUIテストが一番少ない
    • しかしモバイルは容易に逆になる
  • クラッシュ件数
    • どんどん下がっている
  • スクリーン遷移のテスト
    • 8割をUITestで実施
  • テストシナリオ
    • Turnipを使用
    • 母国語でのテストができる
    • 自然言語を使うことによってテストを示している
    • Rubyによって実装している
  • テストを書くにあたって注意すべきこと
    • 内部のロジックに影響を与えないように
    • OSバージョンがアップすると動かなくなることがないように
  • UIの差分検知
    • 前と今のバージョンで画面に違いがあるとそれをお知らせしてくれる
  • ネットワークトラフィック
    • こちらもチェックしている
    • 予期せぬリクエストを発見することができたり
  • 変更によってUIが壊れると知らせてくれる
  • Swift
    • 数ヶ月前に導入
    • 現在30%くらい
  • ユーザテスト

Q&A

  • appium使っていたがメンテコストがかかってしまったのですがappiumを選択した理由は?

    • システムアラートをクリーンにして出せる
    • シナリオの再現性という意味で採用
    • 遅さはあるが、どのタイミングでどのテストをするかという戦略を考えて補う
  • バウンダリーテストの代替テストは何を行ったか

    • バウンダリーのテストで多いのは入力テスト
      • 20文字しか入力できないところを19,21字で入力したり
    • バリデーションに関われるところはUIでやってもいいけどそこに至るまでのいろいろなステップが重くなるのでやっていない
      • UITestでやるよりかはUnitTestの方で

その他このトークに関する情報源

togetter

Tasting tests at Cookpad #tryswiftconf - Togetterまとめ