JP6901685B2 - 生成プログラム、生成方法、及び情報処理装置 - Google Patents

生成プログラム、生成方法、及び情報処理装置 Download PDF

Info

Publication number
JP6901685B2
JP6901685B2 JP2017194017A JP2017194017A JP6901685B2 JP 6901685 B2 JP6901685 B2 JP 6901685B2 JP 2017194017 A JP2017194017 A JP 2017194017A JP 2017194017 A JP2017194017 A JP 2017194017A JP 6901685 B2 JP6901685 B2 JP 6901685B2
Authority
JP
Japan
Prior art keywords
program
scenario
executed
memory
change status
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
JP2017194017A
Other languages
English (en)
Other versions
JP2019067274A (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.)
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 JP2017194017A priority Critical patent/JP6901685B2/ja
Priority to US16/149,200 priority patent/US11055206B2/en
Publication of JP2019067274A publication Critical patent/JP2019067274A/ja
Application granted granted Critical
Publication of JP6901685B2 publication Critical patent/JP6901685B2/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/3684Test management for test design, e.g. generating new test cases
    • 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
    • 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

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

本発明は、生成プログラム、生成方法、及び情報処理装置に関する。
ソフトウェア製品やサービスのシステムテストでは、システム全体としての動作に問題がないことを確認するために、システムで実行されるプログラムを組み合わせた検証用のテストシナリオを作成する。そして、テストシナリオに沿ってプログラムを実行し、システム全体が正常に動作するかの検証が行われる。
なお、検証の対象装置に同様の負荷を繰り返し与える検証を行うことを抑制できる検証支援装置が提案されている。この検証支援装置では、対象装置の動作を定める入力パラメータの値を変化させて変化前と変化後とでモジュールの動作状態を取得し、動作状態の変化の度合いが高い入力パラメータをランダム検証シナリオの生成時に設定する主パラメータとして選択する。
特開2016−81256号公報
システムで実行されるプログラムの数が有限でも、1つのテストシナリオの中で同じプログラムを繰り返し実行できるとすると、テストシナリオとして設定可能なプログラムの組み合わせは無限になる。実際には有限個のテストシナリオを選択して実行することになるが、重大なバグなどを見落とさないようにするには、膨大な数のテストシナリオを実行することになり、検証に長い時間がかかる。
1つの側面によれば、本発明の目的は、実行すべきテストシナリオを減らすことができる生成プログラム、生成方法、及び情報処理装置を提供することにある。
一態様によれば、テスト対象のシステムで実行される複数のプログラムのうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成方法が提供される。該生成方法では、複数のプログラムのうち、いずれかのプログラムを実行して、該プログラムの実行により生じたメモリの内部状態の変化状況を取得し、実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリの内部状態の変化状況を記憶する記憶部を参照して、取得した変化状況との類似性が基準を満たす変化状況があるかどうかを判定し、基準を満たす変化状況がなければ、実行したプログラムを含む新たなテストシナリオを生成し、基準を満たす変化状況があれば、実行したプログラムを含む新たなテストシナリオの生成を抑制する処理をコンピュータが実行する。
実行すべきテストシナリオを減らすことができる。
第1実施形態に係る情報処理装置及びシステムの一例を示した図である。 第2実施形態に係る情報処理システム及びシナリオ生成装置の一例を示したブロック図である。 第2実施形態に係る情報処理システムが有する機能の一例を示したブロック図である。 プログラム群及びシナリオ情報の一例を示した図である。 メモリ状態及びその変化について説明するための図である。 プログラムの実行に伴う状態遷移について説明するための図である。 第2実施形態に係るシナリオ生成装置が有する機能の一例を示したブロック図である。 プログラム情報の一例を示した図である。 シナリオ情報の一例を示した図である。 影響度の情報の一例を示した図である。 差分評価値の情報の一例を示した図である。 ToDoリストの一例を示した図である。 第2実施形態に係るシナリオ生成装置が実行する処理の流れを示したフロー図である。 ToDoリストの初期化及び更新について説明するための図である。 第2実施形態に係るシナリオ生成装置が実行する処理のうち、差分評価値の計算に関する処理の流れを示した第1のフロー図である。 第2実施形態に係るシナリオ生成装置が実行する処理のうち、差分評価値の計算に関する処理の流れを示した第2のフロー図である。 差分評価値の計算イメージを示した図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。
図1は、第1実施形態に係る情報処理装置及びシステムの一例を示した図である。なお、図1に示した情報処理装置10は、第1実施形態に係る情報処理装置の一例である。また、図1に示したシステム20は、第1実施形態に係るシステムの一例である。
図1に示すように、情報処理装置10は、プロセッサ11及び記憶部12を有する。また、システム20は、実行部21及びメモリ22を有する。
記憶部12及びメモリ22は、例えば、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置である。プロセッサ11は、例えば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などである。実行部21は、例えば、CPU、DSP、ASIC、FPGAなどのプロセッサである。
情報処理装置10の動作を制御してテストシナリオの生成に関する処理を情報処理装置10に実行させる生成プログラムは、例えば、可搬記録媒体12aに格納されて流通されうる。また、情報処理装置10は、可搬記録媒体12aに格納された生成プログラムを読み出して記憶部12に格納しうる。記憶部12に生成プログラムを格納すると、情報処理装置10は、その生成プログラムを実行してテストシナリオの生成に関する処理を実行できる。なお、可搬記録媒体12aとしては、例えば、情報処理装置10の接続インターフェース(非図示)に装脱可能な光記録媒体、磁気記録媒体、半導体メモリなどがある。
情報処理装置10は、プロセッサ11により、テスト対象のシステム20で実行されるプログラムP1、…、P9のうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成処理を実行する。なお、テストシナリオに含まれるプログラムは、システム20の実行部21により実行される。テストシナリオに含まれるプログラムの例としてはAPI(Application Programming Interface)がある。
プロセッサ11は、プログラムP1、…、P9のうち、いずれかのプログラム(候補プログラム)を実行して、該プログラムの実行により生じたメモリ22の内部状態の変化状況を取得する。図1の例では、プロセッサ11が、候補プログラムとしてプログラムP3を実行する。プロセッサ11は、プログラムP3実行時のメモリ22の内部状態の変化状況Fをシステム20から取得する。
なお、メモリ22の内部状態は、例えば、各メモリ番地におけるメモリ値の組み合わせなどで定量的に表現できる。また、変化状況は、例えば、プログラムの実行前後におけるメモリ値の組み合わせの差分などで定量的に表現できる。
記憶部12は、実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリ22の内部状態の変化状況を記憶する。図1の例では、実行済みのテストシナリオにプログラムP1、P2、P4、P6、P9が含まれ、それぞれに対応するメモリ22の内部状態の変化状況A、B、C、D、Eを記憶部12が記憶している。
プロセッサ11は、記憶部12を参照して、取得した変化状況Fとの類似性が基準を満たす変化状況があるかどうかを判定する。
図1の例では、プロセッサ11により、変化状況A、B、C、D、Eのそれぞれと変化状況Fとの類似性が評価され、類似性が基準を満たす変化状況の有無が判定される。プロセッサ11は、基準を満たす変化状況がなければ、実行したプログラムP3を含む新たなテストシナリオを生成する。一方、基準を満たす変化状況があれば、プロセッサ11は、実行したプログラムP3を含む新たなテストシナリオの生成を抑制する。
なお、類似性は、例えば、変化状況の差などに基づいて判定されうる。基準としては、例えば、変化状況の差を表す評価値と比較されうる所定の閾値などが適用されうる。
例えば、変化状況A、Fが類似する場合、プロセッサ11は、プログラムP3を含む新たなテストシナリオの生成を抑制する。一方、変化状況A、B、C、D、Eのいずれも変化状況Fと類似しない場合、プロセッサ11は、プログラムP3を含む新たなテストシナリオの生成を行う。
実行時にメモリ22の変化状況が変わらないプログラムを追加した新たなテストシナリオを検証に用いても、追加前のテストシナリオによる検証と同様の結果となるため、新たなテストシナリオを追加するメリットは小さい。一方、このような新たなテストシナリオの追加を回避することで、重大なバグなどを見落とすリスクを抑制しつつ、システム20で実行すべきテストシナリオを減らすことができる。
以上、第1実施形態について説明した。
なお、第1実施形態に係る技術の適用範囲は図1の例に限定されず、情報処理装置10とシステム20とが1つの情報処理システムを形成し、その情報処理システムがテストシナリオの生成及び実行を行うようにしてもよい。また、プロセッサ11及び実行部21が同じプロセッサ又はプロセッサ群により実現されてもよい。また、記憶部12及びメモリ22が同じメモリ素子又はメモリ素子群により実現されてもよい。このような変形についても当然に第1実施形態の技術的範囲に属する。
<2.第2実施形態>
次に、第2実施形態について説明する。
図2は、第2実施形態に係る情報処理システム及びシナリオ生成装置の一例を示したブロック図である。
なお、図2に示した情報処理システム100は、第2実施形態に係る情報処理システムの一例である。また、図2に示したシナリオ生成装置200は、第2実施形態に係るシナリオ生成装置の一例である。情報処理システム100及びシナリオ生成装置200は、例えば、PC(Personal Computer)やサーバ装置などのコンピュータである。
図2に示すように、情報処理システム100は、メモリ101、プロセッサ102、及び通信IF(Interface)103を有する。シナリオ生成装置200は、メモリ201、プロセッサ202、通信IF203、入力装置204、表示装置205、接続IF206を有する。情報処理システム100とシナリオ生成装置200とはネットワーク301を介して接続される。接続IF206には、可搬記録媒体302が接続されうる。
なお、図2の例では、情報処理システム100とシナリオ生成装置200とが別体として記載されているが、情報処理システム100及びシナリオ生成装置200それぞれが同じコンピュータの構成要素であってもよい。また、情報処理システム100とシナリオ生成装置200とがネットワーク301を介さずに直接的に接続されていてもよい。このような変形も当然に第2実施形態の技術的範囲に属する。
メモリ101、201は、例えば、ROM(Read Only Memory)、RAM、HDD、SSD(Solid State Drive)、フラッシュメモリなどの記憶装置である。プロセッサ102、202は、例えば、CPU、DSP、ASIC、FPGAなどである。また、プロセッサ102、202は、複数のコアを有するマルチコアプロセッサであってもよいし、複数のプロセッサで構成されるマルチプロセッサであってもよい。
通信IF103、203は、ネットワーク301に接続するための通信用インターフェースである。ネットワーク301は、例えば、LAN(Local Area Network)やWAN(Wide Area Network)などの通信網である。入力装置204は、例えば、キーボード、マウス、タッチパネル、タッチパッドなどの入力用インターフェースである。表示装置205は、例えば、LCD(Liquid Crystal Display)やELD(Electro-Luminescence Display)などのディスプレイデバイスである。
接続IF206は、接続された可搬記録媒体302に格納されているデータの読み出しや、可搬記録媒体302へのデータの書き込みを行うデータ読み書き用インターフェースである。例えば、可搬記録媒体302に格納されたプログラムが接続IF206を介してプロセッサ202により読み込まれ、メモリ201に格納される。そして、プロセッサ202が、メモリ201に格納されたプログラムに従ってシナリオ生成装置200の動作を制御する。
例えば、シナリオ生成装置200の動作を制御してテストシナリオの生成に関する処理をシナリオ生成装置200に実行させる生成プログラムは、可搬記録媒体302に格納されて流通されうる。また、シナリオ生成装置200は、メモリ201内の生成プログラムを実行してテストシナリオの生成に関する処理を実行しうる。可搬記録媒体302としては、例えば、光記録媒体、磁気記録媒体、半導体メモリなどがある。
情報処理システム100は、図3に示すような機能を有する。図3は、第2実施形態に係る情報処理システムが有する機能の一例を示したブロック図である。
情報処理システム100は、記憶部111、実行部112、及びメモリ管理部113を有する。記憶部111の機能は、上述したメモリ101により実現できる。実行部112及びメモリ管理部113の機能は、上述したプロセッサ102により実現できる。
記憶部111には、プログラム群111a及びシナリオ情報111bが格納される。なお、情報処理システム100は、実行部112により、適宜、プログラム群111a及びシナリオ情報111bをシナリオ生成装置200から取得してもよい。
プログラム群111aは、情報処理システム100で実行されうるプログラムの集合であり、検証の対象となる少なくとも1つのプログラムを含む。例えば、プログラム群111aには、図4に示すように、プログラムP1、P2、…、Pnが含まれる。図4は、プログラム群及びシナリオ情報の一例を示した図である。なお、APIは、プログラムP1、P2、…、Pnの一例である。
シナリオ情報111bは、情報処理システム100で実行される検証用のテストシナリオに関する情報である。例えば、シナリオ情報111bは、テストシナリオを識別するための情報(シナリオ番号)と、テストシナリオに含まれるプログラムの集合を識別するための情報とを対応付ける。テストシナリオには、少なくとも1つのプログラムが含まれる。例えば、テストシナリオ#1には、プログラム群111aから選択されたプログラムP1(選択プログラム)が含まれる。
実行部112は、テストシナリオに従ってプログラムを実行する。例えば、実行部112は、シナリオ生成装置200からテストシナリオ#5の実行指示を受けたとき、シナリオ情報111bを参照してプログラムP2、P1を順に実行する。メモリ管理部113は、実行部112によるプログラムの実行前及び実行後におけるメモリ101の状態(メモリ状態)を監視し、シナリオ生成装置200からの要求に応じてメモリ状態の情報をシナリオ生成装置200に提供する。
メモリ状態及びその変化は、例えば、図5のようになる。図5は、メモリ状態及びその変化について説明するための図である。図5(A)は、プログラムが実行されていない状態(定常状態)のメモリ状態を示している。一方、図5(B)は、プログラムPx(∀x∈[1,n])の実行中におけるメモリ状態を示している。
メモリ状態は、メモリ101の各メモリ番地に格納される値(メモリ値)で表現されうる。以下では、説明の都合上、メモリ番地毎のメモリ状態をメモリ値、メモリ値の組み合わせをメモリ状態又は単に状態と表記する場合がある。プログラムPxを実行すると、プログラムPxに対応するプロセスのメモリ領域が変化しうる。また、定常状態でもメモリ状態が変化しうる。メモリ管理部113は、このようなメモリ状態の変化を監視する。
プログラムの実行に伴う状態遷移は、図6のように表現できる。図6は、プログラムの実行に伴う状態遷移について説明するための図である。
図6の例は、状態#1、#2、#3、#4の間の遷移を示している。この例では、状態#1でプログラムP1が実行された場合、再び状態#1になる(状態維持)。状態#1でプログラムP2が実行されると状態#2に遷移する。状態#1でプログラムP3が実行されると状態#2に遷移する。この例では、メモリ101が状態#1にある場合、プログラムP2、P3による遷移先が同じになるため、プログラムP2、P3のいずれかで検証を実施すれば足りる。
図6の例では、状態#1から状態#3への遷移を導くプログラムが3つ(P1、P2、P3)あり、状態#4から状態#2への遷移を導くプログラムが2つ(P1、P2)あるが、これらについても、いずれかのプログラムで検証を実施すれば足りる。後述するシナリオ生成装置200では、上記の例のように実質的に同じ遷移を導くプログラムを特定し、特定の結果に基づいて、実行すべきテストシナリオの数を減らす施策を講じる。
シナリオ生成装置200は、図7に示すような機能を有する。図7は、第2実施形態に係るシナリオ生成装置が有する機能の一例を示したブロック図である。
シナリオ生成装置200は、記憶部211、初期化部212、実行制御部213、影響度計算部214、比較処理部215、及びシナリオ生成部216を有する。
記憶部211の機能は、上述したメモリ201により実現できる。初期化部212、実行制御部213、影響度計算部214、比較処理部215、及びシナリオ生成部216の機能は、主に上述したプロセッサ202により実現できる。
記憶部211には、プログラム情報211a、シナリオ情報211b、影響度の情報211c、差分評価値の情報211d、閾値の情報211e、及びToDoリスト211fが格納される。
プログラム情報211aには、情報処理システム100で実行されうるプログラムの情報が含まれる。例えば、プログラム情報211aは、図8に示すように、情報処理システム100で実行されうるプログラムを識別するためのプログラム番号と、プログラム名とを対応付ける情報を含む。図8は、プログラム情報の一例を示した図である。
シナリオ情報211bには、プログラム情報211aから選択可能なプログラムの組み合わせ(テストシナリオの候補)に関する情報が含まれる。シナリオ情報211bは、例えば、図9のような内容を有する。図9は、シナリオ情報の一例を示した図である。なお、後述するToDoリスト211fと重複する部分については、ToDoリスト211fの更新に伴って内容が更新される。また、該重複する部分を省略してもよい。
図9に示すように、シナリオ情報211bには、含まれるプログラムの数が少ない順にテストシナリオ(プログラムの組み合わせ)に関する情報が記載される。また、シナリオ情報211bには、最上段に定常状態に関する情報が記載される。
シナリオ情報211bには、テストシナリオを識別するためのシナリオ番号、及びそのテストシナリオに含まれるプログラムの集合を示す情報が含まれる。テストシナリオの実行要否、シナリオ実行後の状態及び影響度、差分評価値、追加シナリオの要否は、検証用のテストシナリオを生成する処理の過程で設定される。
実行要否の欄に「要」と記載されているテストシナリオは、検証用に実行すべきテストシナリオを表す。実行要否の欄に「否」と記載されているテストシナリオは、検証用に実行すべきテストシナリオではないテストシナリオを表す。
影響度、差分評価値は、検証用に実行すべきテストシナリオか否かの判定に用いられる評価指標である。影響度、差分評価値の計算などについては後述する。なお、シナリオ実行後の状態及び影響度の欄にある{…}の部分は影響度を表す。{…}に含まれる数字は、各メモリ番地における影響度の数値を表す。差分評価値の欄に「閾値以下」又は「閾値超過」とある部分は、差分評価値が所定の閾値以下又は閾値超過であることを示す。
追加シナリオの要否の欄に「要」と記載されているテストシナリオは、そのテストシナリオに基づく追加のテストシナリオ(追加シナリオ)が生成されるテストシナリオである。追加シナリオの要否の欄に「否」と記載されている場合、対応するテストシナリオに基づく追加シナリオは生成されない。
例えば、シナリオ番号#2のテストシナリオ(シナリオ#2)については、追加シナリオの要否が「要」に設定されている。この場合、シナリオ#2に1つのプログラムを追加したテストシナリオ(P2,*)が生成される。なお、*はワイルドカードを表す。例えば、nが3の場合、(P2,*)は、3つのテストシナリオ(P2,P1)、(P2,P2)、(P2,P3)を表す(図9のシナリオ番号#5、#6、#7を参照)。
影響度の情報211cは、図10に示すように、各メモリ番地における影響度を表す。図10は、影響度の情報の一例を示した図である。影響度は、テストシナリオの実行前後において各メモリ番地に生じる変化の大きさ(メモリ値の差分又は差分絶対値)を表す。影響度の情報211cは、情報処理システム100から取得されて記憶部211に格納される。また、影響度の情報211cは、適宜、シナリオ情報111bや後述するToDoリスト211fに反映される。
差分評価値の情報211dは、図11に示すように、各メモリ番地における差分評価値を表す。図11は、差分評価値の情報の一例を示した図である。差分評価値は、過去に実行されたテストシナリオ(過去シナリオ)の実行時における影響度と、追加シナリオの生成要否を判定するためのプログラムの実行時における影響度との差分に基づく評価値である。この評価値は、過去シナリオと追加シナリオとの類似度を表す。
なお、追加シナリオの生成要否の判定は、例えば、メモリ番地毎の差分評価値の平均値に基づいて行われる。以下、各メモリ番地について計算される差分評価値をメモリ番地毎の差分評価値と表記し、メモリ番地についての平均値を単に差分評価値と表記する。
閾値の情報211eには、差分評価値との比較により追加シナリオの生成要否を判定するために用いる閾値が含まれる。閾値は、例えば、ユーザが事前に設定してもよいし、サンプルデータを利用したシミュレーションの結果に基づいて予め設定されてもよい。
ToDoリスト211fは、情報処理システム100の検証用に設定されるテストシナリオのリストを示す情報である。ToDoリスト211fには、図12に示すように、定常状態についての情報(シナリオ番号が(定常)のレコード)、及びテストシナリオの情報が登録される。図12は、ToDoリストの一例を示した図である。ToDoリスト211fの更新については後述する。
再び図7を参照する。初期化部212は、ToDoリスト211fを初期化する要素である。例えば、初期化部212は、ToDoリスト211fをリセットし、定常状態におけるメモリ状態を情報処理システム100から取得してToDoリスト211fに設定する。また、初期化部212は、プログラム情報211aから選択できる1つのプログラムで構成されるテストシナリオをToDoリスト211fに登録する。
実行制御部213は、情報処理システム100にプログラムを実行させる。影響度計算部214は、プログラムの実行前後におけるメモリ状態を情報処理システム100から取得して影響度を計算し、計算した影響度を影響度の情報211cとして記憶部211に格納する。比較処理部215は、追加シナリオの要否判定時に差分評価値を計算し、計算した差分評価値と閾値とを比較して追加シナリオの要否判定を行う。
シナリオ生成部216は、要否判定の結果に基づいて追加シナリオをToDoリスト211fに追加する。ToDoリスト211fの生成処理が完了すると、実行制御部213は、ToDoリスト211fに追加されたテストシナリオを情報処理システム100に実行させて検証を行う。
上記のシナリオ生成装置200は、図13に示す処理を実行する。図13は、第2実施形態に係るシナリオ生成装置が実行する処理の流れを示したフロー図である。なお、図13についての説明の中で、適宜、図14を参照する。図14は、ToDoリストの初期化及び更新について説明するための図である。
(S101)初期化部212は、定常状態におけるメモリ状態のサンプリングデータを情報処理システム100から取得する。このとき、初期化部212は、複数回分のサンプリングデータを取得する。サンプリングデータは、例えば、メモリ101の各メモリ番地におけるメモリ値の集合である。また、初期化部212は、複数回分のサンプリングデータを比較し、定常状態で変化するメモリ領域を特定する。
また、初期化部212は、サンプリングデータに基づいて各メモリ番地の影響度を計算する。例えば、2回分のサンプリングデータを取得できた場合、初期化部212は、各メモリ番地におけるメモリ値の差分を計算し、計算した差分を各メモリ番地の影響度とする。また、初期化部212は、テストシナリオの情報がないToDoリスト211fの最上段に定常状態に対応するレコードを設定し、計算した影響度の情報を記載する(図14(A)のToDoリスト211fの最上段を参照)。
(S102)初期化部212は、プログラム情報211aから1つずつプログラムを選択し、選択した1つのプログラムを含むテストシナリオを設定する。そして、初期化部212は、設定したテストシナリオの情報をToDoリスト211fに記載する。
例えば、nが3の場合、初期化部212は、プログラムPk(k=1,2,3)を含むシナリオ番号#kのシナリオ(シナリオ#k)を設定し、ToDoリスト211fにシナリオ#kの情報を記載する(図12を参照)。この場合、ToDoリスト211fには、シナリオ番号及び各テストシナリオに含まれるプログラムの情報が記載される(図14(A)のToDoリスト211fの下3段を参照)。
(S103)実行制御部213は、ToDoリスト211fに未実行のテストシナリオ(未実行シナリオ)があるか否かを判定する。なお、図13の処理において、実行制御部213は、ToDoリスト211fの先頭から順に情報処理システム100に対してテストシナリオを実行させる。未実行シナリオがある場合、処理はS104へと進む。一方、ToDoリスト211fにある全てのテストシナリオが実行済みの場合、図13に示した一連の処理は終了する。
(S104)実行制御部213は、ToDoリスト211fにある未実行シナリオのうち先頭にある未実行シナリオを情報処理システム100に実行させる。未実行シナリオの実行要求を受けた情報処理システム100では、プロセッサ102により未実行シナリオのプログラムが実行され、プログラムの実行中に、メモリ管理部113によりメモリ状態のサンプリングデータが採取される。
(S105)影響度計算部214は、未実行シナリオの実行中に採取されたサンプリングデータを情報処理システム100から取得する。また、影響度計算部214は、情報処理システム100から取得したサンプリングデータに基づいて影響度を計算する。例えば、影響度計算部214は、未実行シナリオの実行前後における各メモリ番地のメモリ値の差分を計算し、計算した差分を各メモリ番地の影響度とする。影響度計算部214は、計算した影響度を記憶部211に格納する。
(S106)比較処理部215は、過去に影響度計算部214が記憶部211に格納した影響度と、直前のS105で影響度計算部214が計算した影響度とに基づいて差分評価値を計算する。このとき、比較処理部215は、定常状態で変化するメモリ領域を除外したメモリ領域の各メモリ番地における影響度を計算に利用してもよい。定常状態で変化するメモリ領域を除外することで、未実行シナリオの実行とは関係ないメモリ状態の変動による影響を抑圧することができる。なお、差分評価値の計算については後述する。
(S107)比較処理部215は、閾値の情報211eを参照し、計算した差分評価値が閾値超過(差分評価値>閾値)であるか否かを判定する。「差分評価値>閾値」である場合、処理はS108へと進む。一方、「差分評価値>閾値」でない場合、処理はS103へと進む。
(S108)比較処理部215は、未実行シナリオについて影響度計算部214が計算した影響度の情報をToDoリスト211fに記載する。
(S109)シナリオ生成部216は、今回実行された未実行シナリオ(実行シナリオ)の末尾に1つのプログラムを追加したテストシナリオ(追加シナリオ)を生成する。
S107の判定により、差分評価値が閾値以下の実行シナリオについてはToDoリスト211fに影響度の情報が記載されず、追加シナリオの生成も行われない。例えば、プログラムP1だけを含むシナリオ#1の差分評価値が閾値以下の場合、図14(B)のToDoリスト211fに示すように、シナリオ実行後の状態及び影響度の欄が空欄になる。一方、差分評価値が閾値超過の実行シナリオについてはToDoリスト211fに影響度の情報が記載され、追加シナリオの生成が行われる。
例えば、実行シナリオがシナリオ#2であり、シナリオ#2についての差分評価値が閾値超過の場合、シナリオ生成部216は、シナリオ#2に含まれるプログラムP2にプログラムPk(k=1,2,3)を追加した3つの追加シナリオを生成する(図14(B)のToDoリスト211fの下3段を参照)。
S109の処理が完了すると、処理はS103へと進む。
ここで、図15及び図16を参照しながら、差分評価値の計算に関する処理について、さらに説明する。
図15は、第2実施形態に係るシナリオ生成装置が実行する処理のうち、差分評価値の計算に関する処理の流れを示した第1のフロー図である。図16は、第2実施形態に係るシナリオ生成装置が実行する処理のうち、差分評価値の計算に関する処理の流れを示した第2のフロー図である。
(S111)比較処理部215は、未実行シナリオのプログラム実行後におけるメモリ状態を情報処理システム100から取得する。
(S112)比較処理部215は、プログラムの実行により新規プロセスが発生したか否かを判定する。例えば、比較処理部215は、情報処理システム100から新規プロセスの発生有無を示す情報を取得する。新規プロセスが発生した場合、処理はS113へと進む。一方、新規プロセスが発生していない場合、処理はS114へと進む。
(S113)比較処理部215は、新規プロセスのメモリ領域(図5を参照)を特定する。例えば、比較処理部215は、メモリディスクリプタから新規プロセスのメモリ領域を特定する。なお、メモリディスクリプタとは、プロセスの仮想メモリ空間に関する情報(ページテーブルやメモリリージョンの情報など)を記録するものである。メモリディスクリプタは、プロセスのアドレス空間に関する情報を記録している場所であり、例えば、1つのプロセスに対して1つ割り当てられうる。
(S114)比較処理部215は、差分評価値用パラメータX(一時変数)を初期値(例えば、差分評価値として取り得る最大値;所定値)に設定する。
(S115、S128)比較処理部215は、ToDoリスト211fを参照し、過去に実行済みのテストシナリオ(実行済みシナリオ)を1つずつ選択しながら、未選択の実行済みシナリオがなくなるまでS115とS128との間の処理を繰り返し実行する(Loop L1)。S128で未選択の実行済みシナリオがなくなると、図15及び図16に示した一連の処理は終了する。
(S116)比較処理部215は、差分合計値用パラメータY(一時変数)を0に設定する。
(S117、S124)比較処理部215は、メモリ101の先頭から順に、対象となるメモリ領域のメモリ番地を1つずつ選択しながら、未選択のメモリ番地がなくなるまでS117とS124との間の処理を繰り返し実行する(Loop L2)。S124で未選択のメモリ番地がなくなると、処理はS125へと進む。なお、対象となるメモリ領域は、例えば、メモリ101の全ての領域、或いは、定常状態でメモリ状態が変化する領域を除外したメモリ領域に設定されうる。
(S118)比較処理部215は、実行したプログラム(現在プログラム)の影響度と、S115で選択した実行済みシナリオ(過去シナリオ)の影響度との差分を計算する。S118の処理が完了すると、処理はS119(図16)へと進む。
(S119)比較処理部215は、現在プログラムの実行時に新規プロセスが発生したか否かを判定する。新規プロセスが発生した場合、処理はS121へと進む。一方、新規プロセスが発生していない場合、処理はS120へと進む。
(S120)比較処理部215は、S118で計算した差分をYに加算する処理(Y=Y+(計算した差分))を実行する。S120の処理が完了すると、処理はS124へと進む。
(S121)比較処理部215は、S117で選択されたメモリ番地が新規プロセスのメモリ領域内か否かを判定する。選択されたメモリ番地が新規プロセスのメモリ領域内である場合、処理はS122へと進む。一方、選択されたメモリ番地が新規プロセスのメモリ領域内でない場合、処理はS123へと進む。
(S122)比較処理部215は、S118で計算した差分に係数αを乗算し、乗算結果をYに加算する処理(Y=Y+(計算した差分)×α)を実行する。係数αは、事前に設定される1以上の値であり、後述する係数βより大きな値に設定される。S122の処理が完了すると、処理はS124へと進む。
(S123)比較処理部215は、S118で計算した差分に係数βを乗算し、乗算結果をYに加算する処理(Y=Y+(計算した差分)×β)を実行する。係数βは、事前に設定される1以上の値であり、係数αより小さな値に設定される。S123の処理が完了すると、処理はS124へと進む。
(S125)比較処理部215は、Yをメモリ番地数で割る演算(Y/(メモリ番地数))を行い、演算結果をXに設定する(X=Y/(メモリ番地数))。なお、S125の段階でYは、各メモリ番地における差分の合計値に相当する。また、S125の演算は、メモリ番地についての差分の平均値を計算する演算に相当する。つまり、S125で設定されるXは差分平均値である。
(S126)比較処理部215は、既に設定されている差分評価値とXとを比較し、差分評価値がXを超過しているか(「差分評価値>X」か)否かを判定する。「差分評価値>X」である場合、処理はS127へと進む。一方、「差分評価値>X」でない場合、処理はS128へと進む。
(S127)比較処理部215は、Xを差分評価値に設定する(差分評価値=X)。S127の処理が完了すると、処理はS128へと進む。
上記のように、第2実施形態では、プログラムの実行時に新規プロセスが発生したか否かで処理を分岐させ、新規プロセスが発生した場合には新規プロセスのメモリ領域とそれ以外のメモリ領域とで影響度に重み付けを変える。計算式で表現すると、差分評価値は、下記の式(1)及び式(2)で表現される。
なお、下記の式(1)は、新規プロセスが発生した場合の差分評価値(V1)である。下記の式(2)は、新規プロセスが発生しない場合の差分評価値(V2)である。下記の式(1)の中で、メモリ番地をm、新規プロセスのメモリ領域をM1、M1以外のメモリ領域をM2、全メモリ領域をM3(M3=M1∪M2)と表記する。また、下記の式(1)及び式(2)の中で、メモリ番地mにおける現在プログラムの影響度をEc(m)、過去シナリオの影響度をEp(m)と表記する。
Figure 0006901685
上記の仕組みは、プログラムの実行時に新規プロセスが発生した場合に、新規プロセスのメモリ領域における影響度が差分評価値の計算に重要であるという考えに基づいている。また、上記の仕組みは、新規プロセスの発生と同じタイミングで生じる既存プロセスのメモリ領域における変化も重要であるという考えに基づいている。そのため、係数α、βは1以上の値に設定され、重要度を考慮して係数の関係(α>β)が規定される。
ここで、図17を参照しながら、差分評価値の計算について説明を補足する。図17は、差分評価値の計算イメージを示した図である。なお、図17の例は、現在プログラムの実行時に新規プロセスが発生する場合の計算イメージを示している。
図17に示すように、比較処理部215は、過去にテストシナリオを実行した際に計算された各メモリ番地についての影響度(影響度(過去))と、現在プログラムの実行時に計算された各メモリ番地についての影響度(影響度(計算))との差分を計算する。
また、比較処理部215は、各メモリ番地が新規プロセスのメモリ領域内であるかに応じて、係数α、βのいずれかを選択する。なお、新規プロセスのメモリ領域内にあるメモリ番地については係数αが選択され、新規プロセスのメモリ領域外にあるメモリ番地については係数βが選択される。図17の例では、メモリ番地#1、#2について係数αが選択され、メモリ番地#3−#7について係数βが選択されている。
比較処理部215は、各メモリ番地について、計算した差分と選択した係数とを乗算し、乗算結果をメモリ番地毎の差分評価値とする。また、比較処理部215は、メモリ番地毎の差分評価値を、対象となる全てのメモリ番地について平均する。そして、比較処理部215は、計算した平均値を、ToDoリスト211fにテストシナリオを追加するかを判定する際に用いる差分評価値に設定する。このような方法で差分評価値が計算される。
以上、第2実施形態について説明した。
既に述べたように、実行時にメモリ状態の変化状況が変わらないプログラムを追加した新たなテストシナリオを検証に用いても、追加前のテストシナリオによる検証と同様の結果となるため、新たなテストシナリオを追加するメリットは小さい。一方、このような新たなテストシナリオの追加を回避することで、重大なバグなどを見落とすリスクを抑制しつつ、情報処理システム100で実行すべきテストシナリオを減らすことができる。上述した第2実施形態の技術は、このようなテストシナリオの低減に寄与する。
10 情報処理装置
11 プロセッサ
12 記憶部
12a 可搬記録媒体
20 システム
21 実行部
22 メモリ
31、32 テストシナリオ
P1、P2、P3、P4、…、P6、…、P9 プログラム
A、B、C、D、E、F 変化状況

