JP6991415B2 - 経路決定装置及び経路決定プログラム - Google Patents

経路決定装置及び経路決定プログラム Download PDF

Info

Publication number
JP6991415B2
JP6991415B2 JP2021559594A JP2021559594A JP6991415B2 JP 6991415 B2 JP6991415 B2 JP 6991415B2 JP 2021559594 A JP2021559594 A JP 2021559594A JP 2021559594 A JP2021559594 A JP 2021559594A JP 6991415 B2 JP6991415 B2 JP 6991415B2
Authority
JP
Japan
Prior art keywords
program
route
difference
performance
influence
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.)
Active
Application number
JP2021559594A
Other languages
English (en)
Other versions
JPWO2021124464A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2021124464A1 publication Critical patent/JPWO2021124464A1/ja
Application granted granted Critical
Publication of JP6991415B2 publication Critical patent/JP6991415B2/ja
Active 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/3688Test management for test execution, e.g. scheduling of test suites
    • 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
    • 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/368Test management for test version control, e.g. updating test cases to a new software version
    • 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/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

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

Description

この発明は、バージョンアップ前のプログラムとバージョンアップ後のプログラムとの差分箇所を含む経路を決定する、経路決定装置及び経路決定プログラムに関する。
従来技術では、性能問題を有するプログラムついて、性能の問題の存在する箇所のソースコードの変更前と、ソースコードの変更後との差分情報をユーザに提示する。
しかし、単純な差分情報だけでは性能問題の原因を絞り込むことは難しい。特許文献1では、差分情報をどのように算出するかについて詳細に記載されていない。差分情報の算出方法として、以下の(1)または(2)の方法が考えられる。しかし(1)及び(2)のそれぞれには以下のような課題がある。
(1)性能問題がある関数に関わる差分のみを抽出する。しかし、性能問題を持つ関数に影響を与える別の関数の変更が原因の場合、このような原因を提示できないという課題がある。
(2)性能問題に影響を与える関数を含めた変更の差分をすべて示す。しかし、提示する差分が多くなり、ユーザは原因を絞り切れないという課題がある。(2)では、性能問題に関係のない差分まで提示される。このため、性能問題の要因となる差分がどのように関数に影響を与えたかを把握できないという課題がある。
特開2018-112959号公報
この発明は、ユーザによるプログラムの性能問題の原因特定を、容易化することを目的とする。
この発明の経路決定装置は、
第1プログラムのソースコードと前記第1プログラムがバージョンアップされた第2プログラムのソースコードとの相違箇所を示す複数の差分箇所と、第1試験条件を使用して前記第2プログラムの全体を試験する第1性能試験によって実行された複数の行を示す第1カバレッジ情報とを取得し、前記第1カバレッジ情報を参照して、前記複数の差分箇所から、前記第1性能試験の実行された複数の差分箇所を示す複数の第1差分箇所を抽出する第1差分抽出部と、
前記第2プログラムの前記ソースコードを構成している複数の要素から、前記第1差分箇所によって影響を受ける複数の要素の連鎖を示す影響経路を、前記第1差分箇所ごとに抽出する経路抽出部と、
前記第2プログラムの前記ソースコードの複数の行のうち前記第1試験条件と異なる第2試験条件を使用する第2性能試験の実行された複数の行を示す第2カバレッジ情報を取得し、前記第1差分箇所ごとに抽出された複数の影響経路のうち、前記第2カバレッジ情報に含まれる前記影響経路を決定する決定部と、
を備える。
この発明の経路決定装置は、性能問題の原因となる差分箇所と、ソースコードにおける差分箇所の影響する影響経路とを絞り込んだ状態で提示する。よって本発明の経路決定装置は、ユーザによるプログラムの性能問題の原因特定を、容易化することができる。
実施の形態1の図で、経路決定装置1が使用される状態を示す図。 実施の形態1の図で、経路決定装置1のハードウェア構成を示す図。 実施の形態1の図で、経路決定装置1の準備フェーズの動作を示すフローチャート。 実施の形態1の図で、経路決定装置1の実行フェーズの動作を示すフローチャート。 実施の形態1の図で、経路決定装置1の出力フェーズの動作を示すフローチャート。 実施の形態1の図で、準備フェーズの第1カバレッジ情報321を示す図。 実施の形態1の図で、準備フェーズの第1カバレッジ情報321と差分箇所を示す図。 実施の形態1の図で、準備フェーズの影響経路リスト22Aを示す図。 実施の形態1の図で、実行フェーズ1の第2カバレッジ情報322を示す図。 実施の形態1の図で、実行フェーズ1の影響経路リスト22Aを示す図。 実施の形態1の図で、実行フェーズ1の出力部24の動作を示す図。 実施の形態1の図で、実行フェーズ2の第2カバレッジ情報322を示す図。 実施の形態1の図で、実行フェーズ2の影響経路リスト22Aを示す図。 実施の形態1の図で、実行フェーズ2の出力部24の動作を示す図。 実施の形態1の図で、経路決定装置1のハードウェア構成を補足する図。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
実施の形態1.
図1から図15を参照して、実施の形態1の経路決定装置1を説明する。
図1は、実施の形態1の経路決定装置1の使用形態を示す。経路決定装置1は、プログラム格納装置200及び外部装置300と共に使用される。
プログラム格納装置200はソースコードリポジトリ201及び実行プログラム格納装置202を備えている。ソースコードリポジトリ201は、第1プログラム210のソースコード211及び第2プログラム220のソースコード221を格納している。実行プログラム格納装置202は、第1プログラム210の実行プログラム212及び第2プログラム220の実行プログラム222を格納している。ソースコードリポジトリ201及び実行プログラム格納装置202は、記憶装置である。
外部装置300は、差分抽出装置310、カバレッジ測定装置320及び性能測定装置330を備えている。差分抽出装置310は、第1プログラム210のソースコード211と、第2プログラム220のソースコード221との差分を抽出し、経路決定装置1の第1差分抽出部21に抽出した差分を送信する。カバレッジ測定装置320は、性能測定装置330が第2プログラム220の実行プログラム222を実行することにより第2プログラム220の性能を測定する際に、第2プログラム220のソースコード221のコードカバレッジを測定する。なお、以下の説明ではコードカバレッジを、カバレッジ情報と表記する。カバレッジ情報は、実行対象として実行されたソースコードのうち、実際に実行されたソースコードを示す情報である。カバレッジ測定装置320はカバレッジ情報を、第1差分抽出部21及び経路抽出部22に送信する。性能測定装置330は、性能測定装置330の実行状況を監視しながら、上記のようにプログラムのカバレッジ情報を測定する。性能測定装置330は性能測定の試験結果を決定部23に送信する。
経路決定装置1は、機能要素として、第1差分抽出部21、経路抽出部22、決定部23及び出力部24の機能を備えている。これらの機能は、動作の説明で後述する。第1差分抽出部21は、後述の第1差分箇所31及び影響経路リスト22Aを記憶装置に格納する。決定部23は後述の影響経路リスト22Aを記憶装置に格納する。出力部24は結果25を出力する。
***構成の説明***
図2は、経路決定装置1のハードウェア構成を示す。図2を参照して経路決定装置1のハードウェア構成を説明する。
経路決定装置1は、コンピュータである。経路決定装置1は、プロセッサ2を備える。経路決定装置1は、プロセッサ2の他に、主記憶装置3、補助記憶装置4、入力IF5、出力IF6及び通信IF7といった、他のハードウェアを備える。プロセッサ2は、信号線8を介して、他のハードウェアと接続され、他のハードウェアを制御する。
経路決定装置1は、機能要素として、第1差分抽出部21、経路抽出部22、決定部23及び出力部24を備えている。第1差分抽出部21、経路抽出部22、決定部23及び出力部24の機能は、経路決定プログラム44により実現される。経路決定プログラム44は補助記憶装置4に格納されている。
プロセッサ2は、経路決定プログラム44を実行する装置である。経路決定プログラム44は、第1差分抽出部21、経路抽出部22、決定部23及び出力部24の機能の機能を実現するプログラムである。プロセッサ2は、演算処理を行うIC(Integrated Circuit)である。プロセッサ2の具体例は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
主記憶装置3の具体例は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。主記憶装置3は、プロセッサ2の演算結果を保持する。
補助記憶装置4は、データを不揮発的に保管する記憶装置である。補助記憶装置4の具体例は、HDD(Hard Disk Drive)である。また、補助記憶装置4は、SD(登録商標)(Secure Digital)メモリカード、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)といった可搬記録媒体であってもよい。補助記憶装置4は、影響経路リスト22A及び経路決定プログラム44を記憶している。
入力IF5は、各装置からデータが入力されるポートである。出力IF6は、各種機器が接続され、各種機器にプロセッサ2によりデータが出力されるポートである。図2では、出力IF6には、表示装置30が接続されている。通信IF7はプロセッサが他の装置と通信するための通信ポートである。
プロセッサ2は補助記憶装置4から経路決定プログラム44を主記憶装置3にロードし、主記憶装置3から経路決定プログラム44を読み込み実行する。主記憶装置3には、経路決定プログラム44だけでなく、OS(Operating System)も記憶されている。プロセッサ2は、OSを実行しながら、経路決定プログラム44を実行する。経路決定装置1は、プロセッサ2を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、経路決定プログラム44の実行を分担する。それぞれのプロセッサは、プロセッサ2と同じように、経路決定プログラム44を実行する装置である。経路決定プログラム44により利用、処理または出力されるデータ、情報、信号値及び変数値は、主記憶装置3、補助記憶装置4、または、プロセッサ2内のレジスタあるいはキャッシュメモリに記憶される。
経路決定プログラム44は、第1差分抽出部21、経路抽出部22、決定部23及び出力部24の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程をコンピュータに実行させるプログラムである。
また、経路決定方法は、コンピュータである経路決定装置1が経路決定プログラム44を実行することにより行われる方法である。経路決定プログラム44は、コンピュータ読み取り可能な記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
***動作の説明***
経路決定装置1の動作を説明する。経路決定装置1の動作手順は、経路決定方法に相当する。経路決定装置1の動作を実現するプログラムは、経路決定プログラム44に相当する。経路決定装置1の動作は、以下の準備フェーズと、実行フェーズ、及び出力フェーズからなる。
準備フェーズでは、経路決定装置1は、差分抽出装置310から取得した複数の差分箇所から第1差分箇所31を抽出する。また、経路決定装置1は、第2プログラム220のソースコード221から影響経路32を、抽出する。第1差分箇所31は、性能問題の原因の可能性のある差分箇所である。
実行フェーズでは、経路決定装置1は、複数の影響経路32うち、第2プログラム220の性能問題の原因にならない影響経路を決定し、決定した影響経路32を複数の影響経路32から削除する。
出力フェーズでは、経路決定装置1は、性能問題の原因にならないと決定された影響経路の削除された結果を出力する。経路決定装置1は、準備フェーズを1度実行し、実行フェーズ及び出力フェーズを1以上の回数を実行する。
以下に、各フェーズを説明する。
図3は、準備フェーズの動作を示すフローチャートである。
図4は、実行フェーズの動作を示すフローチャートである。
図5は、出力フェーズ動作を示すフローチャートである。図3を参照して準備フェーズにおける経路決定装置1の動作を説明する。
<準備フェーズ>
ステップS11において、第1差分抽出部21は、第1プログラム210のソースコード211と第2プログラム220のソースコード221との相違箇所を示す複数の差分箇所を、差分抽出装置310から取得する。第1プログラム210のソースコード211と、第2プログラム220のソースコード221とは、図1のソースコードリポジトリ201に格納されている。実行プログラム格納装置202は、ソースコード211の実行プログラム212と、ソースコード221の実行プログラム222とを格納している。第2プログラム220は、第1プログラム210がバージョンアップされたプログラムである。
差分抽出装置310は、ソースコード211とソースコード221とを使用して、ソースコード211とソースコード221との、複数の差分箇所を抽出する。ステップS11では、第1差分抽出部21は、この複数の差分箇所3を差分抽出装置310から取得する。
また、ステップS11において、図1に示すように、第1差分抽出部21は、第1カバレッジ情報321を、カバレッジ測定装置320から取得する。第1カバレッジ情報321は、第1試験条件を使用して第2プログラム220の全体を対象に性能試験する第1性能試験によって実行された複数の行を示す情報である。図1の性能測定装置330が、第1試験条件231を使用する第1性能試験233を実行する。カバレッジ測定装置320は、ソースコードが実行される際に、実行されたソースコードを測定する装置である。カバレッジ測定装置320は第1カバレッジ情報321を測定する。
第1プログラム210は、プログラムの性能を測定してプログラムが性能を満たすかどうかを判定する性能測定装置330によって、第1プログラム210に要求される性能を満たすと判定されている。第2プログラム220は、性能測定装置330による第1性能試験233の測定結果から、性能測定装置330によって第2プログラム220に要求される性能を満たさないと判定されている。また、第2プログラム220は、性能測定装置330による第2性能試験244の測定結果から、性能測定装置330によって第2プログラム220に要求される性能を満たすと判定されている。後述のステップS22では、決定部23は、第2カバレッジ情報322として、第2プログラム220の要求性能を満たすと判定されたカバレッジ情報をカバレッジ測定装置320から取得する。
図6は、第1差分抽出部21が取得する第2プログラム220の第1カバレッジ情報321の例である。第1カバレッジ情報321では、第2プログラム220のソースコード221のうち、コード401が実行されなかったことを示す。図6ではコード401以外のコードは実行されている。
ステップS12において、第1差分抽出部21は、第1カバレッジ情報321を参照して、複数の差分箇所から、第1性能試験233の実行された複数の差分箇所を示す複数の第1差分箇所31を抽出する。なお、図面では差分箇所を差分と表記している。
図7は、第1差分箇所31を示す図である。第1差分抽出部21はステップS11で、複数の差分箇所として、差分箇所A、差分箇所B、差分箇所C及び差分箇所Dを取得する。第1差分抽出部21は、第1カバレッジ情報321から、差分箇所Dが実行されていないコード401と知る。よって第1差分抽出部21は、差分箇所A、差分箇所B、差分箇所C及び差分箇所Dから、第1差分箇所31として、差分箇所A、差分箇所B及び差分箇所Cを抽出する。差分箇所Dは実行されていないため、処理の対象外になる。差分箇所Dは実行されていないため、第2プログラム220の性能問題に影響しないからである。
ステップS13において、経路抽出部22は、第2プログラム220のソースコード221を構成している複数の要素から、依存関係分析を用いて、影響経路32を第1差分箇所31ごとに抽出する。影響経路32は、第1差分箇所31によって影響を受ける複数の要素の連鎖を示す。経路抽出部22は、影響経路32として関数の連鎖を抽出する。
図8は、図7の第1カバレッジ情報321に基づき、経路抽出部22によって抽出された影響経路32のリストを示す影響経路リスト22Aである。ソースコード221を構成している複数の要素とは、図8に示すソースコード221を構成するテキスト要素である。経路抽出部22は、依存関係分析により抽出した影響経路32を影響経路リスト22Aに記録する。経路抽出部22は、影響経路32を、関数及び基本ブロックをまたがる単位で記録する。記録の際は、経路抽出部22は、関数名と行番号とを記録する。以下、図7を参照して経路抽出部22による影響経路32の抽出を説明する。図7において、各関数のブロックB1からブロックB6には、行番号が付されているとする。ブロックB1,B2,B4,B5には行番号を示している。
なお、経路抽出部22が関数名と行番号とを記録することは、一つの例である。すなわち、経路抽出部22が関数名と行番号とを用いて影響経路32を特定する方法は、一つの例である。
<差分箇所A>
経路抽出部22は、第1差分箇所31である差分箇所Aに依存する影響経路32を以下のように抽出する。経路抽出部22は、差分箇所AをfuncDの1行目と認識する。経路抽出部22は、差分箇所AがfuncAの1行目の「d=funcD();」に影響すると認識する。経路抽出部22は、影響を受けるテキスト要素が含まれる関数のブロックにおけるテキスト要素の行番号と、関数のブロックに含まれる関数名を影響経路32として影響経路リスト22Aに記録する。経路抽出部22は「関数名:行番号」の組で記録する。影響経路32の起点は、差分箇所Aが含まれる関数のブロックにおける差分箇所Aの行番号と、その関数のブロックに含まれる関数名である。経路抽出部22は差分箇所Aについて、「funcD:1」、「funcA:1」の影響経路32を記録する。以下では「関数名:行番号」で表記する場合がある。
<差分箇所B>
経路抽出部22は、第1差分箇所31である差分箇所Bに依存する影響経路32を以下のように抽出する。経路抽出部22は、差分箇所Bを「funcE:1」と認識する。経路抽出部22は、差分箇所BがfuncEの3行目の「return e」に影響すると認識する。経路抽出部22は影響箇所を「funcE:3」と認識する。経路抽出部22は、「funcE:3」がfuncAの2行目の「e=funcE()」に影響すると認識する。経路抽出部22は影響箇所を「funcA:2」と認識する。よって、経路抽出部22は、影響経路32として、「funcE:1」、「funcE:3」、「funcA:2」の経路を抽出する。
<差分箇所B>
経路抽出部22は、第1差分箇所31である差分箇所Bに依存するもう一つの影響経路32を以下のように抽出する。経路抽出部22は、差分箇所Bを「funcE:1」と認識する。経路抽出部22は、差分箇所BがfuncEの3行目の「return e」に影響すると認識する。経路抽出部22は影響箇所を「funcE:3」と認識する。経路抽出部22は、「funcE:3」がfuncBの1行目の「if(){b+=funcE();}」に影響すると認識する。経路抽出部22は影響箇所を「funcB:1」と認識する。経路抽出部22は、「funcB:1」がfuncBの3行目の「while(b--){B+=b;}」に影響すると認識する。経路抽出部22は影響箇所を「funcB:3」と認識する。よって、経路抽出部22は、影響経路32として、「funcE:1」、「funcE:3」、「funcB:1」、「funcB:」の経路を抽出する。
<差分箇所C>
経路抽出部22は、第1差分箇所31である差分箇所Cに依存する影響経路32を以下のように抽出する。経路抽出部22は、差分箇所Cを「funcE:2」と認識する。経路抽出部22は、差分箇所CがfuncEの3行目の「return e」に影響すると認識する。経路抽出部22は影響箇所を「funcE:3」と認識する。経路抽出部22は、「funcE:3」がfuncAの2行目の「e=funcE();」に影響すると認識する。経路抽出部22は影響箇所を「funcA:2」と認識する。よって、経路抽出部22は、影響経路32として、「funcE:2」、「funcE:3」、「funcA:2」の経路を抽出する。
<差分箇所C>
経路抽出部22は、第1差分箇所31である差分箇所Cに依存するもう一つの影響経路32を以下のように抽出する。経路抽出部22は、差分箇所Cを「funcE:2」と認識する。経路抽出部22は、差分箇所CがfuncEの3行目の「return e」に影響すると認識する。経路抽出部22は影響箇所を「funcE:3」と認識する。経路抽出部22は、「funcE:3」がfuncBの1行目の「if(){b+=funcE();}」に影響すると認識する。経路抽出部22は影響箇所を「funcB:1」と認識する。経路抽出部22は、「funcB:1」がfuncBの3行目の「while(b--){B+=b;}」に影響すると認識する。経路抽出部22は影響箇所を「funcB:3」と認識する。よって、経路抽出部22は、影響経路32として、「funcE:2」、「funcE:3」、「funcB:1」、「funcB:3」の経路を抽出する。
<実行フェーズ1>
実行フェーズ1では、決定部23は、第2プログラム220に性能問題が検出された第1性能試験233とは別パラメータを用いた性能テスト、または部分的な性能テストとして実施した第2性能試験244のカバレッジ情報である第2カバレッジ情報322を使用する。「第2カバレッジ情報322」は、第2プログラム220のソースコード221の複数の行のうち第1試験条件231と異なる第2試験条件241を使用する第2性能試験244の実行された複数の行を示す。第2カバレッジ情報322は、第2プログラム220の要求性能を満たすと判定された第2性能試験244におけるソースコード221のカバレッジ情報である。決定部23は、第2カバレッジ情報322に含まれる影響経路を影響経路リスト22Aから除外する。これは、第2カバレッジ情報322の範囲で実行した第2性能試験244が、影響経路32を含んだ実行でも性能問題が出現しないため、第2カバレッジ情報322に含まれる影響経路32は性能問題を引き起こさないと考えられるからである。
図5を参照して実行フェーズ1を説明する。ステップS21において、図1に示すように、決定部23は、第2カバレッジ情報322を取得する。
ステップS22において、決定部23は、第1差分箇所31ごとに抽出された複数の影響経路32のうち、第2カバレッジ情報322に含まれる影響経路32を決定する。決定部23は、複数の影響経路32のうち第2カバレッジ情報322に含まれる決定した影響経路32を、複数の影響経路32から除外する。具体的には以下のようである。
図9は、第2カバレッジ情報322を示している。第2カバレッジ情報322は、funcAに対するあるパラメータの性能試験で、問題がなかったときのカバレッジ情報である。funcAに対する「あるパラメータ」は、第2試験条件242に相当する。決定部23はステップS21で、第2カバレッジ情報322を取得する。
ステップS22で決定部23は以下の処理を行う。決定部23は、第2カバレッジ情報322に含まれる影響経路32を決定する。
図10は、実行フェーズ1の影響経路リスト22Aを示す。図10に示すように、決定部23は、第2カバレッジ情報322から、<差分箇所A>について、「funcD:1」、「funcA:1」の影響経路32を決定する。決定部23は、第2カバレッジ情報322から、<差分箇所B>について、「funcE:1」、「funcE:3」、「funcA:2」の影響経路32を決定する。決定部23は、第2カバレッジ情報322から、<差分箇所C>について、「funcE:2」、「funcE:3」、「funcA:2」の影響経路32を決定する。
決定部23は、第2カバレッジ情報322に基づき決定した、複数の影響経路32を影響経路リスト22Aから除外する。図10の破線の範囲の影響経路は、決定部23によって除外されたことを示している。図10の影響経路リスト22Aでは、NO.3とNO.5の影響経路32が残る。
<出力フェーズ1>
図11は、出力フェーズ1の決定部23の動作を示す。図5及び図11を参照して決定部23の動作を説明する。ステップS31において、出力部24には、除外されずに残っているNO.3とNO.5の影響経路32が決定部23から入力される。ステップS32において、出力部24は、複数の影響経路32から第2カバレッジ情報322に含まれる影響経路32が除外された結果25を出力する。具体的には、出力部24は、入力された影響経路32に含まれるソースコードを強調表示で表示装置30に表示する。図11では出力部24は破線で囲まれているコードを強調表示する。表示装置30への表示は出力の例であり、出力部24は補助記憶装置4へ出力しても良いし、補助記憶装置4以外の他の記憶装置へ結果25を出力してもよい。以上の実行フェーズ1の結果より、図10及び図11に示すように、NO.1、NO.2及びNO.4の影響経路32が影響経路リスト22Aから除外された。
<実行フェーズ2>
図12は、実行フェーズ2の第2カバレッジ情報322を示している。第2カバレッジ情報322は、funcBに対するあるパラメータの性能試験で、問題がなかったときのカバレッジ情報である。funcBに対する「あるパラメータ」は、第2試験条件242に相当する。決定部23はステップS21で、第2カバレッジ情報322を取得する。
実行フェーズ2のステップS22で、決定部23は以下の処理を行う。決定部23は、第2カバレッジ情報322に含まれる影響経路32を決定する。
図13は、実行フェーズ2における影響経路リスト22Aを示す。決定部23は、第2カバレッジ情報322から、差分箇所Bについて、「funcE:1」、「funcE:3」、「funcB:1」、「funcB:3」の影響経路32を決定する。決定部23は、第2カバレッジ情報322に基づき決定した、この影響経路32を影響経路リスト22Aから除外する。除外後の状態が図13の影響経路リスト22Aである。なお図13の影響経路リスト22AにおけるNO.5の影響経路32は、今回の第2試験条件242のfuncBに対するパラメータでは差分箇所Cは通らない。よって、NO.5の差分箇所Cは、影響経路リスト22Aから削除されない。図13の影響経路リスト22Aでは、NO.5の影響経路32のみが残る。
<出力フェーズ2>
出力フェーズ2では、影響経路リスト22Aのうち、NO.5の影響経路32のみが残る。ステップS31において、出力部24は結果を決定部23から入力される。ステップS32において、出力部24は、NO.5の影響経路32の元になる差分箇所Cを強調表示で出力する表示装置に出力する。
図14は、出力フェーズ2における出力部24の動作を示す。出力部24は、図14の破線で囲むコードを強調表示で表示装置30に表示する。以上の実行フェーズ2の結果より、図13の破線の範囲の影響経路32は影響経路リスト22Aから除外される。
***実施の形態1の効果の説明***
経路決定装置1によれば、性能問題のある差分箇所と第1差分箇所31から影響を受ける影響経路32とについて、性能問題に影響しない影響経路を除いて絞り込んだ状態で、影響経路を、ユーザに提示できる。よって本発明の経路決定装置は、ユーザによるプログラムの性能問題の原因特定を、容易化することができる。
なお、実行フェーズにおける特定の関数に限定したコードカバレッジの扱い方を補足しておく。
(A)対象関数を最上位関数とする部分的なテストを利用する場合.
決定部23は、性能問題がなかった場合、実行した「部分的なテスト」のカバレッジ情報に含まれる影響経路32を影響経路リスト22Aから除外する。
(B)全体のテストを利用する場合.
性能測定装置330による性能測定では、その特定の関数のみを測定する。性能問題がなかった場合、決定部23は、ソースコード全体に対するカバレッジ情報に含まれる、特定の関数が最上位の影響先である影響経路32のみを、影響経路リスト22A]から除外する。
なお、差分箇所の影響する影響経路の取得には、コードの依存関係分析を用いる。依存関係分析は以下のアドレスに開示されているような一般的な技術を用いることができる。
https://www.grammatech.com/codesurfer-binaries.
http://understand.techmatrix.jp/.
実施の形態1では、性能測定装置330によるプログラムの性能問題の判定方法には規定しない。プログラムの性能問題の判定方法として、例えば以下の判定方法が考えられる。プログラムの性能試験結果の数値と閾値とを比較することにより、性能測定装置330は、プログラムに性能問題があるかどうかを判断する。あるいは,性能測定装置330は、プログラムの性能試験を新バージョンと旧バージョンで行い、試験結果の数値の差に基づき、新バージョンに性能問題があるかどうかを判断する。
<ハードウェア構成の補足>
図2の経路決定装置1では、経路決定装置1の機能がソフトウェアで実現される。しかし、経路決定装置1の機能がハードウェアで実現されてもよい。
図15は、経路決定装置1の機能がハードウェアで実現される構成を示す。図15の電子回路90は、経路決定装置1の第1差分抽出部21、経路抽出部22、決定部23及び出力部24の機能を実現する専用の電子回路である。電子回路90は、信号線91に接続している。電子回路90は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、または、FPGAである。GAは、Gate Arrayの略語である。ASICは、Application Specific Integrated Circuitの略語である。FPGAは、Field-Programmable Gate Arrayの略語である。経路決定装置1の構成要素の機能は、1つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。また、経路決定装置1の構成要素の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
プロセッサ2と電子回路90の各々は、プロセッシングサーキットリとも呼ばれる。経路決定装置1において、第1差分抽出部21、経路抽出部22、決定部23及び出力部24の機能の機能がプロセッシングサーキットリにより実現されてもよい。あるいは、第1差分抽出部21、経路抽出部22、決定部23、出力部24、主記憶装置3、補助記憶装置4、入力IF5、出力IF6及び通信IF7の機能がプロセッシングサーキットリにより実現されてもよい。
以上、実施の形態1について説明したが、実施の形態1のうち、1つを部分的に実施しても構わない。あるいは、実施の形態1のうち、2つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、実施の形態1に限定されるものではなく、必要に応じて種々の変更が可能である。
1 経路決定装置、2 プロセッサ、3 主記憶装置、4 補助記憶装置、5 入力IF、6 出力IF、7 通信IF、8 信号線、21 第1差分抽出部、22 経路抽出部、22A 影響経路リスト、23 決定部、24 出力部、25 結果、30 表示装置、31 第1差分箇所、32 影響経路、44 経路決定プログラム、90 電子回路、91 信号線、200 プログラム格納装置、201 ソースコードリポジトリ、202 実行プログラム格納装置、210 第1プログラム、211 ソースコード、212 実行プログラム、220 第2プログラム、221 ソースコード、222 実行プログラム、231 第1試験条件、233 第1性能試験、242 第2試験条件、244 第2性能試験、300 外部装置、310 差分抽出装置、320 カバレッジ測定装置、321 第1カバレッジ情報、322 第2カバレッジ情報、330 性能測定装置、401 コード。

