(57)【要約】【課題】要求仕様記述および自動生成したテストシナリオパスからテスト仕様を自動的に生成するテスト仕様自動生成方式を提供する。【解決手段】クライアント11は、要求仕様の記述画面で必要な項目への記述を行って要求仕様を要求仕様ファイル２に格納する(１)。テストシナリオパス生成処理部８は、要求仕様ファイル２のイベントフローのイベント(系列)をテストシナリオパスの形をイメージして処理し(４)、指定されたテスト戦略に対応して自動的にテストシナリオパスを生成し、テストシナリオパスファイル５に生成したデータを格納する(５)。テスト仕様生成処理部９は、要求仕様ファイル２からテスト仕様生成に関するデータ項目を抽出する(７)とともに、テストシナリオパスファイル５からテストシナリオパスのデータ項目を抽出して(８)、「判定」項目以外の項目にテスト仕様を自動生成し、テスト仕様ファイル３に生成したデータを格納する(９)。【選択図】図１０
2008293382.tif 000002
【特許請求の範囲】
【請求項１】
テスト仕様生成に関するデータ項目およびテストシナリオパス生成に関するデータ項目について要求仕様記述がなされた要求仕様を格納する要求仕様ファイルと、
テストシナリオパス生成処理手段の処理によって生成されるテストシナリオパスの処理過程中のデータを一時保存するテストシナリオパステーブルと、
前記テストシナリオパス生成処理手段の処理によって自動生成されたテストシナリオパスを格納するテストシナリオパスファイルと、
テスト仕様生成処理手段の処理によって自動生成されたテスト仕様データとテスト担当者入力の判定データとを格納するテスト仕様ファイルと、を有し、
テスト担当者指示により起動され、前記要求仕様ファイルに格納された要求仕様の中からテストシナリオパス生成に関するデータ項目を抽出しかつテスト担当者によって指定されたテスト戦略に対応するテストシナリオパスを、前記テストシナリオパステーブルに一時保存された処理過程中のデータを用いてテストシナリオパスを自動的に生成するテストシナリオパス生成処理手段と、
テスト担当者指示により起動され、前記要求仕様ファイルに格納された要求仕様の中からテスト仕様生成に関するデータ項目を抽出するとともに、前記テストシナリオパスファイルに格納されたテストシナリオパスの中からテスト仕様生成に関するデータ項目を抽出して、判定項目を除くテスト仕様を自動的に生成するテスト仕様生成処理手段と、
を備えていることを特徴とするテスト仕様自動生成方式。
【請求項２】
前記要求仕様ファイルに記述される要求仕様は、機能要求項目または非機能要求項目についてそれぞれ統一モデリング言語ＵＭＬのユースケース図を用いてユースケースを記述するデータ項目を設け、さらに形式的仕様記述言語ＶＤＭ−ＳＬの「操作定義」構文に基づき、前記ユースケース記述によるイベントフローのイベントに事前条件、事後条件、次のイベントの項目を設けるとともに形式的仕様記述言語ＶＤＭ−ＳＬの「型定義」構文に基づき、入力データに対する境界値および外部データによる境界値の項目を設け、前記テストシナリオパス生成処理手段は前記要求仕様ファイルに格納された前記要求仕様の前記入力データに対する境界値および外部データによる境界値から前記テストシナリオパス生成に関するデータ項目を抽出し、前記テスト仕様生成処理手段は前記要求仕様ファイルに格納された前記要求仕様の前記イベントフローのイベントから前記テスト仕様生成に関するデータ項目を抽出することを特徴とする請求項１記載のテスト仕様自動生成方式。
【請求項３】
例外項目生成処理手段の処理によって自動生成された例外項目イベントを格納する例外項目イベントファイルと、
テスト担当者指示により起動され、前記要求仕様ファイルに格納された要求仕様の中から例外項目イベント生成に関するデータ項目として前記入力データに対する境界値および外部データによる境界値を抽出して、例外項目イベントを自動的に生成し前記例外項目イベントファイルに格納するとともに自動生成された前記例外項目イベントを前記要求仕様ファイルに追記する例外項目生成処理手段と、を有し、
前記例外項目イベントが前記要求仕様ファイルに追記された場合には、追記された前記要求仕様ファイルにアクセスして前記例外項目イベントに対して前記テストシナリオパス生成に関するデータ項目および前記テスト仕様生成に関するデータ項目について要求仕様記述の追加を行うことを特徴とする請求項２記載のテスト仕様自動生成方式。
【請求項４】
前記テスト仕様生成処理手段は、
前記要求仕様ファイルに格納された前記要求仕様の中から前記テスト仕様生成に関するデータ項目を抽出し該データ項目を前記テスト仕様のデータ項目に変換し該データ項目に仕様を設定する第１のデータ項目変換設定手段と、
前記テストシナリオパスファイルに格納されたテストシナリオパスの中からテスト仕様
生成に関するデータ項目を抽出し該データ項目を前記テスト仕様のデータ項目に変換し該データ項目に仕様を設定する第２のデータ項目変換設定手段と、
を有することを特徴とする請求項１記載のテスト仕様自動生成方式。
【請求項５】
前記テスト戦略として、分岐が３分岐以上となるときは分岐を分離して全てのパスを通る全シナリオ、分岐が３分岐以上となるときも１つの分岐として全てのパスを通る全分岐、および全てのイベントを通る最少のパスをテストシナリオパスとするイベント網羅を設け、イベント網羅度をテスト戦略として前記テスト担当者が設定するために前記全シナリオ、前記全分岐および前記イベント網羅のうちのいずれか一つを指定し、前記テストシナリオパス生成処理手段は、前記要求仕様ファイルに格納された前記要求仕様の中から前記テストシナリオパス生成に関するデータ項目を抽出しかつ前記いずれか一つが指定されたテスト戦略に対応するテストシナリオパスを、前記テストシナリオパステーブルに一時保存された処理過程中のデータを用いてテストシナリオパスを自動的に生成することを特徴とする請求項１記載のテスト仕様自動生成方式。
【請求項６】
前記テストシナリオパス生成処理手段は、
前記要求仕様ファイルに格納された前記要求仕様の中から前記テストシナリオパス生成に関するデータ項目を抽出しかつ前記テスト戦略として全シナリオが指定されたことに伴い全シナリオに対応するテストシナリオパスを生成する全シナリオテストシナリオパス生成手段と、
前記要求仕様ファイルに格納された前記要求仕様の中から前記テストシナリオパス生成に関するデータ項目を抽出しかつ前記テスト戦略として全分岐が指定されたことに伴い全分岐に対応するテストシナリオパスを生成する全分岐テストシナリオパス生成手段と、
前記要求仕様ファイルに格納された前記要求仕様の中から前記テストシナリオパス生成に関するデータ項目を抽出しかつ前記テスト戦略としてイベント網羅が指定されたことに伴いイベント網羅に対応するテストシナリオパスを生成するイベント網羅テストシナリオパス生成手段と、
を有することを特徴とする請求項５記載のテスト仕様自動生成方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込みソフトウェアを含むソフトウェアのテスト仕様の項目を設計するにあたって、自動的にテスト仕様を生成するテスト仕様自動生成方式に関するものである。
【背景技術】
【０００２】
従来、イベント駆動型ソフトウェアの要求仕様からテストケースを自動生成する場合、ＵＭＬ(Unified Modeling Language)(統一モデリング言語)のユースケース記述を用いたユースケース駆動テストがソフトウェア開発に従事する者に広く知られている。
【０００３】
また特許文献１では、要求仕様に含まれる各ユースケースの実行過程を履歴として残し、ユースケースを実行してシステムの動きを表すシナリオを生成し、生成されたシナリオを参照することにより、記述された要求仕様中でユースケースの抜けや記述漏れがないかを確認する技術を開示している。
【０００４】
また非特許文献１では、上記したユースケース駆動テストについて、ユースケース仕様書からシナリオとテストケースを抽出し、テストケースの条件を加えてテストケースマトリックスを完成させる方法について開示している。
【０００５】
さらに非特許文献２では、ユースケースのイベントフローと特殊要件によりシステムのテストケースのほとんどが検出可能であることを示唆している。
【特許文献１】特開２０００−３５３０８２号公報
【非特許文献１】池田庄吾「ユースケース駆動テストの概観」IBM Software World 2005、http://www-06.ibm.com/jp/software/isw/handouts/20050517.html セッションP4(閲覧確認2007.05.11)
【非特許文献２】Iver Jacobson 他2名 著,日本ラショナルソフトウェア株式会社 訳「UMLによる統一ソフトウェア開発プロセス」翔泳社、2003年3月30日発行、pp.347-348
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来技術であるユースケース駆動テストは、テストシナリオやテストケースの生成を手動で行っているか、人の判断に依存したテストケースおよびテストシナリオの抽出を行っている。
【０００７】
また特許文献１は、要求仕様に含まれる各ユースケースの実行過程を履歴として残し、ユースケースを実行してシステムの動きを表すシナリオを生成し、生成されたシナリオを参照することにより、記述された要求仕様中でユースケースの抜けや記述漏れがないかを確認しているが、要求仕様記述および自動生成したテストシナリオパスからテスト仕様を自動的に生成すること、またテスト仕様の生成状況により要求仕様の不備を検出することについての記載はなされていない。
【０００８】
また非特許文献１は、ユースケース駆動テストについて、ユースケース仕様書からシナリオとテストケースを抽出し、テストケースの条件を加えてテストケースマトリックスを完成させる方法について開示しているが、テストケースマトリックスの生成は全てユースケース仕様書を目視して人手により生成するものであり、生成工数がかかり、また記述漏れや抜けが発生する可能性が高い。
【０００９】
さらに非特許文献２は、ユースケースのイベントフローと特殊要件によりシステムのテ
ストケースのほとんどが検出可能であるとし、ユースケース及び特殊要件（非機能要件）からテスト仕様を抽出することが妥当であると述べている。しかし具体的方式については触れていない。
【００１０】
上述したこれらの問題点を解決するために本発明は、要求仕様記述および自動生成したテストシナリオパスからテスト仕様を自動的に生成するテスト仕様自動生成方式を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために本発明は、テスト仕様生成に関するデータ項目およびテストシナリオパス生成に関するデータ項目について要求仕様記述がなされた要求仕様を格納する要求仕様ファイルと、テストシナリオパス生成処理手段の処理によって生成されるテストシナリオパスの処理過程中のデータを一時保存するテストシナリオパステーブルと、前記テストシナリオパス生成処理手段の処理によって自動生成されたテストシナリオパスを格納するテストシナリオパスファイルと、テスト仕様生成処理手段の処理によって自動生成されたテスト仕様データとテスト担当者入力の判定データとを格納するテスト仕様ファイルと、を有し、テスト担当者指示により起動され、前記要求仕様ファイルに格納された要求仕様の中からテストシナリオパス生成に関するデータ項目を抽出しかつテスト担当者によって指定されたテスト戦略に対応するテストシナリオパスを、前記テストシナリオパステーブルに一時保存された処理過程中のデータを用いてテストシナリオパスを自動的に生成するテストシナリオパス生成処理手段と、テスト担当者指示により起動され、前記要求仕様ファイルに格納された要求仕様の中からテスト仕様生成に関するデータ項目を抽出するとともに、前記テストシナリオパスファイルに格納されたテストシナリオパスの中からテスト仕様生成に関するデータ項目を抽出して、判定項目を除くテスト仕様を自動的に生成するテスト仕様生成処理手段と、を備えていることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、要求仕様記述および自動生成したテストシナリオパスからテスト仕様を自動的に生成することが可能となり、テスト仕様の生成状況から要求仕様の不備を容易に検出することができ、ソフトウェア開発の早期の段階で要求仕様の記述漏れや抜け、曖昧さをなくし、更にテスト仕様の漏れや抜け、曖昧さをなくすことで手戻り作業を削減し、品質の高いソフトウェアを開発することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を、図面を参照しながら説明する。
図１は、本発明テスト仕様自動生成に係るシステム構成概要を示す図である。図１に示すシステム構成は、本発明テスト仕様自動生成を実現する上でのハードウェア環境を概略的に示したもので、本発明テスト仕様自動生成は、クライアントとサーバとがネットワークで結合されるクライアントサーバシステムを用いて実現される例について説明するが、他のシステム構成であってもよい。
【００１４】
クライアント11はネットワーク10経由でサーバ１に繋がれ、周知のクライアントが有するコンピュータハードウェア資源を用いてサーバ１に対する処理の起動やデータの表示(ダウンロードを含む)、データの設定(アップロードを含む)を行う。ネットワーク10はクライアント11とサーバ１とを連携するもので、ＬＡＮ、公衆網（インターネットを含む）など、周知のネットワーク技術を用いることができる。サーバ１のコンピュータハードウェア資源は当業者に周知のコンピュータ技術によって実現されているもので、例えばコンピュータハードウェア資源としてＣＰＵ、記憶装置(ＲＯＭ，ＲＡＭ，ＨＤＤを含む)、入出力装置(通信Ｉ/Ｆ，ディスプレイ，プリンタ，マウス，キーボードなどを含む)などを備えている。なお本発明テスト仕様自動生成に係るハードウェア構成については後述する
それぞれの生成処理部動作において詳しく説明する。
【００１５】
図１では、本発明テスト仕様自動生成に係る各種ファイルのデータ構造を概略的に説明している。各種ファイルのデータ構造は、本発明テスト仕様自動生成に係る各種ファイルの全体構成を理解しやくするために記載しているものである。そして各種ファイルは、上述したサーバ１の記憶装置(ＲＯＭ，ＲＡＭ，ＨＤＤを含む)に保存され、サーバ１のＣＰＵによってアクセス可能にされる。
【００１６】
図１に示す要求仕様ファイル２は、要求仕様記述がなされたデータを格納するものである。要求仕様の記述をなすために、図１０のデータの流れ(１)に示すようにクライアント11の要求仕様記述を行うテスト担当者がサーバ１にログインし、サーバ１から要求仕様記述に係るデータなどをダウンロードする。クライアント11の要求仕様記述を行うテスト担当者は、表示画面上において必要なデータを入力する。本発明では要求仕様記述について以下に示すような所定の規約を設けている。すなわち、本発明の要求仕様記述では、要求仕様の機能要件および非機能要件をソフトウェア開発従事者に周知のＵＭＬ(Ｕnified Ｍodeling Ｌanguage)のユースケース図を用いたユースケース記述を基本とし、さらに要求仕様の項目の漏れ抜けや曖昧さをなくすため形式的仕様記述言語であるソフトウェア開発従事者に周知のＶＤＭ−ＳＬ（Vienna Development Method Specification Language)の構文に基づいた項と境界値テストを想定した境界値の項を追加する。なお、ＶＤＭ−ＳＬは、ISO_IEC_13817-1として標準化されているものである。
【００１７】
またユースケース記述によるイベントフローの各イベントには形式的仕様記述言語であるＶＤＭ−ＳＬの「操作定義」構文に対応した項を設ける。すなわち
operation definition=identifier, parameter types
externals,
'pre', expression,
'post', expression
のＶＤＭ−ＳＬの「操作定義」構文について
identifierを「イベント」
parameter typesを「入力データ」
externalsを「外部データ」
'pre', expressionを「事前条件」
'post', expressionを「事後条件」
に対応付ける。
【００１８】
さらに、入力データに対する境界値および外部データによる境界値を明確にし、設計およびテストの条件を明確にするため、「入力データ・境界値」「外部データ・境界値」の項目を設ける。
【００１９】
これはＶＤＭ−ＳＬの「型定義」に相当する。すなわち
type definition=identifier,'=','map to',type   ＜写像型の場合＞
について
identifier  は「入力データ」または「外部データ」
type  は「境界値」
に対応付ける。
【００２０】
各イベントの「入力データ・境界値」「外部データ・境界値」により論理的にデータの真が成立する条件が明確になり、偽の条件となる例外系列のイベントを自動生成することができる。そしてテスト実行に際して真が成立する境界値または偽が成立する境界値でテストを行う。つまり「入力データ・境界値」及び「外部データ・境界値」のデータにより
ブラックボックステスト手法である境界値分析が適用可能となる。すなわち整数のdataが1,000≦data≦10,000の範囲が真であるとすると、真のテストはdata=1,000および data=10,000で行い、偽のテストはdata=999およびdata=10,001で行う。なお、「入力データ」「外部データ」の数が多くなるとテスト数が増加するため、実験計画法、All Pair 法、同値分割などのテスト数を削減する手法を導入しても良い。
【００２１】
またユースケース記述による項目のイベントとイベントフローの各イベント間の前後関係を明確に記述するように「次のイベント」の項目を設ける。この「次のイベント」項目への設定により各イベント間の前後関係や分岐が明確になり、イベント網羅度をテスト戦略として設定することが可能になる。
【００２２】
このようにしてクライアント11の要求仕様記述を行うテスト担当者によって要求仕様記述がなされたデータをサーバ１にアップロードして要求仕様ファイル２に要求仕様記述がなされたデータを要求仕様として格納する。図１に示す要求仕様ファイル２において、要求仕様ファイル２のファイルの項目として下記がある。
【００２３】
仕様名・版数 201：仕様名は仕様記述の対象としている仕様名を格納する。仕様記述に対して一意に設定する。また版数は仕様名の版を識別する数値を格納する。
項目名202：ユースケースのイベントに対応した機能要求または非機能要求の項目名を格納する。
【００２４】
概要203：機能要求または非機能要求の概要を格納する。
イベント204：当該項目が起動されるイベント名を格納する。
次のイベント205：当該項目の次に起動されるイベント番号を格納する。次のイベントがない場合は「終了」と記載する。またイベント番号の後ろに（    ）で「備考」を格納してもよい。
【００２５】
不変条件206：当該項目の各イベント内で変化しない条件。
初期条件207：当該項目が成立するために初期に必要とする条件。
イベントフロー208：当該項目内での一連のイベントの系列。基本系列、代替系列、例外系列からなる。
【００２６】
基本系列209：当該項目内での基本的なイベントの系列。
イベント番号・イベント210：イベントを識別するための当該項目内での一意の番号と当該イベントの説明を格納する。
【００２７】
事前条件211：当該イベントが成立するために事前に必要とする条件。
入力データ・境界値212：当該イベントの入力データと当該入力データのデータ値がとる値の範囲を格納する。
【００２８】
事後条件213：当該イベントの処理が終了した時にとる条件。
外部データ・境界値214：当該イベントの入力データ以外のデータと当該データのデータ値がとる値の範囲を格納する。
【００２９】
次のイベント215：当該イベントの次に起動されるイベント番号を格納する。次のイベントがない場合は「終了」と記載する。またイベント番号の後ろに（    ）で「備考」を格納してもよい。
【００３０】
代替系列216：当該項目内での基本系列に代替するイベントの系列。代替系列も基本系列と同様にイベント番号・イベント、事前条件、入力データ・境界値、事後条件、外部
データ・境界値、次のイベントのデータを持つ。
【００３１】
例外系列217：当該項目内での異常が発生した場合など例外イベントの系列。例外系列も基本系列と同様にイベント番号・イベント、事前条件、入力データ・境界値、事後条件、外部データ・境界値、次のイベントのデータを持つ。
【００３２】
図２は、本発明の実施形態に係る要求仕様ファイル２に格納された要求仕様記述がなされたデータ構造例を示す図である。事例は要求仕様項目名が“入金”の例であり、図示していないが要求仕様ファイル２にはこれ以外の要求仕様項目名、例えば“出金”などについても要求仕様記述がなされて格納されている。図２の右欄下部には後述する例外項目生成処理部７の処理フローにしたがって自動生成された例外項目イベントに対しクライアント11の要求仕様記述を行うテスト担当者が記述を追加した例についても示しているが、これについては後述する。
【００３３】
例外項目イベントファイル４は、後述する例外項目生成処理部７の処理フローにしたがって自動生成された例外項目を格納するものである。例外項目イベントを自動生成して当該データを例外項目イベントファイル４に格納するために、クライアント11の例外項目イベント生成を行うテスト担当者は、サーバ１にログインし、サーバ１内において後述する例外項目生成処理部７の起動を指示する。図１０に示す例外項目生成処理部７は、要求仕様記述がなされた要求仕様ファイル２からデータの流れ(２)に示すように例外項目イベント生成に関するデータを抽出して、例外項目イベントを自動生成(これについては後述する)し、データの流れ(３)に示すように例外項目イベントファイル４に生成したデータを格納する。この際、自動生成した例外項目イベントを要求仕様ファイル２に追記する。そして自動生成され要求仕様ファイル２に追記した例外項目イベントに対しては、改めてクライアント11の要求仕様記述を行うテスト担当者が要求仕様ファイル２の要求仕様をダウンロードして「イベント」「事前条件」「入力データ・境界値」「事後条件」「外部データ・境界値」「次のイベント」を吟味のうえ、要求仕様に追記を行う。
【００３４】
図１に示す例外項目イベントファイル４において、例外項目イベントファイル４のファイルの項目として下記がある。すなわち、
仕様名・版数401：仕様名には対象としている仕様名を格納する。また版数には対象としている仕様名の版数を格納する。
【００３５】
項目名402：対象としているユースケースのイベントに対応した機能要求または非機能要求の項目名を格納する。
イベント番号・イベント403：例外項目生成処理部７の処理フローにしたがって生成される例外系列における例外項目のイベント番号とコメントを格納する。
【００３６】
図４は、本発明の実施形態に係る例外項目イベントファイル４に格納された例外項目イベント記述がなされたデータ構造例を示す図である。同図においてはイベント番号３〜８に係る例外項目イベントが自動生成されたことを示す。ただし、同図においてファイルの項目「仕様名・版数」「項目名」は表記が省かれている。
【００３７】
テストシナリオパスファイル５は、後述するテストシナリオパス生成処理部８の処理フローにしたがって自動生成されたテストシナリオパスを格納するものである。テストシナリオパスを自動生成して当該データをテストシナリオパスファイル５に格納するために、クライアント11のテストシナリオパス生成を行うテスト担当者は、サーバ１にログインし、サーバ１内において後述するテストシナリオパス生成処理部８の起動を指示する。図１０に示すテストシナリオパス生成処理部８は、所定プログラムを動作させ図８Ａ〜Ｃに示すテストシナリオパス生成処理部８の処理フローにしたがってデータの流れ(４)に示すよ
うに要求仕様記述がなされた要求仕様ファイル２のイベントフローのイベント(系列)を図１１に示すテストシナリオパスの形をイメージして処理し、一方、テストシナリオパス生成を行うテスト担当者がテスト戦略として「全シナリオ」「全分岐」「イベント網羅」のいずれかをデータの流れ(１)、(４)で指定することにより、それに対応して自動的にテストシナリオパスをデータの流れ(５)に示すように生成する。このテストシナリオパスの生成に際しては、データの流れ(６)に示すようにテストシナリオパステーブル６にデータを一時保存しながらテストシナリオパスを自動生成する。
【００３８】
図１に示すテストシナリオパスファイル５において、テストシナリオパスファイル５のファイルの項目として下記がある。すなわち、
仕様名・版数501：仕様名には対象としている仕様名を格納する。また版数には対象としている仕様名の版数を格納する。
【００３９】
項目名502：対象としているユースケースのイベントに対応した機能要求または非機能要求の項目名を格納する。
テスト戦略503：テスト戦略として指定された「全シナリオ」「全分岐」「イベント網羅」を格納する。
【００４０】
テストシナリオパス番号504：テストシナリオパス生成処理部８にて自動生成される当該項目内のテストシナリオパスを識別するための通番を格納する。
「全シナリオ」の場合はテストシナリオパステーブル６のNo．が格納される。
【００４１】
「全分岐」の場合はテストシナリオパステーブル６の登録ステータス（全分岐）が１；登録済のものについての通番が格納される。
「イベント網羅」の場合はテストシナリオパステーブル６の登録ステータス（イベント網羅）が１；登録済のものについての通番が格納される。
【００４２】
イベント番号505：テストシナリオパス生成処理部８にて自動生成される当該項目内のテストシナリオパス内のイベント番号を格納する。すなわちテストシナリオパステーブル６の当該テストシナリオパス番号に対応するレコードに記載されているイベントのイベント番号が格納される。
【００４３】
図５は、本発明の実施形態に係るテストシナリオパスファイル５に格納されたテストシナリオパスの記述がなされたデータ構造例を示す図である。同図においてはいずれのテスト戦略が指定されたかを特定せずに３つのテスト戦略、すなわち、「全シナリオ」「全分岐」「イベント網羅」についてのテストシナリオパスの「テストシナリオパス番号」(通番)、「イベント番号」(系列１・・等)を格納したときのデータ構造を示している。ただし、同図においてファイルの項目「仕様名・版数」「項目名」「テスト戦略」は表記が省かれている。
【００４４】
テストシナリオパステーブル６は、後述するテストシナリオパス生成処理部８によって自動生成されるテストシナリオパスデータを一時保存するテーブルである。そしてテストシナリオパステーブル６には、
No. 601：テストシナリオパステーブル６のレコード（テストシナリオパス）に対応する通番を格納する。
【００４５】
登録ステータス（全分岐）602：全分岐のテストシナリオパスが１；登録済または0；未登録かのステータスを格納する。
登録ステータス（イベント網羅）603：イベント網羅のテストシナリオパスが１；登録済または0；未登録かのステータスを格納する。
【００４６】
開始604：分岐とイベントの組が存在することを示す。
分岐605：イベントと組となって当該テストシナリオパスの要素となる分岐番号を格納する。
【００４７】
イベント606：分岐と組となって当該テストシナリオパスの要素となるイベント番号(系列１・・等)を格納する。
図１２は、本発明の実施形態に係るテストシナリオパステーブルのテーブル構造例を示す図である。同図に示されるテーブルには、テストシナリオパス生成処理部８によって自動生成されるテストシナリオパスが生成されるにしたがって左から、No.、登録ステータス（全分岐）のステータス、登録ステータス（イベント網羅）のステータス、開始、分岐、イベントの順で、テストシナリオパス(図１１参照)に合致するよう記述される。
【００４８】
テスト仕様ファイル３は、後述するテスト仕様生成処理部９の処理フローにしたがって要求仕様ファイル２に格納されたテスト仕様生成に関するデータ項目およびテストシナリオパスファイル５に格納されたテストシナリオパスの中からテスト仕様生成に関するデータ項目に基づいて自動生成されるテスト仕様データと、クライアント11のテスト担当者入力の判定データとを格納するものである。テスト仕様を自動生成してデータをテスト仕様ファイル３に格納するために、クライアント11のテスト仕様生成を行うテスト担当者は、サーバ１にログインし、サーバ１内において後述するテスト仕様生成処理部９の起動を指示する。図１０に示すテスト仕様生成処理部９は、要求仕様記述がなされた要求仕様ファイル２からデータの流れ(７)に示すようにテスト仕様生成に関するデータ項目を抽出するとともに、テストシナリオパスファイル５からデータの流れ(８)に示すようにテストシナリオパスの中からテスト仕様生成に関するデータ項目を抽出して、テスト仕様を自動生成(これについては後述する)し、データの流れ(９)に示すようにテスト仕様ファイル３に生成したデータを格納する。この場合、本テスト仕様の項目は、IEEE standard 829-1983 for Software Test Documentationの標準を参考にし、テスト項目、テストシナリオ、テストケースの階層で構成する。
【００４９】
IEEE standard 829-1983 の
Test caseは「テスト項目」に相当し
Test procedureは「テストシナリオ」に相当する。
【００５０】
「テストケース」はIEEE standard 610の定義「入力値、実行事前条件、予想結果、そして実行事後条件の組み合わせで、特定のプログラムパスを用いることや指定された要件の遵守を検証することのような、特定の目的またはテスト条件のために開発されたもの」を指し、本発明では一連のTest procedureの個々の項目を「テストケース」と呼び、この単位で合否判定をすることでTest procedureのどの部分が不具合であるかを検出できるようにし、テストの精密さを増すようにしている。
【００５１】
図１に示すテスト仕様ファイル３において、テスト仕様ファイル３のファイルの項目として下記がある。すなわち、
仕様名・版数 301：仕様名にはテスト仕様名を格納する。また版数にはテスト仕様名の版を識別する番号を格納する。
【００５２】
テスト項目302：要求仕様ファイル２の項目に対応したテスト項目名を格納する。
テスト概要303：要求仕様ファイル２の概要に対応したテストの概要を格納する。
共通テスト条件304：要求仕様ファイル２の「イベント」「不変条件」「初期条件」を共通テスト条件とし、テスト項目に対応した共通テスト条件として格納する。（    ）で「備考」を格納してもよい。
【００５３】
テストシナリオ305：テスト項目に対応したテストシナリオパス番号を格納する。テスト項目に対し、１つ以上のテストシナリオがある。
テストケース306：当該テスト項目でのイベントフローの各イベントに相当するイベント番号を格納する。（    ）で「備考」を格納してもよい。
【００５４】
個別テスト条件307：要求仕様ファイル２の「事前条件」「入力データ・境界値」を個別テスト条件とし、当該テストケースのテストを実施するに当たっての個別テスト条件として格納する。（    ）で「備考」を格納してもよい。
【００５５】
テスト内容308：要求仕様ファイル２の「イベント番号・イベント」の「イベント」をテスト内容とし、当該テストケースの説明として格納する。（    ）で「備考」を格納してもよい。
【００５６】
テスト結果309：要求仕様ファイル２の「事後条件」「外部データ・境界値」をテスト結果とし、当該テストケースを実施した場合の判定条件として格納する。（    ）で「備考」を格納してもよい。
【００５７】
判定310：項目のみとし、テスト担当者がテストを実施した結果とテスト結果を照合し、テスト担当者が「判定結果」「担当者名」「テスト年月日」を入力する。テストに使用したデータ値を（  ）で「備考」として格納してもよい。
【００５８】
図６は、本発明の実施形態に係るテスト仕様ファイル３に格納されたテスト仕様記述がなされたデータ構造例を示す図である。同図において「判定」項目への記述以外は自動生成により仕様が設定される。
【００５９】
例外項目生成処理部７は、上述した図１のサーバ１内において実現される機能実現手段であって、サーバ１内においてＣＰＵへの起動に伴い記憶装置（ＲＯＭ，ＨＤＤ）に格納されているプログラムを読み込み、ＣＰＵがプログラム制御によって動作し、クライアント11とのデータのやりとりの外、サーバ１内の記憶装置（ＲＡＭ，ＨＤＤ）に展開されるファイルへのリード/ライト機能、当該ファイルに対するファイル編集機能などを用いて実現される。このようなコンピュータのハードウェア資源を用いて実現される諸機能は図解せずとも当業者に広く知られているものでここではその説明を省略する。クライアント11の例外項目イベント生成を行うテスト担当者はサーバ１に対して例外項目生成処理部７の起動を指示し、これを受けて図１０に示す例外項目生成処理部７は、所定プログラムを動作させ図７に示す例外項目生成処理部７の処理フローにしたがって要求仕様記述がなされた要求仕様ファイル２からデータの流れ(２)に示すように例外項目イベント生成に関するデータ項目、すなわち要求仕様ファイル２に記述されているイベントフローのイベント項目に設けられている入力データ・境界値または外部データ・境界値を抽出して、評価が偽となる例外項目を自動生成し、例外項目イベントとしてデータの流れ(３)に示すように例外項目イベントファイル４に生成したデータを格納する（図４参照）。この際、自動生成した例外項目イベントを要求仕様ファイル２に追記する（図３右欄下部参照）。そして自動生成され要求仕様ファイル２に追記した例外項目イベントに対しては、改めてクライアント11の要求仕様記述を行うテスト担当者が要求仕様ファイル２の要求仕様をダウンロードして例外項目イベント項目に対して記述を行う（図２右欄下部参照）。具体的な例外項目生成処理部７の処理フローを図７に示す。図７の処理フローについては後述する。
【００６０】
テストシナリオパス生成処理部８は、上述した図１のサーバ１内において実現される機能実現手段であって、サーバ１内においてＣＰＵへの起動に伴い記憶装置（ＲＯＭ，ＨＤＤ）に格納されているプログラムを読み込み、ＣＰＵがプログラム制御によって動作し、
クライアント11とのデータのやりとりの外、サーバ１内の記憶装置（ＲＡＭ，ＨＤＤ）に展開されるファイルへのリード/ライト機能、当該ファイルに対するファイル編集機能などを用いて実現される。このようなコンピュータのハードウェア資源を用いて実現される諸機能は図解せずとも当業者に広く知られているものでここではその説明を省略する。クライアント11のテストシナリオパス生成を行うテスト担当者は、サーバ１に対してテストシナリオパス生成処理部８の起動を指示し、これを受けて図１０に示すテストシナリオパス生成処理部８は、所定プログラムを動作させ図８Ａ〜Ｃに示すテストシナリオパス生成処理部８の処理フローにしたがってデータの流れ(４)に示すように要求仕様記述がなされた要求仕様ファイル２のイベントフローのイベント(系列)を図１１に示すテストシナリオパスの形をイメージして処理し、一方、テストシナリオパス生成を行うテスト担当者がテスト戦略として「全シナリオ」「全分岐」「イベント網羅」のいずれかをデータの流れ(１)、(４)で指定することにより、それに対応してデータの流れ(５)に示すように自動的にテストシナリオパスを生成する。このテストシナリオパスの生成に際しては、データの流れ(６)に示すようにテストシナリオパステーブル６にデータを一時保存しながらテストシナリオパスを自動生成する。
【００６１】
なお、テストシナリオパス生成を行うテスト担当者が指定するテスト戦略が、
・全シナリオの場合は、分岐が３分岐以上となるときは分岐を分離して全てのパスを通るテストシナリオパスを生成する。
【００６２】
・全分岐の場合は、分岐が３分岐以上となるときも１つの分岐として全てのパスを通るテストシナリオパスを生成する。
・イベント網羅は、全てのイベントを通る最少のパスをテストシナリオパスとして生成する。
【００６３】
このようにテスト戦略を指定することによりテストケース数の増減が可能となる。
図８Ａ〜Ｃは、上記テストシナリオパス生成処理部８の処理フローを示す図である。図８Ａ〜Ｃの処理フローについては後述する。
【００６４】
テスト仕様生成処理部９は、上述した図１のサーバ１内において実現される機能実現手段であって、サーバ１内においてＣＰＵへの起動に伴い記憶装置（ＲＯＭ，ＨＤＤ）に格納されているプログラムを読み込み、ＣＰＵがプログラム制御によって動作し、クライアント11とのデータのやりとりの外、サーバ１内の記憶装置（ＲＡＭ，ＨＤＤ）に展開されるファイルへのリード/ライト機能、当該ファイルに対するファイル編集機能などを用いて実現される。このようなコンピュータのハードウェア資源を用いて実現される諸機能は図解せずとも当業者に広く知られているものでここではその説明を省略する。クライアント11のテスト仕様生成を行うテスト担当者は、サーバ１に対してテスト仕様生成処理部９の起動を指示し、これを受けて図１０に示すテスト仕様生成処理部９は、所定プログラムを動作させ図９に示すテスト仕様生成処理部９の処理フローにしたがって要求仕様記述がなされた要求仕様ファイル２からデータの流れ(７)に示すようにテスト仕様生成に関するデータ項目を抽出するとともに、テストシナリオパスファイル５からデータの流れ(８)に示すようにテストシナリオパスの中からテスト仕様生成に関するデータ項目を抽出して、「判定」項目以外のデータ項目についてテスト仕様を自動生成し、データの流れ(９)に示すようにテスト仕様ファイル３に生成したデータを格納する。具体的なテスト仕様生成処理部９の処理フローを図９に示す。図９の処理フローについては後述する。
【００６５】
図１０は、図１に示したサーバ１内の各種ファイル、各種生成処理部およびクライアント11を活用して本発明テスト仕様自動生成を実現するための相互の結合関係およびデータの流れを示す相関図である。図１０に示したそれぞれのブロックは、図１に示したサーバ１内において機能を実現するための機能ブロックであり、相互の結合関係およびデータの
流れを図示番号とともに矢視線で示す。なお処理内容の詳細については後述する。
【００６６】
相互の結合関係およびデータの流れについて図１０を用いて簡単に説明する。クライアントサーバシステムにおいてクライアント11がサーバ１にログインする。次いでサーバ１に対してどのような生成処理を成そうとするのかの指示をクライアント11から出す。なお図１０ではクライアント11を代表して一つだけ表示しているもので、図１に示すようにクライアント11はサーバ１に対して複数存在する。いま、要求仕様を記述するための指示が出されたとすると、これに応じて要求仕様の記述に係るデータのダウンロードが行われてクライアント11の画面に表示される。また要求仕様ファイル２の要求仕様であって例外項目イベントが追記された要求仕様がダウンロードされる。そしてデータの流れ(１)に示すように要求仕様の記述画面で必要な項目への記述を行って記述がなされた要求仕様をサーバ１にアップロードする。
【００６７】
例外項目生成処理部７は、クライアント11からの指示により起動し、図７に示す処理フローにしたがって要求仕様記述がなされた要求仕様ファイル２からデータの流れ(２)に示すように例外項目イベント生成に関するデータを抽出して、例外項目イベントを自動生成し、データの流れ(３)に示すように例外項目イベントファイル４に生成したデータを格納する。この際、自動生成した例外項目イベントを要求仕様ファイル２に追記する。
【００６８】
テストシナリオパス生成処理部８は、クライアント11からの指示により起動し、図８Ａ〜Ｃに示す処理フローにしたがってデータの流れ(４)に示すように要求仕様記述がなされた要求仕様ファイル２のイベントフローのイベント(系列)を図１１に示すテストシナリオパスの形をイメージして処理し、一方、テスト戦略として「全シナリオ」「全分岐」「イベント網羅」のいずれか一つをクライアント11からデータの流れ(１)、(４)で指定することにより、それに対応して自動的にテストシナリオパスを生成し、データの流れ(５)に示すようにテストシナリオパスファイル５に生成したデータを格納する。このテストシナリオパスの生成に際しては、データの流れ(６)に示すようにテストシナリオパステーブル６にデータを一時保存しながらテストシナリオパスを自動生成する。
【００６９】
テスト仕様生成処理部９は、クライアント11からの指示により起動し、図９に示す処理フローにしたがって要求仕様記述がなされた要求仕様ファイル２からデータの流れ(７)に示すようにテスト仕様生成に関するデータ項目を抽出するとともに、テストシナリオパスファイル５からデータの流れ(８)に示すようにテストシナリオパスの中からテスト仕様生成に関するデータ項目を抽出して、「判定」項目以外のデータ項目についてテスト仕様を自動生成し、データの流れ(９)に示すようにテスト仕様ファイル３に生成したデータを格納する。
【００７０】
テスト仕様ファイル３に格納されたテスト仕様に対して、クライアント11はデータの流れ(10)に示すようにテスト仕様をダウンロードしてテスト仕様の抜け、漏れ、曖昧さの有無を検出し、さらにこのテスト仕様の生成状況から要求仕様の抜け、漏れ、曖昧さをなくし、手戻り作業を削減し、品質の高いソフトウェアを開発する。
【００７１】
図７は、本発明の実施形態に係る例外項目生成処理部７の例外項目生成処理フローを示す図である。同図において、ステップはSと略記する。
S11  要求仕様ファイル２の当該項目名のイベントフローから各イベントのイベント番号・イベント、入力データ・境界値、外部データ・境界値を読み込む。
【００７２】
S12  入力データ・境界値に境界値データなしかを確認する。
S13  境界値データがある場合は、ステップS14で例外項目イベントファイル４に「（イベント番号）で入力データ・境界値を満たさない場合」とのイベント書き込みを行う。ま
た境界値データがない場合は、ステップS15の処理へバイパスする。
【００７３】
S15  外部データ・境界値に境界値データなしかを確認する。
S16  境界値データがある場合は、ステップS17で例外項目イベントファイル４に「（イベント番号）で外部データ・境界値を満たさない場合」とのイベント書き込みを行う。また境界値データがない場合は、ステップS18の処理へバイパスする。
【００７４】
S18  全イベントを処理したか確認し、未処理イベントがある場合はステップS12の処理へ戻り、全イベントを処理した場合は、ステップS19の処理を行う。
S19  例外項目イベントファイル４にイベント番号書き込みを行う。例えば、
例  「例外系列  Ｎ」
この場合、Ｎは既にある例外系列の番号をＫとするとＮ＝Ｋ+１からインクリメントする。
【００７５】
また要求仕様ファイル２に例外項目イベントファイル４の内容を追記する。
当該処理の後、要求仕様記述を行うテスト担当者により「イベント」「事前条件」「入力データ・境界値」「事後条件」「外部データ・境界値」「次のイベント」が吟味され、要求仕様ファイル２が編集され、生成された例外項目イベントへの仕様記述が行われる。
【００７６】
図８Ａ〜図８Ｃは、本発明の実施形態に係るテストシナリオパス生成処理部８のテストシナリオパス生成処理フローを示す図である。そして図１１は、本発明の実施形態に係るテストシナリオパスの生成の様子を示す図であり、テストシナリオパス生成処理部８が要求仕様ファイル２のイベントフローのイベント(系列)をこのテストシナリオパスの形をイメージして処理する。
【００７７】
図８Ａは、本発明の実施形態に係るテストシナリオパス生成処理部８の全シナリオテストシナリオパス生成処理フローを示す図である。当該処理は図８Ｂ、図８Ｃの処理前にも実行する。図８Ａ、図８Ｂ、図８Ｃの処理でテストシナリオパステーブル６に一時保存されやがてテストシナリオパスファイル５に格納されるテストシナリオパスを生成する。図８Ａにおいて、
S21  要求仕様ファイル２のイベントフローを参照し、「次のイベント」のイベント番号をテストシナリオパステーブル６のイベントへ記入する。当該イベントの「次のイベント」のイベント番号をテストシナリオパステーブル６での当該レコードの次のイベントの項目へ記入する。「終了」を検出した場合は終了を当該レコードの次ぎのイベントに記入し、次は前回の最終イベントから「次のイベント」でテストシナリオパステーブル６に記入しなかったイベントをテストシナリオパステーブル６の次ぎのレコードから記入を始める。それ以前のレコードの項目は前のレコードと同じイベント番号を記載する。「次のイベント」が全てテストシナリオパステーブル６に記載されるまで続ける。
【００７８】
S22  テストシナリオパステーブル６のレコードをイベントのイベント番号の昇順に左端⇒右端の順にソートする。ソートしたらテストシナリオパステーブル６の次ぎのレコードについて同様の処理を行い、全レコードが終了するまで行う。
【００７９】
S23  テストシナリオパステーブル６の分岐に分岐番号を設定する。当該イベントのイベント番号と前のイベントのイベント番号の組み合わせが初めての場合は分岐番号を変更して一意にする
図８Ｂは、本発明の実施形態に係るテストシナリオパス生成処理部８の全分岐テストシナリオパス生成処理フローを示す図である。図８Ｂにおいて、
S31  テストシナリオパステーブル６の全レコードの中で、登録ステータス（全分岐）が0；未登録のレコ−ドを検索する。
【００８０】
S32  存在する場合は、ステップS33の処理を行い、存在しない場合は当該処理を終了する。
S33  イベントに「終了」が格納されている列について列番号が最小のレコードを検索する。当該レコードのイベントのイベント番号または分岐番号の中で、登録ステータス（全分岐）が1；登録済のレコードに含まれていないか確認する。
【００８１】
S34  ステップS33の処理で、存在する場合は当該レコードの登録ステータス（全分岐）に1；登録済を記入する。
S35  テストシナリオパステーブル６に次のレコードがある場合は、ステップS33の処理を行い、次のレコードがない場合は当該処理を終了する。
【００８２】
図８Ｃは、本発明の実施形態に係るテストシナリオパス生成処理部８のイベント網羅テストシナリオパス生成処理フローを示す図である。図８Ｃにおいて、
S41  テストシナリオパステーブル６の全レコードの中で、登録ステータス（イベント網羅）が0；未登録のレコ−ドを検索する。
【００８３】
S42  存在する場合はステップS43の処理を行い、存在しない場合は当該処理を終了する。
S43  イベントに「終了」が格納されている列について列番号が最大のレコードを検索する。当該レコードのイベントのイベント番号または分岐番号の中で、登録ステータス（イベント網羅）が1；登録済のレコードに含まれていないか確認する。
【００８４】
S44  ステップS43の処理、存在する場合は、当該レコードの登録ステータス（イベント網羅）に1；登録済を記入する。
S45  テストシナリオパステーブル６に次のレコードがある場合は、ステップS43の処理を行い、次のレコードがない場合は当該処理を終了する。
【００８５】
図９は、本発明の実施形態に係るテスト仕様生成処理部９のテスト仕様生成処理フローを示す図である。図９において、
S51  要求仕様ファイル２の当該項目名のデータを読み込むとともに当該項目名のテストシナリオパスファイル５を読み込む。
【００８６】
S52  テスト仕様ファイル３に要求仕様ファイル２のデータを下記の変換をして書き込む。すなわち、
仕様名  版数⇒仕様名  版数
項目名⇒テスト項目
概要⇒テスト概要
イベント＆不変条件＆初期条件⇒共通テスト条件
S53  テスト仕様ファイル３に当該項目名のテストシナリオパスファイル５のテストシナリオパス番号を書き込む。
【００８７】
イベント番号はテストケース番号としてテストシナリオパスのイベント内の通番を書き込む。
S54  テスト仕様ファイル３に要求仕様ファイル２のイベントフローの系列(イベント)データを下記の変換をして書き込む。すなわち、
事前条件＆入力データ・境界値⇒個別テスト条件
(イベント番号・イベントの)イベント⇒テスト内容
事後条件＆外部データ・境界値⇒テスト結果
判定の項目名を書き込む。
【００８８】
S55  当該テストシナリオパス番号の全イベント処理が完了でステップS56へ、未完了の場合はステップS54の処理へ戻る。
S56  当該項目名の全テストシナリオパス処理が完了で終了し、未完了の場合はステップS54の処理へ戻る。
【図面の簡単な説明】
【００８９】
【図１】本発明テスト仕様自動生成に係るシステム構成概要を示す図である。
【図２】本発明の実施形態に係る要求仕様ファイルのデータ構造例を示す図である。
【図３】本発明の実施形態に係る要求仕様ファイルの例外項目イベント自動生成例を示す図である。
【図４】本発明の実施形態に係る例外項目イベントファイルのデータ構造例を示す図である。
【図５】本発明の実施形態に係るテストシナリオパスファイルのデータ構造例を示す図である。
【図６】本発明の実施形態に係るテスト仕様ファイルのデータ構造例を示す図である。
【図７】本発明の実施形態に係る例外項目生成処理部の例外項目生成処理フローを示す図である。
【図８Ａ】本発明の実施形態に係るテストシナリオパス生成処理部の全シナリオテストシナリオパス生成処理フローを示す図である。
【図８Ｂ】本発明の実施形態に係るテストシナリオパス生成処理部の全分岐テストシナリオパス生成処理フローを示す図である。
【図８Ｃ】本発明の実施形態に係るテストシナリオパス生成処理部のイベント網羅テストシナリオパス生成処理フローを示す図である。
【図９】本発明の実施形態に係るテスト仕様生成処理部のテスト仕様生成処理フローを示す図である。
【図１０】本発明の実施形態に係るサーバ内の各種ファイル、各種生成処理部およびクライアントの相互の結合関係およびデータの流れを示す相関図である。
【図１１】本発明の実施形態に係るテストシナリオパスの生成の様子を示す図である。
【図１２】本発明の実施形態に係るテストシナリオパステーブルのテーブル構造例を示す図である。
【符号の説明】
【００９０】
１  サーバ
２  要求仕様ファイル
３  テスト仕様ファイル
４  例外項目イベントファイル
５  テストシナリオパスファイル
６  テストシナリオパステーブル
７  例外項目生成処理部
８  テストシナリオパス生成処理部
９  テスト仕様生成処理部
１０  ネットワーク
１１  クライアント
【図１】
2008293382.tif 000003
【図２】
2008293382.tif 000004
【図３】
2008293382.tif 000005
【図４】
2008293382.tif 000006
【図５】
2008293382.tif 000007
【図６】
2008293382.tif 000008
【図７】
2008293382.tif 000009
【図８Ａ】
2008293382.tif 000010
【図８Ｂ】
2008293382.tif 000011
【図８Ｃ】
2008293382.tif 000012
【図９】
2008293382.tif 000013
【図１０】
2008293382.tif 000014
【図１１】
2008293382.tif 000015
【図１２】
2008293382.tif 000016