(57)【要約】【課題】オブジェクト指向におけるソフトウェア開発においてテストケースを漏れなく効率良く抽出する。【解決手段】テストケース生成装置１００において、シナリオテストケース抽出部１０４は、シナリオ入力部１０２から入力されるシナリオをもとにテストケースを抽出する。アクティビティテストケース抽出部１０５は、アクティビティ入力部１０３から入力される状態遷移を示すアクティビティ図をもとにテストケースを抽出する。テストケース生成部１０６は、アクティビティテストケース抽出部１０５による抽出結果と、シナリオテストケース抽出部１０４による抽出結果とを比較し、差分をすべて包含するテストケースを生成する。【選択図】      図１
2008052359.tif 000002
【特許請求の範囲】
【請求項１】
システムの動作手順を記述したシナリオをもとにテストケースを抽出する第１の抽出手段と、
前記システムの状態遷移を表した状態遷移図をもとにテストケースを抽出する第２の抽出手段と、
前記第１の抽出手段による抽出結果と前記第２の抽出手段による抽出結果との差分をすべて包含してテストケースを生成する生成手段と
を具備することを特徴とするテストケース生成装置。
【請求項２】
前記状態遷移図として、オブジェクト指向のソフトウェア開発における統一モデリング言語（ＵＭＬ：Unified Modeling Language）のアクティビティ図またはシーケンス図の少なくともいずれか一方を用いることを特徴とする請求項１記載のテストケース生成装置。
【請求項３】
システムの動作手順を記述したシナリオをもとにテストケースを抽出し、
前記システムの状態遷移を表した状態遷移図をもとにテストケースを抽出し、
前記シナリオをもとに抽出した結果と前記状態遷移図をもとに抽出した結果との差分をすべて包含してテストケースを生成することを特徴とするテストケース生成方法。
【請求項４】
前記状態遷移図として、オブジェクト指向のソフトウェア開発におけるＵＭＬのアクティビティ図またはシーケンス図の少なくともいずれか一方を用いることを特徴とする請求項３記載のテストケース生成方法。
【請求項５】
システムの動作手順を記述したシナリオをもとにテストケースを抽出する第１の抽出処理と、
前記システムの状態遷移を表した状態遷移図をもとにテストケースを抽出する第２の抽出処理と、
前記第１の抽出処理による抽出結果と前記第２の抽出処理による抽出結果との差分をすべて包含してテストケースを生成する生成処理と
を具備することを特徴とするテストケース生成プログラム。
【請求項６】
前記状態遷移図として、オブジェクト指向のソフトウェア開発におけるＵＭＬのアクティビティ図またはシーケンス図の少なくともいずれか一方を用いることを特徴とする請求項５記載のテストケース生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、オブジェクト指向のソフトウェア開発を支援するテストケース生成装置、テストケース生成方法及びテストケース生成プログラムに関する。
【背景技術】
【０００２】
オブジェクト指向のソフトウェア開発における、統一モデリング言語（ＵＭＬ：Unified Modeling Language）を用いたプログラム設計では、ユースケース図を作成する際にシナリオを記述する。シナリオは、システムが提供するサービスや機能の動作手順を表現したものである。テストケースは、このシナリオをベースに試験作成者が抽出する方法が一般的である。
【０００３】
なお、アプリケーションの振る舞いを記述する各仕様書に記載された構造やそれらの整合性に関する情報を管理することで、ドキュメントの作成、保守を支援する手法が提案されている（例えば、特許文献１を参照。）。
【特許文献１】特開平１１−３２１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、シナリオからテストケースを抽出する手法に関して明確に確立されておらず、試験作成者の経験や技量によるものが大きく、個人差が生じやすい。また、ソフトウェアの規模が大きくなればなるほど、シナリオからのテストケースの抽出に多大な時間を費やすこととなる。
【０００５】
この発明は上記事情に着目してなされたもので、その目的とするところは、オブジェクト指向におけるソフトウェア開発においてテストケースを漏れなく効率良く抽出することができるテストケース生成装置、テストケース生成方法及びテストケース生成プログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するためにこの発明に係わるテストケース生成装置、テストケース生成方法及びテストケース生成プログラムは、システムの動作手順を記述したシナリオをもとにテストケースを抽出する第１の抽出手段と、上記システムの状態遷移を表した状態遷移図をもとにテストケースを抽出する第２の抽出手段と、上記第１の抽出手段による抽出結果と上記第２の抽出手段による抽出結果との差分をすべて包含してテストケースを生成する生成手段とを具備することを特徴とする。
【０００７】
上記構成によるテストケース生成装置、テストケース生成方法及びテストケース生成プログラムでは、シナリオによるテストケース抽出結果と、状態遷移図によるテストケース抽出結果とを比較し、差分を包含するテストケースを生成する。このようにすることで、テストケースを効率良く漏れなく洗い出すことが可能となる。
【発明の効果】
【０００８】
したがってこの発明によれば、オブジェクト指向におけるソフトウェア開発においてテストケースを漏れなく効率良く抽出することができるテストケース生成装置、テストケース生成方法及びテストケース生成プログラムを提供することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照しながら本発明の実施の形態を詳細に説明する。  
図１は、この発明に係わるテストケース生成装置の一実施形態を示すブロック構成図である。なお、本実施形態では、ＵＭＬで規定されている表記法を用いるものとし、ＵＭＬで作成されたシナリオと、状態遷移図の１つであるアクティビティ図とを用いてテストケースを生成する。テストケース生成装置１００には、パーソナル・コンピュータやワークステーション等の汎用計算機が用いられる。テストケース生成装置１００は、モデル入力部１０１と、シナリオ入力部１０２と、アクティビティ入力部１０３と、シナリオテストケース抽出部１０４と、アクティビティテストケース抽出部１０５と、テストケース生成部１０６とを備える。
【００１０】
モデル入力部１０１は、シナリオまたはアクティビティ図の選択を行う。モデル入力部１０１においてシナリオが選択されると、シナリオ入力部１０２にシナリオが入力される。また、シナリオ入力部１０２は、入力されたシナリオを編集するエディタ機能も備える。編集後のシナリオは、シナリオテストケース抽出部１０４に入力され、入力されたシナリオからテストケースが抽出される。
【００１１】
一方、アクティビティ入力部１０３にはアクティビティ図が入力され、入力されたアクティビティ図に対する編集等が行われる。編集後のシナリオは、アクティビティテストケース抽出部１０５に入力され、入力されたアクティビティ図からテストケースが抽出される。テストケース生成部１０６は、シナリオテストケース抽出部１０４による抽出結果と、アクティビティテストケース抽出部１０５による抽出結果とを比較し、テストケースの整合性をとり、テストケースを生成する。
【００１２】
図２は、このテストケース生成装置１００におけるテストケース抽出処理の手順とその内容を示すフローチャートである。ここでは、予約注文機能を例に挙げてテストケースの抽出方法を説明する。  
シナリオ入力部１０２では、シナリオの入力及び編集を行う（ステップＳ２ａ）。具体的には、シナリオエディタによりシナリオ名、メインフロー、代替フローの入力を行う。図３にシナリオエディタの入力・編集画面に予約注文のシナリオを入力した例を示す。図３に示すようにシナリオ名の入力箇所にはシナリオ名称を入力し、メインフローの入力箇所にはシナリオの正常な動作を箇条書きで入力する。また、入力内容の先頭に付された番号は、メインフロー内の項目の順番を表す。代替フローの入力箇所には関連するメインフローの番号と動作を入力する。この番号とメインフローで入力した番号とを連動させることで、メインフローのどの事象より派生した代替動作なのかを把握することができる。
【００１３】
シナリオテストケース抽出部１０４は、シナリオ入力部１０２において編集されたシナリオデータをテストケースへと展開する（ステップＳ２ｂ）。シナリオから展開されたテストケースを図４に示す。図３で入力したシナリオのメインフローの１項目をそれぞれテストケースの１項目として入力する。また、代替フローに入力した項目は関連番号に基づいて、テストケースにバリエーションとして加える。
【００１４】
アクティビティ入力部１０３は、アクティビティ図の入力、及び編集を行う（ステップＳ２ｃ）。アクティビティ入力部１０３において、図５のようなアクティビティエディタによりアクティビティ図を生成する。図３で入力したメインフローの各項目がアクティビティ（Ｓ４０１〜Ｓ４０６）となる。アクティビティエディタには通常のアクティビティ図で使用されるツールが用意されており、図３の右に示すように作成者が各アクティビティにおける状態や遷移条件を入力していく。
【００１５】
アクティビティテストケース抽出部１０５は、アクティビティ入力部１０３において編集されたアクティビティデータをテストケースへと展開する（ステップＳ２ｄ）。図５に示すアクティビティ図から展開されたテストケースを図６に示す。図６に示すように、アクティビティ図からは動作状態や状態遷移条件等もテストケースとして展開される。
【００１６】
ステップＳ２ｂによりシナリオから展開されたテストケースと、ステップＳ２ｄによりアクティビティ図から展開されたテストケースとがテストケース生成部１０６に入力される。テストケース生成部１０６では、シナリオテストケース抽出部１０４で出力したテストケース（図４）と、アクティビティ図から展開されたテストケース（図６）とを比較し、図７に示すように差分を抽出する。この比較において、シナリオとアクティビティ図から抽出された差分をすべて包含するテストケースを生成する。
【００１７】
また、この生成されたデータに対し、テストケース生成部１０６において、項目の確認及び修正を行うことができる。項目の確認及び修正を行なった後、最終的なテストケースの一例を図８に示す。
【００１８】
以上述べたように上記実施形態では、テストケース生成装置１００において、シナリオテストケース抽出部１０４は、シナリオ入力部１０２から入力されるシナリオをもとにテストケースを抽出する。アクティビティテストケース抽出部１０５は、アクティビティ入力部１０３から入力される状態遷移を示すアクティビティ図をもとにテストケースを抽出する。テストケース生成部１０６は、アクティビティテストケース抽出部１０５による抽出結果と、シナリオテストケース抽出部１０４による抽出結果とを比較し、差分をすべて包含するテストケースを生成するようにしている。
【００１９】
したがって上記実施形態によれば、シナリオ及びアクティビティ図の作成を行うと共に、この両方を用いてテストケースを自動的に抽出することができるため、テストケースを効率良く漏れなく洗い出すことができる。
【００２０】
なお、この発明は上記実施形態に限定されるものではない。例えば、上記実施形態では、状態遷移図としてアクティビティ図を用いたが、この他にもシーケンス図などを使用してテストケースを抽出することも可能である。また、例えばアクティビティ図とシーケンス図というように、２つ以上の状態遷移図から抽出されたテストケースを用いてテストケースを生成するようにしても良い。その他にもテストケース生成装置１００の構成及びテストケース生成処理の手順とその内容についても、この発明の要旨に逸脱しない範囲で種々に変形して実施できる。
【００２１】
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００２２】
【図１】この発明に係わるテストケース抽出装置の一実施形態を示すブロック構成図。
【図２】図１に示すテストケース生成装置におけるテストケース生成処理の手順とその内容を示すフローチャート。
【図３】シナリオエディタの画面構成の一例を示す図。
【図４】シナリオをもとに抽出されたテストケースの一例を示す図。
【図５】アクティビティ図エディタの画面構成の一例を示す図。
【図６】アクティビティ図をもとに抽出されたテストケースの一例を示す図。
【図７】最終的なテストケースを決定する処理を示す図。
【図８】最終的に抽出されたテストケースの一例を示す図。
【符号の説明】
【００２３】
１００…テストケース生成装置、１０１…モデル入力部、１０２…シナリオ入力部、１０３…アクティビティ図入力部、１０４…シナリオテストケース抽出部、１０５…アクティビティテストケース抽出部、１０６…テストケース生成部。
【図１】
2008052359.tif 000003
【図２】
2008052359.tif 000004
【図３】
2008052359.tif 000005
【図４】
2008052359.tif 000006
【図５】
2008052359.tif 000007
【図６】
2008052359.tif 000008
【図７】
2008052359.tif 000009
【図８】
2008052359.tif 000010