(57)【特許請求の範囲】
【請求項１】
システムの画面定義情報を入力データとし、テストケース、テストプログラム及びテストデータを教師データとして学習させた学習モデルを記憶するモデル記憶部であって、前記画面定義情報には、画面に含まれる要素を特定する要素特定情報並びに前記要素に対する操作及び前記操作後の結果が含まれる、前記モデル記憶部と、
テスト対象のシステムの前記画面定義情報の入力を受け付ける画面定義入力部と、
前記画面定義情報を前記学習モデルに与えて前記テストケース、前記テストプログラム及び前記テストデータを生成する生成部と、
生成した前記テストケース、前記テストプログラム及び前記テストデータを出力する出力部と、
を備えることを特徴とするテスト支援システム。
【請求項２】
請求項１に記載のテスト支援システムであって、
前記生成部は、前記テストケース、前記テストプログラム及び前記テストデータを全て生成し、
前記テストケースに従って、前記テストプログラムを実行し、前記テスト対象のシステムが表示する画面に対して前記テストデータを与えてテストを実施し、前記テストの実施結果を検証するテスト実行部をさらに備えること、
を特徴とするテスト支援システム。
【請求項３】
請求項１に記載のテスト支援システムであって、
前記画面定義情報と、前記テストケース、前記テストプログラム及び前記テストデータの入力を受け付けて前記学習モデルを更新する学習部をさらに備えること、
を特徴とするテスト支援システム。
【請求項４】
システムの画面定義情報を入力データとし、テストケース、テストプログラム及びテストデータを教師データとして学習させた学習モデルを記憶するステップであって、前記画面定義情報には、画面に含まれる要素を特定する要素特定情報並びに前記要素に対する操作及び前記操作後の結果が含まれる、前記ステップと、
テスト対象のシステムの前記画面定義情報の入力を受け付けるステップと、
前記画面定義情報を前記学習モデルに与えて前記テストケース、前記テストプログラム及び前記テストデータを生成するステップと、
生成した前記テストケース、前記テストプログラム及び前記テストデータを出力するステップと、
をコンピュータが実行するテスト支援方法。
【請求項５】
システムの画面定義情報を入力データとし、テストケース、テストプログラム及びテストデータを教師データとして学習させた学習モデルを記憶するステップであって、前記画面定義情報には、画面に含まれる要素を特定する要素特定情報並びに前記要素に対する操作及び前記操作後の結果が含まれる、前記ステップと、
テスト対象のシステムの前記画面定義情報の入力を受け付けるステップと、
前記画面定義情報を前記学習モデルに与えて前記テストケース、前記テストプログラム及び前記テストデータを生成するステップと、
生成した前記テストケース、前記テストプログラム及び前記テストデータを出力するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト支援システム、テスト支援方法及びプログラムに関する。
【背景技術】
【０００２】
仕様書からテストケースを生成することが行われている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２０４０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の装置では、テスト対象のプログラムの設計書からテスト仕様書とテストデータが生成されるため、複数のプログラムを含む大規模なシステムに適用するのは困難であった。
【０００５】
本発明はこのような背景を鑑みてなされたものであり、ソフトウェアテストを容易に行うようにすることのできる技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するための本発明の主たる発明は、テスト支援システムであって、システムの画面定義情報を入力データとし、テストケース、テストプログラム及びテストデータの少なくともいずれかを教師データとして学習させた学習モデルを記憶するモデル記憶部と、テスト対象のシステムの前記画面定義情報の入力を受け付ける画面定義入力部と、前記画面定義情報を前記学習モデルに与えて前記テストケース、前記テストプログラム及び前記テストデータの少なくともいずれかを生成する生成部と、生成した前記テストケース、前記テストプログラム及び前記テストデータの少なくともいずれかを出力する出力部と、を備えることを特徴とする。
【０００７】
その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。
【発明の効果】
【０００８】
本発明によれば、ソフトウェアテストを容易に行うようにすることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係るテスト支援システムの全体構成例を示す図である。
【図２】サーバ装置２０のハードウェア構成例を示す図である。
【図３】サーバ装置２０のソフトウェア構成例を示す図である。
【図４】画面定義情報の構成例を示す図である。
【図５】本実施形態のテスト支援システムによる学習処理の流れを示す図である。
【図６】本実施形態のテスト支援システムによるテストの実行処理の流れを示す図である。
【発明を実施するための形態】
【００１０】
＜発明の概要＞
本発明の実施形態の内容を列記して説明する。本発明は、たとえば、以下のような構成を備える。
［項目１］
システムの画面定義情報を入力データとし、テストケース、テストプログラム及びテストデータの少なくともいずれかを教師データとして学習させた学習モデルを記憶するモデル記憶部と、
テスト対象のシステムの前記画面定義情報の入力を受け付ける画面定義入力部と、
前記画面定義情報を前記学習モデルに与えて前記テストケース、前記テストプログラム及び前記テストデータの少なくともいずれかを生成する生成部と、
生成した前記テストケース、前記テストプログラム及び前記テストデータの少なくともいずれかを出力する出力部と、
を備えることを特徴とするテスト支援システム。
［項目２］
項目１に記載のテスト支援システムであって、
前記生成部は、前記テストケース、前記テストプログラム及び前記テストデータを全て生成し、
前記テストケースに従って、前記テストプログラムを実行し、前記テスト対象のシステムが表示する画面に対して前記テストデータを与えてテストを実施し、前記テストの実施結果を検証するテスト実行部をさらに備えること、
を特徴とするテスト支援システム。
［項目３］
項目１に記載のテスト支援システムであって、
前記画面定義情報と、前記テストケース、前記テストプログラム及び前記テストデータの少なくともいずれかの入力を受け付けて前記学習モデルを更新する学習部をさらに備えること、
を特徴とするテスト支援システム。
［項目４］
システムの画面定義情報を入力データとし、テストケース、テストプログラム及びテストデータの少なくともいずれかを教師データとして学習させた学習モデルを記憶するステップと、
テスト対象のシステムの前記画面定義情報の入力を受け付けるステップと、
前記画面定義情報を前記学習モデルに与えて前記テストケース、前記テストプログラム及び前記テストデータの少なくともいずれかを生成するステップと、
生成した前記テストケース、前記テストプログラム及び前記テストデータの少なくともいずれかを出力するステップと、
をコンピュータが実行するテスト支援方法。
［項目５］
システムの画面定義情報を入力データとし、テストケース、テストプログラム及びテストデータの少なくともいずれかを教師データとして学習させた学習モデルを記憶するステップと、
テスト対象のシステムの前記画面定義情報の入力を受け付けるステップと、
前記画面定義情報を前記学習モデルに与えて前記テストケース、前記テストプログラム及び前記テストデータの少なくともいずれかを生成するステップと、
生成した前記テストケース、前記テストプログラム及び前記テストデータの少なくともいずれかを出力するステップと、
をコンピュータに実行させるためのプログラム。
【００１１】
＜システムの概要＞
図１は、本発明の一実施形態に係るテスト支援システムの全体構成例を示す図である。本実施形態のテスト支援システムは、サーバ装置２０を含んで構成される。サーバ装置２０は、ユーザ端末１０と通信ネットワーク３０を介して通信可能に接続される。通信ネットワーク３０は、たとえばインターネットであり、公衆電話回線網や携帯電話回線網、無線通信路、イーサネット（登録商標）などにより構築される。
【００１２】
本実施形態のテスト支援システムは、システム開発に係るテスト（単体テスト、結合テスト、リグレッションテスト、総合テスト等各種のテストを含む。）の工程を支援しようとするものである。システム開発の３３％はテスト行程に係る工数が占めるといわれている。本実施形態のテスト支援システムは、このようなテスト工程を自動化しようとするものであり、システムの画面定義からテストケース、テストプログラム及びテストデータの少なくともいずれかを自動生成する。本実施形態では、事前に画面定義、テストケース、テストプログラム及びテストデータを学習しておき、学習モデルを用いて画面定義からテストケース、テストプログラム及びテストデータを自動生成を行うようにしている。
【００１３】
テストケースは、システムのテスト（ソフトウェアテスト）を実行するための手順である。テストケースには、例えば、テストを行う条件、テストの方法、テストに得られるべき結果などが含まれる。テストプログラムは、テストを実行するためのプログラムであり、例えば、システムにアクセスするためのブラウザオートメーション機能や、データを入力する機能、画面に対する操作（例えばボタンの押下など）を実行するためのポインティングデバイスのエミュレーション機能などを実現するプログラムであり、例えば、スクリプトプログラム（スクリプトコード）とすることができる。テストケース２１に従って、テストプログラムを実行することにより、テストを自動実行することができる。テストデータは、テストプログラムがシステムに入力するデータである。テストプログラムは、自動的にシステムにアクセスし、画面にテストデータを入力して、画面に表示される内容が正しいかどうかをテストケースに設定されている結果と照合することにより、システムの動作の正しさを検証することができる。
【００１４】
ユーザ端末１０は、システム開発に関わるユーザが利用する、例えばパーソナルコンピュータやタブレットコンピュータ、スマートフォンなどのコンピュータである。ユーザ端末１０から画面定義を入力することを想定する。
【００１５】
＜サーバ装置２０＞
サーバ装置２０は、例えばワークステーションやパーソナルコンピュータのような汎用コンピュータとしてもよいし、あるいはクラウド・コンピューティングによって論理的に実現されてもよい。
【００１６】
図２は、サーバ装置２０のハードウェア構成例を示す図である。なお、図示された構成は一例であり、これ以外の構成を有していてもよい。サーバ装置２０は、ＣＰＵ２０１、メモリ２０２、記憶装置２０３、通信インタフェース２０４、入力装置２０５、出力装置２０６を備える。記憶装置２０３は、各種のデータやプログラムを記憶する、例えばハードディスクドライブやソリッドステートドライブ、フラッシュメモリなどである。通信インタフェース２０４は、通信ネットワーク３０に接続するためのインタフェースであり、例えばイーサネット（登録商標）に接続するためのアダプタ、公衆電話回線網に接続するためのモデム、無線通信を行うための無線通信機、シリアル通信のためのＵＳＢ（Universal Serial Bus）コネクタやＲＳ２３２Ｃコネクタなどである。入力装置２０５は、データを入力する、例えばキーボードやマウス、タッチパネル、ボタン、マイクロフォンなどである。出力装置２０６は、データを出力する、例えばディスプレイやプリンタ、スピーカなどである。なお、後述するサーバ装置２０が備える機能部は、ＣＰＵ２０１が記憶装置２０３に記憶されているプログラムをメモリ２０２に読み出して実行することにより実現され、サーバ装置２０が備える記憶部は、メモリ２０２及び記憶部２０３が提供する記憶領域の一部として実現される。
【００１７】
図３は、サーバ装置２０のソフトウェア構成例を示す図である。サーバ装置２０は、画面定義入力部２１１、学習部２１２、生成部２１３、出力部２１４、テスト実行部２１５の機能部と、モデル記憶部２３１の記憶部とを備える。
【００１８】
画面定義入力部２１１は、テスト対象となるシステムの画面定義情報の入力を受け付ける。図４は、画面定義情報の構成例を示す図である。画面定義情報には、要素特定情報と、内容情報とが含まれる。要素特定情報は、画面に含まれる要素（コンポーネント）を特定する情報である。要素特定情報は、例えば、画面がＨＴＭＬ（HyperText Markup Language）により記載されている場合には、ＨＴＭＬのタグを特定するＣＳＳ（Cascading Style Sheets）セレクタやＸＰａｔｈなどにより表現することができる。内容情報は、当該コンポーネントがテストにどのように用いることが可能であるかを指定する情報である。内容情報には、例えば、リンクタグを選択することにより、他の画面に遷移することや、ボタンタグを押下することによりフォームの内容が処理されること、当該タグの内容が処理結果を示すことなどが指定される。
【００１９】
学習部２１２は、機械学習を実行して学習モデルを作成する。学習部２１２は、テストケース２１、テストプログラム３１、テストデータ４１、の入力を受け付けることができる。学習部２１２に与えるテストケース２１、テストプログラム３１及びテストデータ４１は、例えば、エンジニアにより手動で作成されたものであってよい。学習部２１２は、画面定義情報の入力も受け付ける。学習用の画面定義情報についても画面定義入力部２１１が受け付けて学習部２１２に渡すことができる。学習部２１２は、画面定義情報を入力データとし、テストケース２１、テストプログラム３１、テストデータ４１のそれぞれを教師データとした機械学習を行うことにより、３つの学習モデル（テストケースモデル、スクリプトモデル、データモデル）を作成することができる。テストケースモデルは、テストケース２１を教師データとした機械学習の結果であり、スクリプトモデルは、テストプログラム３１を教師データとした機械学習の結果であり、データモデルは、テストデータ４１を教師データとした機械学習の結果である。なお、学習部２１２は、画面定義情報を入力データとし、テストケース２１、テストプログラム３１及びテストデータ４１の少なくとも２つの組み合わせを教師データとした機械学習により、学習モデルを作成するようにしてもよい。例えば、画面定義情報に基づいてテストケース、テストプログラム及びテストデータを一度に作成する学習モデルを作成することもできる。
【００２０】
モデル記憶部２３１は、機械学習により作成された学習モデルを記憶する。図３の例では、上述したテストケースモデル、スクリプトモデル及びデータモデルが記憶されている。
【００２１】
生成部２１３は、画面定義情報を学習モデルに与えてテストケース２２、テストプログラム３２及びテストデータ４２の少なくともいずれかを生成する。生成部２１３は、テストケースモデルに画面定義情報を与えることによりテストケース２２を生成することができ、スクリプトモデルに画面定義情報を与えることによりテストプログラム３２を生成することができ、データモデルに画面定義情報を与えることによりテストでーった３２を生成することができる。
【００２２】
出力部２１４は、生成されたテストケース２２、テストプログラム３２及びテストデータ４２の少なくともいずれかを出力する。出力部２１４は、テストケース２２、テストプログラム３２及びテストデータ４２を、ディスプレイ等の出力装置２０６に出力してもよいし、ユーザ端末１０に送信してユーザ端末１０から出力されるようにしてもよいし、記憶装置２０３上のファイルシステムに出力するようにしてもよい。
【００２３】
テスト実行部２１５は、生成されたテストケース２２、テストプログラム３２及びテストデータ４２を用いてソフトウェアテストを実行する。テスト実行部２１５は、例えば、テストケース２２に従って、テストプログラム３２を実行することにより実現される機能により、テスト対象のシステムが表示する画面に対してテストデータ４２を与えてテストを実施することができる。上述したように、テストプログラム３２を実行することにより、例えば、ブラウザオートメーションにより自動的にＷｅｂアプリケーションにアクセスし、Ｗｅｂアプリケーションが生成する画面に対してテストデータ４２を入力し、ボタン押下等の操作を行うことにより画面遷移を行わせ、画面上の結果とテストケース２２に設定されている結果とを比較することができる。
【００２４】
＜動作＞
図５は、本実施形態のテスト支援システムによる学習処理の流れを示す図である。
【００２５】
画面定義入力部２１１は、学習用の画面定義書の入力を受け付け（Ｓ３０１）、学習部２１２は、テストケース２１、テストプログラム３１及びテストデータ４１の入力を受け付ける（Ｓ３０２）。学習部２１２は、画面定義入力部２１１が受け付けた画面定義書と、自身が受け付けたテストケース２１、テストプログラム３１及びテストデータ４１とを用いて機械学習を行う（Ｓ３０３）。具体的には、学習部２１２は、画面定義書を入力データとして、テストケース２１、テストプログラム３１及びテストデータ４１のそれぞれを教師データとした機械学習を行い、その学習結果である３つの学習モデルをモデル記憶部２３１に登録することができる（Ｓ３０４）。
【００２６】
以上のようにして、画面定義書に応じて、テストケース、テストプログラム及びテストデータをそれぞれ出力する学習モデルを作成することができる。なお、画面定義書に応じてテストケース、テストプログラム及びテストデータの組を出力する一つの学習モデルを作成するようにしてもよい。
【００２７】
図６は、本実施形態のテスト支援システムによるテストの実行処理の流れを示す図である。
【００２８】
画面定義入力部２１１は、テスト用の画面定義書の入力を受け付け（Ｓ３２１）、生成部２１３は、画面定義入力部２１１が受け付けた画面定義書を受け取って、モデル記憶部２３１に記憶されているテストケースモデル、スクリプトモデル及びデータモデルのにそれぞれ与えて、テストケース２２、テストプログラム３２及びテストデータ４２を生成する（Ｓ３２２）。出力部２１４は、生成されたテストケース２２、テストプログラム３２及びテストデータ４２を出力する（Ｓ３２３）。出力部２１４は、例えば、ファイルとしてテストケース２２、テストプログラム３２及びテストデータ４２を記憶装置２０３に出力するようにしてもよいし、ユーザ端末１０にテストケース２２、テストプログラム３２及びテストデータ４２を送信してユーザ端末１０から出力されるようにしてもよい。
【００２９】
テスト実行部２１５は、出力部２１４が出力したテストケース２２、テストプログラム３２及びテストデータ４２を用いてソフトウェアテストを実行する。すなわち、テスト実行部２１５は、テストケース２２に従ってテストプログラム３２を実行し、テストプログラム３２の実行により、テスト対象のシステムの画面を取得することができる。例えば、ＨＴＴＰによりテスト対象のシステムにアクセスすることにより、ＨＴＭＬにより記述された画面を取得することができる。また、テスト実行部２１５がテストプログラム３２を実行することにより、テストデータ４２をシステムの画面に入力し、画面に対する操作（例えば、ＳＵＢＭＩＴボタンの押下など）を実行することができる。（Ｓ３２４）。テスト実行部２１５は、テストプログラム３２の実行により、遷移先の画面に表示されたデータ（表示内容）と、テストケース２２に設定されている、期待される出力結果とが一致するか否かにより、システムが正常に動作していることの検証を行う（Ｓ３２５）。
【００３０】
テスト実行部２１５は、テストケース２２が手順終了となるまで（Ｓ３２６：ＮＯ）、ステップＳ３２４からの処理を繰り返す。
【００３１】
以上説明したように、本実施形態のテスト支援システムによれば、機械学習を用いて画面定義からテストケース、テストプログラム、テストデータを自動生成することができる。また、本実施形態のテスト支援システムによれば、自動生成したテストケース、テストプログラム、テストデータを用いてソフトウェアテストを自動実行してテスト結果の検証も自動で行うことができる。これによりシステムのテスト（結合テスト、総合テスト等であってよい。）の大部分を自動化できるため、テスト工数を大幅に削減することができる。
【００３２】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【００３３】
なお、本実施形態では、ユーザ端末１０とサーバ装置２０とは通信ネットワーク３０経由で接続され、ユーザ端末１０から学習用のテストケース２１、テストプログラム３１及びテストデータ４１が送信されてくるものとしたが、これに限らず、サーバ装置２０をユーザが直接操作してテストケース２１、テストプログラム３１及びテストデータ４１を入力するようにすることもできる。
【００３４】
また、本実施形態では、テスト実行部２１５がソフトウェアテストを実行するところまでを説明したが、当然テスト結果を出力するようにすることができる。この場合、例えば、出力部２１４は、テスト結果をユーザ端末１０に送信するようにしてもよいし、テスト結果を記憶装置２０３等に書き出して保存するようにしてもよいｋ。
【００３５】
また、本実施形態では、学習部２１２は、テストケース２１、テストプログラム３１及びテストデータ４１のうち１つを教師データとして機械学習を行い、３つの学習モデルを作成するものとしたが、テストケース２１、テストプログラム３１及びテストデータ４１のうち２つ以上の組み合わせを教師データとして、１つ又は複数の学習モデルを作成するようにしてもよい。
【００３６】
また、本実施形態では、画面定義は、ユーザが作成する画面定義情報として与えられるものとしたが、画面定義の全部又は一部について、システムの画面を解析して作成する画面定義作成部を備えるようにしてもよい。
【符号の説明】
【００３７】
１０  ユーザ端末
２０  サーバ装置
３０  通信ネットワーク
【要約】
【課題】ソフトウェアテストを容易に行うようにすることができるようにする。
【解決手段】テスト支援システムであって、システムの画面定義情報を入力データとし、テストケース、テストプログラム及びテストデータの少なくともいずれかを教師データとして学習させた学習モデルを記憶するモデル記憶部と、テスト対象のシステムの画面定義情報の入力を受け付ける画面定義入力部と、画面定義情報を学習モデルに与えてテストケース、テストプログラム及びテストデータの少なくともいずれかを生成する生成部と、生成したテストケース、テストプログラム及びテストデータの少なくともいずれかを出力する出力部と、を備えることを特徴とする。
【選択図】図１【図１】
0006902814.tif 000002
【図２】
0006902814.tif 000003
【図３】
0006902814.tif 000004
【図４】
0006902814.tif 000005
【図５】
0006902814.tif 000006
【図６】
0006902814.tif 000007