JP5933762B2 - コード網羅率決定方法およびシステム - Google Patents

コード網羅率決定方法およびシステム Download PDF

Info

Publication number
JP5933762B2
JP5933762B2 JP2014556784A JP2014556784A JP5933762B2 JP 5933762 B2 JP5933762 B2 JP 5933762B2 JP 2014556784 A JP2014556784 A JP 2014556784A JP 2014556784 A JP2014556784 A JP 2014556784A JP 5933762 B2 JP5933762 B2 JP 5933762B2
Authority
JP
Japan
Prior art keywords
log file
output
program
log
source code
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.)
Expired - Fee Related
Application number
JP2014556784A
Other languages
English (en)
Other versions
JP2015507303A (ja
Inventor
ジョウ・チイ
ツァイ・ホワ
スゥン・ティーンタオ
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2015507303A publication Critical patent/JP2015507303A/ja
Application granted granted Critical
Publication of JP5933762B2 publication Critical patent/JP5933762B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

他の出願の相互参照
本願は、すべての目的のために参照により本明細書に組み込まれる、発明の名称を「CODE COVERAGE RATE DETERMINATION METHOD AND SYSTEM AND CODE COVERAGE DETECTION METHOD AND SYSTEM(コード網羅率決定方法およびシステム、並びにコード網羅検出方法およびシステム)」とする、2012年2月14日出願の中国特許出願第201210033077.X号に基づく優先権を主張する。
本願は、コード網羅率決定方法およびシステムに関する。
コンピュータプログラムのテスト処理では、コード網羅率が、プログラムコードの網羅を評価するために用いられる指標になる。コード網羅率は、ソースコードがテスト中に用いられた程度を計るものである。コード網羅率に関する統計が、プログラム内のコードがどれくらい実行されたかを理解することを可能にし、コードの網羅がどこで不十分であるのかを決定することにより、プログラムの潜在的な問題を発見するのに役立つ。
コード網羅率決定方法の1つは、テスト対象のコードのランタイム状況にタグ付けし、遭遇したタグの数に基づいて、実行された実行コードの量の最終カウント数を取得し、遭遇したタグの量に基づいた実行コードの量をコードの総量と比較することによってコード網羅率を決定することを含む。例えば、方法は、テスト対象のプログラム内のコードの総量、テスト対象のプログラムのベースアドレス、および、プログラムの各コード行の相対仮想アドレスを決定すること、ベースアドレスおよび相対仮想アドレスに基づいて各コード行にブレークポイントを設定すること、ブレークポイントがテスト対象のプログラムの実行時に現れるか否かを判定すること、ならびに、ブレークポイントが現れたコード行にタグ付けすることを備える。最終的に、実行されたコードの総量を取得するために、タグ付けされたコード行の累計が用いられる。実行されたコードの総量を、テスト対象のプログラムのコードの総量によって割ったものがコード網羅率である。
別の方法は、テスト処理が始まる前に、コード網羅率が決定されるソースコードにテスト情報出力設定を追加することによって、テスト対象のプログラムのソースコードおよび構成を変更すること、テスト処理中に、ソースコードに追加されたテスト情報出力設定に基づいて、テストされたソースコードによって出力されたタグを内部に記録すること、ならびに、テスト処理の終了後に、タグに基づいて、実行されたソースコードをリトリーブし、出力されたタグの数に基づいた実行済みソースコードの量をソースコードの総量と比較することによってコード網羅率を取得することを備える。
上述の方法はすべて、コード網羅率を決定するために予めソースコードにタグを追加する。ソースコードの量が非常に多い場合、上述の方法は、大量の処理を生み出すため、テスト時間に影響する。また、上述のコード網羅率決定方法は、ソースコードの処理を必要とするため、プログラムのテスト段階にしか適用されず、プログラムの実際の実行中には実施できない。
以下の詳細な説明と添付の図面において、本発明の様々な実施形態を開示する。
コード網羅率検出システムの一実施形態を示す概略図。
ログファイル出力ポイント数決定システムの一実施形態を示す概略図。
ログファイル出力ポイント数決定システムの別の実施形態を示す概略図。
ログファイル出力ポイント数決定システムのさらに別の実施形態を示す概略図。
コード網羅率決定システムの別の実施形態を示す概略図。
コード網羅率決定方法の一実施形態を示すフローチャート。
ログファイル出力ポイント数決定方法の一実施形態を示す概略図。
ログファイル出力ポイント数決定方法の別の実施形態を示す概略図。
ログファイル出力ポイント数決定方法のさらに別の実施形態を示す概略図。
コード網羅率決定方法の別の実施形態を示すフローチャート。
コード網羅検出方法の一実施形態を示すフローチャート。
コード網羅検出方法の別の実施形態を示すフローチャート。
本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および/または、プロセッサ(プロセッサに接続されたメモリに格納および/またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ)を含め、様々な形態で実装されうる。本明細書では、これらの実装または本発明が取りうる任意の他の形態を、技術と呼ぶ。一般に、開示された処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、ある時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、1または複数のデバイス、回路、および/または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
以下では、本発明の原理を示す図面を参照しつつ、本発明の1または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
図1は、コード網羅率検出システムの一実施形態を示す概略図である。システム100は、ログファイル出力ポイント情報リトリーブユニット110、ログファイル出力ポイント決定ユニット120、実出力ログファイルリトリーブユニット130、ログファイル出力ポイント量子化ユニット140、コード網羅率決定ユニット150、および、コード実行ユニット160を備える。
ログファイル出力ポイント情報リトリーブユニット110は、プログラムのソースコードをリトリーブするよう構成されている。
ログファイル出力ポイント決定ユニット120は、ソースコードに含まれるログファイル出力ポイントの理論的な数および位置情報を決定するよう構成されている。その決定の詳細については、図4を参照して後述する。
実出力ログファイルリトリーブユニット130は、プログラムの実行中に実際に出力されたログファイル(実出力ログファイル)をリトリーブするよう構成されている。
ログファイル出力ポイント量子化ユニット140は、各ログファイルに記録された対応するログファイル出力ポイントの位置情報に基づいて、実際に出力されたログファイルのログファイル出力ポイントの数を決定するよう構成されている。一例において、ログファイル出力ポイント量子化ユニット140は、任意選択的に、読み出し要素および受信要素を備える。読み出し要素は、プログラムによって出力されたログファイルを所定の格納位置から読み出すよう構成されている。格納位置は、プログラムによって予め決定されうる。受信要素は、プログラムによって送信されたログファイルを所定のインターフェースから受信するよう構成されている。所定のインターフェースは、プログラムによって予め決定されうる。
プログラマは、しばしば、ログファイルを用いて、プログラムの動作に関する情報を記録する。本明細書で用いられているように、ログファイル出力ポイントとは、ログが出力されるプログラム内のポイントを指す。ログファイル出力ポイントは、時刻、エラーレベル(例えば、致命的、エラー、警告、情報、デバッグなど)、および、対応するソースコードの位置に関連するログ情報(例えば、ファイル、行数など)を示しうる。例えば、ログファイル出力ポイントで出力されるログは、動作環境に関する情報など、プログラムの動作に関する情報を含むことができ、警告などのログレベルを有しうる。
結果として、オンラインシステム内のログプログラムが、プログラムの出力を自動的に開いて、或る期間にわたって格納し、より簡単な様々なランタイム環境でログファイル情報を取得できる。いくつかの実施形態において、その期間は、数日に設定されうる。コード網羅率決定ユニット150は、ソースコードに含まれるログファイル出力ポイントの理論的な数および実出力ログファイルのログファイル出力ポイントの数に基づいて、プログラムのコード網羅率を取得するよう構成されている。
コード実行ユニット160は、ソースコードをコンパイルして実行するよう構成されている。
実出力ログファイルのログファイル出力ポイントの数は、以下のシステム(これに限定されない)を用いて決定されてよい。
図2Aは、ログファイル出力ポイントの数を決定するよう構成されたログファイル出力ポイント決定システムの一実施形態を示す概略図である。システム200は、ログファイル出力ポイント量子化ユニット140の実装例である。システム200は、ログファイル分析ユニット210、マージユニット220、マージログファイルカウントユニット230、および、入力/出力ユニット235を備える。
ログファイル分析ユニット210は、実出力ログファイルの内容を分析して、対応するログファイル出力ポイントの位置情報を取得するよう構成されている。
マージユニット220は、同じ位置情報を含むログファイルを1つのマージログファイルにマージするよう構成されている。
マージログファイルカウントユニット230は、マージログファイルの総数に基づいて、実出力ログファイルのログファイル出力ポイントの総数をカウントするよう構成されている。
入力/出力ユニット235は、ログファイルを入力および出力するよう構成されている。
図2Bは、ログファイル出力ポイントの数を決定するよう構成されたログファイル出力ポイント決定システムの別の実施形態を示す概略図である。システム240は、ログファイル出力ポイント量子化ユニット140の実装例である。システム240は、実出力ログファイルカウントユニット250、減算ユニット260、および、出力ユニット265を備える。
実出力ログファイルカウントユニット250は、対応する各ログファイル出力ポイントの位置情報に基づいて、各ログファイル出力ポイントについて出力されたログファイルの実際の数をカウントするよう構成されている。2以上のログファイルが出力されうる理由は、ログファイルが特定のサイズに達した後に別のログファイルを形成しうることである。特定のログファイル出力ポイントに関する出力を取得するために、特定の時間内に出力された全ログファイルが収集されうる。
減算ユニット260は、各ログファイル出力ポイントについて出力されたログファイルの実際の数が1より大きい(2以上である)場合に、出力されたログファイルの実際の数から或る値を減算して反復数を取得するよう構成されている。或る値は、1でありうる。
出力ユニット265は、出力されたログファイルの反復数に基づいて、実出力ログファイルのログファイル出力ポイントの最終的な数を出力するよう構成されている。
最終的な数を取得するために、出力されたログファイルの実際の数からログファイルの反復数を減算することで、ログファイルの最終的な数を取得する。そして、ログファイルの最終的な数は、ログファイル出力ポイントの最終的な数に割り当てられる。
図2Cは、ログファイル出力ポイント数決定システムのさらに別の実施形態を示す概略図である。システム270は、ログファイル出力ポイント量子化ユニット140の実装例である。システム270は、確立ユニット272、選択ユニット274、リトリーブユニット276、位置判定ユニット278、追加ユニット280、および、量判定ユニット282を備える。
確立ユニット272は、量記録リストを確立するよう構成されている。量記録リストの初期値は、0であってよい。
選択ユニット274は、実出力ログファイルを選択するよう構成されている。
リトリーブユニット276は、選択された実出力ログファイルに対応するログファイル出力ポイントの位置情報をリトリーブするよう構成されている。
位置判定ユニット278は、位置情報が量記録リストに含まれているか否かを判定するよう構成されている。
位置情報が量記録リストに含まれていない場合、追加ユニット280は、その位置情報を量記録リストに追加し、量記録リスト内の量を1だけ増分させるよう構成されている。量判定ユニット282は、判定動作を実行するよう構成されている。
判定動作は、任意の実出力ログファイルが残っているか否かを判定することを含み、実出力ログファイルが残っている場合、選択ユニット274が、別の実出力ログファイルを選択し、実出力ログファイルが残っていない場合、量記録リストに含まれる量が、実出力ログファイルのログファイル出力ポイントの量として割り当てられる。
位置情報が量記録リストに含まれる場合に、量判定ユニット282は、上記の判定動作を実行するよう構成されている。
図3は、コード網羅率決定システムの別の実施形態を示す概略図である。システム300は、ログファイル出力ポイント決定ユニット310、比較ユニット320、未網羅コード決定ユニット330、および、入力/出力ユニット340を備える。
ログファイル出力ポイント決定ユニット310は、実出力ログファイルに記録された対応するログファイル出力ポイントのソースコード内での位置情報に基づいて、ソースコードにおける実出力ログファイルのログファイル出力ポイントを決定するよう構成されている。
比較ユニット320は、実出力ログファイルのログファイル出力ポイントと理論的なログファイル出力ポイントとに基づいて、出力されていないログファイルのログファイル出力ポイントを決定するよう構成されている。いくつかの実施形態において、比較ユニット320は、一部のランタイム環境では出力されているが他のランタイム環境では出力されていないログファイルのログファイル出力ポイントを決定するために、異なるランタイム環境での実出力ログファイルを比較するよう構成されている。
例えば、2つの異なるランタイム環境からの出力が、1つのファイルに格納されうる。ファイルは、2つの異なるランタイム環境について、様々な出力ポイントと、対応するログレベルとを示すことができる。各出力ポイントについて、ファイルは、2つの異なるランタイム環境がログを出力するか否かを示すことができる。いくつかの実施形態において、ファイルは、ログが、各環境で各出力ポイントについて出力されたか否かを示すことができる。
未網羅コード決定ユニット330は、出力されていないログファイルのログファイル出力ポイントに基づいて、網羅されていないコードすなわち未網羅コードを決定するよう構成されている。
入力/出力ユニット340は、ログファイルを入力および出力するよう構成されている。
図4は、コード網羅率決定方法の一実施形態を示すフローチャートである。方法400は、例えば、システム100で実施されうる。コード網羅率決定方法400は、以下の工程を含む。
工程410では、システムは、プログラムのソースコードをリトリーブするよう構成されている。
工程420では、システムは、ソースコードに含まれるログファイル出力ポイントの理論的な数および位置情報を分析するよう構成されている。
一般に、後のプログラム保守および検査処理中に実際の問題をより容易に発見して解決するために、ログファイル出力ポイントがソースコード内に設定され、対応するコード行のランタイム状況を記録する。1つのログファイル出力ポイントが、通常、複数のコード行に対応する。それらのコード行が正常に実行された場合、対応するログファイルが出力される。ログファイル出力ポイントは、一般に、所定のフォーマットを用いてマークされる。ログファイル出力ポイントの所定のフォーマットは、スキャナが、ログファイル出力ポイント、ソースコード内でのログファイル出力ポイントの位置情報、および、その他のログファイル内容(例えば、ログ書き込み記録、ログレベルなど)への対応関係を取得するために、プログラムのソースコードを分析することを可能にする。分析によって取得された情報は、ログファイル出力ポイントの理論的な数の取得を容易にする。ログファイル出力ポイントの理論的な数は、プログラムのソースコードが正常に実行されると仮定すれば、出力ログファイルのログファイル出力ポイントの総数に関連する。
従来の走査処理は、ソースコード全体に含まれるログ情報を決定するために、ログプログラム特性に関してソースコード全体を走査する工程を含む。ログ情報を決定するために、ソースコードの全文走査の代わりに、ctagなどの方法も利用できる。
工程430では、システムは、プログラム実行中に実際に出力されたログファイルをリトリーブするよう構成されている。
工程440では、システムは、各ログファイルに記録された対応するログファイル出力ポイントの位置情報に基づいて、実際に出力されたログファイルのログファイル出力ポイントの実際の数を決定するよう構成されている。
ログファイル位置を出力するよう構成されたコードが実行されると、対応するログファイルが出力される。プログラムの実行中に出力されたログファイルをカウントして、そこに記録された対応するログファイル出力ポイントの位置情報を分析することにより、システムは、実出力ログファイル内のログファイル出力ポイントの数をカウントできる。その結果、実行されたコード行の数をカウントすることができる。
プログラムの実行中に実際に出力されたログファイルは、一般に、所定のパスに格納され、ログファイルは、格納位置から直接読み出されることができる。出力ログファイルの格納位置のパスは、プログラムの実行中に変更されうる、または、実出力ログファイルは、所定のインターフェースからリトリーブされうる。いくつかの実施形態では、プログラムの正常な実行への影響を避けるために、プログラムがコード網羅率決定システムにログファイルを出力する頻度を設定できる。例えば、プログラムがログファイルを出力する頻度は、30分ごと、1時間ごと、または、プログラムの実行が完了した後に1回出力、に設定することができる。
工程450では、システムは、ソースコードに含まれるログファイル出力ポイントの理論的な数および実出力ログファイルのログファイル出力ポイントの数に基づいて、プログラムのコード網羅率を取得するよう構成されている。
ソースコードに含まれるログファイル出力ポイントの理論的な数と、実出力ログファイルのログファイル出力ポイントの数との比が、コード網羅率に対応しうる。コード網羅率は、実際のコード数を含まないので、取得されたコード網羅率は、実際のコード網羅に相当する絶対値に対応しえない。別の態様として、コード網羅率の決定は、絶対値の取得に単に対応しているだけではない。それどころか、コード網羅率の利点の1つは、ソースコード内で潜在的に生じうる問題の特定に役立つことである。
コード網羅率決定方法400を用いて取得された結果は、コード網羅の正確な数値に必ずしも対応しない。そこで出力されたログファイルによって表現された結果は、ログファイル出力ポイントに対応する実行コード行の特定の数である。したがって、ソースコードに含まれるコードの各部分のランタイム状況全体が正確に反映される。例えば、実際の実行中に出力されることが予期されたログファイル出力ポイントについて、ログファイルが出力されなかった場合、このシナリオは、ソースコードのこの位置で問題が起きたことを示唆する。ログファイル出力ポイントに対応する特定の数のコード行の一部が実行されても、それらの行が考慮されるか否かは、ソースコード内の問題の特定に影響しないため、それらの行は、コード網羅率を決定する際に考慮される必要はない。
実出力ログファイルのログファイル出力ポイントの決定は、様々な方法で実行されうる。各ログファイル出力ポイントが1つのログファイルのみを出力する場合、実出力ログファイルの総数は、実出力ログファイルのログファイル出力ポイントの数に対応しうる。しかしながら、実際の動作では、同じログファイル出力ポイントが、複数のログファイルに出力されうる。ログファイル出力ポイントの総数の精度を保証するために、反復されたログファイルを除去することが可能であり、除去後のログファイルの数が、ログファイル出力ポイントの総数に割り当てられる。別の例において、反復されたログファイルの除去は、少なくとも以下の方法を用いて実施されうる。
図5Aは、ログファイル出力ポイント数決定方法の一実施形態を示す概略図である。方法500は、以下を含む。
工程510では、システムは、実出力ログファイルの内容を分析して、ソースコードに記録された対応するログファイル出力ポイントの位置情報を取得するよう構成されている。
工程520では、システムは、同じ位置情報を含むログファイルを1つのマージログファイルにマージするよう構成されている。
工程530では、システムは、マージログファイルの総数をカウントすることによって、実際に出力されたログファイルのログファイル出力ポイントの総数を決定するよう構成されている。マージログファイルの総数は、実出力ログファイルのログファイル出力ポイントの数に対応する。
図5Bは、ログファイル出力ポイント数決定方法の別の実施形態を示す概略図である。方法540は、以下を含む。
工程550では、システムは、ログファイルに記録された対応する各ログファイル出力ポイントの位置情報に基づいて、各ログファイル出力ポイントについて出力されたログファイルの実際の数をカウントするよう構成されている。
工程555では、ログファイルの数が2以上である場合、システムは、各ログファイル出力ポイントについて出力された反復数を取得するために、各ログファイル出力ポイントについて出力されたログファイルの実際の数から値(例えば、1)を減算するよう構成されている。
工程560では、システムは、出力されたログファイルの反復数に基づいて、実出力ログファイルのログファイル出力ポイントの最終的な数を出力するよう構成されている。実出力ログファイルの総数から反復数を引いた数が、実出力ログファイルのログファイル出力ポイントの最終的な数に対応する。
例えば、実際に出力されたログファイルの総数が200であり、特定の位置で出力されたログファイルの実際の数が10であれば、各位置が固有のログ出力ポイントに関連する場合、「10−1」が、反復数「9」に対応する。さらに、各ログファイルは、反復ログファイルを位置に関して決定できるように、コード内での自身の位置を含むことができる。「200−9=191」という数が、実出力ログファイルのログファイル出力ポイントの数に対応する。他の位置も反復を有する場合、すべての反復を差し引いて最終的な数(すなわち、実出力ログファイルのログファイル出力ポイントの数)が得られるまで、同じ処理が繰り返される。
図5Cは、ログファイル出力ポイント数決定方法のさらに別の実施形態を示す概略図である。方法570は、以下を含む。
工程572では、システムは、量記録リストを確立するよう構成されている。量記録リストにおける量の初期値は、0であってよい。
工程574では、システムは、実出力ログファイルを選択するよう構成されている。
工程576では、システムは、選択された実出力ログファイルに対応するログファイル出力ポイントの位置情報をリトリーブするよう構成されている。
工程578では、システムは、位置情報が量記録リストに含まれているか否かを判定するよう構成されている。
位置情報が量記録リストに含まれていない場合、工程580では、システムは、その位置情報を量記録リストに追加し、或る値だけ量を増大させるよう構成されている。
位置情報が量記録リストに含まれる場合、工程582では、システムは、任意の実出力ログファイルが残っているか否かを判定するよう構成されている。
工程582において、実出力ログファイルが残っていた場合、システムは、工程574に進んで、別の実出力ログファイルを選択するよう構成されている。
実出力ログファイルが残っていなかった場合、工程584で、システムは、量記録リストに含まれる量を実出力ログファイルのログファイル出力ポイント数に割り当てるよう構成されている。
当業者であれば、ログファイルの反復部分が差し引かれる限りは、他の方法も利用できることがわかる。
図6は、コード網羅率決定方法の別の実施形態を示すフローチャートである。方法600は、例えば、システム100で実施されうる。1つのプログラムが複数の機能ユニットを含みうるので、ソースコードの書き込み中に、各機能ユニットに対応するコードが、検索および区別を容易にするために、異なるフォルダに配置されうる。したがって、方法600は、以下を含む。
工程610では、デバイスが、プログラムのソースコードをリトリーブするよう構成されている。
工程620では、デバイスは、異なる位置(例えば、ファイルフォルダ)に含まれるソースコードのログファイル出力ポイントの理論的な数を分析するよう構成されている。
工程630では、デバイスは、プログラム実行中に実際に出力されたログファイルをリトリーブするよう構成されている。
工程640では、デバイスは、プログラム実行中に各フォルダに実際に出力されたログファイルのログファイル出力ポイントの数を決定するよう構成されている。
工程650では、デバイスは、各フォルダに含まれるログファイル出力ポイントの理論的な数および実出力ログファイルのログファイル出力ポイントの数に基づいて、各フォルダについてコード網羅率を取得するよう構成されている。
各フォルダについてのコード網羅率を分析することにより、プログラムのソースコード内で問題がある場所の決定を容易に行うことができる。例えば、特定のフォルダのコード網羅率が100%と決定され、別のフォルダのコード網羅率が30%と決定された場合、後者のフォルダに関連したソースコードに問題が存在しうると決定できる。したがって、ソースコードのその後の保守および修正を容易にすることができる。
いくつかの実施形態において、方法600がソースコード全体のコード網羅率を決定するために用いられる場合、同じ方法400を用いて方法600を実施できるように、異なる各位置(例えば、ファイルフォルダ)について工程410〜450で決定された量を直接合計できる。
さらに、プログラムの実行中に出力されたログファイルは、以下の情報を含みうる:時刻、レベル(例えば、致命的/エラー/警告/情報/デバッグなど)、どのファイルのどのソースコード行でログ出力ポイントが出力されたか、具体的なログ内容など。ログファイルに含まれる情報を分析することにより、プログラムの特定の実行中のログファイル出力状況を正確に取得することができ、その状況とソースコード内の特定のコードとの関係性を正確に決定することができる。例えば、プログラム実行中に出力されたログファイルが、以下に示す通りであったとする。
[2011−09−21 11:44:57.009137](時刻)
[WARNING]
[18316]
[build/debug64/component/sub_path/file.cpp:1181]
__TARGET_ID__:sys/component
PROFILING:Tubo start the fuxi work item:1316576697
上の例に示すように、このログファイルの時刻は「2011−09−21 11:44:57.009137」、レベルは「WARNING(警告)」、対応するログファイル出力ポイントのソースコード内での位置は「build/debug64/component/sub_path/file.cpp:1181」である。したがって、方法600は、ランタイム環境で特定のプログラムのコード網羅の程度を決定するために、ログファイルに含まれる情報に基づいてコード網羅検出を実施することもできる。
図7は、コード網羅検出方法の一実施形態を示すフローチャートである。方法700は、例えば、システム300で実施されうる。方法700は、以下を含む。
工程710では、デバイスが、実出力ログファイルに記録された対応するログファイル出力ポイントのソースコード内での位置情報に基づいて、プログラムのソースコードにおける実出力ログファイルのログファイル出力ポイントを決定するよう構成されている。
工程720では、デバイスは、実出力ログファイルのログファイル出力ポイントと理論的なログファイル出力ポイントとに基づいて、出力されていないログファイルのログファイル出力ポイントを決定するよう構成されている。
工程730では、デバイスは、出力されていないログファイルのログファイル出力ポイントに基づいて、未網羅コードを決定するよう構成されている。
対応するログファイル出力ポイントのソースコード内での位置情報は、ログファイルに記録されているので、デバイスは、ログファイル出力ポイントを理論的なログファイル出力ポイントと比較することによって、ソースコードの実行コードに対応するログファイル出力ポイントの位置を決定することができる。したがって、出力されていないログファイルのログファイル出力ポイントを決定することが可能であり、それによって、網羅されていないコードも決定することができる。
一例において、プログラムの実際のランタイム環境をできる限りシミュレートし、複数の角度からプログラムをテストするために、異なるランタイム環境でプログラムをテストすることができる。例えば、単体テスト環境、統合テスト環境、本番環境などが、異なるランタイム環境に対応する。異なるランタイム環境では、コード網羅率は、完全には同じでないことがある。換言すると、実出力ログファイルは、異なるランタイム環境内では同じでない場合がある。図8は、コード網羅検出方法の別の実施形態を示すフローチャートである。方法800は、例えば、システム300で実施されうる。方法800は、異なるランタイム環境でのコード網羅を比較するために利用可能であり、以下の工程を含む。
工程810では、デバイスが、異なるランタイム環境でプログラムによって実際に出力されたログファイルをリトリーブするよう構成されている。
工程820では、デバイスは、各ランタイム環境で実際に出力されたログファイルに記録された対応するログファイル出力ポイントのソースコード内での位置情報に基づいて、1または複数のランタイム環境で出力されているが他のランタイム環境では出力されていないログファイルのログファイル出力ポイントを決定するよう構成されている。
工程830では、デバイスは、出力されていないログファイルのログファイル出力ポイントに基づいて、対応するランタイム環境で網羅されていないコードを決定するよう構成されている。
特定のログファイル出力ポイントのソースコード位置が、すべてのランタイム環境のログファイルには記録されていない場合、ログファイルに記録されていない特定のログファイル出力ポイントのソースコード位置は、特定の環境でのソースコード位置に対応するログファイル出力ポイントについてログファイルが出力されなかったことを示唆する。したがって、記録されていないログファイルに対応する環境に未網羅コードが存在すると決定できる。例えば、プログラムの3つの異なるランタイム環境が、単体テスト環境、統合テスト環境、および、本番環境を含むとする。3つのランタイム環境のログファイルに含まれる記録を比較することにより、対応するログファイルが単体テスト環境および統合テスト環境について発見され、本番環境についてはログファイルが発見されない場合、このシナリオは、単体テスト環境および統合テスト環境で網羅されたコードの一部が本番環境では網羅されていないことを示唆する。したがって、ログファイルに記録された情報を比較することにより、未網羅コードを迅速に見つけることができ、それによって、後のプログラムの修正および保守が容易になる。
上述のユニットは、1または複数の汎用プロセッサ上で実行されるソフトウェアコンポーネントとして、特定の機能を実行するよう設計されたプログラム可能論理デバイスおよび/または特定用途向け集積回路などのハードウェアとして、もしくは、それらの組み合わせとして実装することができる。いくつかの実施形態において、ユニットは、コンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワーク装置など)に本発明の実施形態に記載された方法を実行させるための複数の命令など、不揮発性記憶媒体(光学ディスク、フラッシュ記憶装置、携帯用ハードディスクなど)に格納することができるソフトウェア製品の形態で具現化されてよい。ユニットは、単一のデバイス上に実装されてもよいし、複数のデバイスにわたって分散されてもよい。ユニットの機能は、互いに統合されてもよいし、複数のサブユニットにさらに分割されてもよい。
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供された詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は、例示であり、限定を意図するものではない。
適用例1:コード網羅率決定方法であって、プログラムのソースコードをリトリーブし、前記ソースコードに含まれるログファイル出力ポイントの理論的な数と、前記ソースコードに含まれる前記ログファイル出力ポイントの位置情報とを決定し、前記プログラムの実行中に実際に出力されたログファイルをリトリーブし、1または複数のプロセッサを用いて、各ログファイルに記録されている対応するログファイル出力ポイントの前記位置情報に基づいて、前記実出力ログファイルのログファイル出力ポイントの実際の数を決定し、前記1または複数のプロセッサを用いて、前記ソースコードに含まれるログファイル出力ポイントの前記理論的な数と、前記実出力ログファイルの前記ログファイル出力ポイントの前記実際の数とに基づいて、前記プログラムのコード網羅率を決定すること、を備える、方法。
適用例2:適用例1に記載のコード網羅率決定方法であって、前記ログファイル出力ポイントの前記数を決定することは、前記実出力ログファイルの内容を分析して、前記対応するログファイル出力ポイントの前記位置情報を取得し、同じ位置情報を含むログファイルを1つのマージログファイルにマージし、マージログファイルの総数に基づいて、前記実出力ログファイルの前記ログファイル出力ポイントの総数をカウントすること、を備える、方法。
適用例3:適用例1に記載のコード網羅率決定方法であって、前記ログファイル出力ポイントの前記数を決定することは、前記対応する各ログファイル出力ポイントの前記位置情報に基づいて、各ログファイル出力ポイントについて出力されたログファイルの実際の数をカウントし、各ログファイル出力ポイントについて出力されたログファイルの前記実際の数が1より大きい場合に、各ログファイル出力ポイントについて出力されたログファイルの前記実際の数から或る値を減算して、各ログファイル出力ポイントによって出力された反復の数を取得し、出力されたログファイルの前記反復の数に基づいて、前記実出力ログファイルのログファイル出力ポイントの最終的な数を出力すること、を備える、方法。
適用例4:適用例1に記載のコード網羅率決定方法であって、ログファイル出力ポイントの前記数を決定することは、
S1:量記録リストを確立し、
S2:実出力ログファイルを選択し、
S3:前記選択された実出力ログファイルの前記対応するログファイル出力ポイントの前記位置情報をリトリーブし、
S4:前記位置情報が前記量記録リストに含まれているか否かを判定し、
S5:前記位置情報が前記量記録リストに含まれていない場合に、
前記位置情報を前記量記録リストに追加し、
前記量記録リストの量を増大させ、
S7に進み、
S6:前記位置情報が前記量記録リストに含まれている場合に、S7に進み、
S7:実出力ログファイルが残っているか否かを判定し、
S8:前記実出力ログファイルが残っている場合に、S2に進み、
S9:前記実出力ログファイルが残っていない場合に、前記量記録リストに含まれる前記量を前記実出力ログファイルのログファイル出力ポイントの前記数に割り当てること、
を備える、方法。
適用例5:適用例1に記載のコード網羅率決定方法であって、前記プログラムの実行中に実際に出力された前記ログファイルをリトリーブすることは、所定の格納位置から前記実際に出力されたログファイルを読み出すこと、または、前記プログラムによって送信された前記実際に出力されたログファイルを所定のインターフェースからリトリーブすることを備える、方法。
適用例6:適用例1に記載のコード網羅率決定方法であって、前記ソースコードに含まれる前記ログファイル出力ポイントの前記理論的な数を決定することは、異なるフォルダに含まれる前記ソースコードのログファイル出力ポイントの前記理論的な数を分析することを備え、前記プログラムの実行中に実際に出力されたログファイルのログファイル出力ポイントの前記数は、各フォルダに含まれる実出力ログファイルのログファイル出力ポイントの数に対応する、方法。
適用例7:コード網羅率決定システムであって、少なくとも1つのプロセッサであって、プログラムのソースコードをリトリーブし、前記ソースコードに含まれるログファイル出力ポイントの理論的な数と、前記ソースコードに含まれる前記ログファイル出力ポイントの位置情報とを決定し、前記プログラムの実行中に実際に出力されたログファイルをリトリーブし、各ログファイルに記録された対応するログファイル出力ポイントの前記位置情報に基づいて、前記実出力ログファイルのログファイル出力ポイントの実際の数を決定し、前記ソースコードに含まれるログファイル出力ポイントの前記理論的な数と、前記実出力ログファイルの前記ログファイル出力ポイントの前記実際の数とに基づいて、前記プログラムのコード網羅率を決定するように構成されている、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに接続され、前記少なくとも1つのプロセッサに命令を提供するよう構成されているメモリと、を備える、システム。
適用例8:適用例7に記載のコード網羅率決定システムであって、前記プログラムの実行中に実際に出力された前記ログファイルをリトリーブすることは、所定の格納位置から前記実際に出力されたログファイルを読み出すこと、または、前記プログラムによって送信された前記実際に出力されたログファイルを所定のインターフェースからリトリーブすることを備える、システム。
適用例9:コード網羅検出方法であって、1または複数のプロセッサを用いて、ソースコードに含まれる実出力ログファイルのログファイル出力ポイントを、前記実出力ログファイルに記録された対応するログファイル出力ポイントの前記ソースコード内での位置情報に基づいて決定し、前記1または複数のプロセッサを用いて、前記実出力ログファイルの前記ログファイル出力ポイントと理論的なログファイル出力ポイントとに基づいて、出力されていないログファイルのログファイル出力ポイントを決定し、前記1または複数のプロセッサを用いて、前記出力されていないログファイルの前記ログファイル出力ポイントに基づいて、未網羅コードを決定すること、を備える、方法。
適用例10:コード網羅検出方法であって、異なるランタイム環境でプログラムによって実際に出力されたログファイルをリトリーブし、1または複数のプロセッサを用いて、各ランタイム環境で実際に出力された前記ログファイルに記録された対応するログファイル出力ポイントのソースコード内での位置情報に基づいて、或るランタイム環境で出力されているが別のランタイム環境では出力されていないログファイル出力ポイントを決定し、前記1または複数のプロセッサを用いて、前記出力されていないログファイルの前記ログファイル出力ポイントに基づいて、前記プログラムが前記対応するランタイム環境で実行された場合の未網羅コードを決定すること、を備える、方法。
適用例11:コード網羅検出システムであって、少なくとも1つのプロセッサであって、異なるランタイム環境でプログラムによって実際に出力されたログファイルをリトリーブし、各ランタイム環境で実際に出力された前記ログファイルに記録された対応するログファイル出力ポイントのソースコード内での位置情報に基づいて、或るランタイム環境で出力されているが別のランタイム環境では出力されていないログファイル出力ポイントを決定し、前記出力されていないログファイルの前記ログファイル出力ポイントに基づいて、前記プログラムが前記対応するランタイム環境で実行された場合の未網羅コードを決定するよう構成されている、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに接続され、前記少なくとも1つのプロセッサに命令を提供するよう構成されているメモリと、を備える、システム。
適用例12:コード網羅率を決定するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、持続性のコンピュータ読み取り可能な記憶媒体内に具現化され、プログラムのソースコードをリトリーブするためのコンピュータ命令と、前記ソースコードに含まれるログファイル出力ポイントの理論的な数と、前記ソースコードに含まれる前記ログファイル出力ポイントの位置情報とを決定するためのコンピュータ命令と、前記プログラムの実行中に実際に出力されたログファイルをリトリーブするためのコンピュータ命令と、各ログファイルに記録された前記対応するログファイル出力ポイントの前記位置情報に基づいて、前記実出力ログファイルのログファイル出力ポイントの実際の数を決定するためのコンピュータ命令と、前記ソースコードに含まれるログファイル出力ポイントの前記理論的な数と、前記実出力ログファイルの前記ログファイル出力ポイントの前記実際の数とに基づいて、前記プログラムのコード網羅率を決定するためのコンピュータ命令と、を備える、コンピュータプログラム製品。
適用例13:適用例12に記載のコンピュータプログラム製品であって、前記ログファイル出力ポイントの前記数を決定することは、前記実出力ログファイルの内容を分析して、前記対応するログファイル出力ポイントの前記位置情報を取得すること、同じ位置情報を含むログファイルを1つのマージログファイルにマージすること、マージログファイルの総数に基づいて、前記実出力ログファイルの前記ログファイル出力ポイントの総数をカウントすること、を備える、コンピュータプログラム製品。
適用例14:適用例12に記載のコンピュータプログラム製品であって、前記ログファイル出力ポイントの前記数を決定することは、前記対応する各ログファイル出力ポイントの前記位置情報に基づいて、各ログファイル出力ポイントについて出力されたログファイルの実際の数をカウントすること、各ログファイル出力ポイントについて出力されたログファイルの前記実際の数が1より大きい場合に、各ログファイル出力ポイントについて出力されたログファイルの前記実際の数から或る値を減算して、各ログファイル出力ポイントによって出力された反復の数を取得することと、出力されたログファイルの前記反復の数に基づいて、前記実出力ログファイルのログファイル出力ポイントの最終的な数を出力すること、を備える、コンピュータプログラム製品。
適用例15:適用例12に記載のコンピュータプログラム製品であって、ログファイル出力ポイントの前記数を決定することは、
S1:量記録リストを確立し、
S2:実出力ログファイルを選択し、
S3:前記選択された実出力ログファイルの前記対応するログファイル出力ポイントの前記位置情報をリトリーブし、
S4:前記位置情報が前記量記録リストに含まれているか否かを判定し、
S5:前記位置情報が前記量記録リストに含まれていない場合に、
前記位置情報を前記量記録リストに追加し、
前記量記録リストの量を増大させ、
S7に進み、
S6:前記位置情報が前記量記録リストに含まれている場合に、S7に進み、
S7:実出力ログファイルが残っているか否かを判定し、
S8:前記実出力ログファイルが残っている場合に、S2に進み、
S9:前記実出力ログファイルが残っていない場合に、前記量記録リストに含まれる前記量を前記実出力ログファイルのログファイル出力ポイントの前記数に割り当てること、
を備える、コンピュータプログラム製品。
適用例16:適用例12に記載のコンピュータプログラム製品であって、前記プログラムの実行中に実際に出力された前記ログファイルをリトリーブすることは、所定の格納位置から前記実際に出力されたログファイルを読み出すこと、または、前記プログラムによって送信された前記実際に出力されたログファイルを所定のインターフェースからリトリーブすることを備える、コンピュータプログラム製品。
適用例17:適用例12に記載のコンピュータプログラム製品であって、前記ソースコードに含まれる前記ログファイル出力ポイントの前記理論的な数を分析することは、異なるフォルダに含まれる前記ソースコードのログファイル出力ポイントの前記理論的な数を分析することを備え、前記プログラムの実行中に実際に出力されたログファイルのログファイル出力ポイントの前記数は、各フォルダに含まれる実出力ログファイルのログファイル出力ポイントの数に対応する、コンピュータプログラム製品。
適用例18:コード網羅率を決定するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、持続性のコンピュータ読み取り可能な記憶媒体内に具現化され、ソースコードに含まれる実出力ログファイルのログファイル出力ポイントを、前記実出力ログファイルに記録された対応するログファイル出力ポイントの前記ソースコード内での位置情報に基づいて決定するためのコンピュータ命令と、前記実出力ログファイルの前記ログファイル出力ポイントと理論的なログファイル出力ポイントとに基づいて、出力されていないログファイルのログファイル出力ポイントを決定するためのコンピュータ命令と、前記出力されていないログファイルの前記ログファイル出力ポイントに基づいて、未網羅コードを決定するためのコンピュータ命令と、を備える、コンピュータプログラム製品。
適用例19:コード網羅率を決定するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、持続性のコンピュータ読み取り可能な記憶媒体内に具現化され、異なるランタイム環境でプログラムによって実際に出力されたログファイルをリトリーブするためのコンピュータ命令と、各ランタイム環境で実際に出力された前記ログファイルに記録された対応するログファイル出力ポイントのソースコード内での位置情報に基づいて、或るランタイム環境で出力されているが別のランタイム環境では出力されていないログファイル出力ポイントを決定するためのコンピュータ命令と、前記出力されていないログファイルの前記ログファイル出力ポイントに基づいて、前記プログラムが前記対応するランタイム環境で実行された場合の未網羅コードを決定するためのコンピュータ命令と、を備える、コンピュータプログラム製品。

