Android開発で泣かないための「テスト」の重要性

Android開発で泣かないための「テスト」の重要性


第1回Androidテスト祭りレポート

仲里淳
@nakazato
2011/9/5

Androidアプリ開発の“テスト”について考えるイベント

- PR -

 8月6日、日本Androidの会テスト部(以下、テスト部)主催によるイベント「第1回Androidテスト祭り」が都内で開催された。テスト部は、Androidプラットフォームでの開発において、特にソフトウェア検証テストに関する情報共有や問題解決を目的とした組織だ。2010年9月に発足し、イベント開催時点では276名のメンバーがいるという。

 今回のイベントは、その自由度の高さや多様性ゆえに課題を抱えるAndroidアプリ開発のテストについて、開発者同士やコミュニティでの情報交換を目的に開催された。テスト部では、すでに日本Androidの会の総合イベント「Android Bazaar and Conference」での講演をはじめ、さまざまな活動を行っているが、単独イベントは今回が初だ。

勢いの裏に隠されたAndroidのテスト問題

 イベント冒頭では、テスト部副部長の松木晋祐氏による開会のあいさつとして、テスト部の活動やAndroidの市場動向、課題について述べた。

日本Androidの会テスト部副部長の松木晋祐氏

 松木氏は、まず「オープンプロダクトコミュニティにおける『ぶっちぎりのテスト力』をテスト部から世界へ」というテスト部のキャッチフレーズを紹介し、Androidプラットフォームに対するテスト力を支える柱となることが目的であるとした。

 続いてAndroidのOSバージョン別シェアや他のプラットフォームとのシェアなどを示し、破竹の勢いでシェアを伸ばしていることを示した。しかし同時に、メーカー各社から次々とリリースされる端末の種類や搭載OSのバージョン違いなど、多様であるが故に生じる差異が問題になっていると指摘する。

 「Androidは、iOSのような垂直統合型ではなく水平分散型であるため、表示性能や通信性能、処理性能など、端末ごとにさまざまな性能差が生じます。結果として端末のフラグメンテーションが起こり、アプリの実行に支障を来たしてしまいます。OSのバージョンアップも頻繁ですが、そこに端末メーカーの独自カスタマイズが入ることで有名アプリが動作しなくなるということも実際に起きています」(松木氏)

 よくあるソフトウェア開発のV字モデルを適用すると、上層はAndroid特有で下層は一般的なテストの問題となるが、テスト部では「そもそもテストをどうやればいいのか」といったところから全体に対してアプローチしていくという。

V字モデルとAndroidテストの課題(松木氏の講演資料より)

Androidテストの重要性と有効性


TDD研究会 JaSST実行委員 太田健一郎氏

 続いて、TDD研究会の井芹洋輝氏と太田健一郎氏による基調講演「より効率的に開発するために〜スマートフォン時代のソフトウェアテスト・アプローチ」が行われた。

 まず、太田氏はAndroidアプリは開発とテストが、いかに大変か、そしてテストがいかに重要かを紹介。そして、テストをいかに効果的かつ効率的に行うためのノウハウを話した。重要なのは、テストを簡単にするための“設計”と“アーキテクチャ”とし、有効なデザインパターンや、以下のようなエンタープライズ向けフレームワークのAndroid版といえるものをコードを交えて紹介した。

実装Spring Android(太田氏の講演資料より)

 そして太田氏は、以下のようにツールが有効であることも語った。

Androidアプリ開発に有効なツール(太田氏の講演資料より)

 続いて井芹氏は、「テストの活用による開発効率化」と題してテスト駆動開発(TDD)研究の成果から、まずはさまざまなテストの手法を紹介した。

さまざまなテスト手法(井芹氏の講演資料より)

TDD研究会 WACATE実行委員 井芹洋輝氏

 次に井芹氏は、テストにより開発効率化をどのように実現するかを「テストを支えるテストインフラの構築」「堅牢なテストの構築」「開発と一体化したテストプロセス」の3つの側面から語った。

 「テストを支えるテストインフラの構築」では、JenkinsなどCI(継続的インテグレーション)に「monkeyrunner」「JUnit」「robotium」などテスト自動化ツールを組み込んだテスト手法、Git/Mercurial/Bazaarなど分散型バージョン管理システムを使ったテストの分割/多重化への対応などについて、その有効性を話した。

 「堅牢なテストの構築」「開発と一体化したテストプロセス」では、堅牢なテストを生み出すテストプロセスの流れの中で実践するべきことが実例を交えて語られた。

テストプロセスの流れ(井芹氏の講演資料より)

 最後に井芹氏は、テストについて次のようにまとめた。

  • テストの活用は、軽快な開発での品質確保を強力にサポートする
  • 効果をより増幅するためにプロダクトの工夫でテストを支えよう
  • 堅牢なテストを支えるテストインフラを構築しよう
  • 開発成果物の一部としてテストを取り込もう
  • 開発とテストの設計・実装は並行させ、相互フィードバックを繰り返そう

