JP2015204065A - テストケース生成装置及びテストケース生成方法 - Google Patents

テストケース生成装置及びテストケース生成方法 Download PDF

Info

Publication number
JP2015204065A
JP2015204065A JP2014084670A JP2014084670A JP2015204065A JP 2015204065 A JP2015204065 A JP 2015204065A JP 2014084670 A JP2014084670 A JP 2014084670A JP 2014084670 A JP2014084670 A JP 2014084670A JP 2015204065 A JP2015204065 A JP 2015204065A
Authority
JP
Japan
Prior art keywords
item
condition
rule
result
test case
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.)
Granted
Application number
JP2014084670A
Other languages
English (en)
Other versions
JP6268029B2 (ja
Inventor
康生 秦野
Yasuo Hatano
康生 秦野
田中 修一
Shuichi Tanaka
修一 田中
稔子 高村
Toshiko Takamura
稔子 高村
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2014084670A priority Critical patent/JP6268029B2/ja
Publication of JP2015204065A publication Critical patent/JP2015204065A/ja
Application granted granted Critical
Publication of JP6268029B2 publication Critical patent/JP6268029B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

【課題】処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能とする。
【解決手段】テストケース生成装置100において、記憶装置203は、仕様情報(111)及びカバレッジ基準(115)の情報を格納し、CPU201は、仕様情報より条件項目と結果項目と各項目値とを条件結果項目(112)として抽出し、仕様情報より仕様内の各実行パス(113)を抽出し、条件結果項目および項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と実行パスとの対応関係を特定して、ルールと実行パスとの対応関係を示す条件結果対応表(116)を生成し、カバレッジ基準に対応したルールないし実行パスを条件結果対応表で検索しテストケース(114)を生成する。
【選択図】図1

Description

本発明は、テストケース生成装置及びテストケース生成方法に関するものであり、具体的には、処理の流れに関わるソフトウェア仕様から、実行パスベース、及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能とする技術に関する。
ソフトウェア開発では、顧客からの要望等を要件定義として纏め、この要件定義に基づき、必要となる機能の設計、詳細化を行い、その実装を行う。こうして開発されるソフトウェアに関するテストは、実装が仕様通りに行われているかを確認するための工程であり、ソフトウェアの品質を確保する重要な工程である。
上述したテスト工程における確認項目のうち、特にソフトウェアの機能に着目したテストを機能テストと呼ぶ。なお、こうした機能に関わるテスト以外には、例えば、処理性能を確認するための性能テスト、負荷テストなどがある。
機能テストの実施に当たっては、ソフトウェアにおける処理の流れや、入力データ間の制約条件等の設計情報に着目し、実装したソフトウェアが期待された動作するか確認することになる。その際、機能が取りうる処理の流れ、或いは、取りうる入力データの組合せの全てを確認することが困難な場合には、カバレッジ基準を設定し、そのカバレッジを満たすようテストを行う。
そうしたカバレッジ基準のうち、実装コードベースのカバレッジ基準としては、各実行ステートメントが少なくとも一回は実行される実行パス網羅(C0網羅)や、条件分岐に着目し、各条件分岐において、各分岐を少なくとも一回は通過するようにテストを行う条件網羅(C1網羅)などが知られている。
また、状態遷移図などの設計書をベースとした場合には、各状態遷移を少なくとも一回は通過するようにテストを行う遷移パス網羅、或いは、入力データの取りうる値の組合せが設計情報として与えられている場合には、取りうる組合せに着目し、少なくともN組の組合せが1回は現れるようにテストを行うn−wise網羅など、様々なカバレッジ基準
が知られている。
これらのカバレッジ基準のうち、ソフトウェア開発に伴い作成した設計書の記載内容、或いは、開発基準等にあわせたカバレッジ基準を採用し、上述のテストを実施することになる。こうしたソフトウェアのテストに伴うテストケースの生成技術として、以下のような技術が従来から提案されている。すなわち、UML(Unified Modeling Language)のシーケンス図を元に、当該シーケンス図に関連するクラス図のOCL(Object Constraint Language)表現を与えることで、シーケンス図から抽出される実行パスと、クラス図のOCL表現から与えられる事前・事後条件を元に、実行パスベースと入出力ベース双方のカバレッジ基準を評価し、テストケースを自動生成する方法(非特許文献1参照)などである。ここで、実行パスベースのカバレッジ基準とは、処理の流れに着目し、実行ステートメントや分岐条件の実行可否をカバレッジを評価するカバレッジ基準であり、入出力ベースのカバレッジ基準とは、入力、出力、或いは、入出力の対応関係から、取り得る組み合わせに対してカバレッジを評価するカバレッジ基準である。前者は主にホワイトボックステスト、後者は主にブラックボックステストのカバレッジを評価するために用いられる。なお、例えば、前述のC0網羅
やC1網羅は、実行パスベースであり、n−wise網羅は、入出力ベースのカバレッジ基準である。
Li Bao−Lin, Li Zhi−shu, Li Qing, Chen Yan Hong、"Test case automation generation from UML sequence diagram expression"、2007 International Conference on Computational Intelligence and Security、IEEE Computer Society、 pp.1048−1052、2007.
上述の従来技術においては、UMLのシーケンス図とクラス図を元に、機能テストを実施するためのテストケースの自動生成を行っている。また、その自動生成に当たっては、実行パス及び入出力の双方のカバレッジを考慮したテストケースの生成が可能である。しかしながら、シーケンス図とクラス図のOCL表現により、処理の流れを示す仕様(シーケンス図)と、当該シーケンス図に関連する事前、事後条件の双方を予め設計しておく必要がある。また、処理の流れを示す仕様は、シーケンス図であり、事前、事後条件の記述は、OCL(Object Constraint Language)を前提としている。従って、テストケース生成に際して事前に設計、定義しておくべき事項が多く、適用性が限定的となりがちであり、工程数も増え開発効率が良好とは言えない。
そこで本発明の目的は、処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能とする技術を提供することにある。
上記課題を解決する本発明のテストケース生成装置は、ソフトウェアにおける処理の流れに関わる仕様情報と、テストケースのカバレッジ基準の情報とを格納した記憶装置と、前記仕様情報より、前記流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、前記条件項目および前記結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し記憶装置に格納する条件結果項目抽出処理と、前記仕様情報より、該当仕様内の各実行パスを抽出する実行パス抽出処理と、前記条件結果項目および前記項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と前記実行パスとの対応関係を特定して、前記ルールと前記実行パスとの対応関係を示す条件結果対応表を生成し記憶装置に格納する条件結果対応表生成処理と、前記カバレッジ基準の情報が示す条件に対応したルールないし実行パスを、前記条件結果対応表で検索し、当該検索したルールないし実行パスと前記仕様情報とに基づき、所定の生成アルゴリズムによりテストケースを生成するテストケース生成処理と、を実行する演算装置と、を備えることを特徴とする。
また、本発明のテストケース生成方法は、ソフトウェアにおける処理の流れに関わる仕様情報と、テストケースのカバレッジ基準の情報とを格納した記憶装置を備えるコンピュータが、前記仕様情報より、前記流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、前記条件項目および前記結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し記憶装置に格納する条件結果項目抽出処理と、前記仕様情報より、該当仕様内の各実行パスを抽出する実行パス抽出処理と、前記条件結果項目お
よび前記項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と前記実行パスとの対応関係を特定して、前記ルールと前記実行パスとの対応関係を示す条件結果対応表を生成し記憶装置に格納する条件結果対応表生成処理と、前記カバレッジ基準の情報が示す条件に対応したルールないし実行パスを、前記条件結果対応表で検索し、当該検索したルールないし実行パスと前記仕様情報とに基づき、所定の生成アルゴリズムによりテストケースを生成するテストケース生成処理と、実行することを特徴とする。
本発明によれば、処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能となる。
第一の実施例におけるテストケース生成装置のハードウェア構成例を示す図である。 第一の実施例におけるテストケース生成装置の構成を示す図である。 第一の実施例におけるテストケース生成方法の全体処理の流れを示す図である。 第一の実施例におけるテストケース生成処理の概要を示す図である。 第一の実施例におけるカバレッジ基準一覧表の例を示す図である。 第一の実施例における処理の流れに関わる仕様例を示す図である。 第一、及び、第二の実施例における、条件結果項目の抽出するための処理の概要を示す図である。 第一の実施例における仕様例の条件結果項目を示す図である。 第一の実施例における仕様例の抽出された実行パスの例を示す図である。 第一の実施例におけるルール一覧表の例を示す図である。 第一の実施例における仕様例から生成されたルールに基づき生成した条件結果対応表と、生成テストケースの一例を示す図である。 第二の実施例における処理の流れに関わる仕様例を示す図である。 第二の実施例における条件結果項目例を示す図である。 第二の実施例における仕様例から実行パスを抽出するための抽出ルールの一例を示す図である。 第二の実施例における補足ルール一覧を示す図である。 第一、及び、第二の実施例における、実行パスを抽出するための処理の概要を示す図である。 第二の実施例における仕様例の抽出された実行パスの例を示す図である。 第二の実施例におけるルール一覧表の例を示す図である。 第二の実施例における仕様例から生成されたルールに基づき生成した条件結果対応表と、生成テストケースの一例を示す図である。
以下に本発明の実施形態について図面を用いて詳細に説明する。図1は、第一の実施例におけるテストケース生成装置100を実現するハードウェア構成例を示す図である。テストケース生成装置100は、演算装置たるCPU(Central Processor Unit)201、揮発性記憶装置で構成されるRAM(Random Access Memory)202、SSD(Solid State Drive)やハードディスクドライブなど適宜な不揮発性記憶装置で構成される外部記憶装置203、当該テストケース生成装置100の各構成201〜206を接続する内部パスたるインターフェイス204、処理データの表示を行うディスプレイ等の表示装置205、およびユーザから
のキー入力や音声入力を受け付ける入力装置206、を備える。なお、外部記憶装置203内には、本実施形態のテストケース生成装置100として必要な機能を実装する為のプログラム210の他に、後述する記憶部111〜117の記憶領域が確保されている。
また上述のCPU201は、外部記憶装置203に保持されるプログラム210をRAM202に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なう。このようにRAM202上にロードしたプログラム210を実行することで、後述する機能部、すなわち記述形式検証部101、仕様入力部102、条件結果項目抽出部107、条件結果項目補正部103、テスト仕様生成部104、テスト仕様登録部105、実行パス抽出部108、テストケース生成部109、条件結果対応表生成部110の各処理部をプロセスとして具現化する。
次に、こうしたハードウェア構成のテストケース生成装置100が備える各機能について図2に基づき説明する。図2は第一の実施例におけるテストケース生成装置100の構成例を示す図である。図2に示すテストケース生成装置100は、処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能とするとするコンピュータ装置である。
このテストケース生成装置100は、上述の通り、外部記憶装置203に備えるプログラム210をRAM202にロードし実行することで実装される、以下の機能部を備えている。すなわち、記述形式検証部101、仕様入力部102、条件結果項目補正部103、テスト仕様生成部104、テスト仕様登録部105、結果項目抽出部107、実行パス抽出部108、テストケース生成部109、および条件結果対応生成部110の各処理部である。
上述の機能部のうち仕様入力部102は、テストケース生成対象となるソフトウェアの処理の流れに関わる仕様のユーザ入力を入力装置206より受け付け、外部記憶装置203の仕様記憶部111に格納する機能を果たす。また、記述形式検証部101は、入力装置206で入力された上述の処理の流れに関わる仕様の記述形式が、予め定めた所望形式、文法に基づいたものか検証する機能を果たす。
また、条件結果項目抽出部107は、上述のように入力装置206で入力された処理の流れに関わる仕様から、当該流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、上述の条件項目および結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し、これを条件結果項目記憶部112に格納する機能を果たす。また、条件結果項目補正部103は、ユーザ入力を入力装置206で受け付けて、条件結果項目抽出部107が抽出した条件結果項目に関して、修正を行う機能を果たす。
また、実行パス抽出部108は、上述の条件結果項目記憶部112に格納された条件結果項目、及び、仕様記憶部111に格納された上述の処理の流れに関わる仕様から、テストケースを生成するための実行パスを抽出し、これを実行パス記憶部113に格納する機能を果たす。
また、テストケース生成部115は、上述の仕様記憶部111に格納された処理の流れを示す仕様、及び、条件結果項目記憶部112内に記憶された条件結果項目、及び、実行パス記憶部113内に格納された実行パスを受け取り、カバレッジ基準記憶部115に格納された、カバレッジ基準の内、ユーザ指定されたカバレッジ基準を満たすテストケースを生成する機能を果たす。なお、カバレッジ基準記憶部115には、テストケース生成部109でのテストケースの生成、及び、生成したテストケースのカバレッジを評価するためのカバレッジ評価方法を格納している。
また、テスト仕様生成部104は、生成されたテストケースを画面、または、紙等に出力する機能を果たし、テスト仕様登録部105は、生成済みのテストケースをテストケース記憶部114に格納する機能を果たす。
以下、第一の実施例におけるテストケース生成方法の実際手順について図に基づき説明する。以下で説明するテストケース生成方法に対応する各種動作は、テストケース生成装置100がRAM202に読み出して実行するプログラム210によって実現される。そして、このプログラム210は、以下に説明される各種の動作を行うためのコードから構成されている。
図3は、第一の実施例におけるテストケース生成方法の全体処理例を示すフロー図である。ここではまず、この図3に示した処理フローの概略を用いて、テストケース生成方法の処理の流れについて説明する。
まずステップ300において、テストケース生成装置100の仕様入力部102は、入力装置206を介して、ユーザ入力310として、処理の流れに関わる仕様を受付け、これを仕様記憶部111に格納する。このユーザ入力310を受け付ける際、記述形式検証部101が、ユーザにより入力された仕様と、予め定めた記述形式または文法(特に図示しないがテストケース生成装置100の外部記憶装置203にテンプレートが予め保持されている)とを照合し、仕様が上述の記述形式または文法に準拠しているか検証し、指定の記述形式を満たす仕様のみ受け付けるようにしてもよい。
また、上述で受け付ける仕様は、仕様作成用の専用ソフトウェアやオフィスソフトなどを、入力装置206及び出力装置205にてユーザ側に提供し、これらソフトウェアを介して作成動作を受け付け、その結果を受け付けるとしてもよいし、これらのソフトウェアを用いて作成されたデータをユーザ入力310として受け付けてもよい。
次にステップ302において、テストケース生成装置100の条件結果項目抽出部107は、上述のステップ301でユーザ入力された、処理の流れに関わる仕様から、条件項目及び結果項目を抽出する。
また、ステップ303において、上述のステップ302で抽出された条件項目及び結果項目に対し、テストケース生成装置100の入出力補正部103は、ユーザ入力311に応じて、上述の仕様から抽出された条件項目及び結果項目の修正、及び、結果項目への規定値の設定を行う。また入出力補正部103は、上述のステップ302において仕様内の記述からは抽出できなかったが、設計上存在することが明らかな条件結果項目の項目値や、設計上予め存在しないことが明らかである入力の組合せに関してユーザ入力を受け付ける。また入出力補正部103は、次のステップ304の「実行パス抽出」において、実行パス上、抽出された結果項目が不定になる場合に規定値を予めユーザが設定する際にこれを受け付ける。
こうしたステップ303の処理により、後述するステップ307におけるテストケース生成処理において、テストケース生成時に、取りうる条件項目の組合せを明確にする、期待結果が不定とならないように結果項目を明確にする、或いは、予め発生し得ない条件項目の組合せを明らかにすることで、不要なテストケースの生成を防ぐことが可能となる。但し、当該ステップ303は省略可能である。
次にステップ304において、テストケース生成装置100の実行パス抽出部108は、仕様記憶部111内に格納されている、上述の処理の流れに関わる仕様、及び、条件結
果項目記憶部112内の条件結果項目を用いて、処理の流れに関わる仕様から取りうる全実行パスを抽出し、その抽出結果を実行パス記憶部113に格納する。
また、ステップ305において、テストケース生成装置100の条件結果対応表作成部110は、上述の仕様記憶部111内の処理の流れに関わる仕様、条件結果項目記憶部112内の条件結果項目、及び、実行パス記憶部113内の実行パスから、実行パスごとに条件項目の項目値の組み合わせと、対応する期待結果とからなる対応表を作成する。
続いてステップ306において、テストケース生成装置100のテストケース生成部110は、ユーザ入力312を受付け、カバレッジ基準記憶部115内に格納されたカバレッジ基準からユーザ入力312が示すユーザ所望のカバレッジ基準を特定する。このカバレッジ基準は、ステップ307のテストケース生成処理において生成するテストケースが満たすべき基準となる。
ここでステップ307におけるテストケース生成処理について、図4に基づいて説明する。なお、当該ステップ307のテストケース生成処理では、図5に示すカバレッジ基準一覧表410(カバレッジ基準記憶部115にて保持)に記載されたカバレッジ基準を元に、下記の処理を行うことで、所望のカバレッジ基準を満たすテストケースを生成する。図5に例示するカバレッジ基準一覧表410は、カバレッジ基準を一意に識別するためのカバレッジ識別子(ID欄)411、カバレッジ基準を実行パスベースで評価するか、入出力ベースで評価するかを示すカバレッジ種別(種別欄)412、カバレッジ基準の名称を格納するカバレッジ名称(名称(略称)欄)413、カバレッジ基準を満たすテストケースを生成するための処理プログラムを記載するカバレッジ生成処理名称(生成欄) 414、カバレッジを評価するためのカバレッジ評価のためのプログラムを記載するカバレッジ評価処理名称(評価欄)415、及び、カバレッジの概要を説明するカバレッジ概要(概要欄)416から構成される。
この場合、テストケース生成装置100のテストケース生成部109は、ステップ401において処理を開始し、続くステップ402においてユーザ入力312から入力された生成パラメータ(カバレッジ基準)の種別を確認し、実行パスベースのカバレッジ基準か、否かを判断する。実行パスベースの場合であった場合(402:Yes)、テストケース生成部109は、処理をステップ403へ進め、そうでなかった場合(402:No)には処理をステップ404に進める。
次にステップ403において、テストケース生成部109は、上述のカバレッジ基準一覧表410のカバレッジ生成処理名称欄413を参照し、仕様記憶部111内に格納された仕様、及び、実行パス格納部113内に格納された実行パスを用いてテストケースの生成を行う。また、ステップ404において、テストケース生成部109は、上述のカバレッジ基準一覧表410のカバレッジ生成処理名称欄413を参照し、仕様記憶部11内に格納された仕様、及び、条件結果項目格納部112を参照し、テストケースの生成を行う。
続いてステップ405において、テストケース生成部109は、詳細は後述する条件結果対応表(条件結果対応表記憶部116にて保持)を参照し、上述のステップ403またはステップ404で生成されたテストケースの対応から、重複テストケースを削除する。
次にステップ406において、テストケース生成部109は、上述までで生成されたテストケースのカバレッジを評価し、カバレッジ基準が満たされている場合には(406:Yes)、処理をステップ407へ進めてフローを終了する。他方、カバレッジ基準が満たされていない場合(406:No)、テストケース生成部109は、処理をステップ402に戻す。
続いて、上述の図3、4にて述べた、条件結果項目抽出とテストケース生成のより具体的な内容について、図6に示す、処理の流れに関わる仕様、を例に挙げて説明する。図6は、第一の実施例における、処理の流れに関わる仕様160の一例を示す図である。ここでまず、図6に示すフローチャート160、すなわち処理の流れの仕様、について説明しておく。このフローチャート160は、ステップ301の仕様の入力受付(図3)において、ユーザ入力310によって入力され、仕様記憶部111に格納されているものとする。
このフローチャート160において、例えばデータを正常に受信した場合の処理の流れ(ステップ501〜ステップ508)は、ステップ500において処理を開始し、ステップ502においてデータ受信処理を呼び出し、ステップ503において上述のステップ502のデータ受信処理がタイムアウト時間60秒を超えたか判定し、超えた場合にはステップ508へ、そうでなければ(60秒以下であれば)、ステップ504に進む。またステップ504において、受信データチェック処理を呼び出し、ステップ505に進む。次にステップ505において、上述のステップ504での受信データチェック処理の結果、受信データ状態が正常の場合にはステップ509へ、そうでない(異常)の場合には、ステップ510へ進む。まあ、ステップ506において、メッセージに正常終了を代入し、ステップ502においてリトライ回数を0にリセットしてステップ507でフローを終了する。
他方、データ受信(ステップ502)において、データ受信に失敗した場合の処理の流れ(ステップ509からステップ510)は、ステップ509において、ログ情報として、エラーメッセージを代入し、ステップ510に進み、ステップ510において、メッセージに受信失敗を代入し、ステップ501に進む。
また、受信データ状態が異常で、受信したデータに誤りがある場合(ステップ505:異常)の処理の流れ(ステップ511からステップ514)は、ステップ511において、リトライ回数が3を超える場合には、ステップ513へ、それ以外(3未満)の場合には、ステップ512に進む。また、ステップ512において、メッセージに受信データ異常を代入し、ステップ501に進む。また、ステップ513において、ログに警告メッセージを代入し、ステップ514に進み、ステップ514において、リトライ回数を1つ増加し、ステップ507でフローを終了する。
こうしたフローチャート160に対し、条件結果項目抽出部107が、図7に示す手順で条件結果項目の抽出処理を実行すると、図8に示す条件結果項目一覧表600を得て、テストケース生成部109はこれを利用可能となる。この場合条件結果項目抽出部107は、ステップ1300において処理を開始し、ステップ1301においてフローチャート160における各ステップの種別が「条件」である場合(ステップ1301:条件)、ステップ1302へ、そうでなければ(ステップ1301:結果)、ステップ1303に処理を進める。
またステップ1302において、条件結果項目抽出部107は、フローチャート160の該当ステップの記述を条件項目とし、該当条件項目が示す分岐条件の値を項目値として抽出し、ステップ1304に進む。図6のフローチャート160の例であれば、条件分岐(ステップ503、ステップ505、ステップ511)の該当ステップの記述から、条件項目名称として「タイムアウト」、「受信データ状態」、および「リトライ回数」が抽出され、また、該当ステップから項目値として、「>60秒」、「≦60秒」、「正常」、「異常」、「≦3」、「>3」、が抽出される。
次にステップ1303において、条件結果項目抽出部107は、上述のステップ1303と同様に、フローチャート160中の条件分岐ステップ以外のステップの記述を結果項目として、その記述が指定する値を結果項目の項目値として抽出し、ステップ1304に進む。図6のフローチャート160の例であれば、処理(ステップ501、ステップ502、ステップ504、ステップ506、ステップ509、ステップ510、ステップ512、ステップ513、ステップ514)から、結果項目として「リトライ回数」、「データ受信」、「受信データチェック」、「ログ」、「メッセージ」が抽出され、結果項目値として「0にリセット」、「呼び出し有り」、「呼び出し無し」、「エラーメッセージ」、「警告メッセージ」、「正常終了」、「受信失敗」、「受信データ異常」などが抽出される。
なお、上述のフローチャート160が含むステップ(処理)では、該当処理の記法を「A:=B」の形式で記述することとする。これにより、結果項目および結果項目値の抽出では、「A」を項目名称、「B」を項目値として抽出できる。また、フローチャート160における定義済み処理(ステップ502、504、509)は、「呼び出し有」、「呼び出し無」といった項目値が予め定められており、結果項目および結果項目値の抽出では、該当処理の記述から項目名称を抽出し、結果項目値として「呼び出し有」「呼び出し無」を抽出することとする。なお、これらの条件項目および結果項目らの抽出ルールは事前に定義可能である。この抽出ルールに基づく項目の抽出処理は、第二の実施例において説明する。
続いて図6のフローの説明に戻る。ステップ1304において、条件結果項目抽出部107は、フローチャート160内の全てのステップに対し、上述のステップ1301、1302、1303の各処理が完了している場合(ステップ1304:Yes)、ステップ1305へ進み処理を終了する。他方、そうでなければ(ステップ1304:No)、条件結果項目抽出部107はステップ1301に処理を戻す。
こうして得られた条件結果項目一覧表600は、図8に示すように、条件項目および結果項目を識別するための項目識別子(No欄)601、条件項目か結果項目かを示す項目種別(種別欄)602、条件項目ないし結果項目の名称を格納する項目名称(名称欄)603、各条件項目ないし結果項目が取りうる値の候補を記載する項目値(候補値欄)604、および、各条件結果項目の説明を記載する項目概要(概要欄)605から構成される。
なお、この条件結果項目一覧表600に対する項目修正・規定値設定(図3:ステップ303)は、例えば、フローチャート160に記述されていない項目値の追加やフローチャート160上で結果が確定しない結果項目に対して、ユーザが規定値を設定する処理となる。
例えば、図6のフローチャート160では、ステップ511の処理において、リトライ回数が3回以下の場合、メッセージに代入される値は不定となる。このような場合に、結果項目として「出力無」を追加し、規定値として追加した「出力無」を追加することで、テストケースの生成の際、期待結果を不定となることを防ぐことができる。なお、図8の条件結果項目一覧600では、規定値は、項目値欄に下線を用いて表現している。
また、上記以外の項目値を修正する場合の例としては、分岐条件に「それ以外」など、Else文相当の文言が含まれている状況に対応するものとなる。この場合、該当する条件項目名の取りうる項目値として、抽出結果である「それ以外」をそのまま用いるのではなく、具体的な項目値を設定するようにしてもよい。
次に、上述のステップ304における実行パス抽出とステップ305の条件結果対応表の作成の詳細について説明する。この場合、実行パス抽出部108は、例えばフローチャート160内の開始記号500から各ステップを条件分岐等に従って順次辿る探索を開始し、フローチャート160内の全実行パスを抽出する。その結果、得られた実行パスの例として、例えば図9に例示した実行パス(1)701では、フローチャート160における以下の実行パスを表している。
ステップ500:開始記号
ステップ501:リトライ回数:=0に設定
ステップ502:データ受信
ステップ503:タイムアウト?(分岐条件 >60秒)
ステップ509:ログ:=エラーメッセージ
ステップ510:メッセージ:=受信失敗
ステップ507:終了
また同様に、図9に例示した実行パス(2)702では、フローチャート160における下記の実行パスに対応する。
ステップ500:開始記号
ステップ501:リトライ回数:=0に設定
ステップ502:データ受信
ステップ503:タイムアウト?(分岐条件 ≦60秒)
ステップ504:受信データチェック
ステップ505:受信データ状態? (分岐条件 正常)
ステップ506:メッセージ:=正常終了
ステップ507:終了
また同様に、図9に例示した実行パス(3)703では、フローチャート160における下記の実行パスに対応する。
ステップ500:開始記号
ステップ501:リトライ回数:=0に設定
ステップ502:データ受信
ステップ503:タイムアウト?(分岐条件 ≦60秒)
ステップ504:受信データチェック
ステップ505:受信データ状態? (分岐条件 正常)
ステップ506:メッセージ:=正常終了
ステップ507:終了
なお、図6のフローチャート160では、「リトライ回数:=0に設定(ステップ501)」、「リトライ回数:=1つ増加(ステップ514)」等と記述しているが、「リトライ回数:=リトライ回数+1(ステップ514)」等、演算子を用いて記述することで、実際の計算結果を計算するようにしてもよい。また、上記の実行パス抽出において、例えば、実行パスがループ(以前、実行したパスに戻る場合)している場合には、ループまでをひとつの実行パスとして抽出してもよいし、ループ終了後の結果を算出し、実行パスとしてもよい。
一方、条件結果対応表生成部110は、上述のステップ305(条件結果表の作成)に伴って、上述のようにして得られた実行パスそれぞれをルールに変換して、図10に例示するルール一覧表710を生成する。このルール一覧表710において、例えば、ルール識別子711が「1」のルールは実行パス(1)に対応している。条件結果対応表生成部110は、このルール一覧表710の各レコードにおいて、該当実行パス上に存在する条件分岐の情報を左辺713に、結果項目の情報を右辺714側に対応させて設定する処理
を実行し、実行パスからルールへの変換を行っている。
こうしたルール一覧表710は、ルールを識別するためのIDを記載したルール識別子(#欄)711をキーとして、該当ルールの種別を表すルール種別(種別欄)712、および、ルールの内容を記載するための左辺欄713と右辺欄714から構成される。このうち左辺欄713および右辺欄714は、それぞれ条件結果項目と対応する項目値を格納する名称と値欄とから構成される。こうしたルール一覧表710における各ルールは、そのデータ構造が、「条件項目C1の項目値c1、かつ、条件項目C2の項目値がc2、かつ、・・・ならば、結果項目B1の項目値はb1、かつ、・・・」といった論理式形式によ
る仕様記述に対応する。
条件結果対応表生成部110は、上述のごとく生成したルール一覧表710より条件結果対応表を作成することとなる(図3:ステップ305)。この場合、条件結果対応表生成部110は、ルール一覧表710における、各条件項目ないし結果項目とその項目値と、条件項目値の組み合わせと、その組み合わせに対応する結果項目の項目値とを対応付けることで、条件結果対応表を生成する。
図11は、図10のルール一覧表710から生成された条件結果対応表800の構成例を示す図である。ここに示すとおり条件結果対応表800は、条件項目および結果項目とその項目値を記載する条件結果項目欄803と、条件項目値の組み合わせと、その組み合わせに対応する結果項目の項目値を記載するルール欄804との二つの列から構成されている。
また、条件結果対応表800は、条件項目を記載するための条件行801、結果項目を記載する結果行802、および、ルール列内の各ルールと実行パスとの対応を記載する実行パス対応行805、ルール列内の各ルールと生成テストケースとの対応を記載するテストケース列806から構成される。
なお、図11に示した条件結果項目対応表800内の各ルール(1)〜(8)は、対応する項目値に全て"○"を用いている。すなわち、全て同じ記号を用いて記憶しているが、各ルールは、各実行パス内に含まれる条件項目、結果項目と、それ以外がわかるように記憶するようにしてもよい。
例えば、実行パス(2)702に対応するルールは、図11のルール列1,2列目に対応する。このとき、実行パス内に含まれる条件項目「タイムアウト≦60秒」や結果項目「データ受信:=有」に対応するルール列の該当欄を"○"で記載し、それ以外の条件項目「リトライ回数」「ログ:=出力無し」は、"―"で記載するようにしても良い。
一方、テストケース生成部109は、上述の条件結果対応表800を利用してテストケース生成の処理を実行することとなる(図3:ステップ307)。この処理の概要については図4に基づき既述であるが、あらため具体的に説明する。テストケース生成部109は、カバレッジ基準一覧表410にてユーザ選択されたカバレッジ基準(種別欄412)内の種別に従い、実行パスベース、入出力ベース、いずれのカバレッジ基準であるかを判断し、それぞれのカバレッジ基準に準拠してテストケースの生成を行う。例えば、ユーザ選択が実行パスベースのカバレッジ基準であった場合には、図6に記載したフローチャート160(処理の流れに関する仕様)、及び、ステップ304で生成した実行パスを用い
て、カバレッジ基準一覧表410のテストケース生成処理414欄に記載のテストケース生成処理を用いてテストケースの生成を行う(ステップ403)。
また入出力ベースでのテストケースを生成する場合、テストケース生成部109は、同
様にカバレッジ基準一覧表410のテストケース生成処理414欄内に記載のテストケース生成処理を用いて、ステップ305で生成した条件結果項目一覧600、及び、生成した条件結果対応表800を用いてテストケースの生成を行う(ステップ404)。
なお、カバレッジ基準を満たすテストケースの生成、評価処理は、カバレッジ基準ごと、カバレッジ生成処理名称414、および、カバレッジ評価処理名称415で指定された各処理内で、各カバレッジを満たすようなテストケースの生成、評価が可能なように任意に実装すればよい。例えば、実行文網羅(SC、C0)であれば、抽出した全ての実行パスをランダムに選択し、処理の流れに関わる仕様の全てを処理が選択されるまで、実行パスの選択を繰り返せばよい。
ステップ405においてテストケース生成部109は、条件結果対応表800内の実行パス対応欄805により、生成した実行パスベースのテストケースと、入出力対応ベースのテストケースとに重複があるか否かを確認し、重複するテストケースを削除する。
次にステップ406においてテストケース生成部109は、設定パラメータとして与えたカバレッジ基準に対するテストケース生成処理を全て行ったか否かを検査し、生成していないカバレッジ基準がある場合には、ステップ402に戻り、未生成のカバレッジ基準に対応するテストケースを生成するため、上記の処理を繰り返す。
なお、このとき生成したテストケースが設定パラメータとして与えたカバレッジ基準に準拠しているかを、カバレッジ評価処理欄415内の処理を用いて判定するようにし、未生成のカバレッジ基準に対応するテストケースが生成済みか否かを判断するようにしても良い。
また、上記の重複テストケースの削除(ステップ405)は、ステップ403、及び、ステップ404内のテストケース生成の際、生成済みのテストケースを条件結果対応表800上で確認することで、ステップ403、及び、ステップ404内で行っても良い。
なお、図5に記載したカバレッジ基準一覧410は、カバレッジ基準の一例であり、これ以外のカバレッジ基準を含んでもよい。また、図5のカバレッジ基準一覧表410にて例示したカバレッジ基準は、処理の流れに関わる仕様と実行パス(実行パスベースの場合)、または、条件結果項目一覧(入出力ベースの場合)のみからカバレッジ評価が可能な基準のみを例示したが、これ以外のカバレッジ基準を含んでもよい。
例えば、特定の処理、あるいは、条件分岐を通る全ての実行パスをテストケースとする場合には、以下のようにすればよい。まず、カバレッジ基準一覧表410に、上記のカバレッジ基準として、カバレッジ種別412に「実行パス」、カバレッジ生成処理名称413に「特定ステートメント網羅」とし、カバレッジ生成処理名称414、カバレッジ評価処理名称415に、テストケース生成、評価のための処理を追加する。
この場合、ステップ306の生成パラメータの設定処理において、ユーザ入力312より、生成するテストケース生成処理として「特定ステートメント網羅」を指定するとともに、処理の流れを表す仕様から、特定の処理、あるいは、条件を合わせて入力するようにすればよい。例えば、図6のフローチャートでは、ユーザ入力312によりステップ500からステップ514のいずれかを入力するようにすればよい。
なお、図11のテストケース欄806は、実行パスベースのカバレッジ基準の内、判断文網羅(DC)、及び、入出力ベースのカバレッジ基準のn条件組合せ網羅(n−wis
e)に基づき、テストケース生成を行った結果の一例を示している。図11のテストケー
ス欄806に示したとおり、図11に例示した生成テストケースでは、実行パスベース、入出力ベース、それぞれのテストケース生成結果から、ルール列1に記載のテストケースが重複しており、テスト実行時に本テストケースに関わるテスト実行の重複を防ぐことが可能となる。このように、実行パス及び条件/結果の各項目対応、及び、カバレッジに対応したテストケースの生成に際し、テストケース間の重複チェックを行うことが可能である。これにより、それぞれのカバレッジを満たすようにテストケースの生成した場合、重複したテストケースを生成することを防ぎ、効率的なテスト実行を実現することも可能である。
なお、上記の例では、条件/結果の各項目は、実際のプログラム上の変数ではなく、仕様設計時に利用される設計情報である。実施にソフトウェアのテストを行う場合には、条件/結果の各項目、及び、その項目値に、具体的な実装上の変数名、変数値等を割当てるようにすることで、上記テストケースと実際のテスト実行時の入出力変数との対応を取るようにすれば良い。
次に、第二の実施例について説明する。この第二の実施例では、図14に記載した抽出ルール一覧1200に基づき、図7、及び、図16に示した条件結果項目抽出処理、及び、実行パス抽出処理に従い、条件結果項目の抽出(ステップ302)、及び、実行パスの抽出(ステップ304)を行う。
ここで図12は、第二の実施例を説明するための処理の流れに関わる仕様の一例を示す図であり、UML図における状態遷移図(ステートチャート図)による仕様記述の一例である。図12の状態遷移図140は、データの受信処理に関わるプログラムの遷移状態を示す図であり、開始900、終了905、受信待ち901、データチェック902、メッセージ出力903、及び、それらの状態間の遷移を表す遷移条件から構成されている。
以下に条件結果項目抽出部107が図12の状態遷移図140より条件結果項目抽出の処理を実行する手順について図7のフローにおける基づき説明する。なお、図7は、前述のとおり、テストケース生成装置100の条件結果項目抽出部107により、図3のステップ302、条件結果項目の抽出処理で実行する処理である。
ここで条件結果項目抽出部107は、ステップ1300にて処理を開始し、ステップ1301において、上述の状態遷移図140における記号要素に関し、図14に例示する抽出ルール一覧表1200のルール種別欄1204の値を確認し、抽出対象となる記号の種別が「条件」である場合には、ステップ1302へ、そうでなければ、ステップ1303に処理を進める。
なお、図14における抽出ルール一覧表1200は、抽出ルールを識別するための抽出ルール識別子(ID欄)1201、抽出ルールの名称を示す抽出ルール名称(名称欄)1202、抽出元となる表記を格納する表記欄1203、条件結果項目の抽出種別を表す抽出種別(種別欄)1204、条件結果項と項目値の抽出ルールを規定する抽出ルール1205、及び、ステップ305のルール作成時に用いる補足ルール1206から構成される。この補足ルール1206は、図15に示す補足ルール一覧1210で規定されており、その構成は、補足ルールを識別するための補足ルール識別子(ID欄)1211、及び、補足ルールの名称を表す補足ルール名称(名称欄)1212、補足ルールに対応する表記を示す補足ルール表記(表記欄)1213、及び、補足ルールの抽出種別を示す補足ルール種別(種別欄)1214、補足ルールの内容を示す補足ルール(補足ルール欄)1215から構成される。なお、補足ルール欄1215には、補足ルールを適用する条件を記述する条件欄と追加するルールの内容を記載する追加ルール欄から構成される。
続いてステップ1302において条件結果項目抽出部107は、抽出対象となる「条件」記号内の表記、及び、抽出ルール一覧1200の抽出ルール1205欄の値を参照し、抽出ルールの名称欄と一致する記述を条件項目として、値欄に一致する記述を抽出した条件項目の項目値として抽出する。この抽出後、条件結果項目抽出部107は処理をステップ1304に進める。
また、ステップ1303において条件結果項目抽出部107は、上述のステップ1303と同様に、記号内の表記、及び、抽出ルール1205を参照し、抽出ルールの名称欄と一致する記述を結果項目として、値欄に一致する記述を抽出した結果項目の項目値として抽出する。この抽出後、条件結果項目抽出部107は処理をステップ1304に進める。
次にステップ1304において条件結果項目抽出部107は、状態遷移図140すなわち仕様内の全ての記号に対し、処理が完了している場合(ステップ1304:YES)にはステップ1305へ進み処理を終了する。他方、そうでなければ(ステップ1304:NO)、条件結果項目抽出部107はステップ1301に処理を戻す。
このように処理により得られた条件結果項目一覧表910のうち、例えば、条件結果項目一覧表910内の6行目「受信待ち」は、状態遷移図140内の状態、受信待ち901から生成される。また、その項目値は、受信待ち状態に達するか(活性)、達しない(非
活性) が、抽出ルール一覧1200の第一行目記載のルールに従い記載される。図13に示すとおり、条件結果項目一覧表910は、第一の実施例に例示した条件結果項目一覧表600と同様、条件項目、結果項目を識別するための項目識別子(ID欄)911、項目が、条件項目か結果項目かを示す項目種別(種別欄)912、条件、結果項目の名称を格納する項目名称(名称欄)913、各条件、結果項目が取りうる値の候補を記載する項目値(候補値欄)914、および、各条件結果項目の説明を記載する項目概要(概要欄)915から構成される。
なお、上述のように抽出された条件結果項目に、ユーザ指示に応じて修正及び規定値の設定を行うことも可能である。この処理は条件結果項目補正部103が実行する。上記の例では、例えば状態に対する項目値の規定値が非活性であることを、事前抽出ルールとして定めておき、条件結果項目抽出の際に、一部の規定値を自動で設定するようにしている。
続いて、実行パス抽出部108による実行パス抽出処理(図3:ステップ304)について図16に基づき説明する。この場合、実行パス抽出部108は、ステップ1401にて処理を開始し、ステップ1402において、状態遷移図170における全ての記号を探索し、抽出ルール一覧1200内の抽出ルール種別1204内の「開始」条件に合う、記号を抽出する。
続いて実行パス抽出部108は、ステップ1403において、状態遷移図170における全ての記号に対する探索が終了している場合(ステップ1403:YES)、処理をステップ1409へ、そうでなければ(ステップ1403:NO)、処理をステップ1404に進める。
次にステップ1404において実行パス抽出部108は、上述のステップ1402で抽出した記号に接続された、全ての記号の探索が終了した場合(ステップ1403:YES)、ステップ1408へ、そうでなければ(ステップ1404:NO)、処理をステップ1405へ進める。
ステップ1405において実行パス抽出部108は、上述の接続先の構成要素を抽出し
、ステップ1406において、抽出ルール一覧1200内の抽出ルール種別1204内の「終了」の抽出ルールを抽出し、対象となる記号が終了条件に適合するかを検査する。ここで、終了条件に合う場合(ステップ1406:YES)、実行パス抽出部108は処理をステップ1408へ、合わない場合(ステップ1406:NO)、処理をステップ1407に進める。
またステップ1407において実行パス抽出部108は、抽出ルール一覧1200内の抽出ルール種別1204内の条件、結果の何れかに合うかを検査し、条件、結果の条件に合う場合には、実行パスに対象記号を追加し、ステップ1404に進む。また、ステップ1408において実行パス抽出部108は、ステップ1405までで抽出された記号列から実行パスを構成し、ステップ1403に進む。
上述のフローは、開始条件に合う記号から処理を開始し、終了条件に合う各実行パスを抽出するため、接続先の記号を逐次探索する処理の実現方法の一例を示している。
なお、上述のステップ1407において、条件、結果のいずれの抽出ルールにも合わない記号の場合、実行パス抽出部108は、そこで処理を中止して、次の実行パスの探索に移るとしてもよい。これによって、実行パス内に、例えば、コメント記号などが記載されている場合でも、意図した実行パスのみを抽出することが可能となる。
図17に、状態遷移図170に関する実行パス抽出処理によって生成された実行パスの一部(実行パス(1)1001、実行パス(2)1002、実行パス(3)1003)を示す。
条件結果対応表生成部110は、以上のように得た実行パスからルールを作成することとなる。その流れを図17における実行パス(1)1001を例にして説明する。なお、実行パス(1)1001は、図12の状態遷移図170から、図16の処理に従い、開始900、受信待ち901、データチェック902、メッセージ出力903、終了905の順で状態遷移が行われた場合を表している。また、図18のルール一覧表1010では、ルール識別子1011が1のルールに対応する。
まず条件結果対応表生成部110は、抽出ルール一覧1200を参照し、実行パス(1)1001内の記号それぞれに対し、抽出ルール一覧1200内の表記欄1203内の記号と一致する行の抽出種別1204が"条件"である記号と、"結果"である記号とに分ける。
次に条件結果対応表生成部110は、抽出種別1204が"条件"である記号に対し、ルール(図18参照)の左辺1013を構成する。例えば、"データ受信"は、抽出ルール一覧表1200のルール識別子1201が2の表記と対応する。表記欄1203に従い、$A="データ受信"であり、$B,$b,$C,$cには、対応する表記がない。そこで条件結果対応表生成部110は、対応する抽出ルール1205に従い、"データ受信"="発
生"をルールとして、左辺値に記載する(抽出ルール1205には、"、(カンマ)"を用
いて二つの値(活性、不活性)が記載されているが、ここでは値が特定できない場合には、最初の値を抽出する)。
次に条件結果対応表生成部110は、補足ルール1206を参照し、補足ルール欄に記載がある場合には、補足ルール一覧1210から、対応する補足ルールを抽出する。"デ
ータ受信"に対しては、補足ルール1206に、1が割り当てられているため、条件結果
対応表生成部110は、補足ルール一覧1210から対応する補足ルールを取得する。
また条件結果対応表生成部110は、補足ルール一覧1210より、補足ルール識別子1211が1の補足ルール内の表記欄1213と図12の状態遷移図より、補足ルールに関連する記号を抽出する。ここでは、"データ受信"の遷移元である状態"受信待ち"901を参照し、そのイベント"タイムアウト"を抽出する。
次に条件結果対応表生成部110は、補足ルール欄1215内の条件より、"受信待ち"≠"タイムアウト"($A1≠$A2)より、追加ルールとして、"タイムアウト=発生⇒
タイムアウト=無"、"タイムアウト=無⇒タイムアウト=発生"を生成する。ここで"⇒"
は、"⇒"より左に書かれた式がルール一覧表1010の左辺欄1013に、右側に書かれた式が右辺欄1014に記述されることを表す。
また条件結果対応表生成部110は、補足ルール一覧1210の種別欄1214より、追加される補足ルールは、ルール一覧表1210に記載する際、その種別欄1012に制約として追加する(制約条件としてルールを追加する。すなわち、ここで追加された条件に条件項目値の組み合わせが限定される)。なお、上記の処理によって追加されたルールは、ルール一覧表1010のルール識別子1011が5,6のルールに対応する。
同様に条件結果対応表生成部110は、イベント"チェック完了"についても上記と同様の処理を行うことで、右辺1013に名称欄"チェック完了"、値欄"発生"を追加すると同時に、補足ルール1215より、ルール識別子1011に7,8のルールを追加する。
次に条件結果対応表生成部110は、抽出ルール一覧1200の抽出種別1204が"
結果"である記号に対し、上記と同様の処理を行い、右辺の構成を行う。ただし、右辺1
014については、条件結果項目一覧表910内を探索し、実行パスに含まれない結果項目がある場合には、規定値を割り当て、右辺を構成する。
例えば、"リトライ回数"は、実行パス(1)1001に含まれていない。この場合、条件結果対応表生成部110は、右辺1014に名称"リトライ回数"は、値 "0にリセット"を追加することで、全ての結果項目が右辺に含まれるようにする。
なお、上記の処理は、条件結果対応表1100を構成した際、結果が未定となる列が構成されることを防ぐためであり、必ずしも、実行パスに含まれない結果項目を右辺1014に追加する必要はない。また、上記の手順によって追加されたルールがすでに抽出済みの場合には、改めてルール一覧表1010に追加する必要はない。
図18に実行パスをルール変換したルール一覧表1010を示す。ルール一覧表1010は、抽出した実行パスをルールに変換した結果である。ルール一覧表1010は、第一の実施例と同様に、ルールを識別するためのIDを記載したルール識別子(#欄)1011と、ルールの種別を表すルール種別(種別欄)1012、および、ルールの内容を記載するための左辺欄1013と右辺欄1014から構成される。このうち左辺欄1013、右辺欄1014はそれぞれ、条件/結果の項目と対応する項目値とを格納する名称と値欄から構成される。
なお、図14の抽出ルール一覧表1200、及び、図15の補足ルール一覧1210の構成は図示した例の構成と同一でなくてもよい。例えば、上述の例では、抽出ルール1205に、複数の値候補が記載されており、値が判別できない場合には、最初の候補値を割り当てていることとしたが、抽出ルール内に候補値の内、値として割り当てる項目を明示的に指定して記載してもよい。また、表記欄1203、1213には、記号をそのまま用いるのではなく、記号、及び、条件、結果項目を抽出するための識別子や、記述された名称、候補値を抽出するための、他の表記方法を用いてもよい。
続いて、条件結果対応表生成部110による、ルール一覧表1010を用いた条件結果対応表1100の生成処理について説明する。この場合、条件結果対応表生成部110は、ルール一覧表1010における全ての条件項目の組合せ中から、ルール種別1012がルールの右辺の条件を満たすものに対し、対応する結果項目値を特定することで生成する。この生成手法は第一の実施例の場合と同様である。また、このときルール種別1012が、「制約」となるルールが存在する場合には、その条件項目の組合せのみに制約される(とりうる値が、制約として与えられたルールに限定される)ことを示している。そのため、ルール一覧表1010内に、制約ルールが存在する場合には、該当する条件項目の組合せのみをルールとして残すようにすれば良い。図19に示す条件結果対応表1100において、実行パス行1105に番号の記載のないルールは、ルール一覧表1010の制約によって、条件組合せが存在しないことを示している。以上の処理によって、図12の状態遷移図170から条件結果項目対応表1100が生成される。
第一の実施例と同様に生成パラメータの設定(ステップ306)、及び、テストケース生成(ステップ307)を実行することで、テストケースを得ることができる。図19のテストケース行1106には、図4に示したカバレッジ基準一覧表410の内、判断文網羅(DC)とn−wise(n=2)の場合のテストケースを示している。なお、判断文網羅(DC)は、状態遷移図170上の全ての状態に対し、各遷移を少なくとも一回通るパスをテストケースとして選択する場合を示しており、n−wiseは、条件項目として抽出した項目値のn項目の組合せ全てをテストケースとしてもいる場合をカバレッジとしている。
以上、処理の流れに関わる仕様からのテストケース生成処理の流れについて示した。第二の実施例では、状態遷移図170を例として説明を行ったが、フローチャート用の抽出ルール一覧表を用意することで、第一の実施例に記載したフローチャートに関しても同様の手順で処理を行うことが可能である。
なお、上述の各実施例では、テストケース生成に伴って処理の流れに関わる仕様として状態遷移図やフローチャートを例としてあげたが、例えば、UMLにおけるシーケンス図や、業務フローを表すためのBPEL(Business Process Execution Language)等についても、個別に抽出ルール一覧表を定めておくことで、同様にテストケースを得ることができる。また、図形式の処理の流れを表す仕様だけでなく、C言語やJAVA言語などのプログラム言語などでも、同様に抽出ルール一覧を定めておくことでテストケース生成を行うことができる。
また、上述の各実施例は、例えば業務システムや金融システムの他、発電所や列車の運行管理等の制御・監視システム、或いは、組込みシステムなど、システム開発におけるシステム、ソフトウェアの動作、或いは、ユーザの操作手順を表すユースケースシナリオなど、特定のシステム開発や開発工程によらず利用可能である。
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
こうした本実施形態によれば、処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能となる。
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態におけるテストケース生成装置において、前記記憶装置は、前記流れに関わる仕様情報の
うち、前記条件項目及び前記結果項目の各表記を特定し、前記各表記から前記条件項目及び前記結果項目とその項目値とを抽出する抽出ルールと、前記実行パスにおける開始条件及び終了条件と、を含む抽出ルール情報を格納し、前記演算装置は、前記条件結果項目抽出処理において、前記抽出ルール情報における前記抽出ルールにより、前記条件項目、前記結果項目、及び、前記条件項目及び前記結果項目の各項目値を抽出し、前記条件結果項目として記憶装置に格納し、前記実行パス抽出処理において、前記流れの仕様情報と前記抽出ルール情報が示す前記開始条件とに基づき、前記流れの中での開始点特定に応じて実行パス抽出を開始し、前記流れの中での前記終了条件に応じて特定した終了点までをひとつの実行パスとして抽出する、ものであるとしてもよい。
これによれば、例えばUML図において状態遷移図で記述された仕様に柔軟に対応し、本実施形態のテストケース生成を効率良く行うことが可能となる。
また、上述のテストケース生成装置において、前記記憶装置は、前記抽出ルール情報として、前記流れの中で関係する前記条件項目及び前記結果項目の間の組み合わせの制約条件を規定した補足ルールを更に格納し、前記演算装置は、前記条件結果項目抽出処理において、前記抽出ルール情報における前記抽出ルールおよび前記補足ルールにより、前記条件項目、前記結果項目、及び、前記条件項目及び前記結果項目の各項目値を、前記補足ルールの規定を満たす制限下で抽出し、前記条件結果項目として記憶装置に格納する、ものであるとしてもよい。
これによれば、所定の処理に伴うイベントのうち排他的に発生するものの関係を踏まえた上で条件結果項目の抽出を行えることとなり、ひいては、生成するテストケースの精度を良好なものとできる。
また、上述のテストケース生成装置において、前記記憶装置は、前記カバレッジ基準の情報として、生成するテストケースが実行パスベースのカバレッジを評価するものか、入出力ベースのカバレッジを評価するものかを示すカバレッジ種別を更に格納しており、前記演算装置は、前記テストケース生成処理において、前記カバレッジ基準の情報が示すカバレッジ種別に応じて前記テストケースの生成を実行するものである、としてもよい。
これによれば、例えばユーザが指定するカバレッジ種別に応じて、該当カバレッジを満たすテストケースの効率的な生成が可能となる。
また、上述のテストケース生成装置において、前記演算装置は、前記条件結果項目抽出処理において、前記抽出した条件結果項目を表示装置に表示し、前記条件結果項目に関する修正指示を入力装置から受け付けて、前記条件結果項目の修正処理を行う条件結果項目処理を更に実行するものである、としてもよい。
これによれば、ユーザの知見や顧客要求等に応じた内容に条件結果項目を修正可能となり、より柔軟でニーズにマッチした上で、効率的なテストケース生成が可能となる。
また、上述のテストケース生成装置において、前記演算装置は、前記条件結果項目補正処理において、入力装置で受け付ける修正指示として、前記流れの中で関係する前記条件項目及び前記結果項目の間の組み合わせの制約条件を規定した補足ルールを受け付けるものである、としてもよい。
これによれば、ユーザの知見に応じ、所定の処理に伴うイベントのうち排他的に発生するものの関係を踏まえた上で条件結果項目の抽出を行えることとなり、ひいては、生成するテストケースの精度を良好なものとできる。
100 テストケース生成装置
101 記述形式検証部
102 仕様入力部
103 条件結果項目補正部
104 テスト仕様生成部
105 テスト仕様登録部
107 条件結果項目抽出部
108 実行パス抽出部
109 テストケース生成部
110 条件結果項目生成部
111 仕様記憶部
112 条件結果項目記憶部
113 実行パス記憶部
114 テストケース記憶部
115 カバレッジ基準記憶部
116 条件結果対応表記億部
117 抽出ルール一覧記憶部
201 CPU(演算装置)
202 RAM
203 外部記憶装置(記憶装置)
204 インターフェイス
205 表示装置
206 入力装置
210 プログラム

Claims (7)

  1. ソフトウェアにおける処理の流れに関わる仕様情報と、テストケースのカバレッジ基準の情報とを格納した記憶装置と、
    前記仕様情報より、前記流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、前記条件項目および前記結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し記憶装置に格納する条件結果項目抽出処理と、
    前記仕様情報より、該当仕様内の各実行パスを抽出する実行パス抽出処理と、
    前記条件結果項目および前記項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と前記実行パスとの対応関係を特定して、前記ルールと前記実行パスとの対応関係を示す条件結果対応表を生成し記憶装置に格納する条件結果対応表生成処理と、
    前記カバレッジ基準の情報が示す条件に対応したルールないし実行パスを、前記条件結果対応表で検索し、当該検索したルールないし実行パスと前記仕様情報とに基づき、所定の生成アルゴリズムによりテストケースを生成するテストケース生成処理と、を実行する演算装置と、
    を備えることを特徴とするテストケース生成装置。
  2. 前記記憶装置は、
    前記流れに関わる仕様情報のうち、前記条件項目及び前記結果項目の各表記を特定し、前記各表記から前記条件項目及び前記結果項目とその項目値とを抽出する抽出ルールと、前記実行パスにおける開始条件及び終了条件と、を含む抽出ルール情報を格納し、
    前記演算装置は、
    前記条件結果項目抽出処理において、前記抽出ルール情報における前記抽出ルールにより、前記条件項目、前記結果項目、及び、前記条件項目及び前記結果項目の各項目値を抽出し、前記条件結果項目として記憶装置に格納し、
    前記実行パス抽出処理において、前記流れの仕様情報と前記抽出ルール情報が示す前記開始条件とに基づき、前記流れの中での開始点特定に応じて実行パス抽出を開始し、前記流れの中での前記終了条件に応じて特定した終了点までをひとつの実行パスとして抽出する、
    ものであることを特徴とする請求項1に記載のテストケース生成装置。
  3. 前記記憶装置は、
    前記抽出ルール情報として、前記流れの中で関係する前記条件項目及び前記結果項目の間の組み合わせの制約条件を規定した補足ルールを更に格納し、
    前記演算装置は、
    前記条件結果項目抽出処理において、前記抽出ルール情報における前記抽出ルールおよび前記補足ルールにより、前記条件項目、前記結果項目、及び、前記条件項目及び前記結果項目の各項目値を、前記補足ルールの規定を満たす制限下で抽出し、前記条件結果項目として記憶装置に格納する、
    ものであることを特徴とする請求項1に記載のテストケース生成装置。
  4. 前記記憶装置は、
    前記カバレッジ基準の情報として、生成するテストケースが実行パスベースのカバレッジを評価するものか、入出力ベースのカバレッジを評価するものかを示すカバレッジ種別を更に格納しており、
    前記演算装置は、
    前記テストケース生成処理において、前記カバレッジ基準の情報が示すカバレッジ種別に応じて前記テストケースの生成を実行するものである、
    を特徴とする請求項1に記載のテストケース生成装置。
  5. 前記演算装置は、
    前記条件結果項目抽出処理において、前記抽出した条件結果項目を表示装置に表示し、前記条件結果項目に関する修正指示を入力装置から受け付けて、前記条件結果項目の修正処理を行う条件結果項目処理を更に実行するものである、
    ことを特徴とする請求項1に記載のテストケース生成装置。
  6. 前記演算装置は、
    前記条件結果項目補正処理において、入力装置で受け付ける修正指示として、前記流れの中で関係する前記条件項目及び前記結果項目の間の組み合わせの制約条件を規定した補足ルールを受け付けるものである、
    ことを特徴とする請求項5に記載のテストケース生成装置。
  7. ソフトウェアにおける処理の流れに関わる仕様情報と、テストケースのカバレッジ基準の情報とを格納した記憶装置を備えるコンピュータが、
    前記仕様情報より、前記流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、前記条件項目および前記結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し記憶装置に格納する条件結果項目抽出処理と、
    前記仕様情報より、該当仕様内の各実行パスを抽出する実行パス抽出処理と、
    前記条件結果項目および前記項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と前記実行パスとの対応関係を特定して、前記ルールと前記実行パスとの対応関係を示す条件結果対応表を生成し記憶装置に格納する条件結果対応表生成処理と、
    前記カバレッジ基準の情報が示す条件に対応したルールないし実行パスを、前記条件結果対応表で検索し、当該検索したルールないし実行パスと前記仕様情報とに基づき、所定の生成アルゴリズムによりテストケースを生成するテストケース生成処理と、
    実行することを特徴とするテストケース生成方法。
JP2014084670A 2014-04-16 2014-04-16 テストケース生成装置及びテストケース生成方法 Active JP6268029B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014084670A JP6268029B2 (ja) 2014-04-16 2014-04-16 テストケース生成装置及びテストケース生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014084670A JP6268029B2 (ja) 2014-04-16 2014-04-16 テストケース生成装置及びテストケース生成方法

Publications (2)

Publication Number Publication Date
JP2015204065A true JP2015204065A (ja) 2015-11-16
JP6268029B2 JP6268029B2 (ja) 2018-01-24

Family

ID=54597474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014084670A Active JP6268029B2 (ja) 2014-04-16 2014-04-16 テストケース生成装置及びテストケース生成方法

Country Status (1)

Country Link
JP (1) JP6268029B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105955890A (zh) * 2016-05-13 2016-09-21 中国建设银行股份有限公司 一种功能测试案例的生成方法及装置
WO2017145300A1 (ja) * 2016-02-24 2017-08-31 三菱電機株式会社 テストケース生成装置及びテストケース生成プログラム
JP2018092374A (ja) * 2016-12-02 2018-06-14 株式会社日立製作所 テストケース生成装置、及びテストケース生成方法
CN108388504A (zh) * 2017-02-03 2018-08-10 北京嘀嘀无限科技发展有限公司 一种测试方法及装置
JP2019197260A (ja) * 2018-05-07 2019-11-14 キヤノンマーケティングジャパン株式会社 情報処理装置、その制御方法及びプログラム
CN110990295A (zh) * 2019-12-19 2020-04-10 卡斯柯信号(北京)有限公司 测试用例的验证方法、装置及电子设备
CN113448869A (zh) * 2021-07-16 2021-09-28 建信金融科技有限责任公司 测试用例生成的方法、装置、电子设备及计算机可读介质
DE102021214519A1 (de) 2021-03-12 2022-09-15 Mitsubishi Electric Corporation Elektronisches steuersystem, testvorrichtung für elektronisches steuersystem und testverfahren für elektronisches steuersystem

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144529A1 (en) * 2003-10-01 2005-06-30 Helmut Gotz Method for defined derivation of software tests from use cases
JP2008293382A (ja) * 2007-05-25 2008-12-04 Fuji Electric Holdings Co Ltd テスト仕様自動生成方式
JP2010267023A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
JP2012221394A (ja) * 2011-04-13 2012-11-12 Nec Commun Syst Ltd テスト支援システム、テスト支援方法、及びプログラム
JP2013161182A (ja) * 2012-02-02 2013-08-19 Ntt Data Corp テスト項目生成装置、テスト項目生成方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144529A1 (en) * 2003-10-01 2005-06-30 Helmut Gotz Method for defined derivation of software tests from use cases
JP2008293382A (ja) * 2007-05-25 2008-12-04 Fuji Electric Holdings Co Ltd テスト仕様自動生成方式
JP2010267023A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
JP2012221394A (ja) * 2011-04-13 2012-11-12 Nec Commun Syst Ltd テスト支援システム、テスト支援方法、及びプログラム
JP2013161182A (ja) * 2012-02-02 2013-08-19 Ntt Data Corp テスト項目生成装置、テスト項目生成方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
沢田 篤史 他編, 組込みソフトウェア開発技術, vol. 初版, JPN6017038844, 1 February 2011 (2011-02-01), JP, pages 243 - 249, ISSN: 0003659558 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108701074A (zh) * 2016-02-24 2018-10-23 三菱电机株式会社 测试用例生成装置和测试用例生成程序
WO2017145300A1 (ja) * 2016-02-24 2017-08-31 三菱電機株式会社 テストケース生成装置及びテストケース生成プログラム
JP6289778B2 (ja) * 2016-02-24 2018-03-07 三菱電機株式会社 テストケース生成装置及びテストケース生成プログラム
JPWO2017145300A1 (ja) * 2016-02-24 2018-04-12 三菱電機株式会社 テストケース生成装置及びテストケース生成プログラム
US20190018765A1 (en) * 2016-02-24 2019-01-17 Mitsubishi Electric Corporation Test case generation apparatus and computer readable medium
CN105955890B (zh) * 2016-05-13 2018-10-19 中国建设银行股份有限公司 一种功能测试案例的生成方法及装置
CN105955890A (zh) * 2016-05-13 2016-09-21 中国建设银行股份有限公司 一种功能测试案例的生成方法及装置
JP2018092374A (ja) * 2016-12-02 2018-06-14 株式会社日立製作所 テストケース生成装置、及びテストケース生成方法
CN108388504A (zh) * 2017-02-03 2018-08-10 北京嘀嘀无限科技发展有限公司 一种测试方法及装置
JP2019197260A (ja) * 2018-05-07 2019-11-14 キヤノンマーケティングジャパン株式会社 情報処理装置、その制御方法及びプログラム
JP7219389B2 (ja) 2018-05-07 2023-02-08 キヤノンマーケティングジャパン株式会社 情報処理装置、その制御方法及びプログラム
CN110990295A (zh) * 2019-12-19 2020-04-10 卡斯柯信号(北京)有限公司 测试用例的验证方法、装置及电子设备
CN110990295B (zh) * 2019-12-19 2023-10-31 卡斯柯信号(北京)有限公司 测试用例的验证方法、装置及电子设备
DE102021214519A1 (de) 2021-03-12 2022-09-15 Mitsubishi Electric Corporation Elektronisches steuersystem, testvorrichtung für elektronisches steuersystem und testverfahren für elektronisches steuersystem
CN113448869A (zh) * 2021-07-16 2021-09-28 建信金融科技有限责任公司 测试用例生成的方法、装置、电子设备及计算机可读介质

Also Published As

Publication number Publication date
JP6268029B2 (ja) 2018-01-24

Similar Documents

Publication Publication Date Title
JP6268029B2 (ja) テストケース生成装置及びテストケース生成方法
US8589884B2 (en) Method and system for identifying regression test cases for a software
CN103092742B (zh) 程序日志记录优化方法和系统
US7774404B2 (en) Managing software component versions within a service oriented architecture
US20110321007A1 (en) Targeting code sections for correcting computer program product defects using records of a defect tracking system
US9639454B2 (en) Computer-readable recording medium storing therein test data generating program, test data generating method, test data generating apparatus and information processing system
US9582270B2 (en) Effective feature location in large legacy systems
JP2015011372A (ja) デバッグ支援システム、方法、プログラム及び記録媒体
US10496402B1 (en) System, method, and computer program for defining and utilizing minimal testable values for software project development and operations
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
JP2016128941A (ja) 出力判定装置、出力判定方法、出力判定プログラム、及び、静的解析装置
US8479152B2 (en) Representing non-functional requirements (NFRS) in unified modeling language (UML)
JP2008197897A (ja) テストパターン作成装置及び作成方法
US20120047485A1 (en) Method for assisting in the development or use of a complex system
CN109410077B (zh) 定义规则流的方法及装置、计算机存储介质、电子设备
JP2013149134A (ja) ソースコードの静的解析装置、システム、方法、及びそのためのプログラム
JP5755861B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
US10180882B2 (en) Information-processing device, processing method, and recording medium in which program is recorded
JP5516277B2 (ja) テストケース関係抽出方法、テストケース関係抽出装置及びテストケース関係抽出プログラム
WO2022118627A1 (ja) 計算機及びソフトウェアの修正箇所の選択方法
JP5556480B2 (ja) 文脈違反検出支援方法、文脈違反検出支援装置、及び文脈違反検出支援プログラム
US11726792B1 (en) Methods and apparatus for automatically transforming software process recordings into dynamic automation scripts
CN110928660B (zh) 一种基于工作流技术的排障任务管理方法及装置
JP4998884B2 (ja) 検証システム
JP6397800B2 (ja) テスト支援システムおよびテスト支援方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171128

R150 Certificate of patent or registration of utility model

Ref document number: 6268029

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150