Claims (11)

  1. コード網羅率決定方法であって、
    プログラムのソースコードをリトリーブし、
    前記ソースコードに含まれるログファイル出力ポイントの理論的な数と、前記ソースコードに含まれる前記ログファイル出力ポイントの位置情報とを決定し、
    前記プログラムの実行中に実際に出力されたログファイルをリトリーブし、
    1または複数のプロセッサを用いて、各ログファイルに記録されている対応するログファイル出力ポイントの前記位置情報に基づいて、前記実際に出力されたログファイルのログファイル出力ポイントの実際の数を決定することであって
    前記対応する各ログファイル出力ポイントの前記位置情報に基づいて、各ログファイル出力ポイントについて出力されたログファイルの実際の数をカウントし、
    各ログファイル出力ポイントについて出力されたログファイルの前記実際の数が1より大きい場合に、各ログファイル出力ポイントについて出力されたログファイルの前記実際の数から或る値を減算して、各ログファイル出力ポイントによって出力された反復の数を取得し、
    出力されたログファイルの前記反復の数に基づいて、前記実際に出力されたログファイルのログファイル出力ポイントの最終的な数を出力すること、を備える、前記出力ログファイルのログファイル出力ポイントの実際の数を決定すること、を備え、
    前記1または複数のプロセッサを用いて、前記ソースコードに含まれるログファイル出力ポイントの前記理論的な数と、前記実際に出力されたログファイルの前記ログファイル出力ポイントの前記実際の数とに基づいて、前記プログラムのコード網羅率を決定すること、
    を備える、方法。
  2. コード網羅率決定方法であって、
    プログラムのソースコードをリトリーブし、
    前記ソースコードに含まれるログファイル出力ポイントの理論的な数と、前記ソースコードに含まれる前記ログファイル出力ポイントの位置情報とを決定し、
    前記プログラムの実行中に実際に出力されたログファイルをリトリーブし、
    1または複数のプロセッサを用いて、各ログファイルに記録されている対応するログファイル出力ポイントの前記位置情報に基づいて、前記実際に出力されたログファイルのログファイル出力ポイントの実際の数を決定することであって
    S1:量記録リストを確立し、
    S2:実際に出力されたログファイルを選択し、
    S3:前記選択された実際に出力されたログファイルの前記対応するログファイル出力ポイントの前記位置情報をリトリーブし、
    S4:前記位置情報が前記量記録リストに含まれているか否かを判定し、
    S5:前記位置情報が前記量記録リストに含まれていない場合に、
    前記位置情報を前記量記録リストに追加し、
    前記量記録リストの量を増大させ、
    S7に進み、
    S6:前記位置情報が前記量記録リストに含まれている場合に、S7に進み、
    S7:実際に出力されたログファイルが残っているか否かを判定し、
    S8:前記実際に出力されたログファイルが残っている場合に、S2に進み、
    S9:前記実際に出力されたログファイルが残っていない場合に、前記量記録リストに含まれる前記量を前記実際に出力されたログファイルのログファイル出力ポイントの前記数に割り当てること、を備え
    前記1または複数のプロセッサを用いて、前記ソースコードに含まれるログファイル出力ポイントの前記理論的な数と、前記実際に出力されたログファイルの前記ログファイル出力ポイントの前記実際の数とに基づいて、前記プログラムのコード網羅率を決定すること、
    を備える、方法。
  3. 請求項1または2に記載のコード網羅率決定方法であって、前記プログラムの実行中に実際に出力された前記ログファイルをリトリーブすることは、所定の格納位置から前記実際に出力されたログファイルを読み出すこと、または、前記プログラムによって送信された前記実際に出力されたログファイルを所定のインターフェースからリトリーブすることを備える、方法。
  4. 請求項1または2に記載のコード網羅率決定方法であって、
    前記ソースコードに含まれる前記ログファイル出力ポイントの前記理論的な数を決定することは、異なるフォルダに含まれる前記ソースコードのログファイル出力ポイントの前記理論的な数を分析することを備え、
    前記プログラムの実行中に実際に出力されたログファイルのログファイル出力ポイントの前記数は、各フォルダに含まれる実際に出力されたログファイルのログファイル出力ポイントの数に対応する、方法。
  5. コード網羅率決定システムであって、
    少なくとも1つのプロセッサであって、
    プログラムのソースコードをリトリーブし、
    前記ソースコードに含まれるログファイル出力ポイントの理論的な数と、前記ソースコードに含まれる前記ログファイル出力ポイントの位置情報とを決定し、
    前記プログラムの実行中に実際に出力されたログファイルをリトリーブし、
    各ログファイルに記録された対応するログファイル出力ポイントの前記位置情報に基づいて、前記実際に出力されたログファイルのログファイル出力ポイントの実際の数を決定することであって、
    前記対応する各ログファイル出力ポイントの前記位置情報に基づいて、各ログファイル出力ポイントについて出力されたログファイルの実際の数をカウントし、
    各ログファイル出力ポイントについて出力されたログファイルの前記実際の数が1より大きい場合に、各ログファイル出力ポイントについて出力されたログファイルの前記実際の数から或る値を減算して、各ログファイル出力ポイントによって出力された反復の数を取得し、
    出力されたログファイルの前記反復の数に基づいて、前記実際に出力されたログファイルのログファイル出力ポイントの最終的な数を出力すること、を備える、前記出力ログファイルのログファイル出力ポイントの実際の数を決定すること、を備え
    前記ソースコードに含まれるログファイル出力ポイントの前記理論的な数と、前記実際に出力されたログファイルの前記ログファイル出力ポイントの前記実際の数とに基づいて、前記プログラムのコード網羅率を決定するように構成されている、少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに接続され、前記少なくとも1つのプロセッサに命令を提供するよう構成されているメモリと、
    を備える、システム。
  6. コード網羅率決定システムであって、
    少なくとも1つのプロセッサであって、
    プログラムのソースコードをリトリーブし、
    前記ソースコードに含まれるログファイル出力ポイントの理論的な数と、前記ソースコードに含まれる前記ログファイル出力ポイントの位置情報とを決定し、
    前記プログラムの実行中に実際に出力されたログファイルをリトリーブし、
    各ログファイルに記録された対応するログファイル出力ポイントの前記位置情報に基づいて、前記実際に出力されたログファイルのログファイル出力ポイントの実際の数を決定することであって、
    S1:量記録リストを確立し、
    S2:実際に出力されたログファイルを選択し、
    S3:前記選択された実際に出力されたログファイルの前記対応するログファイル出力ポイントの前記位置情報をリトリーブし、
    S4:前記位置情報が前記量記録リストに含まれているか否かを判定し、
    S5:前記位置情報が前記量記録リストに含まれていない場合に、
    前記位置情報を前記量記録リストに追加し、
    前記量記録リストの量を増大させ、
    S7に進み、
    S6:前記位置情報が前記量記録リストに含まれている場合に、S7に進み、
    S7:実際に出力されたログファイルが残っているか否かを判定し、
    S8:前記実際に出力されたログファイルが残っている場合に、S2に進み、
    S9:前記実際に出力されたログファイルが残っていない場合に、前記量記録リストに含まれる前記量を前記実際に出力されたログファイルのログファイル出力ポイントの前記数に割り当てること、を備え、
    前記ソースコードに含まれるログファイル出力ポイントの前記理論的な数と、前記実際に出力されたログファイルの前記ログファイル出力ポイントの前記実際の数とに基づいて、前記プログラムのコード網羅率を決定するように構成されている、少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに接続され、前記少なくとも1つのプロセッサに命令を提供するよう構成されているメモリと、
    を備える、システム。
  7. 請求項5または6に記載のコード網羅率決定システムであって、前記プログラムの実行中に実際に出力された前記ログファイルをリトリーブすることは、所定の格納位置から前記実際に出力されたログファイルを読み出すこと、または、前記プログラムによって送信された前記実際に出力されたログファイルを所定のインターフェースからリトリーブすることを備える、システム。
  8. コード網羅率を決定するためのコンピュータプログラムであって、
    プログラムのソースコードをリトリーブするための機能と、
    前記ソースコードに含まれるログファイル出力ポイントの理論的な数と、前記ソースコードに含まれる前記ログファイル出力ポイントの位置情報とを決定するための機能と、
    前記プログラムの実行中に実際に出力されたログファイルをリトリーブするための機能と、
    各ログファイルに記録された前記対応するログファイル出力ポイントの前記位置情報に基づいて、前記実際に出力されたログファイルのログファイル出力ポイントの実際の数を決定するための機能であって、
    前記対応する各ログファイル出力ポイントの前記位置情報に基づいて、各ログファイル出力ポイントについて出力されたログファイルの実際の数をカウントし、
    各ログファイル出力ポイントについて出力されたログファイルの前記実際の数が1より大きい場合に、各ログファイル出力ポイントについて出力されたログファイルの前記実際の数から或る値を減算して、各ログファイル出力ポイントによって出力された反復の数を取得し、
    出力されたログファイルの前記反復の数に基づいて、前記実際に出力されたログファイルのログファイル出力ポイントの最終的な数を出力すること、を備える、前記出力ログファイルのログファイル出力ポイントの実際の数を決定することを備える、前記実際に出力されたログファイルのログファイル出力ポイントの実際の数を決定するための機能と
    前記ソースコードに含まれるログファイル出力ポイントの前記理論的な数と、前記実際に出力されたログファイルの前記ログファイル出力ポイントの前記実際の数とに基づいて、前記プログラムのコード網羅率を決定するための機能と、
    をコンピュータによって実現させる、コンピュータプログラム。
  9. コード網羅率を決定するためのコンピュータプログラムであって、
    プログラムのソースコードをリトリーブするための機能と、
    前記ソースコードに含まれるログファイル出力ポイントの理論的な数と、前記ソースコードに含まれる前記ログファイル出力ポイントの位置情報とを決定するための機能と、
    前記プログラムの実行中に実際に出力されたログファイルをリトリーブするための機能と、
    各ログファイルに記録された前記対応するログファイル出力ポイントの前記位置情報に基づいて、前記実際に出力されたログファイルのログファイル出力ポイントの実際の数を決定するための機能であって、
    S1:量記録リストを確立し、
    S2:実際に出力されたログファイルを選択し、
    S3:前記選択された実際に出力されたログファイルの前記対応するログファイル出力ポイントの前記位置情報をリトリーブし、
    S4:前記位置情報が前記量記録リストに含まれているか否かを判定し、
    S5:前記位置情報が前記量記録リストに含まれていない場合に、
    前記位置情報を前記量記録リストに追加し、
    前記量記録リストの量を増大させ、
    S7に進み、
    S6:前記位置情報が前記量記録リストに含まれている場合に、S7に進み、
    S7:実際に出力されたログファイルが残っているか否かを判定し、
    S8:前記実際に出力されたログファイルが残っている場合に、S2に進み、
    S9:前記実際に出力されたログファイルが残っていない場合に、前記量記録リストに含まれる前記量を前記実際に出力されたログファイルのログファイル出力ポイントの前記数に割り当てること、を備える、前記実際に出力されたログファイルのログファイル出力ポイントの実際の数を決定するための機能と、
    前記ソースコードに含まれるログファイル出力ポイントの前記理論的な数と、前記実際に出力されたログファイルの前記ログファイル出力ポイントの前記実際の数とに基づいて、前記プログラムのコード網羅率を決定するための機能と、
    をコンピュータによって実現させる、コンピュータプログラム。
  10. 請求項8または9に記載のコンピュータプログラムであって、前記プログラムの実行中に実際に出力された前記ログファイルをリトリーブすることは、所定の格納位置から前記実際に出力されたログファイルを読み出すこと、または、前記プログラムによって送信された前記実際に出力されたログファイルを所定のインターフェースからリトリーブすることを備える、コンピュータプログラム。
  11. 請求項8または9に記載のコンピュータプログラムであって、
    前記ソースコードに含まれる前記ログファイル出力ポイントの前記理論的な数を分析することは、異なるフォルダに含まれる前記ソースコードのログファイル出力ポイントの前記理論的な数を決定することを備え、
    前記プログラムの実行中に実際に出力されたログファイルのログファイル出力ポイントの前記数は、各フォルダに含まれる実際に出力されたログファイルのログファイル出力ポイントの数に対応する、コンピュータプログラム。