テストの複雑さ故に品質問題を抱えるAndroid

 ベリサーブの鈴木利彦氏は、「Android製品テストマップ」と題した講演で、ソフトウェア検証の専門家としての立場から、Androidテスト現場の実態を紹介した。

ベリサーブの鈴木利彦氏

 ベリサーブはソフトウェア検証を専門に行っている企業で、テスト一筋10年のいわば「テスト職人」だ。ケータイ関連の仕事も多く、最近ではAndroidが増えているという。

 「Android製品は活況ですが、開発やテストの現場でも、別の意味で活況です。NTTドコモやKDDI、ソフトバンクモバイルなど、各キャリアからAndroid端末がリリースされていますが、『ソフトウェアの更新がない月はない』というほど頻繁にアップデートされ、それが減る気配はありません。しかしながら、他のプラットフォームと同様にAndroidにも『銀の弾丸』『魔法の杖』といったものは存在しません」(鈴木氏)

 Androidには多くのメリットがあるが(だからこそ多くの製品で採用され爆発的に普及しつつあるのだが)、同時に次のような7つのデメリットもあるという。

  1. オープンソース――動作が保証されていない
  2. バージョンアップ――平均3.25カ月の短いスパン
  3. 機能仕様――どのように動作するかが不明瞭
  4. アプリケーション――玉石混交(たまに極悪のものも)
  5. ネットワーク――脆弱性不安
  6. 性能――電池の“持ち”が悪い
  7. 差別化――独自のカスタマイズが必要

 「フィーチャーフォンでは、キャリアが仕様を定めてOEMメーカーがそれに沿った製品を開発していました。しかしスマートフォンでは、キャリアは仕様を決めないためODMメーカーになっています。テストの依頼を受ける場合に、仕様が明確でないため新機能なのかどうかがはっきりしないケースもあります。また、スケジュールは短期化しているにもかかわらず、機能が多いのでテスト工数が増加しています。その結果、フィーチャーフォンに比べると明らかに品質は悪くなっています。

 実際フィーチャーフォンと比較すると、同じ工数を掛けてもAndroid端末の方が30倍ほど多く不具合が出てしまいます。さらにグローバル化によって海外メーカー製も多いのですが、やりとりの中で不具合を不具合と認めてもらえいないといったこともあります。結果として、高い返品率という形で市場の反応に現れてしまいます」(鈴木氏)

 過去にHDDレコーダといった家電製品のテスト検証も行ってきた鈴木氏の経験からすると、Androidを始めとするスマートフォンによってソフトウェアの品質は5〜6年前のレベルに戻ってしまったように感じるとのこと。

 現在ベリサーブでは、製品マニュアルの記載通りに動作するかどうかといった基本的なものから、アプリケーション連携やマルチタスク、連続機能操作など、いくつかのカテゴリでフォーマット化されたテストを行っている。その中でも、Androidで特に重要視しているのがイベントの割り込みに関するテストだという。

テスト現場でのテーラリング(技法)(鈴木氏の講演資料より)

 「昔からいわれていますが、組み込み機器では割り込みに起因する不具合が多いです。Androidも同じで、状態が安定しているときは堅牢ですが、ある状態から別の状態に遷移中のイベント割り込みに対して非常に弱いです。

 逆にいえば、状態遷移中に通話やメール、アラームなど何らかの割り込みが入っても不具合が生じなければ、きちんと実装されていると判断するという考え方もあります。これは、テスト効率化の1つとして提案していまして、今後実際に検証して結果を報告したいと思います。ただし、あくまでも基本機能のテストをクリアしていることが前提です」(鈴木氏)

 最後に鈴木氏は、テストについて次のようにまとめた。

  • 品質を向上させるための特効薬はない
  • 標準的なプロセスと技法を策定しよう
  • 製品の成熟度、品質レベルを把握しよう
  • 不足している部分、効率化ができる部分にツールやソリューションを活用しよう
  • 地道な改善により、テストの品質が向上して製品の品質が向上する
  1/2

 INDEX
第1回Androidテスト祭りレポート
Android開発で泣かないための「テスト」の重要性
Page1
Androidアプリ開発の“テスト”について考えるイベント
勢いの裏に隠されたAndroidのテスト問題
Androidテストの重要性と有効性
テストの複雑さ故に品質問題を抱えるAndroid
  Page2
ユーザーの意見や評価データから導き出すガイドライン
60%の負担軽減ができるUIテスト自動化ツール
今後もAndroidテスト祭りと定例会を実施


 Smart&Social フォーラム トップページへ



Smart & Social フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Smart & Social 記事ランキング

本日 月間