DevExpressがリリースしたTestCafeを使えばHTML5をサポートするブラウザでならどのようなブラウザでもテストが実行できる。スクリプト注入でウェブページ上のDOMを直接操作し、ユーザの操作を編集できる。ブラウザプラグインを使う必要はなく、jQueryやブラウザのAPI経由でDOMへアクセスできる。
TestCafeには組み込みのトラフィック解析ツールが付属しており、リソースの不足やレスポンスコード、JavaScriptのエラーを通知してくれる。マークアップ分析ツールも付属しているので、ウェブページの要素の検証ができる。
TestCafeを使うにはRECボタンを押す必要がある。するとレコードを開始したウェブページがブラウザにロードされる。記録したアクションは確認ダイアログを使ってプレビューしたり、ロールバックしたり、要素をカスタマイズしたりできる。UIまたはコマンドラインからテストを実行し、統合UIやJSON形式の出力で結果を分析できる。
InfoQはDevExpressのCTOであるJulian Bucknall氏に詳しい話を聞いた。
InfoQ: TestCafeはどのようなタイプのアプリケーションのテストに使えますか。
TestCafeはウェブページのUIやウェブアプリケーションの機能テスト向けに設計されています。ウェブページがHTML5、CSS、JavaScriptで作られて入れば、TestCafeでテストできます。
InfoQ: TestCafeをダウンロードする必要があることについて詳しく教えてください。
TestCafeはふたつの部分で出来ています。サーバ側とクライアント側です。サーバ側にはダッシュボードと分析コンポーネントがあり、クライアント側(ひとつ以上のブラウザインスタンス、どのようなデバイスでも利用できる)で実行されるテストを起動します。クライアント側のライブラリはブラウザでテストを実施し、結果をサーバ側へ送ります。
たしかに、サーバ側を私たちが管理してTestCafeを提供する方法もあり得ました(つまり私たちのテストサービスを"貸す"ということです)。しかし、多くのウェブテストはインターネットに接続できないイントラネット内の品質保証環境で行われる、ということを私たちは知っていました。
このようなことを考えた場合、サーバ側をTestCafeの一部として販売するのは合理的です。TestCafeのサーバ側はテスト実行をするブラウザがあるマシンと同じマシン上で簡単に動かすことができます。例えば、開発者のマシンです。ウェブ開発者はテストを書き、マシンまたはデバイス上でテストを実行すればいいのです。他のマシンやネットワークは必要ありません。
InfoQ:WindowsフォームやWindows Phone 8アプリをテストできますか。
できません。ウェブページやウェブアプリだけです。
InfoQ: 他のツールとは何が違うのでしょうか。
他のウェブ向けの機能テストツールは特別なブラウザプラグインが必要は場合が多いです。サーバ側がプラグインと通信し、プラグインがアプリを制御します。各ブラウザ毎にプラグインを用意しなければなりませんし、ひょっとしたら、ブラウザのバージョン毎に用意しなければならないかもしれないのです。
また、プラグインを使ってDOMにアクセスするにはいくつかの難点があります。DOMが見えるかどうか、ユーザの入力の制御などです。TestCafeにはプラグインが必要ありません。代わりにクライアントライブラリを直接ウェブページに注入してページをコントロールします。これによって、モバイルデバイス上で直接テストして発生したエラーをトラップ(そして報告)することができるのです。
InfoQ: 共用の環境で動作させることはできますか。専用の環境ではどうでしょう。
TestCafeはnode.jsで動作します。ホスティングプロバイダがnode.jsのインストールを許可しているなら、動かせると思います。
InfoQ: TestCafeはアプリケーションに関連するバグを指摘するだけですか。それとも自動的に修正してくれますか。
TestCafeは機能テストのツールです。開発者は一連のアクションとその結果を記述します。TestCafeはこの一連のアクションを単に繰り返し、結果を検証するだけです。結果が同じでなければバグを指摘しますが、どのような変更によって結果がおかしくなったのか指摘することはできません。
InfoQ: TestCafeを使えば開発者の生産性は向上するでしょうか。
もちろんです。ウェブ開発者はウェブページやウェブアプリに対して機能テストを構築することができ、すべてのテストが通過するかどうか試すことができます。運用環境に配置する前にはバグも見つかるでしょう。コードリポジトリにコミットされる前に見つかるかもしれません。バグは見つかるのは早ければ早いほど、修正するのが安くつく(時間の面でも労力や金銭の面でも)ということを示す研究は無数にあります。