JP2022001982A - 状態遷移テスト実行プログラム、状態遷移テスト実行方法、及び情報処理装置 - Google Patents

状態遷移テスト実行プログラム、状態遷移テスト実行方法、及び情報処理装置 Download PDF

Info

Publication number
JP2022001982A
JP2022001982A JP2020106257A JP2020106257A JP2022001982A JP 2022001982 A JP2022001982 A JP 2022001982A JP 2020106257 A JP2020106257 A JP 2020106257A JP 2020106257 A JP2020106257 A JP 2020106257A JP 2022001982 A JP2022001982 A JP 2022001982A
Authority
JP
Japan
Prior art keywords
state
transition
test
variable
name
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.)
Pending
Application number
JP2020106257A
Other languages
English (en)
Inventor
智是 尾藤
Tomoyoshi Bito
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 Computer Technologies Ltd
Original Assignee
Fujitsu Computer Technologies 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 Computer Technologies Ltd filed Critical Fujitsu Computer Technologies Ltd
Priority to JP2020106257A priority Critical patent/JP2022001982A/ja
Publication of JP2022001982A publication Critical patent/JP2022001982A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】テストパターンを網羅したブラックボックステストを実現する状態遷移テスト実行プログラムを提供する。【解決手段】状態遷移テスト実行プログラムは、検証対象のプログラムのソースコードから得られた、状態が遷移する変数の変数名と、変数の複数の状態の状態名とを少なくとも記憶した状態定義DBを作成し、特定される変数の複数の状態において、プログラムに対するランダムテストによって変数の状態が変化したときの、変化前の事前状態を識別する第1の状態名と、変化後の事後状態を識別する第2の状態名と、プログラムへ入力したテストデータのうち事前状態から事後状態へと遷移させたテストデータとを対応付けた状態遷移データベースを参照し、状態遷移データベースに記憶されたテストデータを用いて、変数の状態を初期状態から事後状態まで遷移させ、遷移させた事後状態においてランダムテストを行うことを繰り返す処理をコンピュータに行わせる。【選択図】図11

Description

