InfoQ

News

Flex、AIR、AS3にもコードカバレッジのツールが登場

作者 Moxie Zhang, 翻訳者 金森 諭 投稿日 2008年5月16日 午後12時3分

コミュニティ
Java
トピック
RIA
タグ
Flex

先月Allurent社(サイト・英語)のJoe Berkovitz氏が試験バージョンのリリースを発表したFlexcover(source)はFlex・AIR・AS3用のオープンソースのコードカバレッジ(テストのコード網羅チェック)ツールだ。

テスト駆動開発(TDD)(参考記事・英語)プロセスに加わるJavaディベロッパはプログラムソースがどれだけテストされているかを測るためにコードカバレッジ(code coverage)を利用してきたが、Flexでそれを行うことはできなかった。

 Javaでのコードカバレッジに使われてきたツールにはClover(サイト・英語)やEMMA(サイト・英語)、Coverturra(サイト・英語)、NoUnit(サイト・英語)がある。Windowsの.Netにも多くのツールがあるがNcover(サイト・英語)、Cover for .Net(サイト・英語)、PartCover(参考記事・英語)が有名どころだ。

InfoQでは今度出たFlexcoverの試験バージョンについてBerkovitz氏に説明をしてもらった。

Flexcover は手を加えたAS3コンパイラを持っていて、それにより特別な関数呼出を書き込んだSWFやSWCファイルが出力されます。これらの関数は実行時にアプリケーションのコードカバレッジ情報を別のツールに送信します。またこのコンパイラはカバレッジ用のメタデータファイルも生成し、そこには使用されるであろうパッケージ、関数、コードブロック、コード行、および関連するソースコードファイル名が記述されます。

Flexcoverの開発の思い出についてBerkovitz氏はこう語った。

テストはソフトウェア開発に欠かせない側面の一つであり、コードカバレッジはソフトウェアテストの品質を測るのに鍵となるツールだと私は考えています。コードカバレッジはある重要な問いに答えを出してくれます。それは”テストの時どれだけのコードが実際に実行されるのだろうか”ということです。

私は他の言語でコードカバレッジツールを使ってきて、それらは素晴らしい成果をもたらしてくれましたが、Flexにそのようなツールがないことを不満に思っていました。そしてある朝起きた時、FlexのコンパイラがオープンソースになったおかげでSWFのバイトコードにカバレッジ測定用の機能を埋め込むよう手を加えることができるのではないか、と気がついたのです。私はコンパイラやコードジェネレータの仕事に携わっていたことがあったので、それが分かってから実際にやってみることはそれほど大変ではありませんでした。

Berkovitz氏によるとFlexcoverの設計で目指している主な目的には以下のようなものがあるという。

    • AS3アプリケーションのカバレッジ情報をリアルタイムに収集し視覚化する
    • カバレッジ率の低い部分が一目で分かるようにする
    • カバレッジ情報を蓄積する
    • 蓄積したカバレッジレポートを視覚化する
    • 自動テストからでも手動テストからでもカバレッジデータを収集できるようにする
    • 分析する

Flexcoverの開発でBerkovitz氏は他言語で使われている既存のコードカバレッジツールの情報を入念に集めてみた。特に「Emma(サイト・英語)やCovertura(source)をはじめたくさんのJavaのオープンソースカバレッジツールを調べ、提供されている情報からわかる方法を調べました。それから私はより良いツールに着手し、リアルタイムなカバレッジの機能を加えました。それによりアプリケーションをテストしている時でもソースコードの更新をカバレッジ率と一緒に知ることができるようになりました。」と彼は語った。

 Berkovitz氏は次の3つから成るFlexcoverの構造について説明してくれた。

    1.  Javaで書かれたActionScriptコンパイラの変更。それによりmxmlc・compcもサポートする変更されたJavaライブラリができ、その際コードカバレッジに関するオプションを指定できる。
    2. テスト中のアプリケーションでデータを収集し出力するActionScriptライブラリ
    3.  アプリケーションテストで出力されたデータを視覚化するAIRアプリケーション

Berkovitz 氏は一人でない。コードカバレッジに関する一連のアイディアに長い間関わってきたAdobe ConsultingのAlex Uhlmann氏は、将来のFlexcoverのリリースに協力する予定だという。Berkovitz氏とUhlmann氏は新しいユーザエクスペリエンスのいくつかのアイディアについて一緒に取り組んでいる関係にある。

Adobeからの誘いについて尋ねるとBerkovitz氏はInfoQにこう語った。「Adobeで行われていることについてコメントすることはできませんが、Adobeはコードカバレッジに関心を持っていて、Flexチームのメンバはコードカバレッジをどのようにサポートするかについて前向きに考えていることは知っています。また、彼らはFlexcoverをリリースするために多くの手助けをしてくれました。そのことにとても感謝しています。」

原文はこちらです:http://www.infoq.com/news/2008/05/flexcover-code-coverage

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。

Google Chartとgchartrbの紹介

Google Chartは、チャートを作成するためのWebサービスです。本稿では、Google Chartのインターフェースと、Rubyコードから簡単にチャートを生成することができるgchartrbライブラリの説明をします。

SOAを超えて: 動的な業務アプリケーションのための新しいエンタープライズアーキテクチャフレームワーク

全二回からなるこの記事では、ダイナミックビジネスアプリケーション(Dynamic Business Applications:DBAs)の開発についての全体的な眺望を、アーキテクチャと方法論の観点から見ていくことになります。我々のゴールは、「ビジネスの変化や、その他に必要とされる変更に対して、いかにして容易に適応できるアプリケーションを構築していくか」を導きだすことです。

ESB接続形態のオルタナティブ

本稿では、Adrien Louis氏がESBベースのSOAに対する2つの接続形態についての賛否について説明しています。その2つとは、会社での単一のESB対「部門毎」に相互接続するESBによるシステムです。

AjaxプログラマのためのJavaOne2008 -GrizzlyでComet!-

誕生から2年を経てCometは「何が出来るのか」という議論から、「いかに実現するか」という議論に関心が移ってきたように見えます。そこで本稿では同じくJavaOneで数多く取り上げられたNetBeans 6.1とGlassFish v3を使いながら、サンプルを交えてCometを解説していく事にします。

SharePoint Webサービスを始めましょう

この記事では、WSS3とMOSS 2007に難しい設定など一切せず、すぐに利用可能なWebサービスと、Javaと.NETからそのWebサービスを消費する方法に目を向けます。

レトロスペクティブのプライムディレクティブに対する問い

この記事の始まりは、知的で思慮深い人たちの魅力的なグループが食事会を終えて話をしているところです。話はレトロスペクティブ(振り返り)プロセスの要であるプライムディレクティブ(最初の指示)に及んでいます。