JP2014556784A 2012-02-14 2013-02-11 コード網羅率決定方法およびシステム Expired - Fee Related JP5933762B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201210033077.X 2012-02-14
CN201210033077.XA CN103246602B (zh) 2012-02-14 2012-02-14 代码覆盖率确定方法及系统、代码覆盖检测方法及系统
US13/763,497 US9317400B2 (en) 2012-02-14 2013-02-08 Code coverage rate determination method and system
US13/763,497 2013-02-08
PCT/US2013/025585 WO2013122876A1 (en) 2012-02-14 2013-02-11 Code coverage rate determination method and system

Publications (2)

Publication Number Publication Date
JP2015507303A JP2015507303A (ja) 2015-03-05
JP5933762B2 true JP5933762B2 (ja) 2016-06-15

Family

ID=48926132

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014556784A Expired - Fee Related JP5933762B2 (ja) 2012-02-14 2013-02-11 コード網羅率決定方法およびシステム

Country Status (6)

Country Link
US (2) US9317400B2 (ja)
EP (1) EP2815319B1 (ja)
JP (1) JP5933762B2 (ja)
CN (1) CN103246602B (ja)
TW (1) TWI564714B (ja)
WO (1) WO2013122876A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10025674B2 (en) * 2013-06-07 2018-07-17 Microsoft Technology Licensing, Llc Framework for running untrusted code
CN103365780B (zh) * 2013-07-22 2016-08-03 百度在线网络技术(北京)有限公司 异常测试覆盖率计算方法及装置
CN103425568B (zh) * 2013-08-23 2016-08-10 新浪网技术(中国)有限公司 日志信息处理方法及装置
CN103530229B (zh) * 2013-10-10 2016-12-07 哈尔滨工程大学 一种考虑测试效用的软件可靠性检测方法
US9454467B2 (en) 2013-12-12 2016-09-27 Tencent Technology (Shenzhen) Company Limited Method and apparatus for mining test coverage data
CN104142887B (zh) * 2013-12-12 2016-12-14 腾讯科技(深圳)有限公司 一种数据挖掘方法和装置
CN103699637B (zh) * 2013-12-23 2017-02-08 国云科技股份有限公司 一种代码生产率统计方法及其系统
CN104133768A (zh) * 2014-07-28 2014-11-05 中国银行股份有限公司 一种程序代码复查方法和装置
CN105005645B (zh) * 2015-06-30 2018-10-02 浪潮(北京)电子信息产业有限公司 一种覆盖率的统计方法及装置
CN106547680A (zh) * 2015-09-17 2017-03-29 腾讯科技(深圳)有限公司 覆盖率测试中的数据处理方法和装置
CN106681904B (zh) * 2015-11-11 2020-01-31 阿里巴巴集团控股有限公司 测试件覆盖率及覆盖应用接口的分析方法、装置
CN105718373B (zh) * 2016-01-27 2018-05-11 中电科航空电子有限公司 满足do-178c的代码覆盖率生成方法
CN106326118B (zh) * 2016-08-19 2019-03-15 东软集团股份有限公司 代码测试覆盖率确定方法和装置
EP3462319A1 (en) * 2017-09-29 2019-04-03 Siemens Aktiengesellschaft Method, device and test program for recognizing a weak point in an original program
CN107844423A (zh) * 2017-11-10 2018-03-27 郑州云海信息技术有限公司 一种软件测试完备性的评估方法
US10572367B2 (en) * 2017-11-21 2020-02-25 Accenture Global Solutions Limited Intelligent code quality monitoring
CN108170600A (zh) * 2017-12-27 2018-06-15 广州品唯软件有限公司 前端代码测试的覆盖率统计方法、装置及系统
CN108197036B (zh) * 2018-02-06 2021-05-25 百度在线网络技术(北京)有限公司 用于确定增量代码的覆盖率信息的方法和装置
CN108446234A (zh) * 2018-03-20 2018-08-24 中国银行股份有限公司 信息处理方法及信息处理装置
CN110580214B (zh) * 2018-06-07 2023-05-05 百度在线网络技术(北京)有限公司 应用程序测试的评估方法、装置、存储介质和终端设备
CN111026630B (zh) * 2018-10-09 2023-05-02 阿里巴巴集团控股有限公司 代码覆盖率的统计方法、装置和系统
CN109344081B (zh) * 2018-10-31 2022-03-11 杭州安恒信息技术股份有限公司 基于标签脚本实现自动化覆盖率统计的方法及装置
US10977162B2 (en) * 2018-12-20 2021-04-13 Paypal, Inc. Real time application error identification and mitigation
CN111767231B (zh) * 2020-07-08 2023-10-31 瓴盛科技有限公司 多平台Bootrom验证方法、装置、系统和计算机可读介质
CN112363936A (zh) * 2020-11-12 2021-02-12 广州品唯软件有限公司 差异覆盖率测试方法、装置、计算机设备和存储介质
CN112363937B (zh) * 2020-11-12 2024-05-03 广州品唯软件有限公司 差异覆盖率测试方法、装置、计算机设备和存储介质
CN112395203A (zh) * 2020-11-30 2021-02-23 京东数字科技控股股份有限公司 程序测试方法、装置及存储介质
CN112860556B (zh) * 2021-02-18 2024-04-02 中国工商银行股份有限公司 覆盖率统计方法、装置、计算机系统和可读存储介质
CN112860583A (zh) * 2021-03-29 2021-05-28 中信银行股份有限公司 基于日志的测试全面性检测方法、装置、设备及存储介质
CN116501648B (zh) * 2023-06-26 2023-09-15 北京云枢创新软件技术有限公司 一种代码覆盖率的获取方法及系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758061A (en) * 1995-12-15 1998-05-26 Plum; Thomas S. Computer software testing method and apparatus
JP2000267888A (ja) 1999-03-19 2000-09-29 Ntt Communicationware Corp ソフトウェア試験実施網羅率測定方法、ソフトウェア試験実施網羅率測定装置および記録媒体
TW412674B (en) * 1999-05-20 2000-11-21 Springsoft Inc Method and system for analyzing test coverage
US7529653B2 (en) * 2001-11-09 2009-05-05 Sun Microsystems, Inc. Message packet logging in a distributed simulation system
US7503037B2 (en) * 2004-04-02 2009-03-10 Bea Systems, Inc. System and method for identifying bugs in software source code, using information from code coverage tools and source control tools to determine bugs introduced within a time or edit interval
CN1329836C (zh) * 2004-05-26 2007-08-01 华为技术有限公司 定位程序异常的方法
TWI288242B (en) * 2004-11-12 2007-10-11 Faraday Tech Corp Digital logic test method to systematically approach functional coverage completely and related apparatus and system
JP4869581B2 (ja) 2004-11-22 2012-02-08 株式会社エヌ・ティ・ティ・データ カバレッジ計測システム及びそのプログラム
US7484203B2 (en) 2005-03-21 2009-01-27 International Business Machines Corporation Automated interaction diagram generation using source code breakpoints
US20060294503A1 (en) * 2005-06-24 2006-12-28 Microsoft Corporation Code coverage analysis
US7886272B1 (en) * 2006-03-16 2011-02-08 Avaya Inc. Prioritize code for testing to improve code coverage of complex software
US7617415B1 (en) * 2006-07-31 2009-11-10 Sun Microsystems, Inc. Code coverage quality estimator
TWI347519B (en) * 2007-05-16 2011-08-21 Nat Univ Tsing Hua Method for generating software test cases
US7975262B2 (en) * 2007-08-16 2011-07-05 Microsoft Corporation Error tracing with context history
US8347269B2 (en) * 2007-09-28 2013-01-01 International Business Machines Corporation Method, system and computer program for debugging software applications in a web environment
JP5151757B2 (ja) 2008-07-18 2013-02-27 富士通株式会社 検査品質分析支援プログラム、方法及び装置
US8694967B2 (en) * 2010-06-11 2014-04-08 Microsoft Corporation User interface inventory
JP5767471B2 (ja) * 2010-12-24 2015-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation テストの網羅性を評価する装置及び方法
US8756572B2 (en) 2011-03-22 2014-06-17 Microsoft Corporation Debugger-set identifying breakpoints after coroutine yield points
US8522213B2 (en) 2011-05-12 2013-08-27 International Business Machines Corporation Debugger and debugging methods using breakpoints conditioned on the static identity of data