本発明は、状態遷移テスト実行プログラム、状態遷移テスト実行方法、及び情報処理装置に関する。
開発したプログラムについてランダムなテストパターンを用いて状態遷移をテストする、ブラックボックステストによる検証方法が存在する。一方、近年、ソフトウェア開発の規模が拡大し、状態遷移が複雑化しているため、テストパターンを用いたブラックボックステストでは網羅的にテストパターンを生成できない。
入力データと出力データとの間の相関値の時系列における変化を検出することで、ブラックボックスシステムの状態遷移を推定する技術が知られている。また、メソッドの実行がメソッドの呼び出し順等の規則情報に違反することを検出した場合に、当該規則情報と検出結果との組み合せに対応するテストコードを実行することで、ブラックボックステストに関する作業効率を向上させる技術等が知られている。
特許第6494887号公報 特開2013−30017号公報 特開2011−76498号公報
しかしながら、上述した技術では、相関値の算出方法が特定できない、時系列において相関値が変化しない等の場合には、注目する状態遷移を検知できない可能性がある。また、メソッドの呼び出し順等の規則情報を予め用意するためには、リバースエンジニアリングを行う必要がある。リバースエンジニアリングにおいて、規則の総数、規則に含まれるであろう条件の詳細度等について、規則情報をどの程度まで定めるかは、専門的な知識を持った技術者の経験及び知識に依存し、作業量も膨大である。
したがって、1つの側面では、テストパターンを網羅したブラックボックステストを実現することを目的とする。
一態様によれば、検証対象のプログラムのソースコードから得られた、状態が遷移する変数の変数名と、該変数の複数の状態それぞれの状態名と、を少なくとも記憶した状態定義データベースで特定される該変数の複数の状態において、該プログラムに対するランダムテストによって該変数の状態が変化したときの、変化前の事前状態を識別する第1の状態名と、該事前状態からの変化後の事後状態を識別する第2の状態名と、該プログラムへ入力したテストデータのうち該事前状態から該事後状態へと遷移させたテストデータとを対応付けた状態遷移データベースを参照し、該状態遷移データベースに記憶された前記テストデータを用いて、前記変数の状態を初期状態から前記事後状態まで遷移させ、遷移させた前記事後状態において前記ランダムテストを行うことを繰り返す処理をコンピュータに行わせる状態遷移テスト実行プログラムが提供される。
テストパターンを網羅したブラックボックステストを実現することができる。
事前状態と事後状態の対応表の例を示す図である。 情報処理装置のハードウェア構成例を示す図である。 本実施例における機能構成例を示す図である。 状態定義DBの作成例を説明するための図である。 生成処理の概要を説明するための図である。 生成処理の過程を説明するための図(その1)である。 生成処理の過程を説明するための図(その2)である。 本実施例における生成処理により得られた変数「state」の状態遷移の流れを説明するための図である。 状態遷移DBのデータ例を示す図である。 遷移制御の概要を説明するための図である。 本実施例におけるテスト実行処理の概要を説明するための図である。 状態定義作成画面の例を示す図である。 本実施例により得られたテスト結果を用いたリバースエンジニアリングの方法例を説明するためのフローチャート図である。 図13のステップS310で表示されるテスト結果画面の例を示す図である。 条件追加画面の例を示す図である。 再実行後に表示されるテスト結果画面の例を示す図である。 状態遷移DBの生成処理を説明するためのフローチャート図である。 変数の遷移制御を説明するためのフローチャート図である。
以下、本発明の実施の形態を図面に基づいて説明する。先ず、ブラックボックステストでは、所望の変数に対して、ランダムにデータを与え、変数の変化による状態遷移を試行するランダムテストが行われる。
図1は、事前状態と事後状態の対応表の例を示す図である。通常、ランダムテストでは、初期状態からランダムにパターンを検証対象のプログラムに入力し、事前状態から遷移した事後状態を特定する。この既存のランダムテストでは、ある状態に対して、データの入力とプログラムの実行とを繰り返し、遷移する全ての状態を探す処理が行われる。処理を収束させる方法として、繰り返し回数、又は繰り返し処理時間等の上限が設定されている。上限に達すると(以下、「タイムアウト」という)、それまでに検出できた事後状態を事前状態として、初期状態のときと同様に、テストパターンをプログラムに入力し次に遷移する状態を特定することを繰り返す。
図1の例では、初期状態において特定した事後状態はST1のみであり、それ以外では、事後状態を特定することなくタイムアウトになったことを示している。また、初期状態では、あるテストパターンTPで事後状態ST1を検出したことを示している。
このように事前状態から事後状態へと変化させたテストパターンTPを、「遷移条件」という。遷移条件は、1又は複数のデータを指定する。データは、1つの値又は複数の値の組み合せ、クリック動作、タイマー起動又は終了、データ送受信等を疑似的に通知するイベントのコード等であってもよい。
そして、タイムアウト後は、プログラム又は変数を初期状態に戻し、状態が変化したときのテストパターンTPをプログラムに入力することで事後状態ST1に遷移させ、上述したようにランダムにテストパターンをプログラムに入力し、次の事後状態を検出する処理を繰り返す。
このようなランダムテストを用いたブラックボックステストでは、状態遷移を監視することにより、1つの事前状態に対して1又は複数の事後状態を検出する。そして、いずれの事後状態も検出されずにタイムアウトしたときに、ブラックボックステストは終了する。
ブラックボックステストでは、より多くの状態を網羅するランダムテストであることが好ましい。より好ましいランダムテストの生成には、技術者によるランダムテストの検証が行われる。
また、ブラックボックステストはタイムアウトにより終了することから、全ての状態を特定したか否かは確定的ではない。そのため、技術者は、リバースエンジニアリングを行い未特定の状態の有無を判定することになる。リバースエンジニアリングにより発見された状態遷移は、技術者により、図1に示すような対応表に手作業で記録される。このように、ブラックボックステスト及びリバースエンジニアリングにより得られた状態遷移の対応表は、確実性に欠けたものとなる。
そこで、発明者は、ソフトウェア開発規模の大きなプログラムに対し、状態遷移を網羅したテストの効率化を実現するテスト実行手法を見出した。後述される実施例におけるテスト実行手法では、更に、OSS(Open Source Software)、開発当初の資料はもはや存在しない過去資産など、内部の動作を表す仕様書の無いプログラムであっても、簡易なリバースエンジニアリングで網羅的にテストを実施可能とする。
発明者により見出されたテスト実行手法は、図2に示すような情報処理装置100により実現することができる。図2は、情報処理装置のハードウェア構成例を示す図である。図2において、情報処理装置100は、CPU(Central Processing Unit)11と、主記憶装置12と、補助記憶装置13と、入力装置14と、表示装置15と、通信I/F17と、ドライブ装置18とを有し、バスBに接続される。主記憶装置12と、補助記憶装置13と、情報処理装置100がアクセス可能な外部記憶装置とを含めて、後述する機能ブロック図(図4)における記憶部130に相当する。
CPU11は、情報処理装置100を制御するプロセッサに相当し、記憶部130に格納されたプログラムを実行することで、以下に説明する本実施例に係る様々な処理を実現する。入力装置14は、ユーザによって操作され、操作に応じてデータを入力し、表示装置15は、ユーザーインタフェースとして様々な画面を表示する。通信I/F17は、外部装置との通信を制御する。
記憶媒体19(例えば、CD−ROM(Compact Disc Read-Only Memory)等)に記憶された本実施例に係るテスト実行プログラムは、ドライブ装置18を介して記憶部130にインストールされ、CPU11によって実行可能となる。テスト実行プログラムにより、情報処理装置100は、「テスト実行装置」として動作する。
尚、本実施例に係るテスト実行プログラムを格納する記憶媒体19はCD−ROMに限定されず、コンピュータが読み取り可能な、構造(structure)を有する1つ以上の非一時的(non-transitory)な、有形(tangible)な媒体であればよい。コンピュータ読取可能な記憶媒体として、CD−ROMの他に、DVD(Digital Versatile Disk)ディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
本実施例における情報処理装置100は、テスト実行プログラムにより、図3に示すような、テスト実行装置として動作するための機能を構成する。図3は、本実施例における機能構成例を示す図である。
図3において、情報処理装置100は、テスト処理部140と、テスト対象9とを有する。テスト処理部140は、情報処理装置100にインストールされたプログラムが、情報処理装置100のCPU11に実行させる処理により実現される。また、記憶部130には、ランダムテストパターンDB131、状態定義DB132、テスト対象状態DB133、状態遷移DB134、状態遷移情報7a、状態遷移情報7b、判定結果7c、遷移後状態名6b等が記憶される。
テスト処理部140は、テストパターン生成部141と、テスト制御部142と、状態判定部143とを有する。テストパターン生成部141は、テスト対象9に入力するテストパターンをランダムに作成し、ランダムテストパターンDB131に保持する。
テスト制御部142は、状態遷移DB134の生成処理と、作成された状態遷移DB134を用いてテスト対象状態に遷移させる遷移制御とを行う。
生成処理では、ランダムテストパターンDB131に保持された複数のテストデータTPのうち、変数の状態が遷移(変化)するテストデータTPを含む状態遷移情報7aを状態遷移DB134に記憶する。変数は、予め状態定義DB132に登録された変数である。言い換えると、変数の変数名は、状態定義DB132に存在する。変数の状態が遷移(変化)するとは、変数の値が変化することである。状態遷移情報7aは、変数の変数名4v、テストパターンTPの入力時の当該変数の状態を特定する事前状態名5a、遷移条件となるテストパターンTP、及び変化後の状態を特定する事後状態名6aを含んでいる。
遷移制御では、テスト制御部142は、生成した状態遷移DB134から状態遷移情報7bを1つ読み出し、読み出した状態遷移情報7bの遷移条件列TCをテスト対象9に入力する。状態遷移DB134から読み出された状態遷移情報7bは、記憶部130に記憶される。生成処理と遷移制御における状態遷移情報を区別するために、遷移制御では状態遷移情報7bというものとする。状態遷移情報7bは、変数名4v、事前状態名5a、遷移条件列TC、及び事後状態名6aを含む。ここで、遷移条件列TCは、生成処理において、状態が変化したときのテストパターンTP(遷移条件)の列に相当する。遷移条件列TCは、遷移制御により状態を遡るごとに累積されたテストパターンTP(遷移条件)に相当し、1以上のテストパターンTP(遷移条件)を示す。
状態判定部143は、状態遷移DB134の生成処理及びテスト対象状態への遷移制御において、テスト対象9における変数の状態を監視し、状態変化を検知した際の事後状態を記憶部130に記憶する。
生成処理では、状態判定部143は、状態遷移情報7aに事後状態名6aを記憶する。遷移制御では、状態判定部143は、記憶部130に事後状態を示す遷移後状態名6bを記憶する。生成処理及び遷移制御において、状態判定部143は、状態定義DB132を参照して、変数の値に対応する状態名を取得して、事後状態名6a又は遷移後状態名6bとして記憶部130に出力する。
遷移制御では、更に、状態判定部143は、テスト制御部142が記憶した状態遷移情報7bの事後状態名6aと、遷移後状態名6bとを照合した結果を示す判定結果7cを記憶部130に記憶する。事後状態名6aと、遷移後状態名6bとが不一致の場合、エラーを示す判定結果7cが記憶される。一致した場合、照合成功を示す判定結果7cが記憶される。
テスト制御部142は、状態判定部143からの通知に応じて、判定結果7cに応じた処理を行う。一例として、判定結果7cがエラーを示す場合に、表示装置15にエラーを通知するメッセージを表示すればよい。
テスト対象9は、本実施例における情報処理装置100によりテストされる仕様書のないソフトウェアである。図3では、テスト対象9は、本実施例におけるテストパターン生成部141と、テスト制御部142と、状態判定部143とを有する情報処理装置100に実装された構成例を示すが、このような構成例に限定されない。テスト対象9は、別の情報処理装置に実装されていてもよい。その場合、本実施例における情報処理装置100は、ネットワークを介してテスト対象9にアクセスし、本実施例における生成処理及び遷移制御が行われればよい。
ランダムテストパターンDB131は、状態遷移DB134を生成する際に用いられるデータベースであり、複数のテストパターンTPを保持する。テストパターン生成部141によって生成されたテストパターンTPがランダムテストパターンDB131に記憶される。生成処理において、テスト制御部142によって、テスト対象9に入力するテストパターンTPがランダムテストパターンDB131から無作為に選択される。
状態定義DB132は、技術者等のユーザにより予め作成される、テスト対象9において、状態が変化する変数を特定する変数名と、当該変数の状態を特定する状態名とを対応付けたデータベースである。ユーザは、テスト対象9のソースコードに含まれる定義文の記述から、状態の変化する変数ごとに、当該変数に対して定義された状態を特定することで、状態定義DB132を作成する。状態定義DB132の作成例は、図4で詳述する。
テスト対象状態DB133は、ユーザによって予め作成されたデータベースであり、事後状態名が指定されている。テスト対象状態DB133では、状態定義DB132に登録された状態名のうち初期状態を示す状態名以外の1又は複数の状態名が、テストする事後状態名として指定されている。
状態遷移DB134は、生成処理により、変数に対して得られた状態遷移情報7aを記憶したデータベースである。状態遷移DB134において、1つの状態遷移情報7aは、1つのレコードに相当する。遷移制御において、状態遷移DB134に記憶された複数の状態遷移情報7aから選択された情報は、上述したように状態遷移情報7bとして説明する。
図4は、状態定義DBの作成例を説明するための図である。図4において、テスト対象9のソースコードのうち、定義文の一部をコード4fで例示している。コード4fでは、定義部分4gと、定義部分4hとを例示している。
定義部分4gは、列挙型の記述例を示し、STATE_A、STATE_B、STATE_C、STATE_D、STATE_E、及びSTATE_Fにより6状態を表し、それぞれに、「0」、「1」、「2」、「3」、「4」、及び「5」の値が与えられている。これらの状態が設定される変数名は、「state」であり、初期値としてSTATE_A(=0)であることが定義されている。
定義部分4hは、define文により定数を定義した記述例を示し、STATE_X、STATE_Y、及びSTATE_Zの3状態に対し、それぞれ「0x00」、「0x01」、及び「0x02」の定数が設定されている。更に、これら3状態の1つを示す変数名は、「state_XXX」であり、STATE_X(=0x00)により初期化されている。
技術者等のユーザは、このような状態を定義した記述を見つけ、状態定義D132を作成する。状態定義D132は、変数名、状態名、値、初期状態等の項目を有する。変数名は、コード4fから得られた、状態を示す変数の識別名が設定される。状態名は、コード4fから得られた状態名が示される。値は、状態名に対して定義された値が設定される。初期状態は、複数の状態名のうち初期状態を示す状態名に対して「TRUE」が設定され、初期状態以外の状態を示す状態名には「FALSE」が設定される。
このデータ例では、変数名として、「state」又は「state_XXX」のいずれかが設定される。状態名「state」を示すレコードは6レコード存在する。6レコードそれぞれの状態名及び値に、状態A及び「0」、状態B及び「1」、状態C及び「2」、状態D及び「3」、状態E及び「4」、そして、状態F及び「5」の1つが他レコードとにおいて重複なく設定される。状態A、状態B、状態C、状態D、状態E、及び状態Fは、それぞれ、コード4fの定義部分4gにおけるSTATE_A、STATE_B、STATE_C、STATE_D、STATE_E、及びSTATE_Fに相当する。状態名として、定義部分4gで定義されている識別名をそのまま用いてもよい。初期状態では、状態名「state」に対する6状態のうち、状態名「A」に対応付けて「TRUE」が設定される。それ以外の状態名「B」、「C」、「D」、「E」、及び「F」には、「FALSE」が設定される。
また、状態名「state_XXX」を示すレコードは3レコード存在する。3レコードそれぞれの状態名及び値に、状態X及び「0」、状態Y及び「1」、そして状態Z及び「2」の1つが他レコードとにおいて重複なく設定される。状態X、状態Y、及び状態Zは、それぞれ、コード4fの定義部分4hにおけるSTATE_X、STATE_Y、及びSTATE_Zに相当する。状態名として、定義部分4hで定義されている識別名をそのまま用いてもよい。初期状態では、状態名「state_XXX」に対する3状態のうち、状態名「X」に対応付けて「TRUE」が設定される。それ以外の状態名「Y」及び「Z」には、「FALSE」が設定される。
次に、ランダムテストパターンDB131と状態定義DB132とを用いて状態遷移DB134を生成する生成処理の概要について説明する。図5は、生成処理の概要を説明するための図である。図5において、生成処理の開始時に、テスト制御部142は、テストパターン生成部141に、テストパターンTPを生成させ、ランダムテストパターンDB131に登録させる(ステップS11)。
テスト制御部142は、ランダムテストパターンDB131から未選択のテストパターンTPを1つ取得し(ステップS12)、取得したテストパターンTPをテスト対象9に入力する(ステップS13)。
生成処理では、テスト対象9の起動前に、状態遷移情報7aを初期化しておくことが好ましい。一例として、状態遷移情報7aに変数名4vと事前状態名5aとを設定し、テストパターンTPと事後状態名6aとを空に設定する。具体的には、状態遷移情報7aにおいて、状態定義DB132に登録されている変数名が変数名4vに設定される。また、状態定義DB132において変数名4vに対して初期状態「TRUE」に対応付けられた状態名が事前状態名5aに設定される。
状態判定部143は、テスト対象9の動作中、変数の値が変化したか否かを所定間隔で確認する(ステップS14)。変数の値の変化を検知すると、変数の状態が遷移したとみなし、状態判定部143は、状態定義DB132を参照して、変数名4vと検知した値の組み合せに対応付けられた状態名を取得する(ステップS15)。取得した状態名は、状態遷移情報7aの事後状態名6aに設定される。そして、状態判定部143は、テスト制御部142に対して、状態遷移情報7aの登録要求を行う(ステップS16)。状態遷移情報7aの登録要求に応じて、テスト制御部142は、状態遷移情報7aを状態遷移DB134に登録する(ステップS17)。
テスト制御部142は、処理中の事前状態と組み合わされる事後状態を全て検出したか否かについて、状態定義DB132と状態遷移DB134とを参照することにより判定する(ステップS18)。テスト制御部142は、事前状態ごとに、処理中の事前状態と組み合わされる事後状態を全て検出した場合、又は、タイムアウトした場合、処理中の事前状態に対して事後状態を検出することで、状態遷移DB134を生成する生成処理を終了する。
本実施例における生成処理の過程を、状態遷移DB134に基づく事前状態と事後状態とを対応付けたマトリクスを用いて説明する。図6及び図7は、生成処理の過程を説明するための図である。変数名「state」の状態遷移について、時系列に図6(A)、図6(B)、図7(A)、及び図7(B)の順に説明する。
図6(A)では、生成処理の開始時におけるマトリクス2mtの例を示す図である。マトリクスの行と列は、状態定義DB132から得た状態名を示す。マトリクス2mtでは、列方向には事前状態として状態名を示し、行方向には事後状態として状態名が示される。本実施例では、状態定義DB132を用意しておくことで、生成処理の開始時には、検出する状態を把握することが可能である。
この例では、状態定義DB132に存在する、変数名「state」に対応付けられた、状態A、状態B、状態C、状態D、状態E、及び状態Fが、行及び列に設定され初期化されたマトリクス2mtを示す。マトリクス2mtは、状態定義DB132に基づいて状態を示したものである。初期状態(状態A)が最初に示されるが、状態B〜Fは、必ずしも時系列順でなくてもよい。
図6(B)のマトリクス2mtでは、事前状態に状態A(初期状態)を設定して、事後状態を検出した結果を示している。テスト制御部142が、値「b」をテスト対象9に入力したときに、状態Bを検出したことが示されている。値「b」は遷移条件となる。また、状態C、状態D、状態E、及び状態Fに対応付けて示された値「なし」は、これらの状態は検出されなかったことが示されている。一例として、状態C、状態D、状態E、及び状態Fを検出することなくタイムアウトになった場合には、状態遷移DB134に存在しないため、マトリクス2mtでは「なし」が示される。
図7(A)のマトリクス2mtでは、変数「state」を状態Bへと遷移させ、事後状態を検出した結果を示している。変数「state」について、事前状態が状態Aのときに、遷移条件として値「b」をテスト対象9に入力することで状態Bへと遷移させる。状態Bへの遷移後、無作為に選択した値をテスト対象9に入力することで事後状態を検出する。この例では、値「c」のときに状態Cが検出され、値「d」のときに状態Dが検出されたことが示されている。また、状態A、状態E、及び状態Fの検出はなかった。
上述したように、検出された状態へとテスト対象9を遷移させた後、無作為に選択した値をテスト対象9に入力して事後状態を検出することで、状態遷移DB134を更新される。その結果、図7(B)に示す結果を得る。
図7(B)のマトリクス2mtでは、事前状態が状態Cのとき、いずれの状態へも遷移しなかったことが示されている。事前状態が状態Dのとき状態Eのみへと遷移し、また、事前状態が状態Eのとき状態Fのみへと遷移したことが示されている。更に、事前状態が状態Fのときにも、いずれの状態へも遷移しなかったことが示されている。このような結果から、変数「state」は、状態C又は状態Fに遷移した時に最終状態となることが分かる。
図8は、本実施例における生成処理により得られた変数「state」の状態遷移の流れを説明するための図である。図8(A)は、図7(B)のマトリクス2mtに基づいて、状態が遷移した事前状態に対して、遷移条件と事後状態とを対応付けたテーブルTBである。テーブルTBには、状態が遷移しなかった事前状態について対応付けは存在しない。つまり、状態Dと状態Fに関してそれぞれを事前状態に示すデータは省略される。
図8(A)のテーブルTBにおいて、事前状態及び遷移条件に設定なく、事後状態に設定された状態Aは、初期状態であることを表す。事前状態が状態Aのとき、遷移条件「b」がテスト対象9に入力されると、変数「state」は、状態Aから状態Bへと遷移することが示されている。
事前状態が状態Bのとき、遷移条件「c」がテスト対象9に入力されると、変数「state」は、状態Bから状態Cへと遷移することが示されている。また、遷移条件「d」がテスト対象9に入力されると、変数「state」は、状態Bから状態Dへと遷移することが示されている。即ち、変数「state」は、状態Bのとき、状態C又は状態Dへと遷移する。
事前状態が状態Cのとき、遷移条件「e」がテスト対象9に入力されると、変数「state」は、状態Eへと遷移することが示されている。事前状態が状態Eのとき、遷移条件「f」がテスト対象9に入力されると、変数「state」は、状態Fへと遷移することが示されている。
このようなテーブルTBに基づいて、図8(B)に示すような分岐図により変数「state」の状態遷移の流れを表すことが可能である。図8(B)を参照すると、状態Aのとき、入力が遷移条件「b」と一致する場合、変数「state」は状態Bへと遷移する。
状態Bへの遷移後、入力が遷移条件「c」と一致する場合、変数「state」は状態Cへと遷移する。状態Cにおいて、入力が遷移条件「e」と一致する場合、変数「state」は状態Eへと遷移する。更に、状態Eにおいて、入力が遷移条件「e」と一致する場合、変数「state」は状態Fへと遷移する。一方、状態Bへの遷移後、入力が遷移条件「d」と一致する場合、変数「state」は状態Dへと遷移する。
図6から図8では、変数が「state」の場合で説明したが、本実施例における生成処理において、変数を「state_XXX」として状態遷移を特定することも可能である。
図9は、状態遷移DBのデータ例を示す図である。図9において、状態遷移DB134は、変数「state」及び変数「state_XXX」のそれぞれの状態遷移を記憶したデータ例を示している。図9のデータ例では、変数「state」に係る図8(B)に示すマトリクス2mtでの生成処理の状態に相当する。
状態遷移DB134は、変数名、事後状態名、事前状態名、遷移条件等の項目を有する。状態遷移DB134には、それぞれの変数について、状態が遷移したときの事後状態名、事前状態名、遷移条件等が記憶されている。状態定義DB132のある状態から他の状態への変化の検知に応じて、状態遷移DB134へとデータが記憶される。例えば、図6(A)の生成処理の開始時には、状態変化は検知されていないため、変数「state」のデータは状態遷移DB134に存在しない。
変数名は、状態定義DB132で定義された変数名の1つを示す。事後状態名は、遷移後の状態名を示す。事前状態名は、遷移する直前の状態名を示す。遷移条件は、生成処理において、状態が遷移したときのテスト対象9に入力された値を示す。
状態遷移DB134には、変数名に「state」を示す5レコードが存在し、変数名に「state_XXX」を示す3レコードが存在する。変数「state」については、事後状態名、事前状態名、及び遷移条件のそれぞれの値は、図8(A)で説明した内容に基づくため、説明を省略する。
変数「state_XXX」について、事前状態が状態Xのときに、入力が遷移条件「y」を満たすと、状態Yに遷移する。また、事前状態が状態Yのときに、入力が遷移条件「z」を満たすと、状態Zに遷移する。更に、事前状態が状態Zのときに、入力が遷移条件「x」を満たすと、状態Xに遷移する。このことから、変数「state_XXX」は、状態X−>状態Y−>状態Zを経て状態Xに戻ることを繰り返すと考えられる。
図10は、遷移制御の概要を説明するための図である。図10において、テスト対象状態DB133には、予めテストする1以上の変数名と、当該変数名を持つ変数の事後状態名が記憶されている。変数名と事後状態名とは、状態遷移DB134に存在する情報である。一例として、図8及び図9に基づき、変数名「state」と事後状態名「D」とが対応付けられたレコードと、変数名「state」と事後状態名「F」とが対応付けられたレコードなどが記憶されている。
遷移制御が開始されると、テスト制御部142は、テスト対象状態DB133から1レコードを読み込んで変数名と事後状態名とを取得する(ステップS20)。取得した事後状態名によりテスト対象状態が特定される。テスト制御部142は、状態遷移DB134から、取得した事後状態名に対応付けられた事前状態名と遷移条件とを取得する(ステップS21)。
遷移制御では、テスト対象9の起動前に、状態遷移情報7bを初期化しておくことが好ましい。状態遷移情報7bにおいて、テスト対象状態DB133から取得した変数名と事後状態名とが、変数名4vと事後状態名6aのそれぞれに設定される。また、状態遷移DB134から取得した事前状態名と遷移条件とが、事前状態名5aと遷移条件列TCのそれぞれに設定される。
ステップS21では、テスト制御部142は、事後状態名6aが初期状態となるまで状態を遡りながら、状態遷移DB134から順に遷移条件を取得し、遷移条件列TCに蓄積する。具体的には、事後状態名6aを事前状態名5aで置き換えて、置き換え後の事後状態名6aを用いて状態遷移DB134から遷移条件を取得する処理を繰り返せばよい。
テスト対象状態から遡り初期状態となるまでに蓄積された遷移条件列TCを用いて、テスト制御部142は、蓄積した順とは逆順に遷移条件を1つずつ、テスト対象9へ入力する(ステップS22)。
状態判定部143は、テスト対象9の動作中、変数の値が変化したか否かを所定間隔で確認する(ステップS23)。変数の値の変化を検知すると、即ち、変数の状態遷移を検知すると、状態定義DB132を参照して、変数名4vと検知した値の組み合せに対応付けられた状態名を取得する(ステップS24)。状態判定部143は、取得した状態名を示す遷移後状態名6bを記憶部130に記憶する。
他方で、テスト制御部142は、遷移条件列TCに含まれる遷移条件を全て終了すると、状態判定部143に遷移処理の終了を通知する(ステップS25)。テスト制御部142からの終了通知を受信すると、状態判定部143は、遷移後状態名6bが状態遷移情報7bの事後状態名6aに一致するか否かを判定し、判定結果7cをテスト制御部142に通知する(ステップS26)。
テスト制御部142は、判定結果7cが一致を示す場合には、テスト対象状態DB133を参照して次のテスト対象の状態名を取得し、上記同様の制御処理を繰り返す。一方、判定結果7cがエラー(不一致)を示す場合、テスト制御部142は、エラーメッセージを表示装置15に表示させる。エラーメッセージには、変数名4vと事後状態名6aとを含むようにしてもよい。
テスト制御部142は、テスト対象状態DB133の全ての状態名に対して遷移制御を完了すると、更に遷移させるためテストパターン生成部141に生成要求を行う(ステップS10)。つまり、図5で説明した生成処理へと戻る。この生成処理では、マトリクス2mtにおける次の事前状態から更に遷移させ、状態遷移DB134が更新される。
本実施例における情報処理装置100では、上述した生成処理と遷移制御とを組み合わせたテスト実行処理を行う。図11は、本実施例におけるテスト実行処理の概要を説明するための図である。
図11において、テスト処理部140は、ユーザによるソースコードから状態定義DB132を作成する処理を支援する(ステップS211)。テスト処理部140は、図12に示すような状態定義作成画面G90を表示装置15に表示させて、ユーザから状態定義DB132の作成に用いるデータを取得する。テスト処理部140は、ユーザから取得したデータを用いて状態定義DB132を記憶部130に作成する。
テスト処理部140は、全状態数Nと、テスト済み状態数Xとを初期化する(ステップS212)。テスト処理部140は、全状態数Nに状態遷移DB134に登録されている変数の状態の総数を設定し、状態数Xに遷移制御によりテスト済みとなった事前状態の数を設定する。また、テスト処理部140は、状態遷移DB134に存在する変数名を取得する。取得した変数名で識別される変数の状態が監視対象となる。
テスト処理部140は、ランダムテスト済みの状態数Xをチェックする(ステップS213)。テスト処理部140は、全状態数Nと、遷移制御によりテスト済みとなった状態数Xとを比較する。初回の処理では、テスト対象状態DB133にレコードは存在しないため、状態数Xは0を示す。初回以降は、状態遷移DB134に新たに追加された変数名と事前状態名とが記憶される。
状態数Xが0を示す場合(X=0)、即ち、未だテストされていない場合、テスト処理部140は、事前状態を初期状態としてランダムテストにより状態遷移DB134を作成し(ステップS215)、状態数Xを1インクリメントしてステップS213へと戻る。
状態数Xが0より大きくかつ全状態数Nより小さい場合(0<X<N)、テスト処理部140は、作成した状態遷移DB134を用いて初期状態から遷移した事後状態をテスト対象状態に設定して遷移制御を行う(ステップS214)。テスト対象状態へ遷移すると、テスト処理部140は、テスト対象状態を事前状態としたランダムテストによる生成処理を行い(ステップS215)。すなわち、マトリクス2mtにおいて、次の行の事前状態に対して事後状態への遷移がテストされる。その後、テスト処理部140は、状態数Xを1インクリメントしてステップS213へと戻り、上記同様の処理を行う。
また、状態Xが全状態数Nと一致する場合(X=N)、図13のステップ310へと進み、ユーザによる簡単なリバースエンジニアリングが行われる。テスト処理部140は、状態遷移DB134に基づくテスト結果を出力してもよい。テスト結果の出力例として、図7(A)又は図7(B)に示したようなマトリクス2mtを示すテスト結果画面G91を表示装置15に出力する。
ユーザは、マトリクス2mtに対して、遷移条件を入力することができる。遷移条件を入力後、ユーザが再実行を指示すると、ユーザにより入力された遷移条件により遷移する事後状態名と遷移直前の事前状態名とが関連付けられ、状態遷移DB134に新たなレコードが追加される。本実施例における情報処理装置100を用いた場合の、ユーザによるリバースエンジニアリングの例については、図13で説明する。
図12は、状態定義作成画面の例を示す図である。図12において、状態定義作成画面G90は、ユーザがテスト対象9のソースコードに含まれる定義文の記述を解析することにより得られた情報を収集するための画面である。状態定義作成画面G90は、変数名入力欄90a、状態入力欄90b、行追加ボタン90c、登録ボタン90d、テスト開始ボタン90e等を有する。
変数名入力欄90aは、ソースコードの定義文で定義されている状態が変化する変数名を入力する領域である。状態入力欄90bは、変数名入力欄90aに入力した変数名に関連付ける状態名、値、及び初期状態を入力する領域である。
行追加ボタン90cは、状態入力欄90bの行を追加するためのボタンである。登録ボタン90dは、状態定義DB132に変数名に対応付けた状態名、値、及び初期状態を示すレコードを新たに登録するためのボタンである。テスト開始ボタン90eは、作成された状態定義DB132を用いてランダムテストを実行するためのボタンである。
一例として、ユーザが、変数名入力欄90aに変数名として「state」を入力したのち、状態入力欄90bにおいて、状態名に「A」、値に「0」、及び初期状態に「TRUE」を入力し、更に、状態名に「B」、値に「1」及び初期状態に「FALSE」を入力する。これらの入力後、ユーザが登録ボタン90dを選択すると、状態定義DB132に、「state」、「A」、「0」、及び「TRUE」の値を含むレコードと、「state」、「B」、「1」、及び「FALSE」の値を含むレコードとが追加される。追加する際に、レコードの重複をチェックするようにする。ユーザのテスト開始ボタン90eの選択により、テスト処理部140は、ステップS212から処理を行う。
上述したように、本実施例における生成処理及び遷移制御の結果、状態遷移DB134の更新が収束すると、ユーザは、テスト結果に基づいて、リバースエンジニアリングを行う。ユーザは、状態遷移DB134を更に補充し、テストパターンを作成して、テストを実行する。テスト結果は、一例として、マトリクス2mtなどで表される。
図13は、本実施例により得られたテスト結果を用いたリバースエンジニアリングの方法例を説明するためのフローチャート図である。図13において、ユーザはテスト結果を確認する(ステップS310)。一例として、ユーザは、図14に示すように、表示装置15にテスト結果画面G91を表示してマトリクス2mtの内容を確認する。
そして、ユーザは、変数ごとに遷移の仕方に特徴があるか否かを判断する(ステップS311)。特徴とは、テスト処理部140により結果が出力されていない箇所等に相当する。ユーザは、マトリクス2mtに結果が未出力の行の存在を確認する。
特徴があると判断した場合(ステップS311のYES)ユーザは、特徴から状態遷移を網羅できていない箇所を特定し、限定的なリバースエンジニアリングを行う(ステップS312)。ユーザは、マトリクス2mt内の結果が未出力の行に関して、テスト対象9のソースコードの解析、テスト対象9の実行時に取得したログの解析等のリバースエンジニアリングを行う。
ユーザは、リバースエンジニアリングにより得られた、マトリクス2mtにおいて不足している遷移条件を与えたレコードを状態遷移DB134に追加して、テストを再実行する(ステップS313)。このテストの再実行の指示により、テスト処理部140において、追加したレコード数が全状態数Nに加算される。全状態数Nの更新後、図11のステップS213から上述した同様の処理が行われる。
一方、特徴がないと判断した場合(ステップS311のNO)、ユーザは、カバレッジ計測で不十分な箇所をリバースエンジニアリングする(ステップS314)。本実施例を適用した場合、カバレッジ計測は高い割合を示すためテストが不十分な箇所は小部分である。つまり、リバースエンジニアリングの作業量は大幅に削減される。
ユーザは、リバースエンジニアリングにより得られた状態遷移をテストするテストパターンを手動で作成し(ステップS315)、テスト対象9をテストする(ステップS316)。
図14は、図13のステップS310で表示されるテスト結果画面の例を示す図である。図14に示すテスト結果画面G91は、マトリクス2mt、条件追加ボタン91j等を有する。
テスト結果画面G91では、状態遷移DB134に基づいて、事前状態から事後状態への遷移を遷移条件で関連付けたマトリクス2mtが表示される。本実施例におけるテスト処理部140により特定された遷移条件が、マトリクス2mtのセル内に示されている。
このマトリクス2mtを参照すると、結果が設定されていない未出力セル2kが存在する。未出力セル2kから、テスト対象9を状態Eと状態Fに遷移させることなくテストが終了したことを示している。
このことから、ユーザは、状態E又は状態Fへの状態遷移に複雑な遷移条件があると推測できる。ユーザは、状態E及び状態Fへの遷移のうち複雑な遷移条件が存在する箇所をリバースエンジニアリングにより解析する。ユーザは、解析により得られた遷移条件を追加するため、条件追加ボタン91jを選択する。条件追加ボタン91jの選択に応じて、図15に示すような条件追加画面G92が表示装置15に表示される。
図15は、条件追加画面の例を示す図である。図15において、条件追加画面G92は、変数名入力欄92a、状態入力欄92b、登録ボタン92d、テスト再実行ボタン92e等を有する。
変数名入力欄92aは、状態定義DB132に登録済みの変数名を入力する領域である。変数名入力欄92aでは、状態定義DB132に登録済みの変数名の一覧から選択可能とする構成であってもよい。状態入力欄92bは、変数名入力欄90aに入力した変数名に関連付ける事前状態名、事後状態名、及び遷移条件を入力する領域である。
登録ボタン92dは、状態遷移DB134に変数名に対応付けた事前状態名、事後状態名、及び遷移条件を示すレコードを新たに登録するためのボタンである。テスト再実行ボタン92eは、更新された状態遷移DB134を用いてテストを実行するためのボタンである。
一例として、ユーザは、「事前状態D、事後状態E、遷移条件e」がネックになっていると考え、少なくとも遷移条件eを設定することで、ランダムテストを継続して行え、結果画面2pを満足できる可能性があると考える。そこで、ユーザは、状態入力欄92bにパターンを入力し、登録ボタン92dを選択することで、状態遷移DB135に状態遷移に係るデータを登録する。この例では、状態入力欄92bにおいて、事前状態名に「D」、事後状態名に「E」、及び遷移条件に「e」が入力され、更に、事前状態名に「E」、事後状態名に「F」、及び遷移条件に「f」が入力され、それぞれ登録されたとする。そして、ユーザのテスト再実行ボタン92eの選択により、テスト処理部140は、ステップS213から処理が行われる。
再実行により更新された結果は、図16に示すようなテスト結果画面G91で示される。図16は、再実行後に表示されるテスト結果画面の例を示す図である。図16に示すテスト結果画面G91では、事前状態「D」のときに事後状態「E」に遷移する遷移条件が「なし」から「e」へと置き換えられている。
また、図14の未出力セル2kの全てに遷移条件が設定されている。具体的には、事前状態「E」の場合、事後状態「A」、「B」、「C」、及び「D」への遷移条件には「なし」が設定されている。事前状態「E」から事後状態「F」への遷移条件には「f」が設定されている。更に、事前状態「F」から事後状態「A」、「B」、「C」、「D」、及び「E」への遷移条件には「なし」が設定されている。このことから、変数名「state」については、事前状態「F」から更なる遷移は発生しない可能性がある。
このような結果を確認後、ユーザによりテスト結果画面G91が終了すると、テスト処理部140によるテスト処理が終了する。
上述したように、変数の状態が変化した時の、事前状態、事後状態、及び遷移条件を示す状態遷移DB134を生成及び更新しながら、最新の状態遷移DB134に基づいて、初期状態を含む特定状態への遷移が行われるか否かをテストすることができる。また、変数が特定状態へと遷移した後も、特定状態後の遷移を継続して確認できる。
更に、ユーザは、結果を確認しながら、リバースエンジニアリングを行う範囲を特定できるため、効率的に作業を行える。
図17は、状態遷移DBの生成処理を説明するためのフローチャート図である。図17において、テストパターン生成部141は、無作為にテストパターンを生成して、生成したテストパターンをランダムテストパターンDB131に記憶する(ステップS411)。
テスト制御部142は、ランダムテストパターンDB131からテストパターンを1つ取得して(ステップS412)、テストパターンをテスト対象9に入力する(ステップS413)。状態判定部143は、変数の状態を確認する(ステップS414)。状態判定部143は、変数の値を取得する。
そして、状態判定部143は、状態定義DB132のいずれかの状態に遷移したか否かを判断する(ステップS415)。いずれの状態にも遷移していない場合(ステップS415のNO)、状態判定部143は、ステップS411へと戻り、上述した同様の処理を繰り返す。
一方、いずれかの状態に遷移した場合(ステップS415のYES)、状態判定部143からの登録要求に応じて、テスト制御部142は、使用したテストパターン、事前状態、及び事後状態を、変数の変数名に対応付けて状態遷移DB134に登録する(ステップS416)。
テスト制御部142は、状態定義DB132で示される変数の状態を全て検出したか否かを判断する(ステップS417)。全ての状態を検出した場合(ステップS417のYES)、テスト処理部140は、状態遷移DB134の生成処理を終了する。マトリクス2mtにおいて、各事前状態に対して処理済みであることが、変数の状態を全て検出したことに相当する。
状態定義DB132に存在する変数の変数名に対応付けられた状態名が全て、状態遷移DB134に存在するか否かが確認される。未検出の状態が存在する場合(ステップS417のNO)、テスト処理部140は、タイムアウトか否かを判断する(ステップS418)。タイムアウトした場合(ステップS418のYES)、テスト制御部142は、この状態遷移DB134の生成処理を終了する。一方、タイムアウトしていない場合(ステップS418のNO)、テスト制御部142は、ステップS411へと戻り、上述した同様の処理を繰り返す。
図18は、変数の遷移制御を説明するためのフローチャート図である。図18において、テスト制御部142は、テスト対象状態DB133からテスト対象状態名(特定状態名)を取得する(ステップS511)。
テスト制御部142は、状態遷移DB134からテスト対象状態名が事後状態名として記憶されている事前状態名と遷移条件とを取得する(ステップS512)。そして、テスト制御部142は、テスト対象状態名が初期状態を示すか否かを判断する(ステップS153)。テスト対象状態名が初期状態を示す場合(ステップS513のYES)、テスト制御部142は、ステップS519へと進む。
一方、テスト対象状態名が初期状態を示さない場合(ステップS513のNO)、テスト制御部142は、遷移条件をスタックに保持し(ステップS514)、ステップS512で取得した事前状態名が初期状態を示すか否かを判断する(ステップS515)。図3の状態遷移情報7bにおける遷移条件列TCがスタックに相当する。
取得した事前状態名が初期状態を示さない場合(ステップS515のNO)、テスト制御部142は、事前状態名をテスト対象状態名に設定して(ステップS516)、ステップS512へと戻り、上述した処理を繰り返すことで状態を遡り、初期状態までの遷移条件を順にスタックに記憶していく。
状態を遡ることで、ステップS512で取得した事前状態名が初期状態を示す場合(ステップS515のYES)、テスト制御部142は、スタックから最後に記憶された遷移条件から順に1つ取り出して(ステップS517)、テスト対象9に取得した遷移条件をテスト対象9に入力する(ステップS518)。
テスト制御部142は、遷移条件のテスト対象9への入力後、スタックが空になったか否かを判断する(ステップS519)。スタックに未だ遷移条件が残っている場合(ステップS519のNO)、テスト制御部142は、ステップS517へと戻り上述同様の処理を説明する。
一方、スタックに遷移条件が残っていない場合(ステップS519のYES)、テスト制御部142は、状態遷移が終了したと判断し、状態判定部143にテスト対象9の状態を確認させる。状態判定部143は、テスト対象9の現在の状態を取得する(ステップS143)。テスト対象9の現在の状態を示す遷移後状態名6bが記憶部130に記憶される。
そして、状態判定部143は、取得したテスト対象9の現在の状態がテスト対象状態名と一致するか否かを判断する(ステップS521)。テスト対象9の現在の状態がテスト対象状態名と一致しない場合(ステップS521のNO)、状態判定部143は、判定結果7cとしてエラーを出力する(ステップS522)。
一方、テスト対象9の現在の状態がテスト対象状態名(特定状態名)と一致する場合(ステップS521のYES)、状態判定部143は、判定結果7cとして「正常遷移」を示すデータを出力する。「正常遷移」を示す判定結果7cにより、テスト制御部142は、遷移制御を終了する。
上述したように、本実施例では、ユーザから、ソースコードの定義文から、状態が変化する変数の変数名と、当該変数が遷移し得る状態の状態名と、該状態の値と、初期状態であるか否かの情報とを取得して、状態定義DB132が生成される。
情報処理装置100に状態定義DB132を用意することで、テスト対象状態(特定状態)を予め知り得ることが可能となる。すなわち、既存のランダムテストでは、事後状態が不明のまま行われるのに対して、本実施例では、予め事後状態を明確にしておくことができるため、テストする事後状態への遷移を漏れなくテストすることが可能である。
本実施例における情報処理装置100では、状態が遷移するごとに、遷移後の状態を事前状態として、予め得られた状態のいずれかへ遷移する遷移条件をランダムテストにより取得して状態遷移DB134を更新する。本実施例では、状態定義DB132に存在する有限数の状態に対してランダムテストを行えばよいため、効率的なランダムテストを実現する。
また、ユーザのリバースエンジニアリングにおいても、情報処理装置100により出力されたマトリクス2mtを確認することで、リバースエンジニアリングを行う範囲を特定することが容易となる。遷移条件を特定するためのリバースエンジニアリングの作業量を大幅に削減できる。
本実施例では、ソフトウェア開発規模の大きなプログラム(テスト対象9)に対するテストを漏れなく実施可能とし、かつテストを効率的に行うことができる。OSS(Open Source Software)、開発当初の資料はもはや存在しない過去資産などの、内部の動作を表す仕様書の無いプログラムであったとしても、簡易なリバースエンジニアリングで網羅的にテストを実施可能である。
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。
本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
実施例において、テストパターンがテストデータの一例である。また、テストパターン生成部141、テスト制御部142、及び状態判定部143による状態遷移DB134を生成する生成処理が生成部の一例であり、テスト制御部142及び状態判定部143による遷移制御が遷移制御部の一例である。
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
検証対象のプログラムのソースコードから得られた、状態が遷移する変数の変数名と、該変数の複数の状態それぞれの状態名と、を少なくとも記憶した状態定義データベースで特定される該変数の複数の状態において、該プログラムに対するランダムテストによって該変数の状態が変化したときの、変化前の事前状態を識別する第1の状態名と、該事前状態からの変化後の事後状態を識別する第2の状態名と、該プログラムへ入力したテストデータのうち該事前状態から該事後状態へと遷移させたテストデータとを対応付けた状態遷移データベースを参照し、該状態遷移データベースに記憶された前記テストデータを用いて、前記変数の状態を初期状態から前記事後状態まで遷移させ、
遷移させた前記事後状態において前記ランダムテストを行うことを繰り返す
処理をコンピュータに行わせる状態遷移テスト実行プログラム
(付記2)
前記コンピュータは、
前記状態遷移データベースに記憶された前記第1の状態名と前記第2の状態名の対応付けに基づいて、テスト対象の事後状態から前記初期状態まで遡り、遡るごとに新たな事後状態を識別する第2の状態名に対応付けられた前記テストデータを取得してスタックに保持し、
前記初期状態まで遡ったときに、前記スタックから、直前に格納した前記テストデータから順に前記プログラムに該テストデータを入力することで、前記変数の状態を前記特定の事後状態へと遷移させる付記1記載の状態遷移テスト実行プログラム。
(付記3)
前記コンピュータは、
前記変数の状態を変化させた前記テストデータを、前記状態遷移データベースにおける事前状態から事後状態へと遷移する遷移条件として前記状態遷移データベースに記憶し、
前記状態遷移データベースの前記遷移条件に対する変更に応じて、前記変数の状態を前記初期状態から変更された該遷移条件に対応付けられる事後状態まで遷移させ、遷移させた該事後状態において前記ランダムテストを行うことで、前記状態遷移データベースを更新する付記2記載の状態遷移テスト実行プログラム。
(付記4)
前記コンピュータは、
前記状態遷移データベースの前記遷移条件に対する変更を可能とする画面を表示装置に表示させる付記3記載の状態遷移テスト実行プログラム。
(付記5)
検証対象のプログラムのソースコードから得られた、状態が遷移する変数の変数名と、該変数の複数の状態それぞれの状態名と、を少なくとも記憶した状態定義データベースで特定される該変数の複数の状態において、該プログラムに対するランダムテストによって該変数の状態が変化したときの、変化前の事前状態を識別する第1の状態名と、該事前状態からの変化後の事後状態を識別する第2の状態名と、該プログラムへ入力したテストデータのうち該事前状態から該事後状態へと遷移させたテストデータとを対応付けた状態遷移データベースを参照し、該状態遷移データベースに記憶された前記テストデータを用いて、前記変数の状態を初期状態から前記事後状態まで遷移させ、
遷移させた前記事後状態において前記ランダムテストを行うことを繰り返す
処理をコンピュータが行う状態遷移テスト実行方法。
(付記6)
検証対象のプログラムのソースコードから得られた、状態が遷移する変数の変数名と、該変数の複数の状態それぞれの状態名と、を少なくとも記憶した状態定義データベースで特定される該変数の複数の状態において、該プログラムに対するランダムテストによって該変数の状態が変化したときの、変化前の事前状態を識別する第1の状態名と、該事前状態からの変化後の事後状態を識別する第2の状態名と、該プログラムへ入力したテストデータのうち該事前状態から該事後状態へと遷移させたテストデータとを対応付けた状態遷移データベースを参照し、該状態遷移データベースに記憶された前記テストデータを用いて、前記変数の状態を初期状態から前記事後状態まで遷移させ遷移制御部を有し、
遷移させた前記事後状態において前記ランダムテストを行うことを繰り返す情報処理装置。
4v 変数名
5a 事前状態名
6a 事後状態名
6b 遷移後状態名
7a 状態遷移情報
7b 状態遷移情報
9 テスト対象
TC 遷移条件列
TP テストパターン
100 情報処理装置
131 ランダムテストパターンDB
132 状態定義DB
133 テスト対象状態DB
134 状態遷移DB
140 テスト処理部
141 テストパターン生成部
142 テスト制御部
143 状態判定部