Claims (5)

  1. 第1プログラムのソースコードと前記第1プログラムがバージョンアップされた第2プログラムのソースコードとの相違箇所を示す複数の差分箇所と、第1試験条件を使用して前記第2プログラムの全体を試験する第1性能試験によって実行された複数の行を示す第1カバレッジ情報とを取得し、前記第1カバレッジ情報を参照して、前記複数の差分箇所から、前記第1性能試験の実行された複数の差分箇所を示す複数の第1差分箇所を抽出する第1差分抽出部と、
    前記第2プログラムの前記ソースコードを構成している複数の要素から、前記第1差分箇所によって影響を受ける複数の要素の連鎖を示す影響経路を、前記第1差分箇所ごとに抽出する経路抽出部と、
    前記第2プログラムの前記ソースコードの複数の行のうち前記第1試験条件と異なる第2試験条件を使用する第2性能試験の実行された複数の行を示す第2カバレッジ情報を取得し、前記第1差分箇所ごとに抽出された複数の影響経路のうち、前記第2カバレッジ情報に含まれる前記影響経路を決定する決定部と、
    を備える経路決定装置。
  2. 前記第1プログラムは、
    プログラムの性能を測定して前記プログラムが性能を満たすかどうかを判定する性能測定装置によって、前記第1プログラムに要求される性能を満たすと判定されており、
    前記第2プログラムは、
    前記性能測定装置による前記第1性能試験の測定結果から、前記性能測定装置によって前記第2プログラムに要求される性能を満たさないと判定されており、前記性能測定装置による前記第2性能試験の測定結果から、前記性能測定装置によって前記第2プログラムに要求される性能を満たすと判定されている請求項1に記載の経路決定装置。
  3. 前記決定部は、
    前記複数の影響経路のうち前記第2カバレッジ情報に含まれる前記影響経路を、前記複数の影響経路から除外し、
    前記経路決定装置は、さらに、
    前記複数の影響経路から前記第2カバレッジ情報に含まれる前記影響経路が除外された結果を出力する出力部を備えている請求項1または請求項2に記載の経路決定装置。
  4. 前記経路抽出部は、
    前記影響経路として関数の連鎖を抽出する請求項1から請求項3のいずれか1項に記載の経路決定装置。
  5. コンピュータに、
    第1プログラムのソースコードと前記第1プログラムがバージョンアップされた第2プログラムのソースコードとの相違箇所を示す複数の差分箇所と、第1試験条件を使用して前記第2プログラムの全体を試験する第1性能試験によって実行された複数の行を示す第1カバレッジ情報とを取得し、前記第1カバレッジ情報を参照して、前記複数の差分箇所から、前記第1性能試験の実行された複数の差分箇所を示す複数の第1差分箇所を抽出する第1差分抽出処理と、
    前記第2プログラムの前記ソースコードを構成している複数の要素から、前記第1差分箇所によって影響を受ける複数の要素の連鎖を示す影響経路を、前記第1差分箇所ごとに抽出する経路抽出処理と、
    前記第2プログラムの前記ソースコードの複数の行のうち前記第1試験条件と異なる第2試験条件を使用する第2性能試験の実行された複数の行を示す第2カバレッジ情報を取得し、前記第1差分箇所ごとに抽出された複数の影響経路のうち、前記第2カバレッジ情報に含まれる前記影響経路を決定する決定処理と、
    を実行させる経路決定プログラム。