Claims (4)

  1. テスト対象のシステムで実行される複数のプログラムのうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成プログラムであって、
    前記複数のプログラムのうち、いずれかのプログラムを実行して、該プログラムの実行により生じたメモリの内部状態の変化状況を取得し、
    実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリの内部状態の変化状況を記憶する記憶部を参照して、取得した前記変化状況との類似性が基準を満たす変化状況があるかどうかを判定し、
    前記基準を満たす変化状況がなければ、実行した前記プログラムを含む新たなテストシナリオを生成し、前記基準を満たす変化状況があれば、実行した前記プログラムを含む新たなテストシナリオの生成を抑制する
    処理をコンピュータに実行させることを特徴とする、生成プログラム。
  2. 実行した前記プログラムに対応するプロセスのメモリ領域については前記変化状況に第1の重みをつけ、該メモリ領域以外については前記変化状況に前記第1の重みより小さな第2の重みをつけて前記基準を満たすかを判定する
    ことを特徴とする、請求項1に記載の生成プログラム。
  3. テスト対象のシステムで実行される複数のプログラムのうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成方法であって、
    前記複数のプログラムのうち、いずれかのプログラムを実行して、該プログラムの実行により生じたメモリの内部状態の変化状況を取得し、
    実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリの内部状態の変化状況を記憶する記憶部を参照して、取得した前記変化状況との類似性が基準を満たす変化状況があるかどうかを判定し、
    前記基準を満たす変化状況がなければ、実行した前記プログラムを含む新たなテストシナリオを生成し、前記基準を満たす変化状況があれば、実行した前記プログラムを含む新たなテストシナリオの生成を抑制する
    処理をコンピュータが実行することを特徴とする、生成方法。
  4. テスト対象のシステムで実行される複数のプログラムのうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成処理を実行する情報処理装置であって、
    前記複数のプログラムのうち、いずれかのプログラムを実行して、該プログラムの実行により生じたメモリの内部状態の変化状況を取得し、
    実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリの内部状態の変化状況を記憶する記憶部を参照して、取得した前記変化状況との類似性が基準を満たす変化状況があるかどうかを判定し、
    前記基準を満たす変化状況がなければ、実行した前記プログラムを含む新たなテストシナリオを生成し、前記基準を満たす変化状況があれば、実行した前記プログラムを含む新たなテストシナリオの生成を抑制するプロセッサを有する
    ことを特徴とする、情報処理装置。
