SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「Appium Conf 2019」レポート

Appiumを使った、自律的にアプリの情報を収集しバグを探し出すクローラーとは【Appium Conf 2019】

Appium Conf 2019参加レポート 第2回

  • このエントリーをはてなブックマークに追加

 6月14日から15日にかけて、インド・バンガロールでAppium Conf 2019が開催されました。300人を超える自動化エンジニア、QAエンジニアが集い、Appiumを活用した自動テストを中心に30以上ものセッションが行われました。この記事では、Justin Iron氏によるセッション「Appium Native App Crawler」をもとに、機能テストの自動化だけにとどまらないAppiumの可能性について紹介します。

  • このエントリーをはてなブックマークに追加

はじめに

 AppiumはモバイルアプリケーションのE2E UIテストを行うテスティングフレームワークであり、機能テストやリグレッションテストの自動化などで用いられることが多いです。それによってコスト削減やフィードバックの速さを期待できます。

 一方で、これはE2E UIテストのデメリットでもありますが、UIや機能の変更に追従するのにはある程度コストがかかります。そのため、必要以上にE2E UIを増やしてしまうと、そのメンテナンスコストによってフィードバックが遅くなってしまう可能性があります。

 加えてそのテストをさまざまなOS・デバイスごとに実行させようとすると、なおさらコストが増えてしまいます。

 スピーカーであるJustin Iron氏も開発スピードの速いチームにいた際に同じ課題感を感じ、そのような状況の中でより効率的にモバイルアプリのバグを見つけるためにAppiumを活用した自律的に動作するクローラーを開発しました。セッションの概要・動画・スライドなどは下記リンクから参照できます。

自律的に、効率的に動くクローラーを作る

 通常Appiumを用いてテストを実行させるには、スクリプトが必要になります。そのため、上記でも述べたように一定のメンテナンスコストが必要になったり、スクリプトが書ける人が必要になるという課題があります。

 今回扱うクローラーでは、Appiumを通してアプリ内にあるページ階層・操作可能な要素を取得し、それらをもとにループ処理で画面を操作します。

 しかしすべての要素に対してループ処理で操作させると、重複された操作なども含まれてしまうため非効率な部分が残ってしまいます。

 より効率的な操作をクローラーにさせるには、よりアプリの内部を理解する必要があり、今回はapktoolを利用していました。apktoolはリバースエンジニアリングツールであり、Androidのapkファイルをデコードできます。

 今回はそのデコードされたファイルの中からView Layoutsを取得します。それらとクローラーで取得したページ階層とマッチさせることで、具体的にクローラーがどの画面にいるのかが判断しやすくなり、より効率的なクローラーの操作を可能にしました。

スクリーンショットを自動で取得し比較する

 OS・デバイスが増えていくと特に懸念しないといけないのは「画面崩れ」です。開発スピードが速い中で、手動で複数のOS・デバイスで画面が崩れていないか確認することはかなり難しいです。

 そこで、この画面崩れを確認する役割を、今回のクローラーに行わせます。スクリーンショット自体を取得すること自体は、Appiumを利用することで簡単に行えます。

 しかし、メンテナンスコストを抑えながらスクリーンショットを自動で比較するのには技術的な難しさがあります。画像比較として使われているツールの多くは、画像のピクセルレベルで比較しているもののため、本来確認したいレイアウトと関係のないもの(例えば文字など)も比較対象になってしまう課題があります。

 1つのOS・デバイスであればある程度メンテナンスできるかもしれませんが、これが複数のOS・デバイスになるとメンテナンスコストが高くなってしまいます。

 上記の課題を解決するため、今回のセッションではApplitoolsを用いることによって、精度の高いビジュアルリグレッションテストを実現することを可能にしました。Applitools自体の解説については、前回の記事で取り上げられてた「Your Tests Lack Vision: Adding Eyes to Your Automation Framework」のセッションを参考にしていただければと思います。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
パフォーマンス・ログ・アクセシビリティを取得する

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
「Appium Conf 2019」レポート連載記事一覧

もっと読む

この記事の著者

根本 征(株式会社メルカリ)(ネモト タダシ)

株式会社メルカリ Automation & QA グループ(通称:AQA)自動化エンジニア。2016年4月に新卒でメルカリに入社。QAエンジニアと共にモバイルをメインとしたUIテスト自動化を推進していく傍、モバイル CI / CD改善や社内の生産性を上げるための自動化・サポートを行なっている。GitHub:https://github.com/tadashi0713

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11600 2019/07/16 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング