JP2011113474A - カバレッジ情報算出プログラム、カバレッジ情報算出装置およびカバレッジ情報算出方法 - Google Patents

カバレッジ情報算出プログラム、カバレッジ情報算出装置およびカバレッジ情報算出方法 Download PDF

Info

Publication number
JP2011113474A
JP2011113474A JP2009271669A JP2009271669A JP2011113474A JP 2011113474 A JP2011113474 A JP 2011113474A JP 2009271669 A JP2009271669 A JP 2009271669A JP 2009271669 A JP2009271669 A JP 2009271669A JP 2011113474 A JP2011113474 A JP 2011113474A
Authority
JP
Japan
Prior art keywords
program
coverage information
counter
framework
information calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009271669A
Other languages
English (en)
Other versions
JP5682109B2 (ja
Inventor
Shuichiro Fujisada
修一郎 藤定
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009271669A priority Critical patent/JP5682109B2/ja
Publication of JP2011113474A publication Critical patent/JP2011113474A/ja
Application granted granted Critical
Publication of JP5682109B2 publication Critical patent/JP5682109B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】カバレッジ情報の算出対象となるプログラムに関係なく、カバレッジ情報を効率的に算出することを課題とする。
【解決手段】カバレッジ情報算出装置は、カバレッジ情報の算出対象であるプログラムを実行する前に、該プログラムに含まれるコードの枠組み毎にカウンタをメモリなどに設けておく。そして、カバレッジ情報算出装置は、プログラムを実行し、メモリなどに設けられた枠組みごとのカウンタを用いて、抽出された枠組みが実行された回数を計数する。その後、カバレッジ情報算出装置は、抽出された枠組みの数と、計数された枠組みごとの実行回数とから、カバレッジ情報としてプログラムの実行網羅率などを算出する。
【選択図】図1

Description

本発明は、カバレッジ情報算出プログラム、カバレッジ情報算出装置およびカバレッジ情報算出方法に関する。
従来、開発されたプログラムまたは開発段階のプログラムをテストする場合に、プログラムのクラス、メソッド、関数、サブルーチンなど各コードのテスト漏れを防止する技術として、カバレッジ情報を用いた技術が利用されている。このようなカバレッジ情報の算出手法の一例としては、プログラム内に記述される実行されるべき行がどのくらい実際に実行されたかを示す「実行網羅率」を算出するカバレッジ情報算出装置が開示されている。
具体的には、カバレッジ情報算出装置は、プログラムの何処が実行されたかを示す「実行位置」をプログラム実行中にログデータとして記録し、記録した実行位置から実行位置の種類数を示す「実行行数」を計数する。そして、カバレッジ情報算出装置は、計数した「実行行数」をプログラム全体の実行可能な行数を示す「有効全体行数」で除算し、さらに100を乗算した結果である「実行網羅率」をカバレッジ情報として算出する。こうして算出された「実行網羅率」が高い程、プログラム内に記述される実行されるべき行の多くが実際に実行されたことが示される。また、「実行網羅率」が低い程、プログラム内に記述される実行されるべき行の多くが実際には実行されていないことが示される。
ここで、図11と図12を用いて、カバレッジ情報として「実行網羅率」を算出するカバレッジ情報算出装置をより具体的に説明する。図11は、プログラム実行時に実行位置を取得する例を示す図であり、図12は、実行位置から実行行数を取得する例を示す図である。
図11に示すように、Java(登録商標)VM(Java(登録商標) Virtual Machine)上には、classA、classB、classCを有するプログラムが実行されている。そして、カバレッジ情報算出装置は、このプログラムの構成として、「クラス名」と「メソッド名」と「有効行番号」とを対応付けて記憶し、さらに「有効全体行数」を記憶する。ここで、「クラス名」とは、データとその処理方法であるメソッドをまとめたオブジェクトを定義したクラスの名称を示す情報である。また、「メソッド名」とは、クラスで定義されるメソッドの名称を示す情報であり、「有効行番号」とは、実行されるべきクラス内の行番号を示す情報である。また、「有効全体行数」は、各クラスの「有効行番号」の数を計数した情報であり、プログラム全体で実行されるべき行の総数を示す情報である。
例えば、カバレッジ情報算出装置は、図11の(a)に示すように、「クラス名、メソッド名、有効行番号」として「classA、methodA1、3,4,5,6」や「classA、methodA2、9,10,13」と記憶する。また、カバレッジ情報算出装置は、「classB、methodB1、1,2,4,5」、「classB、methodB2、8,9,12」、「classB、methodB3、13,14,16,19」と記憶する。そして、カバレッジ情報算出装置は、「classC、methodC1、2,3,4,5,7,9」と、さらに「有効全体行数」として、「24」を記憶する。
つまり、この例の場合、classAは、プログラムの3行目〜6行目が実行可能な行であるmethodA1と、プログラムの9行目、10行目、13行目が実行可能な行であるmethodA2とを有している。また、classBは、プログラムの1、2、4、5行目が実行可能な行であるmethodB1と、プログラムの8、9、12行目が実行可能な行であるmethodB2とを有している。さらに、classBは、プログラムの13、14、16、19行目が実行可能な行であるmethodB3を有している。また、classCは、プログラムの2、3、4、5、7、9行目が実行可能な行であるmethodC1を有している。
このような状態において、カバレッジ情報算出装置は、Java(登録商標)VM上でclassA〜Cを有するプログラムを実行すると、実行された「クラス名、メソッド名、行番号」を示す「実行位置」をログデータとしてファイルに出力する。例えば、カバレッジ情報算出装置は、図11の(b)に示すように、「classA、methodA1、3行目」、「classA、methodA1、4行目」、「classB、methodB2、8行目」を出力する。また、カバレッジ情報算出装置は、「classB、methodB2、9行目」、「classB、methodB2、12行目」、「classB、methodB2、8行目」、「classB、methodB2、9行目」を出力する。また、カバレッジ情報算出装置は、「classB、methodB2、12行目」、「classA、methodA1、5行目」を出力する。
その後、カバレッジ情報算出装置は、プログラムの実行を停止した場合やプログラムが終了した場合に、出力された「実行位置」の種類を計数する。例えば、カバレッジ情報算出装置は、図12に示すように、「classA、methodA1、3行目」の登場回数を「1」、「classA、methodA1、4行目」の登場回数を「1」と計数する。同様に、カバレッジ情報算出装置は、「classA、methodA1、5行目」の登場回数を「1」と計数する。さらに、カバレッジ情報算出装置は、「classB、methodB2、8行目」の登場回数を「2」、「classB、methodB2、9行目」の登場回数を「2」、「classB、methodB2、12行目」の登場回数を「2」と計数する。したがって、カバレッジ情報算出装置は、全6種類の「実行位置」、言い換えると、全6種類の「行」が実行されたと計数する。
そして、カバレッジ情報算出装置は、算出した「実行位置」の種類数「6」を「有効全体行数=24」で除算した「6/24=0.25」を算出し、さらに「0.25」に100を乗算した「25」を「実行網羅率」として算出する。この結果、例示したプログラム全体のうち「25%」が実際に実行され、「75%」が実際には実行されていないことがわかる。
特開平9−251400号公報
しかしながら、従来の技術では、カバレッジ情報の算出対象であるプログラムが複雑な場合など、プログラムの実行によって出力されるデータであって、カバレッジ情報の算出に必要なデータを格納する領域が膨大になる。この結果、カバレッジ情報を効率的に算出することができないという課題があった。
例えば、プログラム全体の「実行網羅率」を算出する場合には、カバレッジ情報算出装置は、プログラムを最初から最後まで全体的に実行して、上記「実行位置」を取得する。また、カバレッジ情報算出装置は、プログラム内の行が実行されるたびに、「実行位置」を1行ずつログデータとして出力する。これらのため、カバレッジ情報算出装置は、複雑なプログラムや大規模なプログラムのカバレッジを算出する場合には、膨大な数の「実行位置」をログデータとして出力する。そして、カバレッジ情報算出装置は、出力した膨大な数の「実行位置」から「実行位置」の種類を計数するのに多くの時間を必要とし、結果として「実行網羅率」の算出にも多くの時間を必要する。
また、プログラムの所定範囲の「実行網羅率」を算出する場合には、カバレッジ情報算出装置は、所定範囲内のプログラムを実行して、上記「実行位置」を取得する。このような所定範囲の「実行網羅率」を算出する場合とは、対象となる所定範囲のプログラムが非常に複雑であることが多い。このため、所定範囲内のプログラムの実行によって出力される「実行位置」は、膨大な数になることが多い。したがって、この場合であっても、カバレッジ情報算出装置は、出力した膨大な数の「実行位置」から「実行位置」の種類を計数するのに多くの時間を必要とし、結果として「実行網羅率」の算出にも多くの時間を必要とする。
また、繰り返し実行されるプログラムの「実行網羅率」を算出する場合には、カバレッジ情報算出装置は、プログラムを所定時間実行して、上記「実行位置」を取得する。この場合、プログラムを実行する時間が長ければ長いほど、ログデータとして出力される「実行位置」が多くなる。つまり、カバレッジ情報算出装置は、プログラムを実行する時間が長いほど、出力した「実行位置」から「実行位置」の種類を計数するのに時間を必要とし、「実行網羅率」の算出にも多くの時間を必要とする。
開示の技術は、上記に鑑みてなされたものであって、カバレッジ情報の算出対象となるプログラムに関係なく、カバレッジ情報を効率的に算出することが可能であるカバレッジ情報算出プログラム、カバレッジ情報算出装置およびカバレッジ情報算出方法を提供することを目的とする。
本願の開示するカバレッジ情報算出プログラムは、カバレッジ情報の算出対象であるプログラムに含まれるコードの枠組み毎に設けられたカウンタを用いて、該プログラムを実行した場合に該枠組みが実行された回数を計数する回数計数手順を有する。そして、前記カウンタが設けられた枠組みの数と、前記回数計数手順によって実行回数が計数された枠組みの数とから、カバレッジ情報を算出するカバレッジ情報算出手順を有する。そして、これらの手順をコンピュータに実行させる。
本願の開示するカバレッジ情報算出プログラム、カバレッジ情報算出装置およびカバレッジ情報算出方法の一つの態様によれば、カバレッジ情報の算出対象となるプログラムに関係なく、カバレッジ情報を効率的に算出することが可能であるという効果を奏する。
図1は、実施例1に係るカバレッジ情報算出装置の構成を示すブロック図である。 図2は、実施例2に係るカバレッジ情報算出装置の構成を示すブロック図である。 図3は、プログラムDBに記憶される情報の例を示す図である。 図4は、プログラムがC言語で記述されている場合に、枠組みカウンタDBに記憶される情報の例を示す図である。 図5は、プログラムがJava(登録商標)で記述されている場合に、枠組みカウンタDBに記憶される情報の例を示す図である。 図6は、カバレッジ情報DBに記憶される情報の例を示す図である。 図7は、C言語で記述されたソースコードから枠組みを抽出する例を示す図である。 図8は、Java(登録商標)で記述されたソースファイルから枠組みを抽出する例を示す図である。 図9は、実施例2に係るカバレッジ情報算出装置における処理の流れを示すフローチャートである。 図10は、カバレッジ情報算出プログラムを実行するコンピュータシステムの例を示す図である。 図11は、プログラム実行時に実行位置を取得する例を示す図である。 図12は、実行位置から実行行数を取得する例を示す図である。
以下に、本願の開示するカバレッジ情報算出プログラム、カバレッジ情報算出装置およびカバレッジ情報算出方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、実施例1に係るカバレッジ情報算出装置の構成を示すブロック図である。図1に示すカバレッジ情報算出装置1は、例えば、開発途中のプログラムをテストし、行カバレッジ、クラスカバレッジ、メソッドカバレッジなどの任意の単位で、実行網羅率を算出する装置である。このカバレッジ情報算出装置1は、図1に示すように、回数計数部1aとカバレッジ情報算出部1bとを有する。
回数計数部1aは、カバレッジ情報の算出対象であるプログラムに含まれるコードの枠組み毎に設けられたカウンタを用いて、該プログラムを実行した場合に該枠組みが実行された回数を計数する。例えば、カバレッジ情報算出装置1は、カバレッジ情報の算出対象であるプログラムソースコード2に含まれるコードの枠組み毎のカウンタをメモリなどに記憶する。そして、回数計数部1aは、プログラムソースコード2を実行し、メモリなどに記憶される枠組み毎のカウンタを用いて、プログラムソースコード2の枠組み毎に実行された回数を計数する。その後、回数計数部1aは、プログラムソースコード2の実行が終了すると、プログラムの実行が終了したことをカバレッジ情報算出部1bに通知する。
カバレッジ情報算出部1bは、カウンタが設けられた枠組みの数と、回数計数部1aによって実行回数が計数された枠組みの数とから、カバレッジ情報を算出する。例えば、カバレッジ情報算出部1bは、行カバレッジ、メソッドカバレッジ、クラスカバレッジ、関数カバレッジなど任意の単位で、カバレッジ情報3を算出する。一例としては、カバレッジ情報算出部1bは、プログラム中の実行すべき行がどのくらい実際に実行されたか示す実行網羅率やプログラム中の実行すべき関数がどのくらい実際に実行されたかなどを示す実行網羅率などを算出する。
このように、実施例1によれば、カバレッジ情報算出装置1は、カバレッジ情報算出対象のプログラムの枠組みに対応するカウンタをメモリなどに設けておく。そして、カバレッジ情報算出装置1は、実際に実行された枠組みの数をメモリに設けられたカウンタをインクリメントすることで計数し、実行網羅率などを算出する。つまり、カバレッジ情報算出装置1は、プログラムを実行するたびに、実行ログデータをファイルやメモリに出力する必要はなく、プログラムの規模に応じたカウンタを用いて、実行回数のみを計数すればよい。
したがって、実施例1に係るカバレッジ情報算出装置1では、プログラムが複雑な場合であっても、プログラムの実行によって出力されるデータであって、カバレッジ情報の算出に必要なデータを格納する領域は必要ない。また、実施例1に係るカバレッジ情報算出装置1では、プログラム実行前に作成した枠組みごとのカウンタで、実行されるたびに実行回数を計数するので、プログラムの実行によって出力されたログデータから枠組みごとの実行回数を解析する必要もない。
この結果、実施例1に係るカバレッジ情報算出装置1では、カバレッジ情報の算出対象となるプログラムに関係なく、カバレッジ情報を効率的に算出することが可能である。また、プログラム開発者などは、開発中のプログラムのクラス、メソッド、関数、サブルーチンなど各コードのテスト漏れを迅速に確認することができる。
ところで、本願が開示するカバレッジ情報算出装置は、実施例1で説明した制御部以外にも様々な制御部を有していてもよい。そこで、実施例2では、実施例1で説明した制御部以外の様々な制御部を有するカバレッジ情報算出装置について説明する。
[カバレッジ情報算出装置の構成]
まず、図2を用いて、様々な制御部を有するカバレッジ情報算出装置の構成について説明する。図2は、実施例2に係るカバレッジ情報算出装置の構成を示すブロック図である。図2に示すように、カバレッジ情報算出装置10は、通信制御I/F部11と、入力部12と、表示部13と、記憶部15と、制御部20とを有している。
通信制御I/F部11は、少なくとも1つの通信ポートを有するインタフェースであり、他の装置との間でやり取りされる情報を制御する。例えば、通信制御I/F部11は、プログラム開発者が利用する管理コンピュータと接続され、カバレッジ情報算出対象のプログラムを管理コンピュータから受信し、また、算出されたカバレッジ情報を管理コンピュータに送信する。
入力部12は、例えば、キーボードやマウス、マイクなどであり、カバレッジ情報算出開始指示や終了指示の入力を受付け、後述する制御部20等に入力する。また、入力部12は、CD(Compact Disc)、DVD(Digital Versatile Disc)や磁気ディスクなどの記憶媒体を読み込んで情報を読み出したり、情報を書き込んだりすることができる。例えば、入力部12は、カバレッジ情報算出対象のプログラムを記憶媒体から読み出して記憶部15に格納したり、算出されたカバレッジ情報を記憶媒体に書き込んだりすることができる。
なお、後述する表示部13も、マウスと協働してポインティングディバイス機能を実現する。表示部13は、例えば、モニタ、ディスプレイ、タッチパネルやスピーカなどであり、後述する制御部20で生成されたカバレッジ情報などを表示出力する。
記憶部15は、制御部20による各種処理に必要なデータおよびプログラムを格納するとともに、プログラムDB(DataBase)16と、枠組みカウンタDB17と、カバレッジ情報DB18とを有する。このプログラムDB16、枠組みカウンタDB17、カバレッジ情報DB18は、例えば、RAM(Random Access Memory)などの半導体メモリ素子やハードディスク、光ディスクなどの記憶装置である。
プログラムDB16は、カバレッジ情報算出対象のプログラムを記憶し、例えば、通信制御I/F部11によって受信されたプログラムや入力部12によって記憶媒体から読み出されたプログラムなどを記憶する。例えば、プログラムDB16は、図3に示すようなC言語で記述されたソースプログラムを記憶する。図3は、プログラムDBに記憶される情報の例を示す図である。
図3に示すソースプログラムであるSampleSource.cは、includeによって、ライブラリであるヘッダーファイル「stdio.h」と「string.h」を読み込み、入出力と文字列操作の宣言を行っている。そして、SampleSource.cは、コマンドライン引数を用いた関数を実行する。具体的には、SampleSource.cには、引数の総個数(int argc)と引数の文字列を示すポインタの配列(char *argc[])を引数とし、戻り値を「0」とするfunctionA1が定義されている。
枠組みカウンタDB17は、プログラムの枠組みごとに、当該枠組みが実行された回数を計数するカウンタを記憶する。具体的には、枠組みカウンタDB17は、カバレッジ情報算出対象のプログラムが有するソースファイル名、関数名、クラス名、メソッド名、行番号ごとに実行回数を計数するカウンタを記憶する。
例えば、枠組みカウンタDB17は、図4に示すように、ソースファイル「SampleSource.c」の実行回数と、「関数functionA1、B1、C1」各々の実行回数を計数するカウンタを記憶する。また、枠組みカウンタDB17は、「関数functionA1の行番号3、5、11」各々の実行回数と、「関数functionB1の行番号2」の実行回数と、「関数functionC1の行番号5、9」各々の実行回数とを計数するカウンタを記憶する。
この例の場合、カバレッジ情報算出対象のプログラムのソースファイル「SampleSource.c」を実行した場合に、実行されるべき関数がA1、B1、C1の3つある。そして、関数A1には、実行されるべき行が3、5、11行目の計3行あり、関数B1には、実行されるべき行が2行目の計1行あり、関数C1には、実行されるべき行が5、9行目の計2行ある。なお、図4は、プログラムがC言語で記述されている場合に、枠組みカウンタDBに記憶される情報の例を示す図である。
また、枠組みカウンタDB17は、図5に示すように、プログラムのクラス「classA」の実行回数と、「classAのmethodA1、A2」各々の実行回数を計数するカウンタとを計数するカウンタを記憶する。例えば、枠組みカウンタDB17は、「methodA1の行番号2、4」各々の実行回数を計数するカウンタと、「methodA2の行番号2、12」各々の実行回数を計数するカウンタとを計数するカウンタを記憶する。同様に、枠組みカウンタDB17は、プログラムのクラス「classB」の実行回数と、「classBのmethodB1」の実行回数を計数するカウンタとを計数するカウンタと、「methodB1の行番号4、7」各々の実行回数を計数するカウンタとを計数するカウンタを記憶する。
この例の場合、カバレッジ情報算出対象のプログラムを実行した場合に、実行されるべきクラスがA、Bの2つあり、クラスAには、実行されるべきメソッドがA1とA2の2つある。そして、メソッドA1には、実行されるべき行が2、4行目の計2行あり、メソッドA2には、実行されるべき行が2、12行目の計2行ある。また、クラスBには、実行されるべきメソッドがB1の1つあり、メソッドB1には、実行されるべき行が4、7行目の計2行ある。なお、図5は、プログラムがJava(登録商標)で記述されている場合に、枠組みカウンタDBに記憶される情報の例を示す図である。
カバレッジ情報DB18は、後述するカバレッジ情報算出部24によって算出されたカバレッジ情報を記憶する。例えば、カバレッジ情報DB18は、図6に示すように、「算出日、算出範囲、カバレッジ値(実行網羅率)」として「2009/9/30、functionA〜functionC、25%」や「2009/9/30、全部、50%」などと記憶する。ここで記憶される「算出日」とは、カバレッジ値を算出した日であり、「算出範囲」とは、カバレッジ値を算出したプログラムの範囲であり、「カバレッジ値」とは、算出された実行網羅率である。なお、図6は、カバレッジ情報DBに記憶される情報の例を示す図である。
制御部20は、例えば、ASIC(Application Specific Integrated Circuit)などの集積回路やCPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。この制御部20は、OS(Operating System)などの制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有する。さらに、制御部20は、枠組み抽出部21と、カウンタ生成部22と、回数計数部23と、カバレッジ情報算出部24とを有し、これらによって各種処理を実行する。
枠組み抽出部21は、カバレッジ情報算出対象のプログラムに含まれるコードの枠組みを抽出する。具体的には、枠組み抽出部21は、入力部12によってカバレッジ情報算出開始指示が受け付けられると、算出対象のプログラムをプログラムDB16から読み出し、プログラムが有するコードを抽出してカウンタ生成部22に出力する。
例えば、枠組み抽出部21は、プログラムDB16から読み出したプログラムがC言語で記述されている場合には、図7に示すように、プログラムのソースコード「SampleSource.c」から関数情報を抽出する。続いて、枠組み抽出部21は、抽出した関数情報内において、演算や出力などの実質的な処理が実施される関数内の行を抽出する。図7は、C言語で記述されたソースコードから枠組みを抽出する例を示す図である。
また、枠組み抽出部21は、プログラムDB16から読み出したプログラムがJava(登録商標)で記述されている場合には、図8に示すように、Java(登録商標)VM(Java(登録商標) Virtual Machine)上のモジュール構成情報からクラス情報を抽出する。続いて、枠組み抽出部21は、抽出した各クラス情報内で定義されるメソッド情報を抽出する。そして、枠組み抽出部21は、抽出した各メソッド内において、演算や出力などの実質的な処理が実施される関数内の行を抽出する。図8は、Java(登録商標)で記述されたソースファイルから枠組みを抽出する例を示す図である。
カウンタ生成部22は、枠組み抽出部21によって抽出された枠組みごとに、当該枠組みが実行された回数を計数するカウンタを生成する。具体的には、カウンタ生成部22は、枠組み抽出部21から枠組みが抽出されると、図4や図5に示すように、抽出された枠組みごとのカウンタを生成して枠組みカウンタDB17に格納し、カウンタを生成したことを回数計数部23に通知する。
例えば、カウンタ生成部22は、カバレッジ情報算出対象のプログラムがC言語で記述されている場合には、枠組み抽出部21によって抽出されたソースファイル名、関数、関数内の行ごとに、カウンタを生成する。また、カウンタ生成部22は、カバレッジ情報算出対象のプログラムがjava(登録商標)で記述されている場合には、枠組み抽出部21によって抽出されたクラス、メソッド、メソッド内の行ごとにカウンタを生成する。
そして、カウンタ生成部22は、枠組み抽出部21によって抽出された枠組みと、生成したカウンタとを対応付ける。例えば、カウンタ生成部22は、枠組みとカウンタとの対応関係を生成する。そして、カウンタ生成部22は、枠組みが実行された場合に、実行された枠組みを特定する情報を示す実行通知を回数計数部23に出力するプログラムを、プログラムDB16に記憶されるプログラムソースコードに追記する。なお、プログラムソースコードに追記されたプログラムは、後述するカバレッジ情報算出部24によって、カバレッジ情報算出後に削除される。また、カウンタ生成部22は、プログラムDB16に記憶されるプログラムソースコードをコピーしたものに上記プログラムを追記し、これをカバレッジ情報算出対象としてもよい。
また、枠組みを特定する情報の一例としては、プログラム全体での行番号や一意に割り振ったIDなど特定できる情報であれば、カウンタと対応関係を生成できる情報であればよい。また、追記するプログラムの一例としては、コメント文を挿入して実行通知を出力するなど様々な通知手法を用いることができる。
回数計数部23は、カバレッジ情報算出対象のプログラムを実行し、カウンタ生成部22によって生成された枠組みごとのカウンタを用いて、枠組み抽出部21によって抽出された枠組みが実行された回数を計数する。例えば、回数計数部23は、カウンタ生成部22からカウンタを生成したことが通知されると、プログラムDB16からプログラムを読み出して実行し、実行したプログラムを監視する。そして、回数計数部23は、カウンタ生成部22によって生成されたカウンタと枠組みとの対応関係と、枠組みが実行されるたびに受信する実行通知とを用いて、実行された枠組みを計数する。例えば、回数計数部23は、プログラム内の行が実行されるたびに実行通知を受信し、実行された行、この行を含む関数、この関数を含むソースファイル各々のカウンタをインクリメントする。その後、回数計数部23は、プログラムが終了すると、終了通知をカバレッジ情報算出部24に通知する。
図5を例にして説明すると、回数計数部23は、例えば、methodA2の12行目が実行された場合、methodA2の12行目のカウンタをインクリメントし、さらに、methodA2のカウンタをインクリメントし、さらに、classAのカウンタをインクリメントする。その後、回数計数部23は、例えば、methodB1の7行目が実行された場合、methodB1の7行目のカウンタをインクリメントし、さらに、methodB1のカウンタをインクリメントし、さらに、classBのカウンタをインクリメントする。
カバレッジ情報算出部24は、カウンタ生成部22によって抽出された枠組みの数と、回数計数部23によって計数された枠組みごとの実行回数とから、カバレッジ情報としてプログラムの実行網羅率を算出する。カバレッジ情報算出部24は、プログラムの実行終了を回数計数部23から受信すると、カバレッジ情報の算出を実施する。
例えば、行単位を示す行カバレッジで実行網羅率を算出する場合、カバレッジ情報算出部24は、枠組みカウンタDB17に記憶される行ごとのカウンタの数を計数するとともに、インクリメントされているカウンタの数を計数する。続いて、カバレッジ情報算出部24は、インクリメントされているカウンタの数を行ごとのカウンタの総数で除算し、実行されるべき行のうち、実際に実行された行の割合を算出する。そして、カバレッジ情報算出部24は、算出した割合と算出した時間、さらに、算出対象となったプログラムの範囲とを対応付けてカバレッジ情報DB18に格納する。
具体的な例として、プログラム全体を実行し、図4に示した枠ごとのカウンタのうち、functionA1の行番号=3、11とfunctionB1の行番号=2の実行回数が1以上であったとする。この場合、カバレッジ情報算出部24は、枠組みカウンタDB17に記憶される行ごとのカウンタの総数を「6」と計数し、実際に実行された行の数を「3」と計数する。続いて、カバレッジ情報算出部24は、実行したプログラムの実行網羅率(行)を「3/6*100=50%」と算出する。そして、カバレッジ情報算出部24は、実行網羅率を算出した日「2009/10/30」、実行した範囲「全部」、算出した実行網羅率「50%」を対応付けて、カバレッジ情報DB18に格納する。
また、プログラム全体を実行し、メソッドカバレッジで実行網羅率を算出する場合、図5を用いて説明する。ここでは、図5に示したmethodA1の行番号=2、4と、methodB1の行番号=4、7との実行回数が1以上であったとする。すなわち、methodA1の実行回数とmethodB1の実行回数が1以上である。この場合、カバレッジ情報算出部24は、枠組みカウンタDB17に記憶されるメソッドごとのカウンタの総数を「3」と計数し、実際に実行されたメソッドの数を「2」と計数する。続いて、カバレッジ情報算出部24は、実行したプログラムの実行網羅率(行)を「2/3*100=66.66%」と算出する。そして、カバレッジ情報算出部24は、実行網羅率を算出した日「2009/10/30」、実行した範囲「全部」、算出したメソッドカバレッジの実行網羅率「66%」を対応付けて、カバレッジ情報DB18に格納する。
なお、カバレッジ情報算出部24は、プログラムを実行した範囲については、枠組み抽出部21によって入力部12を介して受け付けられた範囲を受け付けることで、実行したプログラムの範囲、すなわち、カバレッジ情報算出対象範囲を取得することができる。
[処理の流れ]
次に、図9を用いて、実施例2に係るカバレッジ情報算出装置における処理の流れを説明する。図9は、実施例2に係るカバレッジ情報算出装置における処理の流れを示すフローチャートである。
図9に示すように、入力部12によってカバレッジ情報算出処理開始指示が受け付けられると(ステップS101肯定)、カバレッジ情報算出装置10の枠組み抽出部21は、算出対象のプログラムをプログラムDB16から読み込む(ステップS102)。
続いて、枠組み抽出部21は、読み込んだプログラムの構造を解析してプログラムが有するコードを抽出し、カウンタ生成部22は、枠組み抽出部21によって抽出された枠組みごとに、枠組みが実行された回数を計数するカウンタを生成する(ステップS103)。
その後、回数計数部23は、カバレッジ情報算出対象のプログラムを実行する(ステップS104)。そして、回数計数部23は、カウンタ生成部22によって生成された枠組みごとのカウンタを用いて、実際に実行された枠組みのカウンタをインクリメントし、枠組みごとの実行回数を計数する(ステップS105)。なお、回数計数部23は、プログラムの実行が終了するまで、ステップS105を繰り返して実行する(ステップS106否定)。
そして、プログラムの実行が終了すると(ステップS106肯定)、カバレッジ情報算出部24は、抽出された枠組みの数と、計数された枠組みごとの実行回数とから、カバレッジ情報としてプログラムの実行網羅率を算出する(ステップS107)。
[実施例2による効果]
このように、実施例2に係るカバレッジ情報算出装置10は、プログラム実行前の枠組みを用いて、関数などのコードの枠組みごとに実行回数を計数するので、実行ログを生成する必要も無く、実行ログから枠組みごとの実行回数を生成する必要もない。この結果、カバレッジ情報算出装置10は、カバレッジ情報の算出対象となるプログラムに関係なく、カバレッジ情報を効率的に算出することが可能である。また、例えば、メモリなどの記憶領域に、実行ログを出力する領域を設ける必要も無いので、記憶領域を圧迫することもなく、記憶領域の無駄な使用を防止することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
(カバレッジ情報算出範囲)
例えば、本願が開示するカバレッジ情報算出装置は、実施例1や2で説明したようなプログラム全体に対してカバレッジ情報を算出する以外にも、プログラムの所定範囲内だけを対象として、カバレッジ情報を算出することができる。例えば、枠組み抽出部21は、カバレッジ情報の算出対象とする場合には、入力部12を介して、対象プログラムの関数Aのみや関数Aから関数Cまでなど範囲の指定を受け付けて、受け付けた範囲についてのみ、枠組みを抽出する。そして、枠組み抽出部21は、抽出した枠組みと指定された範囲とをカウンタ生成部22に出力する。
続いて、カウンタ生成部22は、枠組み抽出部21によって抽出された枠組みについてのみカウンタを生成し、カウンタ生成が完了したことと指定された範囲とを回数計数部23に通知する。その後、回数計数部23は、指定された範囲についてのみ実行し、生成されたカウンタを用いて枠組みごとの実行回数を計数し、プログラムの実行が完了すると、完了したことと指定された範囲とをカバレッジ情報算出部24に通知する。そして、カバレッジ情報算出部24は、指定された範囲について、カバレッジ情報を算出する。この結果、カバレッジ情報算出装置10は、プログラムの所定範囲内について、カバレッジ情報を効率的に算出することが可能である。
(カバレッジ情報算出対象プログラム)
また、実施例1や2に係るカバレッジ情報算出装置は、カバレッジ情報算出対象プログラムとして、C言語やJava(登録商標)で記述されたプログラムを例示したが、本願はこれに限定されるものではない。例えば、カバレッジ情報算出装置は、手続き型言語で記述されたプログラムであれば、実施例1や2と同様に処理することができる。また、本願が開示するカバレッジ情報算出装置は、ソースプログラムからだけでなく、例えば、コンパイル後のモジュールから枠組みを抽出することができる。
(実行回数の計数手法)
また、実施例2に係るカバレッジ情報算出装置は、プログラムの枠組みとカウンタとを対応付けて、実行された枠組みの情報をプログラムから受信することで、枠組み毎の実行回数を計数する例について説明したが、本願はこれに限定されるものではない。例えば、カバレッジ情報算出装置は、コンパイラ後のモジュールから枠組み毎のカウンタを作成した場合には、コンパイラ後のモジュールとカウンタとを対応付ける。そして、カバレッジ情報算出装置は、実行したモジュールを監視し、実行された枠組みを計数する。なお、実行された枠組みを検知する手法は、実施例2で説明した手法以外の様々な技術を用いることができる。
(カバレッジ情報の単位)
また、実施例1や2に係るカバレッジ情報算出装置は、カバレッジ情報として行カバレッジにおける実行網羅率、つまり、実際にどのくらいの行が実行されたかを示す実行網羅率を算出する例について説明したが、本願はこれに限定されるものではない。例えば、実施例1や2で用いたプログラムの行に注目した行カバレッジ以外にも、クラスに注目したクラスカバレッジ、メソッドに注目したメソッドカバレッジ、関数に注目した関数カバレッジなど、コードにおける任意の単位で実行網羅率を算出することができる。
一例としては、カバレッジ情報算出装置は、実行されるべきメソッドの合計と実際に実行されたメソッドの数とから、メソッドカバレッジでの実行網羅率を算出することができる。また、カバレッジ情報算出装置は、実行されるべきクラスの合計と実際に実行されたクラスの数とから、クラスカバレッジでの実行網羅率を算出することができる。
(システム構成等)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、例えば図3〜図6等に示した各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、例えば枠組み抽出部21とカウンタ生成部22とを統合するなど各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(プログラム)
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
図10は、カバレッジ情報算出プログラムを実行するコンピュータシステムの例を示す図である。図10に示すように、コンピュータシステム100は、RAM101と、HDD102と、ROM103と、CPU104とを有する。ここで、ROM103には、上の実施例と同様の機能を発揮するプログラムがあらかじめ記憶されている。つまり、図10に示すように、ROM103には、枠組み抽出プログラム103a、カウンタ生成プログラム103b、回数計数プログラム103c、カバレッジ情報算出プログラム103dがあらかじめ記憶されている。
そして、CPU104には、これらのプログラム103a〜103dを読み出して実行することで、図10に示すように、各プロセスとなる。つまり、プログラム103a〜103d各々は、枠組み抽出プロセス104a、カウンタ生成プロセス104b、回数計数プロセス104c、カバレッジ情報算出プロセス104dとなる。なお、枠組み抽出プロセス104aは、図2に示した枠組み抽出部21に対応し、同様に、カウンタ生成プロセス104bは、カウンタ生成部22に対応する。また、回数計数プロセス104cは、図2に示した回数計数部23に対応し、カバレッジ情報算出プロセス104dは、カバレッジ情報算出部24に対応する。
また、HDD102には、プログラムテーブル102aと、枠組みカウンタテーブル102bと、カバレッジ情報テーブル102cとが設けられる。プログラムテーブル102aは、図2に示したプログラムDB16に対応し、枠組みカウンタテーブル102bは、枠組みカウンタDB17に対応し、カバレッジ情報テーブル102cは、カバレッジ情報DB18に対応する。
ところで、上記したプログラム103a〜103dは、必ずしもROM103に記憶させておく必要はない。例えば、プログラム103a〜103dは、コンピュータシステム100に挿入されるフレキシブルディスク(FD)、CD−ROM、MOディスク、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に記憶させておくようにしてもよい。また、コンピュータシステム100の内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」に記憶させておいてもよい。さらに、公衆回線、インターネット、LAN、WANなどを介してコンピュータシステム100に接続される「他のコンピュータシステム」に記憶させておいてもよい。そして、コンピュータシステム100がこれらからプログラムを読み出して実行するようにしてもよい。
すなわち、この他の実施例でいうプログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記録されるものである。そして、コンピュータシステム100は、このような記録媒体からプログラムを読み出して実行することで上記した実施例と同様の機能を実現する。なお、この他の実施例でいうプログラムは、コンピュータシステム100によって実行されることに限定されるものではない。例えば、他のコンピュータシステムまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)カバレッジ情報の算出対象であるプログラムに含まれるコードの枠組み毎に設けられたカウンタを用いて、該プログラムを実行した場合に該枠組みが実行された回数を計数する回数計数手順と、
前記カウンタが設けられた枠組みの数と、前記回数計数手順によって実行回数が計数された枠組みの数とから、カバレッジ情報を算出するカバレッジ情報算出手順と
をコンピュータに実行させることを特徴とするカバレッジ情報算出プログラム。
(付記2)前記プログラムを実行する前に、前記プログラムに含まれるコードの枠組みを抽出する枠組み抽出手順と、
前記枠組み抽出手順によって抽出された枠組み毎に、該枠組みが実行された回数を計数するカウンタを生成するカウンタ生成手順とをさらにコンピュータに実行させることを特徴とする付記1に記載のカバレッジ情報算出プログラム。
(付記3)前記カバレッジ情報算出手順は、前記枠組み抽出手順によって抽出された枠組みの数における前記回数計数手順によって実行回数が計数された枠組みの数の割合を示すプログラムの実行網羅率を、前記カバレッジ情報として算出することを特徴とする付記2に記載のカバレッジ情報算出プログラム。
(付記4)カバレッジ情報の算出対象であるプログラムに含まれるコードの枠組み毎のカウンタを記憶するカウンタ記憶部と、
前記カウンタ記憶部に記憶される枠組み毎のカウンタを用いて、前記プログラムを実行した場合に該枠組みが実行された回数を計数する回数計数部と、
前記カウンタ記憶部に記憶されるカウンタが設けられた枠組みの数と、前記回数計数部によって実行回数が計数された枠組みの数とから、カバレッジ情報を算出するカバレッジ情報算出部と
を有することを特徴とするカバレッジ情報算出装置。
(付記5)前記プログラムを実行する前に、前記プログラムに含まれるコードの枠組みを抽出する枠組み抽出部と、
前記枠組み抽出部によって抽出された枠組み毎に、前記カウンタを生成して前記カウンタ記憶部に格納するカウンタ生成部とをさらにコンピュータに実行させることを特徴とする付記4に記載のカバレッジ情報算出装置。
(付記6)前記カバレッジ情報算出部は、前記枠組み抽出部によって抽出された枠組みの数における前記回数計数部によって実行回数が計数された枠組みの数の割合を示すプログラムの実行網羅率を、前記カバレッジ情報として算出することを特徴とする付記5に記載のカバレッジ情報算出装置。
(付記7)カバレッジ情報の算出対象であるプログラムに含まれるコードの枠組み毎に設けられたカウンタを用いて、該プログラムを実行した場合に該枠組みが実行された回数を計数する回数計数工程と、
前記カウンタが設けられた枠組みの数と、前記回数計数工程によって実行回数が計数された枠組みの数とから、カバレッジ情報を算出するカバレッジ情報算出工程と
を含んだことを特徴とするカバレッジ情報算出方法。
(付記8)前記プログラムを実行する前に、前記プログラムに含まれるコードの枠組みを抽出する枠組み抽出工程と、
前記枠組み抽出工程によって抽出された枠組み毎に、前記カウンタを生成するカウンタ生成工程とをさらにコンピュータに実行させることを特徴とする付記7に記載のカバレッジ情報算出方法。
(付記9)前記カバレッジ情報算出工程は、前記枠組み抽出工程によって抽出された枠組みの数における前記回数計数工程によって実行回数が計数された枠組みの数の割合を示すプログラムの実行網羅率を、前記カバレッジ情報として算出することを特徴とする付記8に記載のカバレッジ情報算出方法。
1 カバレッジ情報算出装置
1a 回数計数部
1b カバレッジ情報算出部
2 プログラムソースコード
3 カバレッジ情報
10 カバレッジ情報算出装置
11 通信制御I/F部
12 入力部
13 表示部
15 記憶部
16 プログラムDB
17 枠組みカウンタDB
18 カバレッジ情報DB
20 制御部
21 枠組み抽出部
22 カウンタ生成部
23 回数計数部
24 カバレッジ情報算出部

Claims (5)

  1. カバレッジ情報の算出対象であるプログラムに含まれるコードの枠組み毎に設けられたカウンタを用いて、該プログラムを実行した場合に該枠組みが実行された回数を計数する回数計数手順と、
    前記カウンタが設けられた枠組みの数と、前記回数計数手順によって実行回数が計数された枠組みの数とから、カバレッジ情報を算出するカバレッジ情報算出手順と
    をコンピュータに実行させることを特徴とするカバレッジ情報算出プログラム。
  2. 前記プログラムを実行する前に、前記プログラムに含まれるコードの枠組みを抽出する枠組み抽出手順と、
    前記枠組み抽出手順によって抽出された枠組み毎に、前記カウンタを生成するカウンタ生成手順とをさらにコンピュータに実行させることを特徴とする請求項1に記載のカバレッジ情報算出プログラム。
  3. 前記カバレッジ情報算出手順は、前記枠組み抽出手順によって抽出された枠組みの数における前記回数計数手順によって実行回数が計数された枠組みの数の割合を示すプログラムの実行網羅率を、前記カバレッジ情報として算出することを特徴とする請求項2に記載のカバレッジ情報算出プログラム。
  4. カバレッジ情報の算出対象であるプログラムに含まれるコードの枠組み毎のカウンタを記憶するカウンタ記憶部と、
    前記カウンタ記憶部に記憶される枠組み毎のカウンタを用いて、前記プログラムを実行した場合に該枠組みが実行された回数を計数する回数計数部と、
    前記カウンタ記憶部に記憶されるカウンタが設けられた枠組みの数と、前記回数計数部によって実行回数が計数された枠組みの数とから、カバレッジ情報を算出するカバレッジ情報算出部と
    を有することを特徴とするカバレッジ情報算出装置。
  5. カバレッジ情報の算出対象であるプログラムに含まれるコードの枠組み毎に設けられたカウンタを用いて、該プログラムを実行した場合に該枠組みが実行された回数を計数する回数計数工程と、
    前記カウンタが設けられた枠組みの数と、前記回数計数工程によって実行回数が計数された枠組みの数とから、カバレッジ情報を算出するカバレッジ情報算出工程と
    を含んだことを特徴とするカバレッジ情報算出方法。
JP2009271669A 2009-11-30 2009-11-30 カバレッジ情報生成プログラム、カバレッジ情報生成装置およびカバレッジ情報生成方法 Expired - Fee Related JP5682109B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009271669A JP5682109B2 (ja) 2009-11-30 2009-11-30 カバレッジ情報生成プログラム、カバレッジ情報生成装置およびカバレッジ情報生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009271669A JP5682109B2 (ja) 2009-11-30 2009-11-30 カバレッジ情報生成プログラム、カバレッジ情報生成装置およびカバレッジ情報生成方法

Publications (2)

Publication Number Publication Date
JP2011113474A true JP2011113474A (ja) 2011-06-09
JP5682109B2 JP5682109B2 (ja) 2015-03-11

Family

ID=44235731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009271669A Expired - Fee Related JP5682109B2 (ja) 2009-11-30 2009-11-30 カバレッジ情報生成プログラム、カバレッジ情報生成装置およびカバレッジ情報生成方法

Country Status (1)

Country Link
JP (1) JP5682109B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015011396A (ja) * 2013-06-26 2015-01-19 株式会社エクサ リグレッションテスト支援システム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62200437A (ja) * 1986-02-28 1987-09-04 Mitsubishi Electric Corp 網羅度測定装置
JPH0452835A (ja) * 1990-06-15 1992-02-20 Hitachi Ltd プログラムテスト評価方式
JPH04148347A (ja) * 1990-10-11 1992-05-21 Nec Corp Fortranソースプログラムの単体テスト方式
JP2002342119A (ja) * 2001-03-15 2002-11-29 Ricoh Co Ltd 画像形成装置用プログラム生成方法、画像形成装置用カバレージ測定方法、これらの方法をコンピュータに実行させるプログラム、カバレージ測定装置、カバレージ測定プログラムおよび情報記録媒体
JP2004102742A (ja) * 2002-09-11 2004-04-02 Hitachi Ltd プログラムテストデバッグ装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62200437A (ja) * 1986-02-28 1987-09-04 Mitsubishi Electric Corp 網羅度測定装置
JPH0452835A (ja) * 1990-06-15 1992-02-20 Hitachi Ltd プログラムテスト評価方式
JPH04148347A (ja) * 1990-10-11 1992-05-21 Nec Corp Fortranソースプログラムの単体テスト方式
JP2002342119A (ja) * 2001-03-15 2002-11-29 Ricoh Co Ltd 画像形成装置用プログラム生成方法、画像形成装置用カバレージ測定方法、これらの方法をコンピュータに実行させるプログラム、カバレージ測定装置、カバレージ測定プログラムおよび情報記録媒体
JP2004102742A (ja) * 2002-09-11 2004-04-02 Hitachi Ltd プログラムテストデバッグ装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSND199900719001; 石川 和則: 'ソフトウエア品質向上のための:デバッグ/チューニング/テスト/構成管理ツール特集' 日経ソフトウエア 第2巻 第4号, 19990324, p.45, 日経BP社 *
JPN6014012517; 石川 和則: 'ソフトウエア品質向上のための:デバッグ/チューニング/テスト/構成管理ツール特集' 日経ソフトウエア 第2巻 第4号, 19990324, p.45, 日経BP社 *
JPN6014012519; Andrew Glover: コード品質を追求する: カバレッジ・レポートに騙されないために , 20060131, IBM *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015011396A (ja) * 2013-06-26 2015-01-19 株式会社エクサ リグレッションテスト支援システム

Also Published As

Publication number Publication date
JP5682109B2 (ja) 2015-03-11

Similar Documents

Publication Publication Date Title
US9454467B2 (en) Method and apparatus for mining test coverage data
US20060143596A1 (en) Program analyzing apparatus and testing apparatus, and analyzing method and program therefor
JP2006244195A (ja) プログラムテスト支援装置およびその方法
Roehm et al. Monitoring user interactions for supporting failure reproduction
JP5450840B2 (ja) プログラムの実行性能評価のためのテストデータ生成方法
Cao et al. Symcrash: Selective recording for reproducing crashes
US20180173610A1 (en) Method for performing cared-zone code coverage evaluation with no source code modification
Sottile et al. Semi-automatic extraction of software skeletons for benchmarking large-scale parallel applications
JP5545761B2 (ja) 障害解析支援システム、障害解析支援方法、および障害解析支援プログラム
Kwon et al. Mantis: Efficient predictions of execution time, energy usage, memory usage and network usage on smart mobile devices
Jin et al. Combining phase identification and statistic modeling for automated parallel benchmark generation
JP2010102620A (ja) ユーザ操作シナリオ生成装置、方法およびプログラム
US10579761B1 (en) Method and system for reconstructing a graph presentation of a previously executed verification test
JP5682109B2 (ja) カバレッジ情報生成プログラム、カバレッジ情報生成装置およびカバレッジ情報生成方法
JP7070328B2 (ja) テストデータ生成装置、テストデータ生成方法及びプログラム
Wang et al. Fast reproducing web application errors
Mahmud et al. Acid: an api compatibility issue detector for android apps
Weyprecht et al. Model-driven development of simulation solution based on SysML starting with the simulation core.
Köckerbauer et al. Scalable parallel debugging with g-Eclipse
Béziers la Fosse et al. Injecting execution traces into a model-driven framework for program analysis
Wagner et al. Performance optimization for the trinity RNA-Seq assembler
KR101160482B1 (ko) 테스트 스윗 생성 장치 및 방법
Barakhshan et al. CaRV--Accelerating Program Optimization through Capture, Replay, Validate
US11055092B1 (en) Correlating contextual information of invoking code in a programming language with contextual information of at least one invoked code in a different programming language
JP2014106770A (ja) 型チェック装置、型チェック方法および型チェックプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120815

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140526

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140624

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140924

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20141001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141216

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141229

R150 Certificate of patent or registration of utility model

Ref document number: 5682109

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees