(57)【要約】【課題】実行すべきテストシナリオを減らすこと。【解決手段】テスト対象のシステム２０で実行されるプログラムＰ１、…、Ｐ９のうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成方法であって、プログラムＰ１、…、Ｐ９のうち、いずれかのプログラムを実行して、該プログラムの実行により生じたメモリ２２の内部状態の変化状況を取得し、実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリ２２の内部状態の変化状況を記憶する記憶部１２を参照して、取得した変化状況との類似性が基準を満たす変化状況があるかどうかを判定し、基準を満たす変化状況がなければ、実行したプログラムを含む新たなテストシナリオを生成し、基準を満たす変化状況があれば、実行したプログラムを含む新たなテストシナリオの生成を抑制する処理をコンピュータが実行する、生成方法が提供される。【選択図】図１
2019067274.tif 000002
【特許請求の範囲】
【請求項１】
テスト対象のシステムで実行される複数のプログラムのうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成プログラムであって、
前記複数のプログラムのうち、いずれかのプログラムを実行して、該プログラムの実行により生じたメモリの内部状態の変化状況を取得し、
実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリの内部状態の変化状況を記憶する記憶部を参照して、取得した前記変化状況との類似性が基準を満たす変化状況があるかどうかを判定し、
前記基準を満たす変化状況がなければ、実行した前記プログラムを含む新たなテストシナリオを生成し、前記基準を満たす変化状況があれば、実行した前記プログラムを含む新たなテストシナリオの生成を抑制する
処理をコンピュータに実行させることを特徴とする、生成プログラム。
【請求項２】
実行した前記プログラムに対応するプロセスのメモリ領域については前記変化状況に第１の重みをつけ、該メモリ領域以外については前記変化状況に前記第１の重みより小さな第２の重みをつけて前記基準を満たすかを判定する
ことを特徴とする、請求項１に記載の生成プログラム。
【請求項３】
テスト対象のシステムで実行される複数のプログラムのうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成方法であって、
前記複数のプログラムのうち、いずれかのプログラムを実行して、該プログラムの実行により生じたメモリの内部状態の変化状況を取得し、
実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリの内部状態の変化状況を記憶する記憶部を参照して、取得した前記変化状況との類似性が基準を満たす変化状況があるかどうかを判定し、
前記基準を満たす変化状況がなければ、実行した前記プログラムを含む新たなテストシナリオを生成し、前記基準を満たす変化状況があれば、実行した前記プログラムを含む新たなテストシナリオの生成を抑制する
処理をコンピュータが実行することを特徴とする、生成方法。
【請求項４】
テスト対象のシステムで実行される複数のプログラムのうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成処理を実行する情報処理装置であって、
前記複数のプログラムのうち、いずれかのプログラムを実行して、該プログラムの実行により生じたメモリの内部状態の変化状況を取得し、
実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリの内部状態の変化状況を記憶する記憶部を参照して、取得した前記変化状況との類似性が基準を満たす変化状況があるかどうかを判定し、
前記基準を満たす変化状況がなければ、実行した前記プログラムを含む新たなテストシナリオを生成し、前記基準を満たす変化状況があれば、実行した前記プログラムを含む新たなテストシナリオの生成を抑制するプロセッサを有する
ことを特徴とする、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成プログラム、生成方法、及び情報処理装置に関する。
【背景技術】
【０００２】
ソフトウェア製品やサービスのシステムテストでは、システム全体としての動作に問題がないことを確認するために、システムで実行されるプログラムを組み合わせた検証用のテストシナリオを作成する。そして、テストシナリオに沿ってプログラムを実行し、システム全体が正常に動作するかの検証が行われる。
【０００３】
なお、検証の対象装置に同様の負荷を繰り返し与える検証を行うことを抑制できる検証支援装置が提案されている。この検証支援装置では、対象装置の動作を定める入力パラメータの値を変化させて変化前と変化後とでモジュールの動作状態を取得し、動作状態の変化の度合いが高い入力パラメータをランダム検証シナリオの生成時に設定する主パラメータとして選択する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−８１２５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
システムで実行されるプログラムの数が有限でも、１つのテストシナリオの中で同じプログラムを繰り返し実行できるとすると、テストシナリオとして設定可能なプログラムの組み合わせは無限になる。実際には有限個のテストシナリオを選択して実行することになるが、重大なバグなどを見落とさないようにするには、膨大な数のテストシナリオを実行することになり、検証に長い時間がかかる。
【０００６】
１つの側面によれば、本発明の目的は、実行すべきテストシナリオを減らすことができる生成プログラム、生成方法、及び情報処理装置を提供することにある。
【課題を解決するための手段】
【０００７】
一態様によれば、テスト対象のシステムで実行される複数のプログラムのうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成方法が提供される。該生成方法では、複数のプログラムのうち、いずれかのプログラムを実行して、該プログラムの実行により生じたメモリの内部状態の変化状況を取得し、実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリの内部状態の変化状況を記憶する記憶部を参照して、取得した変化状況との類似性が基準を満たす変化状況があるかどうかを判定し、基準を満たす変化状況がなければ、実行したプログラムを含む新たなテストシナリオを生成し、基準を満たす変化状況があれば、実行したプログラムを含む新たなテストシナリオの生成を抑制する処理をコンピュータが実行する。
【発明の効果】
【０００８】
実行すべきテストシナリオを減らすことができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係る情報処理装置及びシステムの一例を示した図である。
【図２】第２実施形態に係る情報処理システム及びシナリオ生成装置の一例を示したブロック図である。
【図３】第２実施形態に係る情報処理システムが有する機能の一例を示したブロック図である。
【図４】プログラム群及びシナリオ情報の一例を示した図である。
【図５】メモリ状態及びその変化について説明するための図である。
【図６】プログラムの実行に伴う状態遷移について説明するための図である。
【図７】第２実施形態に係るシナリオ生成装置が有する機能の一例を示したブロック図である。
【図８】プログラム情報の一例を示した図である。
【図９】シナリオ情報の一例を示した図である。
【図１０】影響度の情報の一例を示した図である。
【図１１】差分評価値の情報の一例を示した図である。
【図１２】ＴｏＤｏリストの一例を示した図である。
【図１３】第２実施形態に係るシナリオ生成装置が実行する処理の流れを示したフロー図である。
【図１４】ＴｏＤｏリストの初期化及び更新について説明するための図である。
【図１５】第２実施形態に係るシナリオ生成装置が実行する処理のうち、差分評価値の計算に関する処理の流れを示した第１のフロー図である。
【図１６】第２実施形態に係るシナリオ生成装置が実行する処理のうち、差分評価値の計算に関する処理の流れを示した第２のフロー図である。
【図１７】差分評価値の計算イメージを示した図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
【００１１】
＜１．第１実施形態＞
図１を参照しながら、第１実施形態について説明する。
図１は、第１実施形態に係る情報処理装置及びシステムの一例を示した図である。なお、図１に示した情報処理装置１０は、第１実施形態に係る情報処理装置の一例である。また、図１に示したシステム２０は、第１実施形態に係るシステムの一例である。
【００１２】
図１に示すように、情報処理装置１０は、プロセッサ１１及び記憶部１２を有する。また、システム２０は、実行部２１及びメモリ２２を有する。
記憶部１２及びメモリ２２は、例えば、ＲＡＭ（Random Access Memory）などの揮発性記憶装置、或いは、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置である。プロセッサ１１は、例えば、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などである。実行部２１は、例えば、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのプロセッサである。
【００１３】
情報処理装置１０の動作を制御してテストシナリオの生成に関する処理を情報処理装置１０に実行させる生成プログラムは、例えば、可搬記録媒体１２ａに格納されて流通されうる。また、情報処理装置１０は、可搬記録媒体１２ａに格納された生成プログラムを読み出して記憶部１２に格納しうる。記憶部１２に生成プログラムを格納すると、情報処理装置１０は、その生成プログラムを実行してテストシナリオの生成に関する処理を実行できる。なお、可搬記録媒体１２ａとしては、例えば、情報処理装置１０の接続インターフェース（非図示）に装脱可能な光記録媒体、磁気記録媒体、半導体メモリなどがある。
【００１４】
情報処理装置１０は、プロセッサ１１により、テスト対象のシステム２０で実行されるプログラムＰ１、…、Ｐ９のうち、選択された複数のプログラムの組み合わせであるテストシナリオの生成処理を実行する。なお、テストシナリオに含まれるプログラムは、システム２０の実行部２１により実行される。テストシナリオに含まれるプログラムの例としてはＡＰＩ（Application Programming Interface）がある。
【００１５】
プロセッサ１１は、プログラムＰ１、…、Ｐ９のうち、いずれかのプログラム（候補プログラム）を実行して、該プログラムの実行により生じたメモリ２２の内部状態の変化状況を取得する。図１の例では、プロセッサ１１が、候補プログラムとしてプログラムＰ３を実行する。プロセッサ１１は、プログラムＰ３実行時のメモリ２２の内部状態の変化状況Ｆをシステム２０から取得する。
【００１６】
なお、メモリ２２の内部状態は、例えば、各メモリ番地におけるメモリ値の組み合わせなどで定量的に表現できる。また、変化状況は、例えば、プログラムの実行前後におけるメモリ値の組み合わせの差分などで定量的に表現できる。
【００１７】
記憶部１２は、実行済みのテストシナリオに含まれるプログラムの実行により生じたメモリ２２の内部状態の変化状況を記憶する。図１の例では、実行済みのテストシナリオにプログラムＰ１、Ｐ２、Ｐ４、Ｐ６、Ｐ９が含まれ、それぞれに対応するメモリ２２の内部状態の変化状況Ａ、Ｂ、Ｃ、Ｄ、Ｅを記憶部１２が記憶している。
【００１８】
プロセッサ１１は、記憶部１２を参照して、取得した変化状況Ｆとの類似性が基準を満たす変化状況があるかどうかを判定する。
図１の例では、プロセッサ１１により、変化状況Ａ、Ｂ、Ｃ、Ｄ、Ｅのそれぞれと変化状況Ｆとの類似性が評価され、類似性が基準を満たす変化状況の有無が判定される。プロセッサ１１は、基準を満たす変化状況がなければ、実行したプログラムＰ３を含む新たなテストシナリオを生成する。一方、基準を満たす変化状況があれば、プロセッサ１１は、実行したプログラムＰ３を含む新たなテストシナリオの生成を抑制する。
【００１９】
なお、類似性は、例えば、変化状況の差などに基づいて判定されうる。基準としては、例えば、変化状況の差を表す評価値と比較されうる所定の閾値などが適用されうる。
例えば、変化状況Ａ、Ｆが類似する場合、プロセッサ１１は、プログラムＰ３を含む新たなテストシナリオの生成を抑制する。一方、変化状況Ａ、Ｂ、Ｃ、Ｄ、Ｅのいずれも変化状況Ｆと類似しない場合、プロセッサ１１は、プログラムＰ３を含む新たなテストシナリオの生成を行う。
【００２０】
実行時にメモリ２２の変化状況が変わらないプログラムを追加した新たなテストシナリオを検証に用いても、追加前のテストシナリオによる検証と同様の結果となるため、新たなテストシナリオを追加するメリットは小さい。一方、このような新たなテストシナリオの追加を回避することで、重大なバグなどを見落とすリスクを抑制しつつ、システム２０で実行すべきテストシナリオを減らすことができる。
【００２１】
以上、第１実施形態について説明した。
なお、第１実施形態に係る技術の適用範囲は図１の例に限定されず、情報処理装置１０とシステム２０とが１つの情報処理システムを形成し、その情報処理システムがテストシナリオの生成及び実行を行うようにしてもよい。また、プロセッサ１１及び実行部２１が同じプロセッサ又はプロセッサ群により実現されてもよい。また、記憶部１２及びメモリ２２が同じメモリ素子又はメモリ素子群により実現されてもよい。このような変形についても当然に第１実施形態の技術的範囲に属する。
【００２２】
＜２．第２実施形態＞
次に、第２実施形態について説明する。
図２は、第２実施形態に係る情報処理システム及びシナリオ生成装置の一例を示したブロック図である。
【００２３】
なお、図２に示した情報処理システム１００は、第２実施形態に係る情報処理システムの一例である。また、図２に示したシナリオ生成装置２００は、第２実施形態に係るシナリオ生成装置の一例である。情報処理システム１００及びシナリオ生成装置２００は、例えば、ＰＣ（Personal Computer）やサーバ装置などのコンピュータである。
【００２４】
図２に示すように、情報処理システム１００は、メモリ１０１、プロセッサ１０２、及び通信ＩＦ（Interface）１０３を有する。シナリオ生成装置２００は、メモリ２０１、プロセッサ２０２、通信ＩＦ２０３、入力装置２０４、表示装置２０５、接続ＩＦ２０６を有する。情報処理システム１００とシナリオ生成装置２００とはネットワーク３０１を介して接続される。接続ＩＦ２０６には、可搬記録媒体３０２が接続されうる。
【００２５】
なお、図２の例では、情報処理システム１００とシナリオ生成装置２００とが別体として記載されているが、情報処理システム１００及びシナリオ生成装置２００それぞれが同じコンピュータの構成要素であってもよい。また、情報処理システム１００とシナリオ生成装置２００とがネットワーク３０１を介さずに直接的に接続されていてもよい。このような変形も当然に第２実施形態の技術的範囲に属する。
【００２６】
メモリ１０１、２０１は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ、ＨＤＤ、ＳＳＤ（Solid State Drive）、フラッシュメモリなどの記憶装置である。プロセッサ１０２、２０２は、例えば、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどである。また、プロセッサ１０２、２０２は、複数のコアを有するマルチコアプロセッサであってもよいし、複数のプロセッサで構成されるマルチプロセッサであってもよい。
【００２７】
通信ＩＦ１０３、２０３は、ネットワーク３０１に接続するための通信用インターフェースである。ネットワーク３０１は、例えば、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）などの通信網である。入力装置２０４は、例えば、キーボード、マウス、タッチパネル、タッチパッドなどの入力用インターフェースである。表示装置２０５は、例えば、ＬＣＤ（Liquid Crystal Display）やＥＬＤ（Electro-Luminescence Display）などのディスプレイデバイスである。
【００２８】
接続ＩＦ２０６は、接続された可搬記録媒体３０２に格納されているデータの読み出しや、可搬記録媒体３０２へのデータの書き込みを行うデータ読み書き用インターフェースである。例えば、可搬記録媒体３０２に格納されたプログラムが接続ＩＦ２０６を介してプロセッサ２０２により読み込まれ、メモリ２０１に格納される。そして、プロセッサ２０２が、メモリ２０１に格納されたプログラムに従ってシナリオ生成装置２００の動作を制御する。
【００２９】
例えば、シナリオ生成装置２００の動作を制御してテストシナリオの生成に関する処理をシナリオ生成装置２００に実行させる生成プログラムは、可搬記録媒体３０２に格納されて流通されうる。また、シナリオ生成装置２００は、メモリ２０１内の生成プログラムを実行してテストシナリオの生成に関する処理を実行しうる。可搬記録媒体３０２としては、例えば、光記録媒体、磁気記録媒体、半導体メモリなどがある。
【００３０】
情報処理システム１００は、図３に示すような機能を有する。図３は、第２実施形態に係る情報処理システムが有する機能の一例を示したブロック図である。
情報処理システム１００は、記憶部１１１、実行部１１２、及びメモリ管理部１１３を有する。記憶部１１１の機能は、上述したメモリ１０１により実現できる。実行部１１２及びメモリ管理部１１３の機能は、上述したプロセッサ１０２により実現できる。
【００３１】
記憶部１１１には、プログラム群１１１ａ及びシナリオ情報１１１ｂが格納される。なお、情報処理システム１００は、実行部１１２により、適宜、プログラム群１１１ａ及びシナリオ情報１１１ｂをシナリオ生成装置２００から取得してもよい。
【００３２】
プログラム群１１１ａは、情報処理システム１００で実行されうるプログラムの集合であり、検証の対象となる少なくとも１つのプログラムを含む。例えば、プログラム群１１１ａには、図４に示すように、プログラムＰ１、Ｐ２、…、Ｐｎが含まれる。図４は、プログラム群及びシナリオ情報の一例を示した図である。なお、ＡＰＩは、プログラムＰ１、Ｐ２、…、Ｐｎの一例である。
【００３３】
シナリオ情報１１１ｂは、情報処理システム１００で実行される検証用のテストシナリオに関する情報である。例えば、シナリオ情報１１１ｂは、テストシナリオを識別するための情報（シナリオ番号）と、テストシナリオに含まれるプログラムの集合を識別するための情報とを対応付ける。テストシナリオには、少なくとも１つのプログラムが含まれる。例えば、テストシナリオ＃１には、プログラム群１１１ａから選択されたプログラムＰ１（選択プログラム）が含まれる。
【００３４】
実行部１１２は、テストシナリオに従ってプログラムを実行する。例えば、実行部１１２は、シナリオ生成装置２００からテストシナリオ＃５の実行指示を受けたとき、シナリオ情報１１１ｂを参照してプログラムＰ２、Ｐ１を順に実行する。メモリ管理部１１３は、実行部１１２によるプログラムの実行前及び実行後におけるメモリ１０１の状態（メモリ状態）を監視し、シナリオ生成装置２００からの要求に応じてメモリ状態の情報をシナリオ生成装置２００に提供する。
【００３５】
メモリ状態及びその変化は、例えば、図５のようになる。図５は、メモリ状態及びその変化について説明するための図である。図５（Ａ）は、プログラムが実行されていない状態（定常状態）のメモリ状態を示している。一方、図５（Ｂ）は、プログラムＰｘ（∀ｘ∈［１，ｎ］）の実行中におけるメモリ状態を示している。
【００３６】
メモリ状態は、メモリ１０１の各メモリ番地に格納される値（メモリ値）で表現されうる。以下では、説明の都合上、メモリ番地毎のメモリ状態をメモリ値、メモリ値の組み合わせをメモリ状態又は単に状態と表記する場合がある。プログラムＰｘを実行すると、プログラムＰｘに対応するプロセスのメモリ領域が変化しうる。また、定常状態でもメモリ状態が変化しうる。メモリ管理部１１３は、このようなメモリ状態の変化を監視する。
【００３７】
プログラムの実行に伴う状態遷移は、図６のように表現できる。図６は、プログラムの実行に伴う状態遷移について説明するための図である。
図６の例は、状態＃１、＃２、＃３、＃４の間の遷移を示している。この例では、状態＃１でプログラムＰ１が実行された場合、再び状態＃１になる（状態維持）。状態＃１でプログラムＰ２が実行されると状態＃２に遷移する。状態＃１でプログラムＰ３が実行されると状態＃２に遷移する。この例では、メモリ１０１が状態＃１にある場合、プログラムＰ２、Ｐ３による遷移先が同じになるため、プログラムＰ２、Ｐ３のいずれかで検証を実施すれば足りる。
【００３８】
図６の例では、状態＃１から状態＃３への遷移を導くプログラムが３つ（Ｐ１、Ｐ２、Ｐ３）あり、状態＃４から状態＃２への遷移を導くプログラムが２つ（Ｐ１、Ｐ２）あるが、これらについても、いずれかのプログラムで検証を実施すれば足りる。後述するシナリオ生成装置２００では、上記の例のように実質的に同じ遷移を導くプログラムを特定し、特定の結果に基づいて、実行すべきテストシナリオの数を減らす施策を講じる。
【００３９】
シナリオ生成装置２００は、図７に示すような機能を有する。図７は、第２実施形態に係るシナリオ生成装置が有する機能の一例を示したブロック図である。
シナリオ生成装置２００は、記憶部２１１、初期化部２１２、実行制御部２１３、影響度計算部２１４、比較処理部２１５、及びシナリオ生成部２１６を有する。
【００４０】
記憶部２１１の機能は、上述したメモリ２０１により実現できる。初期化部２１２、実行制御部２１３、影響度計算部２１４、比較処理部２１５、及びシナリオ生成部２１６の機能は、主に上述したプロセッサ２０２により実現できる。
【００４１】
記憶部２１１には、プログラム情報２１１ａ、シナリオ情報２１１ｂ、影響度の情報２１１ｃ、差分評価値の情報２１１ｄ、閾値の情報２１１ｅ、及びＴｏＤｏリスト２１１ｆが格納される。
【００４２】
プログラム情報２１１ａには、情報処理システム１００で実行されうるプログラムの情報が含まれる。例えば、プログラム情報２１１ａは、図８に示すように、情報処理システム１００で実行されうるプログラムを識別するためのプログラム番号と、プログラム名とを対応付ける情報を含む。図８は、プログラム情報の一例を示した図である。
【００４３】
シナリオ情報２１１ｂには、プログラム情報２１１ａから選択可能なプログラムの組み合わせ（テストシナリオの候補）に関する情報が含まれる。シナリオ情報２１１ｂは、例えば、図９のような内容を有する。図９は、シナリオ情報の一例を示した図である。なお、後述するＴｏＤｏリスト２１１ｆと重複する部分については、ＴｏＤｏリスト２１１ｆの更新に伴って内容が更新される。また、該重複する部分を省略してもよい。
【００４４】
図９に示すように、シナリオ情報２１１ｂには、含まれるプログラムの数が少ない順にテストシナリオ（プログラムの組み合わせ）に関する情報が記載される。また、シナリオ情報２１１ｂには、最上段に定常状態に関する情報が記載される。
【００４５】
シナリオ情報２１１ｂには、テストシナリオを識別するためのシナリオ番号、及びそのテストシナリオに含まれるプログラムの集合を示す情報が含まれる。テストシナリオの実行要否、シナリオ実行後の状態及び影響度、差分評価値、追加シナリオの要否は、検証用のテストシナリオを生成する処理の過程で設定される。
【００４６】
実行要否の欄に「要」と記載されているテストシナリオは、検証用に実行すべきテストシナリオを表す。実行要否の欄に「否」と記載されているテストシナリオは、検証用に実行すべきテストシナリオではないテストシナリオを表す。
【００４７】
影響度、差分評価値は、検証用に実行すべきテストシナリオか否かの判定に用いられる評価指標である。影響度、差分評価値の計算などについては後述する。なお、シナリオ実行後の状態及び影響度の欄にある｛…｝の部分は影響度を表す。｛…｝に含まれる数字は、各メモリ番地における影響度の数値を表す。差分評価値の欄に「閾値以下」又は「閾値超過」とある部分は、差分評価値が所定の閾値以下又は閾値超過であることを示す。
【００４８】
追加シナリオの要否の欄に「要」と記載されているテストシナリオは、そのテストシナリオに基づく追加のテストシナリオ（追加シナリオ）が生成されるテストシナリオである。追加シナリオの要否の欄に「否」と記載されている場合、対応するテストシナリオに基づく追加シナリオは生成されない。
【００４９】
例えば、シナリオ番号＃２のテストシナリオ（シナリオ＃２）については、追加シナリオの要否が「要」に設定されている。この場合、シナリオ＃２に１つのプログラムを追加したテストシナリオ（Ｐ２，＊）が生成される。なお、＊はワイルドカードを表す。例えば、ｎが３の場合、（Ｐ２，＊）は、３つのテストシナリオ（Ｐ２，Ｐ１）、（Ｐ２，Ｐ２）、（Ｐ２，Ｐ３）を表す（図９のシナリオ番号＃５、＃６、＃７を参照）。
【００５０】
影響度の情報２１１ｃは、図１０に示すように、各メモリ番地における影響度を表す。図１０は、影響度の情報の一例を示した図である。影響度は、テストシナリオの実行前後において各メモリ番地に生じる変化の大きさ（メモリ値の差分又は差分絶対値）を表す。影響度の情報２１１ｃは、情報処理システム１００から取得されて記憶部２１１に格納される。また、影響度の情報２１１ｃは、適宜、シナリオ情報１１１ｂや後述するＴｏＤｏリスト２１１ｆに反映される。
【００５１】
差分評価値の情報２１１ｄは、図１１に示すように、各メモリ番地における差分評価値を表す。図１１は、差分評価値の情報の一例を示した図である。差分評価値は、過去に実行されたテストシナリオ（過去シナリオ）の実行時における影響度と、追加シナリオの生成要否を判定するためのプログラムの実行時における影響度との差分に基づく評価値である。この評価値は、過去シナリオと追加シナリオとの類似度を表す。
【００５２】
なお、追加シナリオの生成要否の判定は、例えば、メモリ番地毎の差分評価値の平均値に基づいて行われる。以下、各メモリ番地について計算される差分評価値をメモリ番地毎の差分評価値と表記し、メモリ番地についての平均値を単に差分評価値と表記する。
【００５３】
閾値の情報２１１ｅには、差分評価値との比較により追加シナリオの生成要否を判定するために用いる閾値が含まれる。閾値は、例えば、ユーザが事前に設定してもよいし、サンプルデータを利用したシミュレーションの結果に基づいて予め設定されてもよい。
【００５４】
ＴｏＤｏリスト２１１ｆは、情報処理システム１００の検証用に設定されるテストシナリオのリストを示す情報である。ＴｏＤｏリスト２１１ｆには、図１２に示すように、定常状態についての情報（シナリオ番号が（定常）のレコード）、及びテストシナリオの情報が登録される。図１２は、ＴｏＤｏリストの一例を示した図である。ＴｏＤｏリスト２１１ｆの更新については後述する。
【００５５】
再び図７を参照する。初期化部２１２は、ＴｏＤｏリスト２１１ｆを初期化する要素である。例えば、初期化部２１２は、ＴｏＤｏリスト２１１ｆをリセットし、定常状態におけるメモリ状態を情報処理システム１００から取得してＴｏＤｏリスト２１１ｆに設定する。また、初期化部２１２は、プログラム情報２１１ａから選択できる１つのプログラムで構成されるテストシナリオをＴｏＤｏリスト２１１ｆに登録する。
【００５６】
実行制御部２１３は、情報処理システム１００にプログラムを実行させる。影響度計算部２１４は、プログラムの実行前後におけるメモリ状態を情報処理システム１００から取得して影響度を計算し、計算した影響度を影響度の情報２１１ｃとして記憶部２１１に格納する。比較処理部２１５は、追加シナリオの要否判定時に差分評価値を計算し、計算した差分評価値と閾値とを比較して追加シナリオの要否判定を行う。
【００５７】
シナリオ生成部２１６は、要否判定の結果に基づいて追加シナリオをＴｏＤｏリスト２１１ｆに追加する。ＴｏＤｏリスト２１１ｆの生成処理が完了すると、実行制御部２１３は、ＴｏＤｏリスト２１１ｆに追加されたテストシナリオを情報処理システム１００に実行させて検証を行う。
【００５８】
上記のシナリオ生成装置２００は、図１３に示す処理を実行する。図１３は、第２実施形態に係るシナリオ生成装置が実行する処理の流れを示したフロー図である。なお、図１３についての説明の中で、適宜、図１４を参照する。図１４は、ＴｏＤｏリストの初期化及び更新について説明するための図である。
【００５９】
（Ｓ１０１）初期化部２１２は、定常状態におけるメモリ状態のサンプリングデータを情報処理システム１００から取得する。このとき、初期化部２１２は、複数回分のサンプリングデータを取得する。サンプリングデータは、例えば、メモリ１０１の各メモリ番地におけるメモリ値の集合である。また、初期化部２１２は、複数回分のサンプリングデータを比較し、定常状態で変化するメモリ領域を特定する。
【００６０】
また、初期化部２１２は、サンプリングデータに基づいて各メモリ番地の影響度を計算する。例えば、２回分のサンプリングデータを取得できた場合、初期化部２１２は、各メモリ番地におけるメモリ値の差分を計算し、計算した差分を各メモリ番地の影響度とする。また、初期化部２１２は、テストシナリオの情報がないＴｏＤｏリスト２１１ｆの最上段に定常状態に対応するレコードを設定し、計算した影響度の情報を記載する（図１４（Ａ）のＴｏＤｏリスト２１１ｆの最上段を参照）。
【００６１】
（Ｓ１０２）初期化部２１２は、プログラム情報２１１ａから１つずつプログラムを選択し、選択した１つのプログラムを含むテストシナリオを設定する。そして、初期化部２１２は、設定したテストシナリオの情報をＴｏＤｏリスト２１１ｆに記載する。
【００６２】
例えば、ｎが３の場合、初期化部２１２は、プログラムＰｋ（ｋ＝１，２，３）を含むシナリオ番号＃ｋのシナリオ（シナリオ＃ｋ）を設定し、ＴｏＤｏリスト２１１ｆにシナリオ＃ｋの情報を記載する（図１２を参照）。この場合、ＴｏＤｏリスト２１１ｆには、シナリオ番号及び各テストシナリオに含まれるプログラムの情報が記載される（図１４（Ａ）のＴｏＤｏリスト２１１ｆの下３段を参照）。
【００６３】
（Ｓ１０３）実行制御部２１３は、ＴｏＤｏリスト２１１ｆに未実行のテストシナリオ（未実行シナリオ）があるか否かを判定する。なお、図１３の処理において、実行制御部２１３は、ＴｏＤｏリスト２１１ｆの先頭から順に情報処理システム１００に対してテストシナリオを実行させる。未実行シナリオがある場合、処理はＳ１０４へと進む。一方、ＴｏＤｏリスト２１１ｆにある全てのテストシナリオが実行済みの場合、図１３に示した一連の処理は終了する。
【００６４】
（Ｓ１０４）実行制御部２１３は、ＴｏＤｏリスト２１１ｆにある未実行シナリオのうち先頭にある未実行シナリオを情報処理システム１００に実行させる。未実行シナリオの実行要求を受けた情報処理システム１００では、プロセッサ１０２により未実行シナリオのプログラムが実行され、プログラムの実行中に、メモリ管理部１１３によりメモリ状態のサンプリングデータが採取される。
【００６５】
（Ｓ１０５）影響度計算部２１４は、未実行シナリオの実行中に採取されたサンプリングデータを情報処理システム１００から取得する。また、影響度計算部２１４は、情報処理システム１００から取得したサンプリングデータに基づいて影響度を計算する。例えば、影響度計算部２１４は、未実行シナリオの実行前後における各メモリ番地のメモリ値の差分を計算し、計算した差分を各メモリ番地の影響度とする。影響度計算部２１４は、計算した影響度を記憶部２１１に格納する。
【００６６】
（Ｓ１０６）比較処理部２１５は、過去に影響度計算部２１４が記憶部２１１に格納した影響度と、直前のＳ１０５で影響度計算部２１４が計算した影響度とに基づいて差分評価値を計算する。このとき、比較処理部２１５は、定常状態で変化するメモリ領域を除外したメモリ領域の各メモリ番地における影響度を計算に利用してもよい。定常状態で変化するメモリ領域を除外することで、未実行シナリオの実行とは関係ないメモリ状態の変動による影響を抑圧することができる。なお、差分評価値の計算については後述する。
【００６７】
（Ｓ１０７）比較処理部２１５は、閾値の情報２１１ｅを参照し、計算した差分評価値が閾値超過（差分評価値＞閾値）であるか否かを判定する。「差分評価値＞閾値」である場合、処理はＳ１０８へと進む。一方、「差分評価値＞閾値」でない場合、処理はＳ１０３へと進む。
【００６８】
（Ｓ１０８）比較処理部２１５は、未実行シナリオについて影響度計算部２１４が計算した影響度の情報をＴｏＤｏリスト２１１ｆに記載する。
（Ｓ１０９）シナリオ生成部２１６は、今回実行された未実行シナリオ（実行シナリオ）の末尾に１つのプログラムを追加したテストシナリオ（追加シナリオ）を生成する。
【００６９】
Ｓ１０７の判定により、差分評価値が閾値以下の実行シナリオについてはＴｏＤｏリスト２１１ｆに影響度の情報が記載されず、追加シナリオの生成も行われない。例えば、プログラムＰ１だけを含むシナリオ＃１の差分評価値が閾値以下の場合、図１４（Ｂ）のＴｏＤｏリスト２１１ｆに示すように、シナリオ実行後の状態及び影響度の欄が空欄になる。一方、差分評価値が閾値超過の実行シナリオについてはＴｏＤｏリスト２１１ｆに影響度の情報が記載され、追加シナリオの生成が行われる。
【００７０】
例えば、実行シナリオがシナリオ＃２であり、シナリオ＃２についての差分評価値が閾値超過の場合、シナリオ生成部２１６は、シナリオ＃２に含まれるプログラムＰ２にプログラムＰｋ（ｋ＝１，２，３）を追加した３つの追加シナリオを生成する（図１４（Ｂ）のＴｏＤｏリスト２１１ｆの下３段を参照）。
【００７１】
Ｓ１０９の処理が完了すると、処理はＳ１０３へと進む。
ここで、図１５及び図１６を参照しながら、差分評価値の計算に関する処理について、さらに説明する。
【００７２】
図１５は、第２実施形態に係るシナリオ生成装置が実行する処理のうち、差分評価値の計算に関する処理の流れを示した第１のフロー図である。図１６は、第２実施形態に係るシナリオ生成装置が実行する処理のうち、差分評価値の計算に関する処理の流れを示した第２のフロー図である。
【００７３】
（Ｓ１１１）比較処理部２１５は、未実行シナリオのプログラム実行後におけるメモリ状態を情報処理システム１００から取得する。
（Ｓ１１２）比較処理部２１５は、プログラムの実行により新規プロセスが発生したか否かを判定する。例えば、比較処理部２１５は、情報処理システム１００から新規プロセスの発生有無を示す情報を取得する。新規プロセスが発生した場合、処理はＳ１１３へと進む。一方、新規プロセスが発生していない場合、処理はＳ１１４へと進む。
【００７４】
（Ｓ１１３）比較処理部２１５は、新規プロセスのメモリ領域（図５を参照）を特定する。例えば、比較処理部２１５は、メモリディスクリプタから新規プロセスのメモリ領域を特定する。なお、メモリディスクリプタとは、プロセスの仮想メモリ空間に関する情報（ページテーブルやメモリリージョンの情報など）を記録するものである。メモリディスクリプタは、プロセスのアドレス空間に関する情報を記録している場所であり、例えば、１つのプロセスに対して１つ割り当てられうる。
【００７５】
（Ｓ１１４）比較処理部２１５は、差分評価値用パラメータＸ（一時変数）を初期値（例えば、差分評価値として取り得る最大値；所定値）に設定する。
（Ｓ１１５、Ｓ１２８）比較処理部２１５は、ＴｏＤｏリスト２１１ｆを参照し、過去に実行済みのテストシナリオ（実行済みシナリオ）を１つずつ選択しながら、未選択の実行済みシナリオがなくなるまでＳ１１５とＳ１２８との間の処理を繰り返し実行する（Loop L1）。Ｓ１２８で未選択の実行済みシナリオがなくなると、図１５及び図１６に示した一連の処理は終了する。
【００７６】
（Ｓ１１６）比較処理部２１５は、差分合計値用パラメータＹ（一時変数）を０に設定する。
（Ｓ１１７、Ｓ１２４）比較処理部２１５は、メモリ１０１の先頭から順に、対象となるメモリ領域のメモリ番地を１つずつ選択しながら、未選択のメモリ番地がなくなるまでＳ１１７とＳ１２４との間の処理を繰り返し実行する（Loop L2）。Ｓ１２４で未選択のメモリ番地がなくなると、処理はＳ１２５へと進む。なお、対象となるメモリ領域は、例えば、メモリ１０１の全ての領域、或いは、定常状態でメモリ状態が変化する領域を除外したメモリ領域に設定されうる。
【００７７】
（Ｓ１１８）比較処理部２１５は、実行したプログラム（現在プログラム）の影響度と、Ｓ１１５で選択した実行済みシナリオ（過去シナリオ）の影響度との差分を計算する。Ｓ１１８の処理が完了すると、処理はＳ１１９（図１６）へと進む。
【００７８】
（Ｓ１１９）比較処理部２１５は、現在プログラムの実行時に新規プロセスが発生したか否かを判定する。新規プロセスが発生した場合、処理はＳ１２１へと進む。一方、新規プロセスが発生していない場合、処理はＳ１２０へと進む。
【００７９】
（Ｓ１２０）比較処理部２１５は、Ｓ１１８で計算した差分をＹに加算する処理（Ｙ＝Ｙ＋（計算した差分））を実行する。Ｓ１２０の処理が完了すると、処理はＳ１２４へと進む。
【００８０】
（Ｓ１２１）比較処理部２１５は、Ｓ１１７で選択されたメモリ番地が新規プロセスのメモリ領域内か否かを判定する。選択されたメモリ番地が新規プロセスのメモリ領域内である場合、処理はＳ１２２へと進む。一方、選択されたメモリ番地が新規プロセスのメモリ領域内でない場合、処理はＳ１２３へと進む。
【００８１】
（Ｓ１２２）比較処理部２１５は、Ｓ１１８で計算した差分に係数αを乗算し、乗算結果をＹに加算する処理（Ｙ＝Ｙ＋（計算した差分）×α）を実行する。係数αは、事前に設定される１以上の値であり、後述する係数βより大きな値に設定される。Ｓ１２２の処理が完了すると、処理はＳ１２４へと進む。
【００８２】
（Ｓ１２３）比較処理部２１５は、Ｓ１１８で計算した差分に係数βを乗算し、乗算結果をＹに加算する処理（Ｙ＝Ｙ＋（計算した差分）×β）を実行する。係数βは、事前に設定される１以上の値であり、係数αより小さな値に設定される。Ｓ１２３の処理が完了すると、処理はＳ１２４へと進む。
【００８３】
（Ｓ１２５）比較処理部２１５は、Ｙをメモリ番地数で割る演算（Ｙ／（メモリ番地数））を行い、演算結果をＸに設定する（Ｘ＝Ｙ／（メモリ番地数））。なお、Ｓ１２５の段階でＹは、各メモリ番地における差分の合計値に相当する。また、Ｓ１２５の演算は、メモリ番地についての差分の平均値を計算する演算に相当する。つまり、Ｓ１２５で設定されるＸは差分平均値である。
【００８４】
（Ｓ１２６）比較処理部２１５は、既に設定されている差分評価値とＸとを比較し、差分評価値がＸを超過しているか（「差分評価値＞Ｘ」か）否かを判定する。「差分評価値＞Ｘ」である場合、処理はＳ１２７へと進む。一方、「差分評価値＞Ｘ」でない場合、処理はＳ１２８へと進む。
【００８５】
（Ｓ１２７）比較処理部２１５は、Ｘを差分評価値に設定する（差分評価値＝Ｘ）。Ｓ１２７の処理が完了すると、処理はＳ１２８へと進む。
上記のように、第２実施形態では、プログラムの実行時に新規プロセスが発生したか否かで処理を分岐させ、新規プロセスが発生した場合には新規プロセスのメモリ領域とそれ以外のメモリ領域とで影響度に重み付けを変える。計算式で表現すると、差分評価値は、下記の式（１）及び式（２）で表現される。
【００８６】
なお、下記の式（１）は、新規プロセスが発生した場合の差分評価値（Ｖ１）である。下記の式（２）は、新規プロセスが発生しない場合の差分評価値（Ｖ２）である。下記の式（１）の中で、メモリ番地をｍ、新規プロセスのメモリ領域をＭ１、Ｍ１以外のメモリ領域をＭ２、全メモリ領域をＭ３（Ｍ３＝Ｍ１∪Ｍ２）と表記する。また、下記の式（１）及び式（２）の中で、メモリ番地ｍにおける現在プログラムの影響度をＥｃ（ｍ）、過去シナリオの影響度をＥｐ（ｍ）と表記する。
【００８７】
【数１】
2019067274.tif 000003
【００８８】
上記の仕組みは、プログラムの実行時に新規プロセスが発生した場合に、新規プロセスのメモリ領域における影響度が差分評価値の計算に重要であるという考えに基づいている。また、上記の仕組みは、新規プロセスの発生と同じタイミングで生じる既存プロセスのメモリ領域における変化も重要であるという考えに基づいている。そのため、係数α、βは１以上の値に設定され、重要度を考慮して係数の関係（α＞β）が規定される。
【００８９】
ここで、図１７を参照しながら、差分評価値の計算について説明を補足する。図１７は、差分評価値の計算イメージを示した図である。なお、図１７の例は、現在プログラムの実行時に新規プロセスが発生する場合の計算イメージを示している。
【００９０】
図１７に示すように、比較処理部２１５は、過去にテストシナリオを実行した際に計算された各メモリ番地についての影響度（影響度（過去））と、現在プログラムの実行時に計算された各メモリ番地についての影響度（影響度（計算））との差分を計算する。
【００９１】
また、比較処理部２１５は、各メモリ番地が新規プロセスのメモリ領域内であるかに応じて、係数α、βのいずれかを選択する。なお、新規プロセスのメモリ領域内にあるメモリ番地については係数αが選択され、新規プロセスのメモリ領域外にあるメモリ番地については係数βが選択される。図１７の例では、メモリ番地＃１、＃２について係数αが選択され、メモリ番地＃３−＃７について係数βが選択されている。
【００９２】
比較処理部２１５は、各メモリ番地について、計算した差分と選択した係数とを乗算し、乗算結果をメモリ番地毎の差分評価値とする。また、比較処理部２１５は、メモリ番地毎の差分評価値を、対象となる全てのメモリ番地について平均する。そして、比較処理部２１５は、計算した平均値を、ＴｏＤｏリスト２１１ｆにテストシナリオを追加するかを判定する際に用いる差分評価値に設定する。このような方法で差分評価値が計算される。
【００９３】
以上、第２実施形態について説明した。
既に述べたように、実行時にメモリ状態の変化状況が変わらないプログラムを追加した新たなテストシナリオを検証に用いても、追加前のテストシナリオによる検証と同様の結果となるため、新たなテストシナリオを追加するメリットは小さい。一方、このような新たなテストシナリオの追加を回避することで、重大なバグなどを見落とすリスクを抑制しつつ、情報処理システム１００で実行すべきテストシナリオを減らすことができる。上述した第２実施形態の技術は、このようなテストシナリオの低減に寄与する。
【符号の説明】
【００９４】
１０  情報処理装置
１１  プロセッサ
１２  記憶部
１２ａ  可搬記録媒体
２０  システム
２１  実行部
２２  メモリ
３１、３２  テストシナリオ
Ｐ１、Ｐ２、Ｐ３、Ｐ４、…、Ｐ６、…、Ｐ９  プログラム
Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ  変化状況
【図１】
2019067274.tif 000004
【図２】
2019067274.tif 000005
【図３】
2019067274.tif 000006
【図４】
2019067274.tif 000007
【図５】
2019067274.tif 000008
【図６】
2019067274.tif 000009
【図７】
2019067274.tif 000010
【図８】
2019067274.tif 000011
【図９】
2019067274.tif 000012
【図１０】
2019067274.tif 000013
【図１１】
2019067274.tif 000014
【図１２】
2019067274.tif 000015
【図１３】
2019067274.tif 000016
【図１４】
2019067274.tif 000017
【図１５】
2019067274.tif 000018
【図１６】
2019067274.tif 000019
【図１７】
2019067274.tif 000020