JP2017194017A 2017-10-04 2017-10-04 生成プログラム、生成方法、及び情報処理装置 Active JP6901685B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017194017A JP6901685B2 (ja) 2017-10-04 2017-10-04 生成プログラム、生成方法、及び情報処理装置
US16/149,200 US11055206B2 (en) 2017-10-04 2018-10-02 Non-transitory computer-readable storage medium, generation method, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017194017A JP6901685B2 (ja) 2017-10-04 2017-10-04 生成プログラム、生成方法、及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2019067274A JP2019067274A (ja) 2019-04-25
JP6901685B2 true JP6901685B2 (ja) 2021-07-14

Family

ID=65897883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017194017A Active JP6901685B2 (ja) 2017-10-04 2017-10-04 生成プログラム、生成方法、及び情報処理装置

Country Status (2)

Country Link
US (1) US11055206B2 (ja)
JP (1) JP6901685B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113342627B (zh) * 2021-05-31 2023-03-21 深圳前海微众银行股份有限公司 一种终端的应用服务监控方法及监控系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4226168B2 (ja) * 1999-10-01 2009-02-18 三菱電機株式会社 マイクロプロセッサ検証プログラム作成装置
US6816924B2 (en) * 2000-08-10 2004-11-09 Infineon Technologies North America Corp. System and method for tracing ATM cells and deriving trigger signals
JP2004213053A (ja) * 2002-12-26 2004-07-29 Toshiba Corp オブジェクト状態分類方法とシステム、およびそのためのプログラム
EP1680741B1 (en) 2003-11-04 2012-09-05 Kimberly-Clark Worldwide, Inc. Testing tool for complex component based software systems
US20050120337A1 (en) * 2003-12-01 2005-06-02 Serrano Mauricio J. Memory trace buffer
US7702964B2 (en) * 2004-05-11 2010-04-20 Qualcomm Incorporated Compression of data traces for an integrated circuit with multiple memories
US8151248B1 (en) * 2007-10-31 2012-04-03 Sprint Communications Company L.P. Method and system for software defect management
CN101482815B (zh) * 2008-01-10 2013-08-07 国际商业机器公司 生成软件系统的测试用例的方法和设备
US7512933B1 (en) * 2008-01-27 2009-03-31 International Business Machines Corporation Method and system for associating logs and traces to test cases
US20110078666A1 (en) * 2009-05-26 2011-03-31 University Of California System and Method for Reproducing Device Program Execution
JP2011141631A (ja) * 2010-01-06 2011-07-21 Hitachi Omron Terminal Solutions Corp 現金自動取引装置及び現金自動取引装置の更新プログラムのテスト方法
JP2012080378A (ja) 2010-10-04 2012-04-19 Nec Commun Syst Ltd プロトコル試験装置、プロトコル試験方法およびプロトコル試験プログラム
US8819642B2 (en) * 2012-05-17 2014-08-26 Cognizant Technology Solutions India Pvt. Ltd. Method and system for generating and processing black box test cases
JP2014206807A (ja) * 2013-04-11 2014-10-30 日本電信電話株式会社 ソフトウェア検査方法及びプログラム
JP2015043198A (ja) * 2013-07-22 2015-03-05 株式会社東芝 解析システム、解析方法および解析プログラム
JP2016081256A (ja) 2014-10-15 2016-05-16 富士通株式会社 検証支援方法、および検証支援プログラム
GB201504373D0 (en) * 2015-03-16 2015-04-29 Left Shift It Ltd Computer system testing

Also Published As

Publication number Publication date
US20190102283A1 (en) 2019-04-04
JP2019067274A (ja) 2019-04-25
US11055206B2 (en) 2021-07-06

Similar Documents

Publication Publication Date Title
US9626272B2 (en) Prediction of impact of workload migration
US20180113742A1 (en) Cognitive scheduler
US9430395B2 (en) Grouping and dispatching scans in cache
KR20160124895A (ko) 클라우드 릴리즈 파이프라인들의 진단 및 최적화
WO2013024597A1 (ja) 分散処理管理装置及び分散処理管理方法
US20110154127A1 (en) Test support system, method and computer program product, which optimize test scenarios to minimize total test time
JP2009087282A (ja) 並列計算システムおよび並列計算方法
JP2016525731A (ja) プログラム試験サービス
JP6901685B2 (ja) 生成プログラム、生成方法、及び情報処理装置
JP6229733B2 (ja) 情報処理装置、方法、プログラム及び記録媒体
JP6471615B2 (ja) 性能情報生成プログラム、性能情報生成方法及び情報処理装置
CN110737509B (zh) 热迁移处理方法及装置、存储介质和电子设备
JP7161936B2 (ja) テスト環境決定装置及びテスト環境決定方法
US10382311B2 (en) Benchmarking servers based on production data
JP6079266B2 (ja) 制御装置、ログ格納方法及び制御プログラム
JP5516925B2 (ja) 信頼度計算装置、信頼度計算方法、及びプログラム
JPWO2016157826A1 (ja) データ配置先決定装置、方法およびプログラム
JP6763411B2 (ja) 設計支援装置、設計支援方法、および設計支援プログラム
US20230035666A1 (en) Anomaly detection in storage systems
US11816004B2 (en) Systems and methods for file level prioritization during multi-object data restores
JP5001703B2 (ja) システム設計検証装置
US11068250B2 (en) Crowdsourced API resource consumption information for integrated development environments
JP7200577B2 (ja) 情報処理装置、情報処理システム、情報処理方法、及びプログラム。
US20220179579A1 (en) Monitoring performance of remote distributed storage
JP6922995B2 (ja) 分散処理管理装置、分散処理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200709

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200722

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200722

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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210531

R150 Certificate of patent or registration of utility model

Ref document number: 6901685

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150