Also Published As

Publication number Publication date
CN103246602B (zh) 2017-03-01
TW201333693A (zh) 2013-08-16
WO2013122876A1 (en) 2013-08-22
CN103246602A (zh) 2013-08-14
US20160292068A1 (en) 2016-10-06
EP2815319A1 (en) 2014-12-24
US20130212564A1 (en) 2013-08-15
JP2015507303A (ja) 2015-03-05
US9317400B2 (en) 2016-04-19
TWI564714B (zh) 2017-01-01
EP2815319B1 (en) 2024-05-15

Similar Documents

Publication Publication Date Title
JP5933762B2 (ja) コード網羅率決定方法およびシステム
US9619373B2 (en) Method and apparatus to semantically connect independent build and test processes
US9898387B2 (en) Development tools for logging and analyzing software bugs
CN107766236B (zh) 测试任务自动化管理方法、装置、设备及存储介质
US9262299B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
US20100251220A1 (en) Method and apparatus for dynamically instrumenting a program
US20100274520A1 (en) Creation of test plans
US10599558B1 (en) System and method for identifying inputs to trigger software bugs
US9262305B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
US20140208297A1 (en) Validation of revised computer programs
US10209984B2 (en) Identifying a defect density
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
US9842044B2 (en) Commit sensitive tests
CN109542341B (zh) 一种读写io监测方法、装置、终端及计算机可读存储介质
US9189372B2 (en) Trace coverage analysis
CN114116505A (zh) 代码测试方法及装置
JP2013218492A (ja) ソフトウェアテスト自動評価装置および方法
CN111240987A (zh) 移植程序检测方法、装置、电子设备及计算机可读存储介质
CN116820610A (zh) 一种可观测领域中对用户态程序动态跟踪的方法和装置
CN115563008A (zh) 代码覆盖率检测系统、方法、装置和存储介质
CN113868137A (zh) 埋点数据的处理方法、装置、系统和服务器
US10339229B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
CN112416417A (zh) 一种代码量统计方法、装置、电子设备及存储介质
US9740588B2 (en) Performance enhancement mode selection tool
US9311080B2 (en) Instrumented file deployment

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140911

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150619

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150804

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20151102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151117

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: 20160405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160502

R150 Certificate of patent or registration of utility model

Ref document number: 5933762

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees