Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-Android- Maxima on Androidのテスト自動化 (3) - Robotium -

f:id:jurupapa:20131006185625j:plain

麻婆豆腐 EOS 70D, EF-S 60mm F2.8

  

さて、AndroidアプリをUIレベルでテストすると、結果的には全てのレイヤーの機能を複合的に使うことになります。このため、このような機能は統合テストになります。

Maxima on Androidでは以下のようなテストがこのレベルとして考えられます。

  1. Maxima起動後、メニューからアクセス出来る機能が正しく動作するかどうかのテスト。今のところ、全ての言語設定で、マニュアルが正しく切り替わって表示されるテスト及びAbout MoAが正しく表示されるテストを実装しました。
  2. グラフ描画コマンドを実行させると、実際にグラフが描画されるテスト。drawdf()という力学系のグラフ描画コマンド使って実装しました。
  3. その他、マニュアルの中の例題のタッチによる実行、入力済みのコマンドのタッチによる実行、セッション保存/読み込み機能、などはこれから実装。

このようなテストもAndroid SDKではサポートされており、Instrumentationという機能を使って書くことができます。しかし、このやり方は非常に記述が面倒です。

そこでUIテスト記述を非常に簡単に出来るRobotiumというフレームワークがあります。このフレームワークを使うと、

        solo.clickOnMenuItem(menuSettings,true);

        solo.clickOnText("Brazilian Pt manual");

        assertEquals(solo.waitForDialogToClose(),true);

        solo.clickOnMenuItem(menuManual);//open manual

        solo.waitForWebElement(By.className("settitle"),tout,false);

 

        assertEquals(solo.getWebUrl(), "file:///android_asset/maxima-doc/en/pt_BR/maxima.html");

こんな感じでテストを記述出来ます。

ただテストの記述は簡単になりますが、このテスト、GingerbreadとJerry Beansではパスするのですが、HoneycombやICSでは通らない、という不思議なことが起きます。Robotiumの実装がAndroidのUIフレームワークの実装に依存しているからだと思います。

 

この分野はまだまだ絶対的な手法は確立されていないようです。