Claims (5)

  1. 検証対象のプログラムのソースコードから得られた、状態が遷移する変数の変数名と、該変数の複数の状態それぞれの状態名と、を少なくとも記憶した状態定義データベースで特定される該変数の複数の状態において、該プログラムに対するランダムテストによって該変数の状態が変化したときの、変化前の事前状態を識別する第1の状態名と、該事前状態からの変化後の事後状態を識別する第2の状態名と、該プログラムへ入力したテストデータのうち該事前状態から該事後状態へと遷移させたテストデータとを対応付けた状態遷移データベースを参照し、該状態遷移データベースに記憶された前記テストデータを用いて、前記変数の状態を初期状態から前記事後状態まで遷移させ、
    遷移させた前記事後状態において前記ランダムテストを行うことを繰り返す
    処理をコンピュータに行わせる状態遷移テスト実行プログラム。
  2. 前記コンピュータは、
    前記状態遷移データベースに記憶された前記第1の状態名と前記第2の状態名の対応付けに基づいて、テスト対象の事後状態から前記初期状態まで遡り、遡るごとに新たな事後状態を識別する第2の状態名に対応付けられた前記テストデータを取得してスタックに保持し、
    前記初期状態まで遡ったときに、前記スタックから直前に格納した前記テストデータから順に前記プログラムに該テストデータを入力することで、前記変数の状態を前記特定の事後状態へと遷移させる請求項1記載の状態遷移テスト実行プログラム。
  3. 前記コンピュータは、
    前記変数の状態を変化させた前記テストデータを、前記状態遷移データベースにおける事前状態から事後状態へと遷移する遷移条件として前記状態遷移データベースに記憶し、
    前記状態遷移データベースの前記遷移条件に対する変更に応じて、前記変数の状態を前記初期状態から変更された該遷移条件に対応付けられる事後状態まで遷移させ、遷移させた該事後状態において前記ランダムテストを行うことで、前記状態遷移データベースを更新する請求項2記載の状態遷移テスト実行プログラム。
  4. 検証対象のプログラムのソースコードから得られた、状態が遷移する変数の変数名と、該変数の複数の状態それぞれの状態名と、を少なくとも記憶した状態定義データベースで特定される該変数の複数の状態において、該プログラムに対するランダムテストによって該変数の状態が変化したときの、変化前の事前状態を識別する第1の状態名と、該事前状態からの変化後の事後状態を識別する第2の状態名と、該プログラムへ入力したテストデータのうち該事前状態から該事後状態へと遷移させたテストデータとを対応付けた状態遷移データベースを参照し、該状態遷移データベースに記憶された前記テストデータを用いて、前記変数の状態を初期状態から前記事後状態まで遷移させ、
    遷移させた前記事後状態において前記ランダムテストを行うことを繰り返す
    処理をコンピュータが行う状態遷移テスト実行方法。
  5. 検証対象のプログラムのソースコードから得られた、状態が遷移する変数の変数名と、該変数の複数の状態それぞれの状態名と、を少なくとも記憶した状態定義データベースで特定される該変数の複数の状態において、該プログラムに対するランダムテストによって該変数の状態が変化したときの、変化前の事前状態を識別する第1の状態名と、該事前状態からの変化後の事後状態を識別する第2の状態名と、該プログラムへ入力したテストデータのうち該事前状態から該事後状態へと遷移させたテストデータとを対応付けた状態遷移データベースを参照し、該状態遷移データベースに記憶された前記テストデータを用いて、前記変数の状態を初期状態から前記事後状態まで遷移させ遷移制御部を有し、
    遷移させた前記事後状態において前記ランダムテストを行うことを繰り返す情報処理装置。
JP2020106257A 2020-06-19 2020-06-19 状態遷移テスト実行プログラム、状態遷移テスト実行方法、及び情報処理装置 Pending JP2022001982A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020106257A JP2022001982A (ja) 2020-06-19 2020-06-19 状態遷移テスト実行プログラム、状態遷移テスト実行方法、及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020106257A JP2022001982A (ja) 2020-06-19 2020-06-19 状態遷移テスト実行プログラム、状態遷移テスト実行方法、及び情報処理装置

Publications (1)

Publication Number Publication Date
JP2022001982A true JP2022001982A (ja) 2022-01-06

Family

ID=79244715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020106257A Pending JP2022001982A (ja) 2020-06-19 2020-06-19 状態遷移テスト実行プログラム、状態遷移テスト実行方法、及び情報処理装置

Country Status (1)

Country Link
JP (1) JP2022001982A (ja)

Similar Documents

Publication Publication Date Title
EP2960799A1 (en) Defect localization in software integration tests
US9384117B2 (en) Machine and methods for evaluating failing software programs
CN109753289B (zh) 一种美术资源合并方法、装置、电子设备和存储介质
JP6245006B2 (ja) テストケース生成装置、方法、及びプログラム
CN113297060A (zh) 一种数据测试方法及其装置
CN112817869A (zh) 测试方法、装置、介质及电子设备
WO2021183382A1 (en) Graph-based method for inductive bug localization
CN109542496B (zh) 增量代码确定方法、装置及系统
CN109508203B (zh) 版本一致性确定方法、装置及系统
JP2022001982A (ja) 状態遷移テスト実行プログラム、状態遷移テスト実行方法、及び情報処理装置
CN111708712A (zh) 用户行为测试用例的生成方法、流量回放方法及电子设备
CN110674038A (zh) 一种对软件测试中错误信息的分类方法及装置
JP2013077124A (ja) ソフトウェアテストケース生成装置
CN116016270A (zh) 一种交换机测试管理方法、装置、电子设备和存储介质
JP2019194818A (ja) ソフトウェア不具合予測装置
CN114546749A (zh) 一种芯片随机测试用例回归方法、装置、设备及可读介质
CN109558153B (zh) 版本一致性确定方法、装置及系统
TWI650710B (zh) 測試流程的檢測方法
JP5595304B2 (ja) プログラム試験装置、プログラム試験装置のプログラム試験方法およびプログラム試験プログラム
CN107102938B (zh) 测试脚本的更新方法及装置
CN115757123B (zh) 一种测试用例生成方法、装置、设备及介质
JP4253056B2 (ja) テスト装置、テストケース評価装置、およびテスト結果解析装置
CN114860549B (zh) 埋点数据校验方法、装置、设备和存储介质
CN111858315B (zh) 一种基于版本管理的软件调试方法、装置、设备和介质
US20170220450A1 (en) Analytic method and analyzing apparatus

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20220107