モバイルアプリ用テスト自動化ツール「Appium 2.0」まもなく登場。ドライバーの分離、プラグインによる拡張対応など、新機能を開発者Jonathan Lipps氏が解説
モバイルアプリケーションのテスト自動化ツールの代表的なツールが、オープンソースで開発されている「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氏。
私はAppiumでは多くの役割をこなしていますが、Appiumプロジェクトのアーキテクトであり、メンテナーの一人でもあります。Appiumのかなり初期、8年前あたりから参加しています。
Headspinにおいては、Headspin Universityと呼ばれる取り組みを通して、みなさんが自動化テストについて学ぶための支援をしています。
まずはAppiumについてご存じない方もいるかもしれないので、Appiumについてご紹介します。
Appiumとはテスト自動化のツール
Appiumは、モバイルアプリケーションやデバイスでテスト自動化を行うためのツールです。JavaScript Foundationがホストしており、すべてGitHub上でオープンソースとして開発されてます。
Appiumは基本的に、WebDriverインターフェイスを用いて自動化機能を提供するというものです。
Appiumの利点は、ほとんどすべてのプログラミング言語で自動化スクリプトや自動化テストを書くことができることです。そのため、利便性が高く、選択の幅が広く、柔軟な使い方ができます。
クロスプラットフォーム対応のAPIを提供している点もAppiumのさらなる利点でしょう。
つまり、同じアプリを異なるプラットフォームでテストする場合。Android用とiOS用のテストコードは非常に似通ったものになるということです。
また、Appiumには多くのユーザーがいることにも触れておかなくてはならないでしょう。それぞれの国にユーザーやフォーラムがあり、中国語圏や英語圏や日本にも大きなコミュニティがあることを存じています。
これがAppiumでテストの自動化をしている例です。
2つのデバイスを1組にして、Appiumのテストスクリプトによって2つのデバイスによるチャットアプリケーションの自動テストが行われています。
現状のAppiumの課題と、Appium 2.0での解決策
そして、もう間もなくAppium 2.0が登場予定です。すでに9番目か10番目のベータ版をリリースしています。
まず現在のAppiumにおける課題を紹介し、Appium 2.0でそれがどう解決されるのか、紹介していきます。
既存のAppiumの最初の課題は、プラットフォームごとに異なる多くのドライバのすべてがAppiumサーバにバンドルされていることです。
これらのドライバは別々に開発されています。ところが、これらはAppiumのリリースに合わせて提供されるため、実際には十分に独立して開発することが難しくなっています。
そこでAppium 2.0ではこのドライバをAppium本体とは切り離し、まったく別のものにしました。
2つ目の課題は、iOSやAndroid以外にもサポートすべきプラットフォームが多くある、ということです。そこで、誰にでもドライバを書いてもらえるように、新しいプラットフォーム用のドライバを書くためのサンプルコードやツールなどを提供していきます。
3つ目の課題は、Appiumはさまざまな技術の集合体であること、そして多くのひとたちがAppiumの新機能のアイデアを持っているのに、それを実装するための私たち実装チームの人数がそれに見合うほど多くないという点です。
そこでAppium 2.0では「Appiumプラグイン」というコンセプトを導入し、だれでもAppiumをカスタマイズできる、あるいは他のツールと統合できるようになる、といったことを簡潔なコードで可能にします。
プラグインはオープンに公開できますし、そうなれば誰でも誰かのためにプラグインを書けるようになり、また誰かが書いたプラグインを誰でも使えるようになるでしょう。
さらに、Appiumは容量が大きくインストールが面倒な点も課題でした。ここでもAppium本体とドライバーやプラグインを分離することで、必要なものだけをインストールできるようにすることでダウンロードするサイズを小さくできるようになります。
そして最後に、Appiumのなかで一貫性のない部分や非推奨の機能などを修正し、新たな標準とします。これにより以前のバージョンとの互換性が失われますが、将来に向けて前進するためにこれらを行っていきます。
Appium 2.0の新たなドライバーエコシステム
ではここから、新たなドライバーエコシステムについて紹介していきましょう。
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では新しくコマンドラインインターフェイスが用意され、ドライバーのリストや、ローカルやリモートなどさまざまな場所からのドライバーのインストールできるようになります。
Appium 2.0では、いまRoku、KaiOS、ChromeOSなどのデバイス向けのドライバなどを開発しています。
Appium 2.0のプラグインについて
次はAppium 2.0のもう1つの大きな新機能であるプラグインについて。
例えば、画像認識の機能があります。とても素晴らしい機能です。ただ、この機能はUI要素のテストをしているのであれば不要でしょう。
ですから、こうした機能をプラグイン化するのです。そうすれば、必要な人がこの機能をインストールすればいいのですから。
これによっても、インストールサイズを小さくし、依存性を下げてシンプルにすることにつながります。
Appiumがテストを実行したあと、成功したか失敗したかを伝えるプラグインも可能でしょう。これによってAppiumを外部ツールを経由せずにCIダッシュボードに統合することも可能でしょう。
プラグインに関してもドライバと同様に自由に公開、共有できます。またCLIも用意されており、ドライバと同様にここからプラグインをインストール可能です。
非互換性について
現在のバージョンとの非互換性もいくつかあります。1つはAppium 2.0では「automationNamee」と呼ばれる機能が要求されること。というのも、デフォルトではドライバが含まれなくなるためどのドライバが使えるのかを知る必要があるためです。
W3Cの標準ではない機能については「appium:」プレフィックスも必要となります。また、開始前にドライバのインストールも必要となります。
Appium 2.0は(まだ正式版提供前ですが)簡単に導入できます。ぜひ試してみてください。
関連記事
AppiumはWebブラウザのテスト自動化ツールであるSeleniumを基にしています。以下の記事は、そのSeleniumについて解説したものです。
- JavaScriptテスト自動化ツールSeleniumのこれまでとこれから(前編)。第1回 日本Seleniumユーザーコミュニティ勉強会
- JavaScriptテスト自動化ツールSeleniumのこれまでとこれから(後編)。第1回 日本Seleniumユーザーコミュニティ勉強会
AppiumはJavaScriptファウンデーションがホストしているオープンソースです。
あわせて読みたい
今からクラウドビジネスに参入する組織とビジネスマンのための、クラウド技術トレンド解説。クラウドファーストからクラウドネイティブへの潮流[PR]
≪前の記事
jQuery依存を脱した「Bootstrap 5」正式リリース、IEもついにサポート対象外に。右からの横書き「RTL」など新機能