JP2021559594A 2019-12-17 2019-12-17 経路決定装置及び経路決定プログラム Active JP6991415B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/049477 WO2021124464A1 (ja) 2019-12-17 2019-12-17 経路決定装置及び経路決定プログラム

Publications (2)

Publication Number Publication Date
JPWO2021124464A1 JPWO2021124464A1 (ja) 2021-06-24
JP6991415B2 true JP6991415B2 (ja) 2022-01-12

Family

ID=76477363

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021559594A Active JP6991415B2 (ja) 2019-12-17 2019-12-17 経路決定装置及び経路決定プログラム

Country Status (3)

Country Link
US (1) US20220229771A1 (ja)
JP (1) JP6991415B2 (ja)
WO (1) WO2021124464A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2024012759A (ja) * 2022-07-19 2024-01-31 日立Astemo株式会社 ソフトウェア分析システム、ソフトウェア分析方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007199800A (ja) 2006-01-24 2007-08-09 Hitachi Software Eng Co Ltd デグレート防止支援プログラムおよびデグレート防止支援方法
US20150370685A1 (en) 2014-06-24 2015-12-24 Juergen Heymann Defect localization in software integration tests

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7167870B2 (en) * 2002-05-08 2007-01-23 Sun Microsystems, Inc. Software development test case maintenance
US8079019B2 (en) * 2007-11-21 2011-12-13 Replay Solutions, Inc. Advancing and rewinding a replayed program execution
US20130179867A1 (en) * 2012-01-11 2013-07-11 International Business Machines Corporation Program Code Analysis System
US9021449B2 (en) * 2012-08-16 2015-04-28 Fujitsu Limited Software regression testing using symbolic execution
US9311223B2 (en) * 2013-05-21 2016-04-12 International Business Machines Corporation Prioritizing test cases using multiple variables
US9405662B2 (en) * 2013-12-18 2016-08-02 Google Inc. Process for displaying test coverage data during code reviews
US9558106B1 (en) * 2013-12-19 2017-01-31 Amazon Technologies, Inc. Testing service with control testing
JP2015133031A (ja) * 2014-01-15 2015-07-23 株式会社日立製作所 プログラム分析装置及びプログラム分析方法
US9898385B1 (en) * 2016-10-11 2018-02-20 Green Hills Software, Inc. Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction
WO2018154784A1 (ja) * 2017-02-27 2018-08-30 三菱電機株式会社 影響抽出装置、影響抽出プログラム及び影響抽出方法
US10248547B2 (en) * 2017-04-18 2019-04-02 Sap Se Coverage of call graphs based on paths and sequences
US10430318B1 (en) * 2017-07-11 2019-10-01 Juniper Networks, Inc Systems and methods for efficiently performing regression testing on software updates
US10248549B1 (en) * 2017-11-02 2019-04-02 Citrix Systems, Inc. Systems and methods for detection of untested code execution
US20200301815A1 (en) * 2019-03-19 2020-09-24 Microsoft Technology Licensing, Llc Using synthetic inputs to compare execution of different code versions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007199800A (ja) 2006-01-24 2007-08-09 Hitachi Software Eng Co Ltd デグレート防止支援プログラムおよびデグレート防止支援方法
US20150370685A1 (en) 2014-06-24 2015-12-24 Juergen Heymann Defect localization in software integration tests

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
James A. Jones et al.,"Empirical Evaluation of the Tarantula Automatic Fault-Localization Technique",Proceedings of the 20th IEEE/ACM International Conference on Automated Software Engineering,米国,ACM,2005年,pp.273-282

