(57)【要約】【課題】ＸＳＬＴコードのカバレッジを適切に計測することのできる情報処理装置の提供を目的とする。【解決手段】ＸＭＬデータにＸＳＬＴコードを適用してＸＳＬ変換を実行するＸＳＬ変換手段を備えた情報処理装置であって、前記ＸＳＬ変換手段は、ＸＭＬデータに対して第一のＸＳＬＴコードを適用してＸＳＬ変換を実行する過程において、前記第一のＸＳＬＴコードに含まれているＸＳＬＴ要素の中で実行されたＸＳＬＴ要素に所定の属性を付加し、前記属性が付加された第二のＸＳＬＴコードを出力する属性付加手段を有し、前記第二のＸＳＬＴコードに対して第三のＸＳＬＴコードを適用してＸＳＬ変換を実行することにより、前記属性に基づいて前記第一のＸＳＬＴコードにおいて実行され得るＸＳＬＴ要素の数に対して実行されたＸＳＬＴ要素の数の割合を算出することにより上記課題を解決する。【選択図】図３
2008107990.tif 000002
【特許請求の範囲】
【請求項１】
ＸＭＬデータにＸＳＬＴコードを適用してＸＳＬ変換を実行するＸＳＬ変換手段を備えた情報処理装置であって、
前記ＸＳＬ変換手段は、
ＸＭＬデータに対して第一のＸＳＬＴコードを適用してＸＳＬ変換を実行する過程において、前記第一のＸＳＬＴコードに含まれているＸＳＬＴ要素の中で実行されたＸＳＬＴ要素に所定の属性を付加し、前記属性が付加された第二のＸＳＬＴコードを出力する属性付加手段を有し、
前記第二のＸＳＬＴコードに対して第三のＸＳＬＴコードを適用してＸＳＬ変換を実行することにより、前記属性に基づいて前記第一のＸＳＬＴコードにおいて実行され得るＸＳＬＴ要素の数に対して実行されたＸＳＬＴ要素の数の割合を算出することを特徴とする情報処理装置。
【請求項２】
前記第三のＸＳＬＴコードには、前記第二のＸＳＬＴコードに含まれているＸＳＬＴ要素の数と前記属性が付加されたＸＳＬＴ要素の数とに基づいて、前記割合を算出する定義が記述されていることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記ＸＳＬ変換手段は、前記第二のＸＳＬＴコードに含まれているテンプレートごとに、当該テンプレートにおいて実行され得るＸＳＬＴ要素の数に対して実行されたＸＳＬＴ要素の数の割合を算出することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記属性付加手段は、前記ＸＭＬデータに対して前記第一のＸＳＬＴコードを適用してＸＳＬ変換を実行する過程において、前記第一のＸＳＬＴコードに含まれているＸＳＬＴ要素に実行された回数を示す属性を付加することを特徴とする請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
ＸＭＬデータにＸＳＬＴコードを適用してＸＳＬ変換を実行するＸＳＬ変換手段を備えた情報処理装置が実行するカバレッジ計測方法であって、
前記ＸＳＬ変換手段が、ＸＭＬデータに対して第一のＸＳＬＴコードを適用してＸＳＬ変換を実行する過程において、前記第一のＸＳＬＴコードに含まれているＸＳＬＴ要素の中で実行されたＸＳＬＴ要素に所定の属性を付加し、前記属性が付加された第二のＸＳＬＴコードを出力する属性付加手順と、
前記ＸＳＬ変換手段が、前記第二のＸＳＬＴコードに対して第三のＸＳＬＴコードを適用してＸＳＬ変換を実行することにより、前記属性に基づいて前記第一のＸＳＬＴコードにおいて実行され得るＸＳＬＴ要素の数に対して実行されたＸＳＬＴ要素の数の割合を算出する算出手順とを有することを特徴とするカバレッジ計測方法。
【請求項６】
前記第三のＸＳＬＴコードには、前記第二のＸＳＬＴコードに含まれているＸＳＬＴ要素の数と前記属性が付加されたＸＳＬＴ要素の数とに基づいて、前記割合を算出する定義が記述されていることを特徴とする請求項５記載のカバレッジ計測方法。
【請求項７】
前記算出手順は、前記第二のＸＳＬＴコードに含まれているテンプレートごとに、当該テンプレートにおいて実行され得るＸＳＬＴ要素の数に対して実行されたＸＳＬＴ要素の数の割合を算出することを特徴とする請求項５又は６記載のカバレッジ計測方法。
【請求項８】
前記属性付加手順は、前記ＸＭＬデータに対して前記第一のＸＳＬＴコードを適用してＸＳＬ変換を実行する過程において、前記第一のＸＳＬＴコードに含まれているＸＳＬＴ要素に実行された回数を示す属性を付加することを特徴とする請求項５乃至７いずれか一項記載のカバレッジ計測方法。
【請求項９】
コンピュータに、
ＸＭＬデータに対して第一のＸＳＬＴコードを適用してＸＳＬ変換を実行する過程において、前記第一のＸＳＬＴコードに含まれているＸＳＬＴ要素の中で実行されたＸＳＬＴ要素に所定の属性を付加し、前記属性が付加された第二のＸＳＬＴコードを出力する属性付加手順と、
前記第二のＸＳＬＴコードに対して第三のＸＳＬＴコードを適用してＸＳＬ変換を実行することにより、前記属性に基づいて前記第一のＸＳＬＴコードにおいて実行され得るＸＳＬＴ要素の数に対して実行されたＸＳＬＴ要素の数の割合を算出する算出手順とを実行させるためのカバレッジ計測プログラム。
【請求項１０】
前記第三のＸＳＬＴコードには、前記第二のＸＳＬＴコードに含まれているＸＳＬＴ要素の数と前記属性が付加されたＸＳＬＴ要素の数とに基づいて、前記割合を算出する定義が記述されていることを特徴とする請求項９記載のカバレッジ計測プログラム。
【請求項１１】
前記算出手順は、前記第二のＸＳＬＴコードに含まれているテンプレートごとに、当該テンプレートにおいて実行され得るＸＳＬＴ要素の数に対して実行されたＸＳＬＴ要素の数の割合を算出することを特徴とする請求項９又は１０記載のカバレッジ計測プログラム。
【請求項１２】
前記属性付加手順は、前記ＸＭＬデータに対して前記第一のＸＳＬＴコードを適用してＸＳＬ変換を実行する過程において、前記第一のＸＳＬＴコードに含まれているＸＳＬＴ要素に実行された回数を示す属性を付加することを特徴とする請求項９乃至１１いずれか一項記載のカバレッジ計測プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、カバレッジ計測方法及びカバレッジ計測プログラムに関する。
【背景技術】
【０００２】
近年のインターネット技術の発展に伴い、アプリケーションのユーザインタフェースがＷｅｂページ（ＨＴＭＬ（HyperText Markup Language）データ）によって提供されることが多くなっている。Ｗｅｂページの書式情報を定義するための言語としては、ＸＳＬＴ（XML Stylesheet Language Transformations）が用いられることもある。近年では、Ｗｅｂページのデザインが複雑化しており、また、画面数も増加している。かかる事情に伴い、ＸＳＬＴコードも増加し、また、複雑化している。したがって、ＸＳＬＴコードについても、Ｃ言語やＪａｖａ（登録商標）言語等、他の言語で記述されたソースコードと同様に、その品質が適切に確保されることが望ましい。
【特許文献１】特開２００６−１４６６６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ソフトウェアの品質を向上させるためには、テストが十分実施されることが必要である。かかる観点より、従来、ソフトウェアの単体テストについてカバレッジの計測が行われている。カバレッジとは、ソフトウェアに対して実施されたテストの網羅度を示す指標である。ＸＳＬＴコードに対しても、カバレッジの計測を簡便に行うことができれば、ＸＳＬＴコードの品質の向上を期待することができる。
【０００４】
本発明は、上記の点に鑑みてなされたものであって、ＸＳＬＴコードのカバレッジを適切に計測することのできる情報処理装置、カバレッジ計測方法、及びカバレッジ計測プログラムの提供を目的とする。
【課題を解決するための手段】
【０００５】
そこで上記課題を解決するため、本発明は、ＸＭＬデータにＸＳＬＴコードを適用してＸＳＬ変換を実行するＸＳＬ変換手段を備えた情報処理装置であって、前記ＸＳＬ変換手段は、ＸＭＬデータに対して第一のＸＳＬＴコードを適用してＸＳＬ変換を実行する過程において、前記第一のＸＳＬＴコードに含まれているＸＳＬＴ要素の中で実行されたＸＳＬＴ要素に所定の属性を付加し、前記属性が付加された第二のＸＳＬＴコードを出力する属性付加手段を有し、前記第二のＸＳＬＴコードに対して第三のＸＳＬＴコードを適用してＸＳＬ変換を実行することにより、前記属性に基づいて前記第一のＸＳＬＴコードにおいて実行され得るＸＳＬＴ要素の数に対して実行されたＸＳＬＴ要素の数の割合を算出することを特徴とする。
【０００６】
このような情報処理装置では、ＸＳＬＴコードのカバレッジを適切に計測することができる。
【発明の効果】
【０００７】
本発明によれば、ＸＳＬＴコードのカバレッジを適切に計測することのできる情報処理装置、カバレッジ計測方法、及びカバレッジ計測プログラムを提供することができる。
【発明を実施するための最良の形態】
【０００８】
図１は、本発明の実施の形態におけるカバレッジ計測装置のハードウェア構成例を示す図である。図１のカバレッジ計測装置１０（情報処理装置）は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、演算処理装置１０４と、表示装置１０５と、入力装置１０６と等を有するように構成される。
【０００９】
カバレッジ計測装置１０での処理を実現するプログラムは、CD―ROM等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、プログラムの処理に必要な各種のデータを格納する。
【００１０】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。演算処理装置１０４は、メモリ装置１０３に格納されたプログラムに従ってカバレッジ計測装置１０に係る機能を実行する。表示装置１０５はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０６はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００１１】
なお、カバレッジ計測装置１０をネットワークを介して操作する場合、表示装置１０５及び入力装置１０６は、必ずしもカバレッジ計測装置１０に接続されている必要はない。
【００１２】
また、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。
【００１３】
図２は、本発明の実施の形態におけるカバレッジ計測装置の機能構成例を示す図である。図２において、カバレッジ計測装置１０は、ＸＳＬＴ（XML Stylesheet Language Transformations）プロセッサ１１を有する。ＸＳＬＴプロセッサ１１は、ＸＭＬ（eXtensible Markup Language）データとＸＳＬＴ（XML Stylesheet Language Transformations）コードとを入力データとし、当該ＸＭＬデータに当該ＸＳＬＴを適用してＸＳＬ変換を実行し、変換結果を出力するソフトウェアである。
【００１４】
ＸＳＬＴプロセッサ１１は、ノード実行回数計測部１１１を有する。ノード実行回数計測部１１１は、ＸＭＬデータに適用されるＸＳＬＴコードに含まれている各ＸＳＬＴ要素について、ＸＳＬ変換の過程において実行された回数をカウントする。ノード実行回数計測部１１１は、カウントされた実行回数を示す属性（以下「実行回数属性」という。）をそれぞれのＸＳＬＴ要素に付加する。なお、ＸＭＬの記述において、開始タグと終了タグで囲まれた一つの定義を「要素」というが、本実施の形態では、特に「＜ｘｓｌ：」で始まるタグによって形成される要素をＸＳＬＴ要素という。
【００１５】
したがって、本実施の形態におけるＸＳＬＴプロセッサ１１によってＸＳＬ変換が実行されると、ＸＳＬ変換の結果としてのデータと、入力されたＸＳＬＴコードに対して実行回数属性が付加されたＸＳＬＴコード（以下「実行回数付加ＸＳＬＴコード」という。）とが出力される。
【００１６】
図２に示されるような機能構成に基づいて、カバレッジ計測装置１０は、ＸＳＬＴコードのカバレッジ率を計測する。なお、カバレッジ率とは、ソフトウェアのテストの網羅度を示す指標である。
【００１７】
図３は、本発明の実施の形態におけるＸＳＬＴコードのカバレッジ率の計測処理の概要を説明するための図である。
【００１８】
図３において、ＸＳＬＴコード２０は、テスト対象とされているＸＳＬＴコードである。本実施の形態では、ＸＳＬＴコード２０に対するカバレッジ率の計測が興味の対象となる。一方、ＸＭＬデータ３０は、ＸＳＬＴコード２０が適用されるＸＭＬデータである。ＸＳＬＴコード２０のテスト（単体テスト）という観点からすれば、ＸＭＬデータ３０は、テストの入力情報としての位置付けとして捉えることができる。したがって、ＸＭＬデータ３０の内容は、ＸＳＬＴコード２０に対するテストの入力情報として適切なものであることが望ましい。
【００１９】
まず、ＸＳＬＴプロセッサ１１に、ＸＭＬデータ３０とＸＳＬＴコード２０とが入力される（Ｓ１）。ＸＳＬＴプロセッサ１１は、ＸＭＬデータ３０に対してＸＳＬＴコード２０を適用してＸＳＬ変換を実行する。当該ＸＳＬ変換の実行が、ＸＳＬＴコード２０の単体テストに相当する。ＸＳＬ変換の結果としてテスト結果データ４０が出力される（Ｓ２）。テスト結果データ４０は、例えば、ＨＴＭＬ（HyperText Markup Language）データやＸＭＬデータである。ユーザは、テスト結果データ４０を参照して、ＸＳＬＴコード２０のバグを検出することになる。
【００２０】
一方、ＸＳＬ変換の実行過程において、ノード実行回数計測部１１１は、ＸＳＬＴコード２０の各ＸＳＬＴ要素の実行回数をカウントし、それぞれのＸＳＬＴ要素に実行回数属性が付加された実行回数付加ＸＳＬＴコード５０を出力する（Ｓ３）。すなわち、ＸＳＬＴコード２０の単体テストが実行されると、実行回数付加ＸＳＬＴコード５０が同時に出力される。
【００２１】
ソフトウェアのテストは、複数の入力データを用いて実行されるのが一般的である。本実施の形態においても、ＸＳＬＴコード２０のテストは、複数回実行され得る。この場合、２回目以降の処理においてＸＭＬデータ３０として入力されるＸＭＬデータは、以前に用いられたＸＭＬデータと異なるものが用いられる。入力データを変化させてテストを行わなければ意味がないからである。また、２回目以降の処理においてＸＳＬＴコード２０として入力されるＸＳＬＴコードは、前回出力された実行回数付加ＸＳＬＴコード５０が用いられる。その結果、２回目以降に出力される実行回数付加ＸＳＬＴコード５０に付加されている実行回数付加属性の値は、それまでの累積値となる。
【００２２】
ＸＭＬデータを用いてＸＳＬＴコード２０の単体テストが少なくとも一回行われた後、ＸＳＬＴプロセッサ１１には、最後に生成された実行回数付加ＸＳＬＴコード５０とカバレッジ計測用ＸＳＬＴコード６０とが入力される（Ｓ４）。ＸＳＬＴプロセッサ１１は、実行回数付加ＸＳＬＴコード５０をＸＭＬデータとして扱い、実行回数付加ＸＳＬＴコード５０にカバレッジ計測用ＸＳＬＴコード６０を適用してＸＳＬ変換を実行し、その結果としてカバレッジ率７０を出力する。ここで、カバレッジ計測用ＸＳＬＴコード６０は、実行回数付加ＸＳＬＴコード５０に含まれている（基本的に全ての）ＸＳＬＴ要素の数と、前記実行回数属性の値が０より大きいＸＳＬＴ要素の数とに基づいて、カバレッジ率を算出するための定義が記述されているＸＳＬＴコードである。したがって、ＸＳＬＴプロセッサ１１には、カバレッジ率を出力するための特別な機能が実装されているわけではなく、カバレッジ計測用ＸＳＬＴコード６０の定義にしたがってＸＳＬ変換を実行することでカバレッジ率を算出する。なお、図中では、テスト段階とカバレッジ計測段階では、同一のＸＳＬＴプロセッサ１１が用いられている例が示されているが、両段階において異なるＸＳＬＴプロセッサが用いられてもよい。この場合、カバレッジ計測段階におけるＸＳＬＴプロセッサにはノード実行回数計測部１１１は不要である。
【００２３】
なお、図３において、ＸＭＬデータ３０、ＸＳＬＴコード２０、実行回数付加ＸＳＬＴコード５０、及びテスト結果データ４０は、例えば、ファイルシステム上のファイル内に保存される。また、カバレッジ率７０は、ファイル内に出力されてもよいし、メモリ上に出力されたものが、表示装置１０５に表示されるようにしてもよい。
【００２４】
以下、カバレッジ計測装置１０の処理手順について更に詳しく説明する。図４は、ＸＳＬＴコードのテスト段階における処理手順を説明するためのフローチャートである。すなわち、図４は、図３におけるステップＳ１〜Ｓ３の処理を説明するものである。
【００２５】
ＸＭＬデータ３０とＸＳＬＴコード２０とが入力データとして指定され、ＸＳＬ変換の実行が指示されると、ＸＳＬＴプロセッサ１１は、ＸＳＬＴコード２０のＤＯＭ（Document Object Model）ツリーをメモリ上に構築する（Ｓ１０１）。この処理は、図５を用いて説明する。
【００２６】
図５は、ＸＳＬＴコードのＤＯＭツリーの構築時の処理手順を説明するためのフローチャートである。
【００２７】
ＸＳＬＴプロセッサ１１は、ＸＳＬＴコード２０をメモリ上に読み込む（Ｓ２０１）。
【００２８】
図６は、ＸＳＬＴコードの定義例を示す図である。本実施の形態では、図６に示される定義がなされたＸＳＬＴコードをＸＳＬＴコード２０の一例として説明する。
【００２９】
続いて、メモリ上に読み込まれたＸＳＬＴコード２０における要素（開始タグと終了タグとで囲まれた定義）ごとのループ処理が実行される（Ｓ２０２）。ループ内の処理において処理対象とされている要素を以下「カレント要素」という。
【００３０】
まず、カレント要素に対応するノードをメモリ上に作成する（Ｓ２０３）。ここでいうノードは、ＤＯＭツリーにおけるノードである。続いて、カレント要素にｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性が存在するか否かを判定する（Ｓ２０４）。
【００３１】
ここで、ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性は、実行回数属性を示す。したがって、ＸＳＬＴコード２０を用いて初めてＸＳＬ変換（テスト）が実行される場合は、いずれの要素にもｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性は付加されていない。一方、一度でもＸＳＬ変換が実行された後は、少なくとも実行された要素（ＸＳＬＴ要素）にはｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性が付加されている。
【００３２】
カレント要素にｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性が存在する場合（Ｓ２０４でＹｅｓ）、ＸＳＬＴプロセッサ１１は、カレント要素に対応するノード（カレントノード）のメンバ変数としてｍ＿ｅｘｅｃＣｏｕｎｔを定義し（すなわち、ｍ＿ｅｘｅｃＣｏｕｎｔは、ノードごとに定義される。）、ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性の値（実行回数の累積値）をｍ＿ｅｘｅｃＣｏｕｎｔに代入する（Ｓ２０５）。カレント要素にｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性が存在しない場合（Ｓ２０４でＮｏ）は、ステップＳ２０５は、実行されない。したがってこの場合、カレントノードには、ｍ＿ｅｘｅｃＣｏｕｎｔは定義されない。
【００３３】
続いて、ＸＳＬＴプロセッサ１１は、カレントノードをＤＯＭツリーに追加することによりＤＯＭツリーを構築する（Ｓ２０６）。
【００３４】
ステップＳ２０３〜Ｓ２０６までの処理がＸＳＬＴコード２０に含まれている全ての要素に対して実行されると（すなわち、ＸＳＬＴコード２０における全ての定義がＤＯＭツリーとしてメモリ上に構築されると）、ループ処理を抜け、当該処理が終了する（Ｓ２０７）。
【００３５】
図４に戻る。ステップＳ１０１に続いて、ＸＳＬＴプロセッサ１１は、ＸＭＬデータ３０のＤＯＭツリーをメモリ上に構築する（Ｓ１０２）。図７は、ＸＭＬデータの定義例を示す図である。本実施の形態では、図７に示される定義がなされたＸＭＬデータをＸＭＬデータ３０の一例として説明する。
【００３６】
続いて、ＸＳＬＴプロセッサ１１は、ＸＭＬデータ３０のＤＯＭツリーに、ＸＳＬＴコード２０のＤＯＭツリーを適用してＸＳＬ変換を実行する（Ｓ１０３〜Ｓ１０８）。ＸＳＬ変換の過程において、ＸＳＬＴコード２０のいずれかのノード（ＸＳＬＴ要素に対応するノード）が実行されると（Ｓ１０４）、ノード実行回数計測部１１１は、当該ノードのメンバ変数としてｍ＿ｅｘｅｃＣｏｕｎｔが定義されているか否かを判定する（Ｓ１０５）。ｍ＿ｅｘｅｃＣｏｕｎｔが定義されている場合、ノード実行回数計測部１１１は、ｍ＿ｅｘｅｃＣｏｕｎｔの値をインクリメントする（Ｓ１０６）。一方、ｍ＿ｅｘｅｃＣｏｕｎｔが定義されていない場合、当該ノードは、初めて実行されたノードであるため、ノード実行回数計測部１１１は、当該ノードのメンバ変数としてｍ＿ｅｘｅｃＣｏｕｎｔを定義し、その値として１を代入する（Ｓ１０７）。このように、ｍ＿ｅｘｅｃＣｏｕｎｔには、当該ノードが実行された回数（テストが複数回実行された場合はその累積回数）が代入される。
【００３７】
ＸＳＬ変換が完了すると（Ｓ１０８）、ＸＳＬＴプロセッサ１１は、ＸＳＬ変換の結果としてテスト結果データ４０を出力する（Ｓ１０９）。続いて、ノード実行回数計測部１１１は、メモリ上に構築されているＸＳＬＴコード２０のＤＯＭツリーを実行回数付加ＸＳＬＴコード５０として出力する（Ｓ１１０）。この際、ｍ＿ｅｘｅｃＣｏｕｎｔが定義されているノードに対応するＸＳＬＴ要素には、ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性の値としてｍ＿ｅｘｅｃＣｏｕｎｔの値が記述される。また、ｍ＿ｅｘｅｃＣｏｕｎｔが定義されていないノードに対応するＸＳＬＴ要素には、ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性の値として「０」が記述される。但し、ｍ＿ｅｘｅｃＣｏｕｎｔが定義されていないノードに対応するＸＳＬＴ要素には、ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性を付加しないようにしてもよい。要するに、実行されたＸＳＬＴ要素と実行されていないＸＳＬＴ要素とが区別できればよい。
【００３８】
図８は、実行回数付加ＸＳＬＴコードの例を示す図である。図８の実行回数付加ＸＳＬＴコード５０は、図７のＸＭＬデータ３０に対して図６のＸＳＬＴコード２０を適用して図４に示される処理を一回実行した結果、ＸＳＬＴコード２０に対して実行回数属性（ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性）が付加されたＸＳＬＴコードである。
【００３９】
図中に示されるように、実行回数付加ＸＳＬＴコード５０において、ＸＳＬＴ要素５１１、５１２、５１３、５１４、５１５、５１６、５１７、５１８、５１９、５２０、５２１、５２２、及び５２３のそれぞれには、ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性が付加されている。図中では、ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性は、破線によって囲まれている。
【００４０】
例えば、ＸＳＬＴ要素５１５は、ＸＭＬデータ３０にｐｒｅｆｅｃｔｕｒｅｓ要素が検出されたときに実行される要素である。図７を参照すると、ＸＭＬデータ３０には、一つのｐｒｅｆｅｃｔｕｒｅｓ要素３０１が含まれている。したがって、ＸＳＬＴ要素５１５のｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性の値は「１」となっている。
【００４１】
一方、ＸＳＬＴ要素５１７は、ＸＭＬデータ３０にｐｒｅｆｅｃｔｕｒｅ要素が検出されたときに実行される要素である。図７を参照すると、ＸＭＬデータ３０には、参照番号３０２〜３０７によって示される六つのｐｒｅｆｅｃｔｕｒｅ要素が含まれている。したがって、ＸＳＬＴ要素５１５のｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性の値は「６」となっている。
【００４２】
なお、ＸＬＳＴ要素５２３のｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性の値は「０」である。したがって、ＸＳＬＴ要素５２３は、一度も実行されていないことが分かる。
【００４３】
次に、カバレッジ率の計測段階について説明する。図９は、カバレッジの計測段階における処理手順を説明するためのフローチャートである。すなわち、図９は、図３におけるステップＳ４〜Ｓ５の処理を説明するものである。
【００４４】
実行回数付加ＸＳＬＴコード５０とカバレッジ計測用ＸＳＬＴコード６０とが入力データとして指定され、ＸＳＬ変換の実行が指示されると、ＸＳＬＴプロセッサ１１は、実行回数付加ＸＳＬＴコード５０のＤＯＭツリーをメモリ上に構築する（Ｓ３０１）。続いて、ＸＳＬＴプロセッサ１１は、カバレッジ計測用ＸＳＬＴコード６０のＤＯＭツリーをメモリ上に構築する（Ｓ３０２）。
【００４５】
図１０は、カバレッジ計測用ＸＳＬＴコードの定義例を示す図である。
【００４６】
続いて、ＸＳＬＴプロセッサ１１は、実行回数付加ＸＳＬＴコード５０をＸＭＬデータとし、実行回数付加ＸＳＬＴコード５０にカバレッジ計測用ＸＳＬＴコード６０を適用してＸＳＬ変換を実行する（Ｓ３０３）。したがって以降の処理は、カバレッジ計測用ＸＳＬＴコード６０の定義にしたがって実行される。すなわち、ステップＳ３０４〜Ｓ３１１は、ＸＳＬＴプロセッサ１１にハードコーディングされている処理ではない。
【００４７】
ＸＳＬＴプロセッサ１１は、実行回数付加ＸＳＬＴコード５０内にｘｓｌ：ｔｅｍｐｕｌａｔｅ要素（以下「テンプレート要素」という。）を検出すると、検出されたテンプレート要素（カレントテンプレート要素））内の各ノードについてループ処理を実行する（Ｓ３０５）。まず、カレントノードの種類を判定する（Ｓ３０６）。カレントノードがＸＳＬＴ要素である場合、ＸＳＬＴプロセッサ１１は、カレントテンプレート要素内のＸＳＬＴ要素の総数をカウントするための変数ｘｓｌＴａｇｓの値をインクリメントする（Ｓ３０７）。なお、ｘｓｌＴａｇｓの値は、カレントテンプレート要素ごとに「０」に初期化される。
【００４８】
続いて、ＸＳＬＴプロセッサ１１は、カレントノードに係るＸＳＬＴ要素（カレントＸＳＬＴ要素）のｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性の値を判定する（Ｓ３０８）。ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性の値が０以外のとき、ＸＳＬＴプロセッサ１１は、カレントテンプレート内において少なくとも一回は実行されたＸＳＬＴ要素をカウントするための変数ｃｏｄｅＣｏｖｅｒａｇｅの値をインクリメントする（Ｓ３０９）。なお、ｃｏｄｅＣｏｖｅｒａｇｅの値は、カレントテンプレート要素ごとに「０」に初期化される。一方、ｘｓｌＣｏｖｅｒ：ｃｏｕｎｔ属性の値が０のときは、ｃｏｄｅＣｏｖｅｒａｇｅの値はインクリメントされない。また、ステップＳ３０６において、カレントノードがＸＳＬＴ要素でない場合は、ステップＳ３０７〜Ｓ３０９の処理は実行されない。
【００４９】
上述したステップＳ３０６以降の処理が、カレントテンプレート要素内の全ての要素について完了すると（Ｓ３１０）、ＸＳＬＴプロセッサ１１は、ｃｏｄｅＣｏｖｅｒａｇｅの値をｘｓｌＴａｇｓで除した値をカレントテンプレート要素のカバレッジ率として出力する（Ｓ３１１）。すなわち、本実施の形態では、テンプレート要素をＣ言語等における関数として扱い、テンプレート要素ごとにカバレッジ率が算出される。
【００５０】
実行回数付加ＸＳＬＴコード５０に含まれている全てのテンプレート要素に対してステップＳ３０５〜Ｓ３１１までの処理が完了すると（Ｓ３１２）、カバレッジ計測用ＸＳＬＴコード６０に基づくＸＳＬ変換は終了する。その結果、例えば次のようにカバレッジ率がファイル等に出力される。
【００５１】
図１１は、カバレッジ率の出力結果の例を示す図である。図１１によれば、ＸＳＬＴコード２０において、「ｐｒｅｆｅｃｔｕｒｅ」テンプレートのカバレッジ率は８５．７％であり、「／」テンプレートと「ｐｒｅｆｅｃｔｕｒｅｓ」テンプレートのカバレッジ率は１００％であることが分かる。したがって、この場合、少なくとも「ｐｒｅｆｅｃｔｕｒｅ」テンプレートに対するテストが不十分であることが分かる。よって、テスト者は、「ｐｒｅｆｅｃｔｕｒｅ」要素のテストに適したＸＭＬデータを用いて、更にテストを実行すべきことを判断することができる。
【００５２】
上述したように、本実施の形態におけるカバレッジ計測装置１０によれば、ＸＳＬＴコードのカバレッジ率を適切に、かつ、簡便に計測することができる。なお、本実施の形態では、各ＸＳＬＴ要素には実行回数を示す属性が付加される例を示したが、カバレッジ率を算出するためには必ずしも実行回数が記録される必要はない。少なくとも、実行されたか否かが区別できればよいため、実行されたＸＳＬＴ要素に実行されたことを示す属性（所定の属性）が付加されればよい。但し、実行回数を記録することで、各ＸＳＬＴ要素の実行比率を算出するようにしてもよい。そうすることで、実行回数の少ないＸＳＬＴ要素を識別し、当該ＸＳＬＴ要素に対するテストの強化等を図るようにしてもよい。
【００５３】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００５４】
【図１】本発明の実施の形態におけるカバレッジ計測装置のハードウェア構成例を示す図である。
【図２】本発明の実施の形態におけるカバレッジ計測装置の機能構成例を示す図である。
【図３】本発明の実施の形態におけるＸＳＬＴコードのカバレッジ率の計測処理の概要を説明するための図である。
【図４】ＸＳＬＴコードのテスト段階における処理手順を説明するためのフローチャートである。
【図５】ＸＳＬＴコードのＤＯＭツリーの構築時の処理手順を説明するためのフローチャートである。
【図６】ＸＳＬＴコードの定義例を示す図である。
【図７】ＸＭＬデータの定義例を示す図である。
【図８】実行回数付加ＸＳＬＴコードの例を示す図である。
【図９】カバレッジの計測段階における処理手順を説明するためのフローチャートである。
【図１０】カバレッジ計測用ＸＳＬＴコードの定義例を示す図である。
【図１１】カバレッジ率の出力結果の例を示す図である。
【符号の説明】
【００５５】
１０          カバレッジ計測装置
１１          ＸＳＬＴプロセッサ
２０          ＸＳＬＴコード
３０          ＸＭＬデータ
４０          テスト結果データ
５０          実行回数付加ＸＳＬＴコード
６０          カバレッジ計測用ＸＳＬＴコード
７０          カバレッジ率
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        演算処理装置
１０５        表示装置
１０６        入力装置
１１１        ノード実行回数計測部
Ｂ    バス
【図１】
2008107990.tif 000003
【図２】
2008107990.tif 000004
【図３】
2008107990.tif 000005
【図４】
2008107990.tif 000006
【図５】
2008107990.tif 000007
【図６】
2008107990.tif 000008
【図７】
2008107990.tif 000009
【図８】
2008107990.tif 000010
【図９】
2008107990.tif 000011
【図１０】
2008107990.tif 000012
【図１１】
2008107990.tif 000013