JP5176869B2 - テストケース生成プログラムとテストケース生成装置およびテストケース生成方法 - Google Patents
テストケース生成プログラムとテストケース生成装置およびテストケース生成方法 Download PDFInfo
- Publication number
- JP5176869B2 JP5176869B2 JP2008275432A JP2008275432A JP5176869B2 JP 5176869 B2 JP5176869 B2 JP 5176869B2 JP 2008275432 A JP2008275432 A JP 2008275432A JP 2008275432 A JP2008275432 A JP 2008275432A JP 5176869 B2 JP5176869 B2 JP 5176869B2
- Authority
- JP
- Japan
- Prior art keywords
- state
- path
- test case
- test
- extracted
- 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.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
Description
本発明は、外部モジュールとの接続をテストする実機(接続)テストにおいて、モデル検査技術による網羅的な実行結果を用いてテストケース(テストシナリオと予想されるテスト結果)を生成する技術に関する。
従来、プログラムを対象とするモデル検査は、テスト対象システムの振舞いを設計書・仕様書からプロパティとして取り出し、テスト対象システムの実装プログラムにテストデータを入力することで実施するテストである。そして、プログラムの実行に基づき、状態遷移の各状態が取りうる全ての組み合わせを抽出し、これらの組み合わせに対して上記プロパティを満たすかどうかを検査するものである。
一般にプログラムモデル検査に基づくテストでは、データベースやネットワーク通信などの外部モジュールを直接利用できたいため、外部モジュールをスタブ化して、スタブを使用したテスト(第1のテスト)を実施し、次にスタブを実機に置き換えて再度テスト(第2のテスト)を行う。つまり、プログラムモデル検査では、データベースやネットワーク通信などの外部モジュールをスタブ化して行うため、モデル検査対象外となる外部モジュール接続部分を試験する実機テストが別途必要となる。
ところが、モデル検査では、基本的には各オブジェクトが取りうる全ての状態の組み合わせを網羅的に検査するものであるため、第1のテストにおいても第2のテストにおいても、全ての組み合わせに対する検査を行うこととなる。
図14を用いて第1のテストと第2のテストを説明する。図14はモデル検査とテスト技術について示した図である。図14のAはモデル検査(第1のテスト:網羅的な検査)を実施するときに用いる構成例を示す図である。クライアントの代わりにドライバ141から検査対象プログラム142に対してユーザ操作を模倣したデータが入力される。図14のAでは検査対象プログラム142と検査対象プログラム142に接続されているデータベーススタブ143とネットワークスタブ144に対して網羅的な検査が行われる。なお、第1のテストはプログラムの重要な部分にのみ適用可能である(部分的もしくは抽象化したものに対して有効)。
図14のBは実環境に則した検査(第2のテスト)を実施するときに用いる構成例を示す図である。クライアント145から検査対象プログラム142に対して実環境を確実に再現したテストケース(テストケース1、2)が入力される。図14のBでは検査対象プログラム142と検査対象プログラム142に接続されているデータベース146とネットワーク147に対して検査が行われる。
また、特許文献1によれば、対象プログラム(もしくは仕様)の網羅的な実行結果から外部モジュールを呼び出す全てのパスを列挙することで外部モジュールの接続テストのためのテストケースを漏れなく生成する提案がされている。
しかしながら、本来第2のテストでは第1のテストで実施したテストのうち、スタブが関係するテストのみを実施すれば十分である。図14のCに示す第2のテストにおいて、検査対象プログラム142(コア部分)のみのテスト(テストケース3)は不要である。
また、特許文献1においてもプログラムの網羅的な実行空間をそのまま利用しているため、漏れはないが実機テスト(第2のテスト)として外部モジュールを呼びだすため、同じようなテストケースを複数列挙してしまう。つまり、テスト内容が同じようなテストケースをひとつのテストケースとして判断することができないため、同じようなテストを複数回行ってしまい、テスト効率が悪くなってしまうという問題がある。また、特許文献2、3のような提案がされている。
特開2007−128138号公報
特開平11−306046号公報
特開平2−287737号公報
上記のような実情に鑑みてなされたものであり、モデル検査を網羅的に実行した結果を用いて、実機テストケース(テストシナリオと予想されるテスト結果)を生成することによりテスト効率を向上させるテストケース生成装置とテストケース生成方法およびテストケース生成プログラムを提供することを目的とする。
態様のひとつである、プログラムをモデル検査するためにテストケースを生成するテストケース生成は、状態特定処理、パス抽出処理、プロパティ適用処理、シナリオ分類処理、テストケース生成処理により実行する。状態特定処理は、前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する。パス抽出処理は、前記状態特定処理が特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出する。プロパティ適用処理は、前記パス抽出処理によって抽出したパスに対して、前記メモリに記録されている前記プログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出する。シナリオ分類処理は、前記条件ごとに前記抽出したパスを分類する。テストケース生成処理は、前記シナリオ分類処理により分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結を期待される結果を、テストケースとして生成する。
上記のように、網羅的に行なうモデル検査の状態空間から生成された状態と状態遷移がプログラムの仕様を示すプロパティ群により分類されるため、網羅的でかつ重複のない効率的なテストケースが生成可能となる。また、期待されるテスト結果においても、プロパティから生成するため、テスト設計者による間違いが入らない。このことにより、実機テストにおいて、テスト設計者に依存しない、漏れのなく正確なテストケース(シナリオ+期待される結果)が作成可能となる。
モデル検査を網羅的に実行した結果を用いて、実機テストケース(テストシナリオと予想されるテスト結果)を生成することによりテスト効率を向上させることができる。
以下図面に基づいて、本発明の実施形態について詳細を説明する。
(実施例1)
図1は、モデル検査を行うときに用いるモデル検査装置1、テストケース生成装置2、入出力装置3(PCなど)を示す構成図である。なお、外部モジュールとの接続をテストする実機(接続)テストにおいて、モデル検査とは、テスト対象システムの振舞いを設計書・仕様書から取り出し、モデル検査の専用言語で記述したソフトウェア(擬似システム)を作成し、当該擬似システムにテストデータを入力することで実施するテストのことである。ここで、モデル検査の擬似システムは「A(条件)ならばB(帰結)」というプロパティの組み合わせの状態空間で構成されている。また、設計書・仕様書に基づき、状態遷移の各状態が取りうる全ての組み合わせを抽出し、これらの組み合わせに対してテストデータを入力する。
(実施例1)
図1は、モデル検査を行うときに用いるモデル検査装置1、テストケース生成装置2、入出力装置3(PCなど)を示す構成図である。なお、外部モジュールとの接続をテストする実機(接続)テストにおいて、モデル検査とは、テスト対象システムの振舞いを設計書・仕様書から取り出し、モデル検査の専用言語で記述したソフトウェア(擬似システム)を作成し、当該擬似システムにテストデータを入力することで実施するテストのことである。ここで、モデル検査の擬似システムは「A(条件)ならばB(帰結)」というプロパティの組み合わせの状態空間で構成されている。また、設計書・仕様書に基づき、状態遷移の各状態が取りうる全ての組み合わせを抽出し、これらの組み合わせに対してテストデータを入力する。
モデル検査装置1は、入出力装置3からプログラム、プロパティを取得してモデル検査を行い、そのモデル検査の結果(状態空間、プロパティ)を出力する。
テストケース生成装置2は、状態空間とプロパティに基づいてパス抽出をし(パス抽出4)、抽出したパスから関連するパスをプロパティに基づいて分類し(パス分類5)、テスト結果を導出する(テスト結果導出6)。そのテスト結果(テストケース:シナリオと期待される結果)を入出力装置3に転送する。テストケース生成装置2はCPUやメモリなどにより構成される。
テストケース生成装置2は、状態空間とプロパティに基づいてパス抽出をし(パス抽出4)、抽出したパスから関連するパスをプロパティに基づいて分類し(パス分類5)、テスト結果を導出する(テスト結果導出6)。そのテスト結果(テストケース:シナリオと期待される結果)を入出力装置3に転送する。テストケース生成装置2はCPUやメモリなどにより構成される。
パス抽出4では、当該状態空間のうち、初期状態からスタブに関連する実行状態への実行パスを全て抽出する。
パス分類5では、抽出された実行パスの各実行状態におけるプロパティによって各実行パスをグルーピングする。パス分類5では、プロパティ(プログラムが満たすべき性質)を用いて同様の意味合いのテストケースを分類する。プロパティは「A(条件)ならばB(帰結)」の形をしており、あるテストケースがどのプロパティの条件部にマッチするかにより分類する。プロパティが同一である実行パスは、同一の仕様をたどる実行パスであるため、テストとしては重複するものである。そのため、ひとつのグループに属する実行パスをひとつだけ残して他を削除する。
パス分類5では、抽出された実行パスの各実行状態におけるプロパティによって各実行パスをグルーピングする。パス分類5では、プロパティ(プログラムが満たすべき性質)を用いて同様の意味合いのテストケースを分類する。プロパティは「A(条件)ならばB(帰結)」の形をしており、あるテストケースがどのプロパティの条件部にマッチするかにより分類する。プロパティが同一である実行パスは、同一の仕様をたどる実行パスであるため、テストとしては重複するものである。そのため、ひとつのグループに属する実行パスをひとつだけ残して他を削除する。
テスト結果導出6では、関係付くプロパティから期待される結果を抽出し、テストケースを生成する。上記のようにすることで、外部モジュール呼び出しのパターンとして、網羅的でかつ重複のないテストケースの生成ができる。
テストケース生成装置2について説明する。
図2はテストケース生成装置2の構成を示す図である。テストケース生成装置2は、パス抽出器7、パス分類器8、テストシナリオ生成器9、プロパティ格納部10、状態空間格納部11、パス格納部12、シナリオ格納部13を備えている。なお、パス抽出器7、パス分類器8、テストシナリオ生成器9はCPUやプログラマブルデバイスを用いて実現することが可能である。
図2はテストケース生成装置2の構成を示す図である。テストケース生成装置2は、パス抽出器7、パス分類器8、テストシナリオ生成器9、プロパティ格納部10、状態空間格納部11、パス格納部12、シナリオ格納部13を備えている。なお、パス抽出器7、パス分類器8、テストシナリオ生成器9はCPUやプログラマブルデバイスを用いて実現することが可能である。
パス抽出器7は、状態特定部14とパス抽出部15を備え、モデル検査による網羅的な実行空間からスタブを利用する状態を特定し、初期状態から特定した状態への実行パスを全て列挙する。状態特定部14はスタブを利用している状態を特定する。パス抽出部15は初期状態から特定したパスを抽出する。
パス分類器8は、プロパティ適用部16とシナリオ分類部17を備え、抽出したパスをモデル検査時に利用されたプロパティにより分類する。パスで特定される状態が前提条件にマッチするプロパティを列挙し、その列挙されたプロパティによりパスをグルーピングする。このグループからひとつのパスを、グループを代表するパスとして抽出する。プロパティ適用部16は抽出したパスに対して、条件にマッチするプロパティを抽出する。シナリオ分類部17は、パスを対応付けられたプロパティにより分類する。さらに、各分類からひとつのパスを抽出する。
テストシナリオ生成器9は、対応するプロパティの帰結部分より期待されるテスト結果を導出し、導出した結果に基づいてテストケースを生成する。
プロパティ格納部10、状態空間格納部11、パス格納部12、シナリオ格納部13はメモリである。プロパティ格納部10は、パス抽出器7、パス分類器8、テストシナリオ生成器9と接続されている。状態空間格納部11は、パス抽出器7と接続されている。パス格納部12は、パス抽出器7、パス分類器8と接続されている。シナリオ格納部13は、パス分類器8と接続されている。
プロパティ格納部10、状態空間格納部11、パス格納部12、シナリオ格納部13はメモリである。プロパティ格納部10は、パス抽出器7、パス分類器8、テストシナリオ生成器9と接続されている。状態空間格納部11は、パス抽出器7と接続されている。パス格納部12は、パス抽出器7、パス分類器8と接続されている。シナリオ格納部13は、パス分類器8と接続されている。
テストケース生成装置2の動作について説明する。
テストケース生成装置2は、モデル検査装置1の出力である状態空間(状態と、状態の遷移により表される)とプロパティを表すデータをプロパティ格納部10、状態空間格納部11に記録する。状態空間格納部11には状態空間を表すデータを状態テーブルとイベントテーブルに記録する。またプロパティを表すデータプロパティ格納部10に記録する。
テストケース生成装置2は、モデル検査装置1の出力である状態空間(状態と、状態の遷移により表される)とプロパティを表すデータをプロパティ格納部10、状態空間格納部11に記録する。状態空間格納部11には状態空間を表すデータを状態テーブルとイベントテーブルに記録する。またプロパティを表すデータプロパティ格納部10に記録する。
状態空間について説明する。図3は、次のようなWebショッピングシステムの仕様に基づいて生成された状態空間を示す図である。
(Webショッピングシステムの仕様)
・客は一般会員かプレミア会員とする。
・取り扱う商品はリンゴ(50ドル)とバナナ(100ドル)とする。
・合計が500ドル以上の注文についてメールを送信する。なお、プレミア会員にはHTMLメールを送信する。
・在庫切れの場合、客のメーリングリストに在庫切れのメールを送る。
(Webショッピングシステムの仕様)
・客は一般会員かプレミア会員とする。
・取り扱う商品はリンゴ(50ドル)とバナナ(100ドル)とする。
・合計が500ドル以上の注文についてメールを送信する。なお、プレミア会員にはHTMLメールを送信する。
・在庫切れの場合、客のメーリングリストに在庫切れのメールを送る。
図3に示す状態空間では、まず初期状態「initial」においてログインをすると、会員種別を判定する状態に移行するパスが発生する(例えば「event01」)。この状態から次の状態に移行するさいに発生するパスをイベントという。次の状態に移行する。その状態(例えば「state01」)において「一般会員」が選択されれば次の状態(例えば「state02」)に移行する。例えば、「state01」において「商品」として「リンゴ」が選択され、その数量として「5」が選択されると「state02」に移行する。このときの「state02」に移行するイベントを「event02」とする。次に、「state02」において「商品」として「バナナ」が選択され、その数量として「3」が選択されると「state03」に移行する。このときの「state03」へのイベントを「event03」とする。このように状態空間は、状態(state××)とイベント(event××)により表すことができる。
上記のような状態空間は、図4のAとBに示すテーブルに変換することができる。
図4のAは状態テーブルの例を示す図である。「状態ID」「V会員種別」「V商品」「V数量」「Vstub」・・・などから構成されている。「状態ID」には図3に示されている「initial」「state01」「state02」「state03」「state04」「state05」などの状態を識別する識別番号が付されている。
図4のAは状態テーブルの例を示す図である。「状態ID」「V会員種別」「V商品」「V数量」「Vstub」・・・などから構成されている。「状態ID」には図3に示されている「initial」「state01」「state02」「state03」「state04」「state05」などの状態を識別する識別番号が付されている。
「V会員種別」にはその状態において、「一般会員」が選択されたか「プレミア会員」が選択されたかを識別するため「一般」または「プレミア」を記録する。「一般会員」であれば「一般」が記録され、「プレミア会員」であれば「プレミア」が記録される。ただし、「initial」ではログインをするだけなので「“”」としている。
「V商品」にはその状態において、「リンゴ」が選択されたか「バナナ」が選択されたかを識別するため、「リンゴ」または「バナナ」が記録される。「リンゴ」が選択されれ
ば「リンゴ」が記録され、「バナナ」が選択されれば「バナナ」が記録される。「initial」には「“”」が記録されている。
ば「リンゴ」が記録され、「バナナ」が選択されれば「バナナ」が記録される。「initial」には「“”」が記録されている。
「V数量」にはその状態において、「リンゴ」または「バナナ」の数量が入力される。
スタブ呼び出し変数「Vstub」にはスタブを利用したかを示すため識別番号を記録する。図4のAの例はスタブを利用した場合には「1」が記録される。図3において「state05」の状態はメールを送信しているためネットワークスタブを使用しているため「1」が記録されている。
スタブ呼び出し変数「Vstub」にはスタブを利用したかを示すため識別番号を記録する。図4のAの例はスタブを利用した場合には「1」が記録される。図3において「state05」の状態はメールを送信しているためネットワークスタブを使用しているため「1」が記録されている。
図4のBはイベントテーブルの例を示す図である。「イベントID」「遷移元」「遷移先」から構成されている。「イベントID」には図3に示されている「event01」「event02」「event03」「event04」「event05」などのイベントを識別する識別番号が付されている(図3参照)。
「遷移元」には、そのイベントが発生した状態が記録される。例えば、「event01」へ移行する状態として「initial」が記録され、同様にイベントに対応する「state01」「state02」・・・が記録されている(図3参照)。
「遷移先」には、そのイベントが発生後に遷移した状態が記録される。例えば、「event01」が発生後遷移する「state01」が記録され、同様にイベントに対応する「state02」「state03」・・・が記録されている(図3参照)。
パス抽出器7の状態特定部14は、状態空間格納部11の状態テーブルの「Vstub」に「1」が記録されている「状態ID」を特定する。図3の例では2重線楕円で示される「メール送信」(ネットワークスタブ)を行なう状態を特定する。
次に、パス抽出部15により初期状態「initial」から特定した状態(メール送信)へのパスを抽出する。例えば、図5に示した状態空間の例であれば以下のように抽出する(太線矢印)。
パス1:
(1)ログイン(“user1”,“pass1”), ←「一般」
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)商品選択(バナナ,50),
(5)注文 ←「メール送信」
パス2:
(1)ログイン(“user1”,“pass1”), ←「一般」
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)注文 ←「メール送信」
パス3:
(1)ログイン(“user1”,“pass1”), ←「一般」
(2)商品選択(リンゴ,10),
(3)注文 ←「メール送信」
パス4:
(1)ログイン(“user1”,“pass1”), ←「一般」
(2)商品選択(リンゴ,10),
(3)商品選択(リンゴ,50),
(4)注文 ←「メール送信」
パス5:
(1)ログイン(“user2”,“pass2”), ←「プレミア」
(2)商品選択(リンゴ,10),
(3)注文 ←「メール送信」
パス6:
(1)ログイン(“user2”,“pass2”), ←「プレミア」
(2)商品選択(リンゴ,10),
(3)商品選択(リンゴ,50),
(4)注文 ←「メール送信」
(1)ログインの(“user1”,“pass1”)は一般会員を示している。(“user2”,“pass2”)はプレミア会員を示している。
パス1:
(1)ログイン(“user1”,“pass1”), ←「一般」
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)商品選択(バナナ,50),
(5)注文 ←「メール送信」
パス2:
(1)ログイン(“user1”,“pass1”), ←「一般」
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)注文 ←「メール送信」
パス3:
(1)ログイン(“user1”,“pass1”), ←「一般」
(2)商品選択(リンゴ,10),
(3)注文 ←「メール送信」
パス4:
(1)ログイン(“user1”,“pass1”), ←「一般」
(2)商品選択(リンゴ,10),
(3)商品選択(リンゴ,50),
(4)注文 ←「メール送信」
パス5:
(1)ログイン(“user2”,“pass2”), ←「プレミア」
(2)商品選択(リンゴ,10),
(3)注文 ←「メール送信」
パス6:
(1)ログイン(“user2”,“pass2”), ←「プレミア」
(2)商品選択(リンゴ,10),
(3)商品選択(リンゴ,50),
(4)注文 ←「メール送信」
(1)ログインの(“user1”,“pass1”)は一般会員を示している。(“user2”,“pass2”)はプレミア会員を示している。
パス抽出部15は、上記の抽出したパス1〜6をパス格納部12のパステーブルに記録する。図6に示すパステーブルは「パスID」「No」「イベント」「ラベル」から構成されている。「パスID」には抽出したパスを識別するための識別番号が付されている。上記パス1の場合、「パスID」に「path01」が記録され、パス1の(1)〜(5)対応する「イベント」に「event01」〜「event05」が(1)〜(5)の順に記録される。「No」は初期状態からイベントが発生した順に、同じ「パスID」のイベントに対応するよう数字が割り振られている。図6ではログインに近い順に「No」に1〜5が割り振られている。
パス抽出処理が完了すると、次にパス分類器8のプロパティ適用部16によりパス分類を行う。メール送信に関係するプロパティの例を示す。プロパティは通常、A−>Bの形をしており、「A(条件)ならばB(帰結)である」と表すことができる。
p01:合計>=500ドル and お客種別==“一般会員”
−>メール種別==“一般注文メール”
p02:合計>=500ドル and お客種別==“プレミア会員”
−>メール種別==“HTMLメール”
p03:商品在庫数=<0
−>在庫切れML==“yes”
p04:商品在庫数>0
−>在庫切れML==“no”
p01:合計>=500ドル and お客種別==“一般会員”
−>メール種別==“一般注文メール”
p02:合計>=500ドル and お客種別==“プレミア会員”
−>メール種別==“HTMLメール”
p03:商品在庫数=<0
−>在庫切れML==“yes”
p04:商品在庫数>0
−>在庫切れML==“no”
図7は、上記p01〜p04に示したプロパティがプロパティ格納部10のプロパティテーブルに記録されたときの図である。プロパティテーブルは「プロパティID」「プロパティ式」により構成されている。「プロパティID」にはプロパティを識別するための識別番号が記録される。上記メール送信に関係するプロパティの例であれば「p01」「p02」「p03」「p04」が記録されている。「プロパティ式」には「A(条件)ならばB(帰結)である」とかかれたプロパティが記録されている。上記メール送信に関係するプロパティの例であれば「p01」「p02」「p03」「p04」に対応するプロパティが記録されている。ただし、図7では説明を分かりやすくするためにプロパティを専用の記述にしていないが、実際にはLTL(Linear Temporal Logic)やCTL(Computational Tree Logic)で記述されている。
プロパティ適用部16は、抽出したパスに対して、プロパティの条件部分にマッチするプロパティを抽出する。例えば、「p01」に対応するプロパティであれば条件部分は「
合計>=500ドル and お客種別==“一般会員”」であるので、この条件部分にマッチする上記パス(パス1〜パス6)を探す。その結果パス1〜パス4にマッチすることが検出される。このように全てのプロパティの条件部分とパスとを比較し、比較した結果、パスとマッチしたプロパティを検出する。次のような結果が得られる。
パス1:p01,p03
パス2:p01
パス3:p01
パス4:p01,p03
パス5:p02
パス6:p02,p03
図6に示すようにパステーブルの「ラベル」の対応する部分に、上記プロパティ識別番号「p01」〜「p04」を記録する。
合計>=500ドル and お客種別==“一般会員”」であるので、この条件部分にマッチする上記パス(パス1〜パス6)を探す。その結果パス1〜パス4にマッチすることが検出される。このように全てのプロパティの条件部分とパスとを比較し、比較した結果、パスとマッチしたプロパティを検出する。次のような結果が得られる。
パス1:p01,p03
パス2:p01
パス3:p01
パス4:p01,p03
パス5:p02
パス6:p02,p03
図6に示すようにパステーブルの「ラベル」の対応する部分に、上記プロパティ識別番号「p01」〜「p04」を記録する。
次に、シナリオ分類部17によりプロパティによる分類を行う。パスを対応付けられたプロパティにより分類する。
分類1(P1) :パス2,パス3
分類2(P1,P3):パス1,パス4
分類3(P2) :パス5
分類4(P2,P3):パス6
シナリオ1:(P1)
(1)ログイン(“user1”,“pass1”),
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)商品選択(バナナ,50),
(5)注文
シナリオ2:(P1,P3)
(1)ログイン(“user1”,“pass1”),
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)注文
シナリオ5:(P2)
(1)ログイン(“user2”,“pass2”),
(2)商品選択(リンゴ,10),
(3)注文
シナリオ6:(P2,P3)
(1)ログイン(“user2”,“pass2”),
(2)商品選択(リンゴ,10),
(3)商品選択(リンゴ,50),
(4)注文
分類1(P1) :パス2,パス3
分類2(P1,P3):パス1,パス4
分類3(P2) :パス5
分類4(P2,P3):パス6
シナリオ1:(P1)
(1)ログイン(“user1”,“pass1”),
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)商品選択(バナナ,50),
(5)注文
シナリオ2:(P1,P3)
(1)ログイン(“user1”,“pass1”),
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)注文
シナリオ5:(P2)
(1)ログイン(“user2”,“pass2”),
(2)商品選択(リンゴ,10),
(3)注文
シナリオ6:(P2,P3)
(1)ログイン(“user2”,“pass2”),
(2)商品選択(リンゴ,10),
(3)商品選択(リンゴ,50),
(4)注文
分類にパスが複数対応する場合は、スタブ呼び出しパターンとして同等とみなす。例えば、上記分類1にはパス2、3が対応し、分類2にはパス1、4が対応しているので、分類1は代表するパスとしてパス2を選択し、分類2は代表するパスとしてパス1を選択する(条件に複数の抽出したパスがあるとき、抽出したパスの中からひとつを選ぶ)。
図8に、シナリオ格納部13のシナリオテーブルにプロパティ分類結果を記録した例を示す。「シナリオID」には上記分類に対応する「scenario01」〜「scenario04」が記録されている。「ラベル」には「プロパティID」が記録され、「パスID」には「シナリオID」に対応する代表するパスが記録されている。図8では「scenario01」に「path02」、「scenario02」に「path01」、「scenario03」に「path05」、「scenario04」に「path06」が記録される。
次に、対応するプロパティから期待される結果を導出する。つまり、対応付くプロパティの帰結部分より期待されるテスト結果を導出する。また、抽出したパスに対応するプロパティが複数あるときは、帰結の論理積(and)にする。
シナリオ1(P1):
メール種別=“一般注文メール”
シナリオ2(P1,P3):
メール種別=“一般注文メール” and 在庫切れML=“yes”
シナリオ5(P2):
メール種別==“HTMLメール”
シナリオ6:(P2,P3):
メール種別==“HTMLメール” and 在庫切れML=“yes”
シナリオ1(P1):
メール種別=“一般注文メール”
シナリオ2(P1,P3):
メール種別=“一般注文メール” and 在庫切れML=“yes”
シナリオ5(P2):
メール種別==“HTMLメール”
シナリオ6:(P2,P3):
メール種別==“HTMLメール” and 在庫切れML=“yes”
テストケースの生成は、テストケース生成器9によりテストケース(シナリオ+期待される結果)を生成する。
テストケース1
シナリオ1:
(1)ログイン(“user1”,“pass1”),
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)注文
期待される結果:一般注文メールが送信される
テストケース2
シナリオ2:
(1)ログイン(“user1”,“pass1”),
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)商品選択(バナナ,50),
(5)注文
期待される結果:一般注文メールが送信され、在庫切れメールがMLに送信される
テストケース3
シナリオ5:
(1)ログイン(“user2”,“pass2”),
(2)商品選択(リンゴ,10),
(3)注文
期待される結果:HTML注文メールが送信される
テストケース4
シナリオ6:
(1)ログイン(“user2”,“pass2”),
(2)商品選択(リンゴ,10),
(3)商品選択(リンゴ,50),
(4)注文
期待される結果:HTML注文メールが送信され、在庫切れメールがMLに送信される
テストケース1
シナリオ1:
(1)ログイン(“user1”,“pass1”),
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)注文
期待される結果:一般注文メールが送信される
テストケース2
シナリオ2:
(1)ログイン(“user1”,“pass1”),
(2)商品選択(リンゴ,5),
(3)商品選択(バナナ,3),
(4)商品選択(バナナ,50),
(5)注文
期待される結果:一般注文メールが送信され、在庫切れメールがMLに送信される
テストケース3
シナリオ5:
(1)ログイン(“user2”,“pass2”),
(2)商品選択(リンゴ,10),
(3)注文
期待される結果:HTML注文メールが送信される
テストケース4
シナリオ6:
(1)ログイン(“user2”,“pass2”),
(2)商品選択(リンゴ,10),
(3)商品選択(リンゴ,50),
(4)注文
期待される結果:HTML注文メールが送信され、在庫切れメールがMLに送信される
図8に示すシナリオテーブルの「scenario01」〜「scenario04」に対応する「結果式」に対して期待される結果をそれぞれ記録する。「scenario01」には「メール種別=“一般注文メール”」、「scenario02」には「メール種別=“一般注文メール” and 在庫切れML=“yes”」、「scenario03」には「メール種別=“HTMLメール”」、「scenario04」には「メール種別=“HTMLメール” and 在庫切れML=“yes”」を記録する。
上記構成により、網羅的に行なうモデル検査の状態空間から生成されたテストケースがプログラムの仕様を示すプロパティ群から分類されるため、網羅的でかつ重複のない効率的なテストケースが生成可能となる。
また、期待されるテスト結果も、プロパティから生成するため、テスト設計者による間違いが入らない。このことにより、実機テストにおいて、テスト設計者に依存しない、漏れのなく正確なテストケース(シナリオ+期待される結果)が作成可能となる。
(動作説明)
図9ではパス抽出の動作について説明する。
図9のステップS1(状態特定処理)では、状態テーブル内に処理すべき状態が残っているかを判定し、残っていればステップS2に移行し、残っていなければステップS6に移行する。例えば、状態空間格納部11(メモリ)の状態テーブルをパス抽出器7の状態特定部14により参照し、状態テーブル内に処理すべき状態が残っているかを判定する。処理が完了したことを示すフラグを「状態ID」ごとに対応させて設け、そのフラグを監視して判定を行う。
図9ではパス抽出の動作について説明する。
図9のステップS1(状態特定処理)では、状態テーブル内に処理すべき状態が残っているかを判定し、残っていればステップS2に移行し、残っていなければステップS6に移行する。例えば、状態空間格納部11(メモリ)の状態テーブルをパス抽出器7の状態特定部14により参照し、状態テーブル内に処理すべき状態が残っているかを判定する。処理が完了したことを示すフラグを「状態ID」ごとに対応させて設け、そのフラグを監視して判定を行う。
ステップS2(状態特定処理)では、当該状態のスタブ呼び出し変数(Vstub)のフラグが立っているかを判定する。フラグが立っていればステップS3に移行し、フラグが立っていなければステップS1に移行する。例えば、図4に示す状態空間格納部11(メモリ)の状態テーブルのスタブ呼び出し変数(Vstub)が「1」であるかを判定する。図3の例では2重線楕円で示される「メール送信」(ネットワークスタブ)を行なう状態を特定する。
ステップS3(状態特定処理)では当該状態が初期状態かを判定する。当該状態が初期状態であればステップS1に移行し、初期状態であればステップS4に移行する。
ステップS4(パス抽出処理)では、イベントテーブルから遷移先が当該状態となっているイベントIDを抽出し、パステーブルに記録する。
ステップS4(パス抽出処理)では、イベントテーブルから遷移先が当該状態となっているイベントIDを抽出し、パステーブルに記録する。
ステップS5(パス抽出処理)では、イベントテーブルから当該イベントIDの遷移元の状態を抽出する。
ステップS3〜S5について図4のA、B、図6を用いて説明する。ステップS2で状態テーブル(図4のA)の「state05」でスタブ呼び出し変数(Vstub)に「1」が立っていることを検出する。ステップS3で初期状態であるかを判定する。しかし、「state05」は「initial」(初期状態)ではないためステップS4に移行する。ステップS4ではイベントテーブル(図4のB)の「遷移先」から「state05」を検出し、「state05」に対応する「event05」を、パステーブル(図6)の「イベント」に記録する。次に、イベントテーブルの「event05」に対応する「遷移元」を抽出する。
ステップS3〜S5について図4のA、B、図6を用いて説明する。ステップS2で状態テーブル(図4のA)の「state05」でスタブ呼び出し変数(Vstub)に「1」が立っていることを検出する。ステップS3で初期状態であるかを判定する。しかし、「state05」は「initial」(初期状態)ではないためステップS4に移行する。ステップS4ではイベントテーブル(図4のB)の「遷移先」から「state05」を検出し、「state05」に対応する「event05」を、パステーブル(図6)の「イベント」に記録する。次に、イベントテーブルの「event05」に対応する「遷移元」を抽出する。
次に抽出した「event05」の遷移元「event04」が、初期状態であるかを判定し、ステップS3〜S5の処理を行う。同様の処理を何回か繰り返し「状態ID」が「initial」であることを検出するとステップS1に移行して、他のパスを抽出処理に移行する。
ここで、「イベント」に「event01」〜「event05」を記録するときに、パステーブルの「パスID」に、同じパスであることを示すため「path01」を記録する。
図10のステップS6(プロパティ適用処理)では、パステーブル(図6)内に処理すべきパスが残っているかを判定する。残っていればステップS7に移行し、残っていなければステップS11に移行する。例えば、パス格納部12(メモリ)のパステーブルをパス分類器8のプロパティ適用部16により参照し、パステーブル内に処理すべきパスが残っているかを判定する。処理が完了したことを示すフラグを「パスID」ごとに対応させて設け、そのフラグを監視して判定を行う。
ステップS7(プロパティ適用処理)では、プロパティテーブル(図7)内に適用するプロパティが残っているかを判定する。残っていればステップS8に移行し、残っていなければステップS6に移行する。例えば、プロパティ格納部10(メモリ)のプロパティテーブルをパス分類器8のプロパティ適用部16により参照し、プロパティテーブル内に処理すべきプロパティが残っているかを判定する。処理が完了したことを示すフラグを「プロパティID」ごとに対応させて設け、そのフラグを監視して判定を行う。
ステップS8(プロパティ適用処理)では、プロパティテーブルの「プロパティ式」の事前条件部を当該パスの最終状態に適用する。例えば、「プロパティID」が「p01」であれば事前条件部「合計>=500ドル and お客種別==“一般会員”」と、抽出したパスの最終状態を比較する。パスの最終状態は、状態テーブルとパステーブルから導出する。
ステップS9(プロパティ適用処理)では、ステップS8の適用結果が真であるかを判定する。事前条件部がパスの最終状態を満たしていればステップS10に移行し、満たしていなければステップS7に移行する。
ステップS10(プロパティ適用処理)では、条件を満たした当該プロパティの「プロパティID」をパステーブルの「ラベル」に記録する。
ステップS10(プロパティ適用処理)では、条件を満たした当該プロパティの「プロパティID」をパステーブルの「ラベル」に記録する。
図11のステップS11(シナリオ分類処理)では、パステーブル内に処理すべきパスが残っているかを判定する。残っていればステップS12に移行し、残っていなければステップS14に移行する。例えば、パス格納部12(メモリ)のパステーブルをパス分類器8のシナリオ分類部17により参照し、パステーブル内に処理すべきパスが残っているかを判定する。処理が完了したことを示すフラグを「パスID」ごとに対応させて設け、そのフラグを監視して判定を行う。
ステップS12(シナリオ分類処理)では、パステーブルの「ラベル」に既に当該パスがシナリオとして登録されているかを判定する。登録されていなければステップS13に移行し、登録されていればステップS11に移行する。
ステップS13(シナリオ分類処理)では、当該パスをシナリオテーブル(図8)の「ラベル」に追加する。
ステップS13(シナリオ分類処理)では、当該パスをシナリオテーブル(図8)の「ラベル」に追加する。
図12のステップS14(テストケース生成処理)では、シナリオテーブル内に処理すべきシナリオが残っているかを判定する。例えば、シナリオ格納部13(メモリ)のシナリオテーブルをテストケース生成器9により参照し、シナリオテーブル内に処理すべきシナリオが残っているかを判定する。処理が完了したことを示すフラグを「シナリオID」ごとに対応させて設け、そのフラグを監視して判定を行う。
ステップS15(テストケース生成処理)では、シナリオテーブルの「ラベル」に記録されたプロパティを、プロパティテーブルからプロパティ式を抽出する。
ステップS16(テストケース生成処理)では、抽出したプロパティの帰結部分の式をシナリオテーブルの「結果式」に「シナリオID」に対応するように記録する。
ステップS16(テストケース生成処理)では、抽出したプロパティの帰結部分の式をシナリオテーブルの「結果式」に「シナリオID」に対応するように記録する。
上記処理により、網羅的に行なうモデル検査の状態空間から生成されたテストケースがプログラムの仕様を示すプロパティ群から分類されるため、網羅的でかつ重複のない効率的なテストケースが生成可能となる。
また、期待されるテスト結果も、プロパティから生成するため、テスト設計者による間違いが入らない。このことにより、実機テストにおいて、テスト設計者に依存しない、漏れのなく正確なテストケース(シナリオ+期待される結果)が作成可能となる。
(上記本発明の実施形態の装置を実現できるコンピュータのハードウェア構成)
図13は本発明を実現するためのシステム構成を示すブロック図である。
図13において、テストケース生成をする装置130は、CPU131、ROM132、RAM133、ハードディスクドライブ(HDD)134、フレキシブルディスクドライブ(FDD)135、入力インタフェース(入力I/F)136、通信インタフェース(通信I/F)137、出力インタフェース(出力I/F)139、グラッフィック処理部1310などを備えている。また、上記各構成部はバス1311によってそれぞれ接続されている。
図13は本発明を実現するためのシステム構成を示すブロック図である。
図13において、テストケース生成をする装置130は、CPU131、ROM132、RAM133、ハードディスクドライブ(HDD)134、フレキシブルディスクドライブ(FDD)135、入力インタフェース(入力I/F)136、通信インタフェース(通信I/F)137、出力インタフェース(出力I/F)139、グラッフィック処理部1310などを備えている。また、上記各構成部はバス1311によってそれぞれ接続されている。
CPU131は、ROM132、RAM133、HDD134、FDD135に格納されているプログラムやデータに応じた処理を実行し、装置130の全体の制御などをする。ROM132は、CPU131が実行する基本的なプログラム(ブートプログラムなど)やデータを記録する。RAM133は、CPU131が実行途中のプログラムやデータを記録し、ワークエリアなどとして使用される。
HDD134には、CPU131が実行するOS(Operation System)やアプリケーションプログラムなどが記録され、CPU131の制御にしたがいハードディスクにデータのリード/ライトを実行する。FDD135は、CPU131の制御にしたがってFD135aに対するデータのリード/ライトを制御する。FD135aは、FDD135の制御で書き込まれたデータを記憶したり、FD135aに記憶されたデータを装置130に読み取らせたりする。また、着脱可能な記録媒体としてFD135aのほか、コンピュータで読み取り可能な記録媒体として、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(DigitalVersatileDisc)、DVD−RAM(RandomAccessMemory)、CD−ROM(CompactDiscReadOnlyMemory)、CD−R(Recorda
ble)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Opticaldisk)などがある。
ble)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Opticaldisk)などがある。
入力I/F136は、マウスやキーボードが接続され、ユーザが入力した情報を受信し、バス1311を介してCPU131に送信する。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスは、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
通信I/F137は、必要に応じ、他のコンピュータとの間のLAN接続やインターネット接続や無線接続のためのインタフェースである。通信回線を通じてインターネットなどのネットワークを介して他の装置に接続される。そして、ネットワーク138と内部のインタフェースは、外部装置からのデータの入出力を制御する。例えば、モデムやLANアダプタなどを採用することができる。
出力I/F139は、プリンタなどの出力装置139aを制御するために備える。また、グラフィック処理部1310には、ディスプレイなどの表示装置1310aが接続され、グラフィック処理部1310は、CPU131からの描画命令に従って表示装置1310aの画面上に操作情報、論理シミュレーション後のログやカバレッジの集計結果、信号波形等を表示する。例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。なお、グラフィック処理部1310を介さずに、出力I/F139から表示装置と接続してもよい。
このようなハードウェア構成を有するコンピュータを1台または2台以上用いることによって、上記説明した各種処理機能(図9〜12に示したフローチャート)が実現される。その場合システムが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
以上実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
プログラムモデル検査後の実機テストにおけるテストケースを生成するテストケース生成プログラムであって、
コンピュータに、
前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する状態特定処理と、
前記状態特定処理が特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出するパス抽出処理と、
前記パス抽出処理によって抽出したパスに対して、前記メモリに記録されている前記プ
ログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出するプロパティ適用処理と、
前記条件ごとに前記抽出したパスを分類するシナリオ分類処理と、
前記シナリオ分類処理により分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結から導出される期待されるテスト結果とを、テストケースとして生成するテストケース生成処理と、
を実行させることを特徴とするテストケース生成プログラム。
(付記2)
前記シナリオ分類処理は、
前記条件に複数の前記抽出したパスがあるとき、前記抽出したパスの中からひとつを選ぶことを特徴とする付記1に記載のテストケース生成プログラム。
(付記3)
前記テストケース生成処理は、
前記抽出したパスに対応するプロパティが複数あるときは、前記帰結の論理積を前記期待される結果とすることを特徴とする付記1に記載のテストケース生成プログラム。
(付記4)
プログラムモデル検査後の実機テストにおけるテストケースを生成するテストケース生成装置であって、
前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する状態特定部と、
前記状態特定部が特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出するパス抽出部と、
前記パス抽出部によって抽出したパスに対して、前記メモリに記録されている前記プログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出するプロパティ適用部と、
前記条件ごとに前記抽出したパスを分類するシナリオ分類部と、
前記シナリオ分類部により分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結から導出される期待されるテスト結果とを、テストケースとして生成するテストケース生成部と、
を具備することを特徴とするテストケース生成装置。
(付記5)
テストケース生成装置によって実行される、プログラムモデル検査後の実機テストにおけるテストケースを生成するテストケース生成方法であって、
前記テストケース生成装置が、
前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する状態特定し、
前記特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出するパス抽出し、
前記抽出したパスに対して、前記メモリに記録されている前記プログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出し、
前記条件ごとに前記抽出したパスを分類し、
前記分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結から導出される期待されるテスト結果とを、テストケースとして生成する、
ことを特徴とするテストケース生成方法。
(付記6)
前記シナリオ分類部は、
前記条件に複数の前記抽出したパスがあるとき、前記抽出したパスの中からひとつを選
ぶことを特徴とする付記4に記載のテストケース生成装置。
(付記7)
前記テストケース生成部は、
前記抽出したパスに対応するプロパティが複数あるときは、プロパティ前記帰結の論理積を前記期待される結果とすることを特徴とする付記1に記載のテストケース生成装置。(付記8)
前記条件に複数の前記抽出したパスがあるとき、前記抽出したパスの中からひとつを選ぶことを特徴とする付記5に記載のテストケース生成方法。
(付記9)
前記抽出したパスに対応するプロパティが複数あるときは、前記帰結の論理積を前記期待される結果とすることを特徴とする付記5に記載のテストケース生成方法。
(付記1)
プログラムモデル検査後の実機テストにおけるテストケースを生成するテストケース生成プログラムであって、
コンピュータに、
前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する状態特定処理と、
前記状態特定処理が特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出するパス抽出処理と、
前記パス抽出処理によって抽出したパスに対して、前記メモリに記録されている前記プ
ログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出するプロパティ適用処理と、
前記条件ごとに前記抽出したパスを分類するシナリオ分類処理と、
前記シナリオ分類処理により分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結から導出される期待されるテスト結果とを、テストケースとして生成するテストケース生成処理と、
を実行させることを特徴とするテストケース生成プログラム。
(付記2)
前記シナリオ分類処理は、
前記条件に複数の前記抽出したパスがあるとき、前記抽出したパスの中からひとつを選ぶことを特徴とする付記1に記載のテストケース生成プログラム。
(付記3)
前記テストケース生成処理は、
前記抽出したパスに対応するプロパティが複数あるときは、前記帰結の論理積を前記期待される結果とすることを特徴とする付記1に記載のテストケース生成プログラム。
(付記4)
プログラムモデル検査後の実機テストにおけるテストケースを生成するテストケース生成装置であって、
前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する状態特定部と、
前記状態特定部が特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出するパス抽出部と、
前記パス抽出部によって抽出したパスに対して、前記メモリに記録されている前記プログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出するプロパティ適用部と、
前記条件ごとに前記抽出したパスを分類するシナリオ分類部と、
前記シナリオ分類部により分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結から導出される期待されるテスト結果とを、テストケースとして生成するテストケース生成部と、
を具備することを特徴とするテストケース生成装置。
(付記5)
テストケース生成装置によって実行される、プログラムモデル検査後の実機テストにおけるテストケースを生成するテストケース生成方法であって、
前記テストケース生成装置が、
前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する状態特定し、
前記特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出するパス抽出し、
前記抽出したパスに対して、前記メモリに記録されている前記プログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出し、
前記条件ごとに前記抽出したパスを分類し、
前記分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結から導出される期待されるテスト結果とを、テストケースとして生成する、
ことを特徴とするテストケース生成方法。
(付記6)
前記シナリオ分類部は、
前記条件に複数の前記抽出したパスがあるとき、前記抽出したパスの中からひとつを選
ぶことを特徴とする付記4に記載のテストケース生成装置。
(付記7)
前記テストケース生成部は、
前記抽出したパスに対応するプロパティが複数あるときは、プロパティ前記帰結の論理積を前記期待される結果とすることを特徴とする付記1に記載のテストケース生成装置。(付記8)
前記条件に複数の前記抽出したパスがあるとき、前記抽出したパスの中からひとつを選ぶことを特徴とする付記5に記載のテストケース生成方法。
(付記9)
前記抽出したパスに対応するプロパティが複数あるときは、前記帰結の論理積を前記期待される結果とすることを特徴とする付記5に記載のテストケース生成方法。
1 モデル検査装置
2 テストケース生成装置
3 入出力装置
4 パス抽出
5 パス分類
6 テスト結果導出
7 パス抽出器
8 パス分類器
9 テストシナリオ生成器
10 プロパティ格納部
11 状態空間格納部
12 パス格納部
13 シナリオ格納部
14 状態特定部
15 パス抽出部
16 プロパティ適用部
17 シナリオ分類部
130 装置
131 CPU
132 ROM
133 RAM
134 ハードディスクドライブ(HDD)
135 フレキシブルディスクドライブ(FDD)
135a 記録媒体(FD)
136 入力インタフェース(入力I/F)
137 通信インタフェース(通信I/F)
138 ネットワーク
139 出力インタフェース(出力I/F)
1310 グラッフィック処理部
1310a 表示装置
2 テストケース生成装置
3 入出力装置
4 パス抽出
5 パス分類
6 テスト結果導出
7 パス抽出器
8 パス分類器
9 テストシナリオ生成器
10 プロパティ格納部
11 状態空間格納部
12 パス格納部
13 シナリオ格納部
14 状態特定部
15 パス抽出部
16 プロパティ適用部
17 シナリオ分類部
130 装置
131 CPU
132 ROM
133 RAM
134 ハードディスクドライブ(HDD)
135 フレキシブルディスクドライブ(FDD)
135a 記録媒体(FD)
136 入力インタフェース(入力I/F)
137 通信インタフェース(通信I/F)
138 ネットワーク
139 出力インタフェース(出力I/F)
1310 グラッフィック処理部
1310a 表示装置
Claims (5)
- プログラムモデル検査後の実機テストにおけるテストケースを生成するテストケース生成プログラムであって、
コンピュータに、
前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する状態特定処理と、
前記状態特定処理が特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出するパス抽出処理と、
前記パス抽出処理によって抽出したパスに対して、前記メモリに記録されている前記プログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出するプロパティ適用処理と、
前記条件ごとに前記抽出したパスを分類するシナリオ分類処理と、
前記シナリオ分類処理により分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結から導出される期待されるテスト結果とを、テストケースとして生成するテストケース生成処理と、
を実行させることを特徴とするテストケース生成プログラム。 - 前記シナリオ分類処理は、
前記条件に複数の前記抽出したパスがあるとき、前記抽出したパスの中からひとつを選ぶことを特徴とする請求項1に記載のテストケース生成プログラム。 - 前記テストケース生成処理は、
前記抽出したパスに対応するプロパティが複数あるときは、前記帰結の論理積を前記期待される結果とすることを特徴とする請求項1に記載のテストケース生成プログラム。 - プログラムモデル検査後の実機テストにおけるテストケースを生成するテストケース生成装置であって、
前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する状態特定部と、
前記状態特定部が特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出するパス抽出部と、
前記パス抽出部によって抽出したパスに対して、前記メモリに記録されている前記プログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出するプロパティ適用部と、
前記条件ごとに前記抽出したパスを分類するシナリオ分類部と、
前記シナリオ分類部により分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結から導出される期待されるテスト結果とを、テストケースとして生成するテストケース生成部と、
を具備することを特徴とするテストケース生成装置。 - テストケース生成装置によって実行される、プログラムモデル検査後の実機テストにおけるテストケースを生成するテストケース生成方法であって、
前記テストケース生成装置が、
前記モデル検査により出力された状態と前記状態の遷移により表される状態空間が記録されたメモリを参照して、外部モジュールを呼び出す状態を特定する状態特定し、
前記特定した前記外部モジュールを呼び出す状態から初期状態へのパスを、前記メモリに記録した前記状態の遷移を参照して抽出するパス抽出し、
前記抽出したパスに対して、前記メモリに記録されている前記プログラムの仕様に基づいて「A(条件)ならばB(帰結)である」の形式で作成されたプロパティの前記条件を比較して、前記条件を満たす前記抽出したパスを検出し、
前記条件ごとに前記抽出したパスを分類し、
前記分類された前記抽出したパスと、前記抽出したパスに対応する前記プロパティの前記帰結から導出される期待されるテスト結果とを、テストケースとして生成する、
ことを特徴とするテストケース生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008275432A JP5176869B2 (ja) | 2008-10-27 | 2008-10-27 | テストケース生成プログラムとテストケース生成装置およびテストケース生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008275432A JP5176869B2 (ja) | 2008-10-27 | 2008-10-27 | テストケース生成プログラムとテストケース生成装置およびテストケース生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010102624A JP2010102624A (ja) | 2010-05-06 |
JP5176869B2 true JP5176869B2 (ja) | 2013-04-03 |
Family
ID=42293198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008275432A Expired - Fee Related JP5176869B2 (ja) | 2008-10-27 | 2008-10-27 | テストケース生成プログラムとテストケース生成装置およびテストケース生成方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5176869B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5629239B2 (ja) | 2011-05-23 | 2014-11-19 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ソフトウェアの動作をテストする装置及び方法 |
JP6316120B2 (ja) | 2014-06-30 | 2018-04-25 | 日立オートモティブシステムズ株式会社 | テストケース生成システム及びテストケースを記録した記録媒体 |
CN111158656B (zh) * | 2019-12-31 | 2023-05-02 | 中国银行股份有限公司 | 基于因果树法的测试代码生成方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008071135A (ja) * | 2006-09-14 | 2008-03-27 | Nec Corp | 検証処理装置 |
-
2008
- 2008-10-27 JP JP2008275432A patent/JP5176869B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2010102624A (ja) | 2010-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shankar et al. | Operationalizing machine learning: An interview study | |
US7788086B2 (en) | Method and apparatus for processing sentiment-bearing text | |
US8650143B2 (en) | Determination of document credibility | |
US11650579B2 (en) | Information processing device, production facility monitoring method, and computer-readable recording medium recording production facility monitoring program | |
US20070226222A1 (en) | Computer-readable recording medium having recorded system development support program, system development support apparatus, and system development support method | |
Strandberg et al. | Information flow in software testing–an interview study with embedded software engineering practitioners | |
JP2018147280A (ja) | データ分析装置及びデータ分析方法 | |
JP5176869B2 (ja) | テストケース生成プログラムとテストケース生成装置およびテストケース生成方法 | |
Corea et al. | A taxonomy of business rule organizing approaches in regard to business process compliance | |
JP6695835B2 (ja) | 機械学習を利用したfaq登録支援方法、及びコンピュータシステム | |
JP5672165B2 (ja) | テストデータ生成プログラム、テストデータ生成方法、テストデータ生成装置 | |
CN109376152A (zh) | 大数据系统文件数据准备方法和系统 | |
JP6508327B2 (ja) | テキスト可視化システム、テキスト可視化方法、及び、プログラム | |
JP2013077124A (ja) | ソフトウェアテストケース生成装置 | |
JP2010128870A (ja) | データ処理装置 | |
US20140152668A1 (en) | Information processing apparatus and method and non-transitory computer readable medium | |
JP5321286B2 (ja) | プログラムモデル検査方法、プログラムモデル検査プログラム | |
WO2021186706A1 (ja) | 修理支援システムおよび修理支援方法 | |
JP2007115080A (ja) | 経営管理システム、経営管理方法および経営管理プログラム | |
JP2020101898A (ja) | 設計図作成支援方法、設計図作成支援装置、及び設計図作成支援プログラム | |
JP6520246B2 (ja) | 情報処理装置及び情報処理プログラム | |
JP7499138B2 (ja) | 判定装置、判定プログラム及び情報生成方法 | |
JP5900197B2 (ja) | 経路条件選択装置、該プログラム、及び該方法 | |
JP5304470B2 (ja) | モデル検査プログラム、モデル検査方法、モデル検査装置 | |
JP5228794B2 (ja) | モデル検査実施のための環境生成支援装置、環境生成支援方法、環境生成支援プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110808 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121205 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121211 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121224 |
|
LAPS | Cancellation because of no payment of annual fees |