Also Published As

Publication number Publication date
JPWO2021124464A1 (ja) 2021-06-24
US20220229771A1 (en) 2022-07-21
WO2021124464A1 (ja) 2021-06-24

Similar Documents

Publication Publication Date Title
US8386851B2 (en) Functional coverage using combinatorial test design
US9202060B2 (en) Method for secure self-booting of an electronic device
US20170310566A1 (en) System and method for detecting system's performance regression
JP6245006B2 (ja) テストケース生成装置、方法、及びプログラム
JP6991415B2 (ja) 経路決定装置及び経路決定プログラム
JP6486574B2 (ja) プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム
US8495536B2 (en) Computing validation coverage of integrated circuit model
US11086604B2 (en) Source code splitting device, source code analyzing device, source code splitting method, and computer readable medium
US11422916B2 (en) Usage amount monitoring method and monitoring unit of electronic control unit for vehicle
US20210010950A1 (en) Inspection device, inspection method, and computer readable medium
JP6824053B2 (ja) 関係分析装置および関係分析プログラム
JP5755861B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
JP6723483B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
WO2020136880A1 (ja) テスト実行装置、テスト実行方法及びテスト実行プログラム
US11068381B2 (en) Program analysis device, program analysis system, program analysis method and computer readable medium
JP7336911B2 (ja) 処理特定装置、処理特定方法及び処理特定プログラム
JP6599053B1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US20120102366A1 (en) Meta attributes in functional coverage models
US20210224423A1 (en) Non-transitory computer-readable recording medium having stored therein information processing program, information processing method, and information processing apparatus
US11030370B2 (en) Modular event-based performance monitoring in integrated circuit development
US20210224417A1 (en) Non-transitory computer-readable recording medium having stored therein information processing program, information processing method, and information processing apparatus
US20150331770A1 (en) Extracting test model from textual test suite
JP2013061893A (ja) 情報処理装置及び情報処理方法及びプログラム
WO2017094519A1 (ja) ソフトウェア解析装置、ソフトウェア解析方法、及び、記録媒体
JPWO2018163387A1 (ja) 解析装置、解析方法及び解析プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211006

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20211006

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211207

R150 Certificate of patent or registration of utility model

Ref document number: 6991415

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150