モバイルアプリ用テスト自動化ツール「Appium 2.0」まもなく登場。ドライバーの分離、プラグインによる拡張対応など、新機能を開発者Jonathan Lipps氏が解説

2021年5月11日

モバイルアプリケーションのテスト自動化ツールの代表的なツールが、オープンソースで開発されている「Appium」です。

そのAppiumの次期版となる「Appium 2.0」正式リリースが迫っています。Appium 2.0ではAppium本体から各プラットフォームへ対応するためのドライバが分離され、ドライバの開発が容易になります。

また、Appiumの機能を拡張するプラグイン機構も提供されるため、今後さまざまな拡張機能の登場が期待されるでしょう。

これらAppium 2.0の新機能について、AppiumのプロジェクトリードであるJonathan Lipps氏が、Appiumベースの商用サービスであるHeadSpinを国内で販売 している企業「コウェル」が主催するオンラインイベント「モバイルテストの最前線 ~Appiumの今とこれから、急成長HeadSpinとは?~」に登壇し、紹介しました。

この記事ではそのLipps氏のセッションから、Appium 2.0の解説部分をダイジェストで紹介します。

Appium 2.0およびAppiumの自動化に関する将来的ビジョン

Jonathan Lipps氏。

fig

私はAppiumでは多くの役割をこなしていますが、Appiumプロジェクトのアーキテクトであり、メンテナーの一人でもあります。Appiumのかなり初期、8年前あたりから参加しています。

Headspinにおいては、Headspin Universityと呼ばれる取り組みを通して、みなさんが自動化テストについて学ぶための支援をしています。

まずはAppiumについてご存じない方もいるかもしれないので、Appiumについてご紹介します。

Appiumとはテスト自動化のツール

Appiumは、モバイルアプリケーションやデバイスでテスト自動化を行うためのツールです。JavaScript Foundationがホストしており、すべてGitHub上でオープンソースとして開発されてます。

fig

Appiumは基本的に、WebDriverインターフェイスを用いて自動化機能を提供するというものです。

Appiumの利点は、ほとんどすべてのプログラミング言語で自動化スクリプトや自動化テストを書くことができることです。そのため、利便性が高く、選択の幅が広く、柔軟な使い方ができます。

クロスプラットフォーム対応のAPIを提供している点もAppiumのさらなる利点でしょう。

つまり、同じアプリを異なるプラットフォームでテストする場合。Android用とiOS用のテストコードは非常に似通ったものになるということです。

また、Appiumには多くのユーザーがいることにも触れておかなくてはならないでしょう。それぞれの国にユーザーやフォーラムがあり、中国語圏や英語圏や日本にも大きなコミュニティがあることを存じています。

これがAppiumでテストの自動化をしている例です。

fig

2つのデバイスを1組にして、Appiumのテストスクリプトによって2つのデバイスによるチャットアプリケーションの自動テストが行われています。

現状のAppiumの課題と、Appium 2.0での解決策

そして、もう間もなくAppium 2.0が登場予定です。すでに9番目か10番目のベータ版をリリースしています。

fig

まず現在のAppiumにおける課題を紹介し、Appium 2.0でそれがどう解決されるのか、紹介していきます。

fig

既存のAppiumの最初の課題は、プラットフォームごとに異なる多くのドライバのすべてがAppiumサーバにバンドルされていることです。

これらのドライバは別々に開発されています。ところが、これらはAppiumのリリースに合わせて提供されるため、実際には十分に独立して開発することが難しくなっています。

そこでAppium 2.0ではこのドライバをAppium本体とは切り離し、まったく別のものにしました。

2つ目の課題は、iOSやAndroid以外にもサポートすべきプラットフォームが多くある、ということです。そこで、誰にでもドライバを書いてもらえるように、新しいプラットフォーム用のドライバを書くためのサンプルコードやツールなどを提供していきます。

3つ目の課題は、Appiumはさまざまな技術の集合体であること、そして多くのひとたちがAppiumの新機能のアイデアを持っているのに、それを実装するための私たち実装チームの人数がそれに見合うほど多くないという点です。

そこでAppium 2.0では「Appiumプラグイン」というコンセプトを導入し、だれでもAppiumをカスタマイズできる、あるいは他のツールと統合できるようになる、といったことを簡潔なコードで可能にします。

プラグインはオープンに公開できますし、そうなれば誰でも誰かのためにプラグインを書けるようになり、また誰かが書いたプラグインを誰でも使えるようになるでしょう。

さらに、Appiumは容量が大きくインストールが面倒な点も課題でした。ここでもAppium本体とドライバーやプラグインを分離することで、必要なものだけをインストールできるようにすることでダウンロードするサイズを小さくできるようになります。

そして最後に、Appiumのなかで一貫性のない部分や非推奨の機能などを修正し、新たな標準とします。これにより以前のバージョンとの互換性が失われますが、将来に向けて前進するためにこれらを行っていきます。

Appium 2.0の新たなドライバーエコシステム

ではここから、新たなドライバーエコシステムについて紹介していきましょう。

fig

Appiumは、iOSやAndroidだけでなく、あらゆるプラットフォームの自動化を簡単にサポートすることを将来のビジョンとしています。これはとても大きな目標であり、いわば、Webブラウザに特化していたSeleniumの目標よりも大きな目標です。

Appiumでは、iOSとAndroidのドライバが最も広く使われていますが、そのほかのデバイス、Mac、Windows、さらにはRaspberry Piのデバイスを自動化することもできます。

Appium 2.0ではだれでも新たなプラットフォーム向けのドライバを書くことができるように、汎用のドライバクラスや機能を公開する予定です。私たちがすでに書いたコードを頼りに、新しいプラットフォームに対応したドライバへの拡張が簡単にできるようになるのです。

これにより、あらゆる種類のプラットフォームに対応したAppiumドライバの作成が促進され、将来的には同じAppiumのスキルを使ってあらゆる種類のアプリプラットフォームの自動化が可能になることを期待しています。

また、新たに書かれたドライバはGitHubなどのGitサーバやNPMによるパッケージマネージャ、あるいはtarファイルやzipファイルなどで簡単に公開できます。

もちろんそれらはクローズドソースにも、社内用にも、オープンソースにも、無料にもできます。こうしたことがAppium 2.0における幅広いドライバ対応になることを期待しています。

Appium 2.0では新しくコマンドラインインターフェイスが用意され、ドライバーのリストや、ローカルやリモートなどさまざまな場所からのドライバーのインストールできるようになります。

fig

Appium 2.0では、いまRoku、KaiOS、ChromeOSなどのデバイス向けのドライバなどを開発しています。

fig

Appium 2.0のプラグインについて

次はAppium 2.0のもう1つの大きな新機能であるプラグインについて。

fig

例えば、画像認識の機能があります。とても素晴らしい機能です。ただ、この機能はUI要素のテストをしているのであれば不要でしょう。

ですから、こうした機能をプラグイン化するのです。そうすれば、必要な人がこの機能をインストールすればいいのですから。

これによっても、インストールサイズを小さくし、依存性を下げてシンプルにすることにつながります。

Appiumがテストを実行したあと、成功したか失敗したかを伝えるプラグインも可能でしょう。これによってAppiumを外部ツールを経由せずにCIダッシュボードに統合することも可能でしょう。

プラグインに関してもドライバと同様に自由に公開、共有できます。またCLIも用意されており、ドライバと同様にここからプラグインをインストール可能です。

fig

非互換性について

現在のバージョンとの非互換性もいくつかあります。1つはAppium 2.0では「automationNamee」と呼ばれる機能が要求されること。というのも、デフォルトではドライバが含まれなくなるためどのドライバが使えるのかを知る必要があるためです。

W3Cの標準ではない機能については「appium:」プレフィックスも必要となります。また、開始前にドライバのインストールも必要となります。

fig

Appium 2.0は(まだ正式版提供前ですが)簡単に導入できます。ぜひ試してみてください。

fig

関連記事

AppiumはWebブラウザのテスト自動化ツールであるSeleniumを基にしています。以下の記事は、そのSeleniumについて解説したものです。

AppiumはJavaScriptファウンデーションがホストしているオープンソースです。

あわせて読みたい

JavaScript ソフトウェアテスト・品質 プログラミング言語




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本