JP2014038397A - 図式プログラムのテストデータ生成装置およびその方法、並びにプログラム - Google Patents

図式プログラムのテストデータ生成装置およびその方法、並びにプログラム Download PDF

Info

Publication number
JP2014038397A
JP2014038397A JP2012179094A JP2012179094A JP2014038397A JP 2014038397 A JP2014038397 A JP 2014038397A JP 2012179094 A JP2012179094 A JP 2012179094A JP 2012179094 A JP2012179094 A JP 2012179094A JP 2014038397 A JP2014038397 A JP 2014038397A
Authority
JP
Japan
Prior art keywords
program
switching
storage means
test data
elements
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
JP2012179094A
Other languages
English (en)
Other versions
JP5910410B2 (ja
Inventor
Hirokazu Tokuda
寛和 徳田
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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co 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 Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2012179094A priority Critical patent/JP5910410B2/ja
Publication of JP2014038397A publication Critical patent/JP2014038397A/ja
Application granted granted Critical
Publication of JP5910410B2 publication Critical patent/JP5910410B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】十分な網羅率を達成できるテストケースを、人手を介さずに生成することができる図式プログラムのテストデータ生成装置およびその方法を提供する。
【解決手段】図式プログラムを構成する図形要素の中から切替要素を検索する切替要素検索手段33と、切替要素の全てについてそれらの前方の開始要素を検索する前方開始要素検索手段34と、開始要素およびその開始要素のとるON/OFFの条件等を因子リスト記憶手段45に記憶させる開始要素列挙手段35と、因子リスト記憶手段45に記憶されている開始要素のとる条件の組合せを、直交表等の組合せテストの技法を用いて、テストデータとして生成する条件組合せ手段36とを設け、図式プログラムのテストデータ生成装置10を構成した。
【選択図】図1

Description

本発明は、図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置およびその方法、並びにプログラムに係り、例えば、図形を用いてプログラムを記述し、これを自動的にC言語等のテキスト形式のプログラム言語に変換するシステムにおいて、プログラムのテスト用の入力データを自動的に生成する場合に利用できる。
一般に、プログラムの作成に際しては、C言語等の高級言語を利用して原始プログラム(ソースコード)を記述し、これをコンパイラによりコンピュータで実行可能な機械語に変換し、実行形式プログラムを得る方法が用いられている。このような方法の場合、通常、ソースコードはテキスト形式で記述される。
このような方法でプログラムを作成するには、事前にプログラムの詳細設計を行って詳細設計書を作成し、これをC言語等の高級言語によるソースコードに変換するが、詳細設計書に記載されている情報はソースコードを作成するのに必要十分な設計情報であるため、詳細設計書に記載の情報をソースコードに変換する作業は、機械的な要素が多く含まれていて、二重作業となり冗長であるとか、変換作業に単純な人為ミスが混入する可能性があるといった問題点を持っていた。
そこで、このような問題点を解決するための技術として、プログラマ(ここでは、プログラムの設計に携わる者という意味での広義のプログラマをいう。)が、CADを用い、詳細設計書に記述されるような図面(図形)にプログラムとして必要となる情報を入力して図式プログラムを作成し、この図式プログラムから、従来、手作業で作成していたC言語等の高級言語によるプログラム(ソースコード)を自動的に生成させる技術が開発されている。例えば、モジュール関連図、処理フロー図、内部データ定義図、インタフェースデータ定義図を用いて、ソースプログラムを作成する技術が開示されている(特許文献1参照)。
ところで、近年、プログラムの不具合による社会インフラの停止等の問題が顕在化するようになってきており、プログラムの試験の重要性も高まっている。このため、プログラムの単体テストのレベルでは、プログラムの試験がどの程度網羅的に実施されたかを数値化した網羅率(カバレッジ)で、プログラムのテストの十分性を評価する手法が使われるようになってきている。このような手法では、プログラムのテストを自動的に実行できるように、自動テスト環境やプログラムに入力するパラメータ、実行結果の期待値等を用意し、テストを自動実行したうえで、そのテストで実行したテストケースのプログラム上での網羅率(テストを実施することができた範囲)を測定する。例えば、テスト対象のプログラムのテスト実行結果をファイルに保存し、正解集ファイルと比較し、その結果を履歴として保存する自動テスト技術が開示されている(特許文献2参照)。また、分岐命令割込みを利用して、判断文の網羅率を測定する技術が開示されている(特許文献3参照)。なお、網羅率にも、様々な指標での計算方法があり、特許文献3で使用されている判断文カバレッジ(分岐網羅率(C1))の他にも、行カバレッジ(命令網羅率(C0))、単純条件カバレッジ(条件網羅率(C2))等が、一般に知られている。
そして、このような自動テストを行うには、テストケースの作成が必要となる。例えば、設計者との対話的処理により入力したプログラムの故障モードおよびその影響の解析結果をFMEAシートの枠組みに埋め込むことにより作成した解析シートから、プログラムのテストルールを生成するプログラムテストデータ自動生成技術が開示されている(特許文献4参照)。
また、近年、ソフトウェアテストの際に、少ないテスト数で不具合検出を行うことができることから、直交表を利用したテスト項目作成手法が採用されている。例えば、直交表を利用してテスト項目を作成するための因子・水準の入力を支援し、テスト項目を自動的に実行する技術が開示されている(特許文献5参照)。
特開昭60−159939号公報 特開平5−53873号公報 特開平5−257743号公報 特開平1−298435号公報 特開2011−39786号公報
従来、C言語のようなテキスト形式で記述されたプログラムのテストケース(プログラムのテスト時に入力される一群のテストデータ)を作成するには、すなわちテストの条件を決定するには、プログラムの外部仕様(入力とその出力である動作の概要とが記載された書面の内容)より、プログラムに入力される値を同義の区間(入出力特性から、同じような動作をすると考えられる区間)に分割(同値分割)し、区間毎の代表値や境界値をパラメータとして採用し、テストケース(プログラムに入力するパラメータまたはその組合せ)を決定していた。
しかし、このような外部仕様に基づくテストケースの作成方法では、プログラムの内部の情報を反映しておらず、情報が不足するため、十分な網羅率を達成できるテストケースが作成できない場合があるという問題点があった。
また、この作業は、仕様を読解してテストケースを決めるという方法であるため、人手を介して行う作業の量が多いという問題点も持っていた。前述した特許文献4に開示されているプログラムテストデータ自動生成技術についても、故障モードおよびその影響の解析結果の入力には、対話的な作業が必要となっていた。
本発明の目的は、十分な網羅率を達成できるテストケースを、人手を介さずに生成することができる図式プログラムのテストデータ生成装置およびその方法、並びにプログラムを提供するところにある。
本発明は、図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置であって、図式プログラムを記憶する図式プログラム記憶手段と、この図式プログラム記憶手段に記憶された図式プログラムを構成する図形要素の中から、切替用制御情報に従って複数の入力を切り替えて取得して出力を生成する切替要素を検索し、検索して得られた切替要素を識別する要素IDを切替要素リスト記憶手段に記憶させる処理を実行する切替要素検索手段と、切替要素リスト記憶手段に要素IDが記憶されている切替要素の全てについて、切替要素の上流側に接続されて切替用制御情報を生成している図形要素を開始要素に到達するまで前方に検索する処理を実行する前方開始要素検索手段と、この前方開始要素検索手段により検索して得られた開始要素を識別する要素IDを、開始要素のとるON/OFFの条件またはその他の条件とともに、因子リスト記憶手段に記憶させる処理を実行する開始要素列挙手段と、因子リスト記憶手段に要素IDが記憶されている開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、図式プログラムのテストデータとして生成する処理を実行する条件組合せ手段とを備えたことを特徴とするものである。
このような本発明の図式プログラムのテストデータ生成装置においては、切替要素検索手段により、図式プログラムを構成する図形要素の中から切替要素を検索し、前方開始要素検索手段により、その切替要素から上流側に遡って開始要素まで前方に検索し、開始要素列挙手段により、検索した開始要素の要素IDを、因子リスト記憶手段に列挙して記憶させる。そして、条件組合せ手段により、組合せテストの技法を用いて、因子リスト記憶手段に列挙して記憶された開始要素のとる条件の組合せを生成し、これを図式プログラムのテストデータとする。
このため、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成するので、テストデータの組合せの数を低減しつつ、十分な網羅率を達成することが可能となる。例えば、直交表を用いる技法や、オールペア法(ペアワイズ手法ともいう。)を用いることで、任意の2つの因子(ここでは、切替用制御情報を生成している切替要素の前方の開始要素)の間の全水準(ON/OFFのような取りうる選択肢)の組合せを網羅することができるようにテストの条件を決定することが可能となり、網羅率を向上させることができるようになる。
また、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成するので、テストデータを自動生成することができ、従来のように人手を介してテストデータを作成する必要がなくなる。従って、プログラムのテストを行う者の手間が軽減されるうえ、場合によっては人間の勘に頼ってテストデータを作成することもあったため、この場合に比べると、網羅率の高いテストを行うことが可能となり、テストの信頼性を向上させ、プログラムの安全性を高めることが可能となり、これらにより前記目的が達成される。
なお、本発明は、図式プログラムでは切替要素が条件分岐の要因となっているので、この切替要素に着目し、図式プログラムを構成する図形要素の情報を利用して切替要素を検索し、そしてその前方の開始要素を検索し、直交表を用いる技法やオールペア法といった組合せテストの技法により、テストデータの生成を実現している。このため、本発明は、前述した特許文献5のように単にプログラムのテストに直交表を利用する場合とは異なり、図式プログラムを構成する図形要素の情報の利用と、組合せテストの技法の利用とを結び付けた独特な処理を行っている。
また、前述した図式プログラムのテストデータ生成装置において、開始要素列挙手段は、1つの開始要素から分岐して複数の切替要素に至ることにより1つの開始要素のとる条件が複数の切替要素の切替用制御情報となっている場合に、前方開始要素検索手段による検索処理を実行して因子リスト記憶手段に重複して記憶された1つの開始要素の要素IDについて、重複を排除する処理を実行する構成とされていることが望ましい。
このように因子リスト記憶手段に記憶された開始要素の要素IDの重複を排除する構成とした場合には、1つの開始要素から分岐して複数の切替要素に至ることにより1つの開始要素のとる条件が複数の切替要素の切替用制御情報となっているケースで、因子リストにおける因子の重複を排除することが可能となる。
さらに、前述した図式プログラムのテストデータ生成装置において、開始要素列挙手段は、前方開始要素検索手段による検索処理を実行して切替要素の前方に合流要素が検出されたときに、合流要素が論理和の性質を持ち、かつ、合流要素への複数の入力の全てが開始要素により直接に与えられている場合には、合流要素への入力を与える複数の開始要素のうち、1つの開始要素のみについての要素IDを、ON/OFFの条件とともに因子リスト記憶手段に記憶させ、残りの全ての開始要素についての要素IDは、固定条件としてのOFFの条件とともに固定条件リスト記憶手段に記憶させ、合流要素が論理積の性質を持ち、かつ、合流要素への複数の入力の全てが開始要素により直接に与えられている場合には、合流要素への入力を与える複数の開始要素のうち、1つの開始要素のみについての要素IDを、ON/OFFの条件とともに因子リスト記憶手段に記憶させ、残りの全ての開始要素についての要素IDは、固定条件としてのONの条件とともに固定条件リスト記憶手段に記憶させる処理を実行する構成とされ、条件組合せ手段は、組合せテストの技法を用いて生成された開始要素のとる条件の組合せに、固定条件リスト記憶手段に要素IDが記憶されている開始要素の固定条件を追加することにより、図式プログラムのテストデータを生成する処理を実行する構成とされていることが望ましい。
このように合流要素の性質に応じて開始要素のとる条件を因子リスト記憶手段または固定条件リスト記憶手段に振り分けて記憶させる構成とした場合には、切替要素の前方に合流要素があるときに、開始要素のとる条件の組合せの数を減らすことが可能となる。
そして、前述した図式プログラムのテストデータ生成装置において、切替要素検索手段は、切替要素リスト記憶手段に要素IDが記憶されている切替要素の全てについて、切替要素へ入力を与える複数の入力端子のそれぞれの前方を検索し、前方に別の切替要素が検出された場合には、この検出された切替要素と検索の開始位置の切替要素とにより切替要素の組を作成し、作成した組を構成する多段に接続された切替要素の各要素IDを、組にした状態で切替要素リスト記憶手段に記憶させる処理を実行する構成とされていることが望ましい。
このように切替要素が多段になっているときに切替要素の組を作成する構成とした場合には、開始要素の依存性を利用して因子数を減らし、テストケースを減らすことが可能となる。
また、以上に述べた本発明の図式プログラムのテストデータ生成装置により実現されるテストデータ生成方法として、以下のような本発明の図式プログラムのテストデータ生成方法が挙げられる。
すなわち、本発明は、図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置で実行される図式プログラムのテストデータ生成方法であって、図式プログラムを図式プログラム記憶手段に記憶させ、切替要素検索手段が、図式プログラム記憶手段に記憶された図式プログラムを構成する図形要素の中から、切替用制御情報に従って複数の入力を切り替えて取得して出力を生成する切替要素を検索し、検索して得られた切替要素を識別する要素IDを切替要素リスト記憶手段に記憶させる処理を実行し、前方開始要素検索手段が、切替要素リスト記憶手段に要素IDが記憶されている切替要素の全てについて、切替要素の上流側に接続されて切替用制御情報を生成している図形要素を開始要素に到達するまで前方に検索する処理を実行し、開始要素列挙手段が、前方開始要素検索手段により検索して得られた開始要素を識別する要素IDを、開始要素のとるON/OFFの条件またはその他の条件とともに、因子リスト記憶手段に記憶させる処理を実行し、条件組合せ手段が、因子リスト記憶手段に要素IDが記憶されている開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、図式プログラムのテストデータとして生成する処理を実行することを特徴とするものである。
このような本発明の図式プログラムのテストデータ生成方法においては、前述した本発明の図式プログラムのテストデータ生成装置で得られる作用・効果がそのまま得られ、これにより前記目的が達成される。
また、本発明のプログラムは、前述した図式プログラムのテストデータ生成装置として、コンピュータを機能させるためのものである。
なお、上記のプログラムまたはその一部は、例えば、光磁気ディスク(MO)、コンパクトディスク(CD)を利用した読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)、デジタル・バーサタイル・ディスク(DVD)を利用した読出し専用メモリ(DVD−ROM)、DVDを利用したランダム・アクセス・メモリ(DVD−RAM)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去および書換可能な読出し専用メモリ(EEPROM)、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)等の記録媒体に記録して保存や流通等させることが可能であるとともに、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等の有線ネットワーク、あるいは無線通信ネットワーク、さらにはこれらの組合せ等の伝送媒体を用いて伝送することが可能であり、また、搬送波に載せて搬送することも可能である。さらに、上記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。
以上に述べたように本発明によれば、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成するので、テストデータの組合せの数を低減しつつ、十分な網羅率を達成することができるとともに、テストデータを自動生成することができ、従来のように人手を介してテストデータを作成する必要がなくなることから、プログラムのテストを行う者の手間の軽減、網羅率の高いテストの実現、テストの信頼性向上、プログラムの安全性の向上を図ることができるという効果がある。
本発明の一実施形態の図式プログラムのテストデータ生成装置の全体構成図。 前記実施形態のハードウェア構成図。 前記実施形態の切替要素を含む図式プログラムの一例を示す図。 前記実施形態の切替要素を含む図式プログラムから生成されたコードの一例を示す図。 前記実施形態の切替要素の上側端子が開始要素に直接に繋がっていない場合の図式プログラムの一例を示す図。 前記実施形態の分岐要素がある場合の図式プログラムの一例を示す図。 前記実施形態の合流要素がある場合の図式プログラムの一例を示す図。 前記実施形態の切替要素が多段になっている場合の図式プログラムの一例を示す図。 前記実施形態において3因子、2水準を扱うことができる直交表L4を用いて作成されたテストデータの一例を示す図。 前記実施形態において4因子、3水準を扱うことができる直交表L9を用いて作成されたテストデータの一例(因子を統合した状態)を示す図。 前記実施形態において4因子、3水準を扱うことができる直交表L9を用いて作成されたテストデータの一例(統合された因子を分解した状態)を示す図。 前記実施形態のテストデータ生成処理の流れを示すフローチャートの図。 前記実施形態の前方開始要素検索処理の詳細な流れを示すフローチャートの図。 本発明の変形の形態を示す第1の説明図。 前記変形の形態を示す第2の説明図。 前記変形の形態を示す第3の説明図。
以下に本発明の一実施形態について図面を参照して説明する。図1には、本実施形態の図式プログラムのテストデータ生成装置10の全体構成が示され、図2には、そのハードウェア構成が示されている。図3には、切替要素を含む図式プログラムの一例が示され、図4には、その切替要素を含む図式プログラムから生成されたコードの一例が示されている。また、図5には、切替要素の上側端子が開始要素に直接に繋がっていない場合の図式プログラムの一例が示され、図6には、分岐要素がある場合の図式プログラムの一例が示され、図7には、合流要素がある場合の図式プログラムの一例が示され、図8には、切替要素が多段になっている場合の図式プログラムの一例が示され、図9には、3因子、2水準を扱うことができる直交表L4を用いて作成されたテストデータの一例が示され、図10および図11には、4因子、3水準を扱うことができる直交表L9を用いて作成されたテストデータの一例が示されている。さらに、図12には、テストデータ生成処理の流れがフローチャートで示され、図13には、前方開始要素検索処理の詳細な流れがフローチャートで示されている。
図1において、図式プログラムのテストデータ生成装置10は、コンピュータ本体により構成された装置本体20と、マウスやキーボード等の入力装置50と、液晶ディスプレイやCRTディスプレイ等のディスプレイ装置60とを備えている。また、図示は省略されているが、印刷装置を備えた構成としてもよい。
装置本体20は、図式プログラム作成手段31と、ソースコード変換手段32と、切替要素検索手段33と、前方開始要素検索手段34と、開始要素列挙手段35と、条件組合せ手段36と、図式プログラムライブラリ記憶手段41と、図式プログラム記憶手段42と、生成プログラム記憶手段43と、切替要素リスト記憶手段44と、因子リスト記憶手段45と、固定条件リスト記憶手段46と、テストデータ記憶手段47とを含んで構成されている。
また、装置本体20は、ハードウェア構成としては、図2に示すように、演算装置(CPU)21と、主記憶装置(主メモリ、ここではキャッシュメモリを含むものとする。)22と、ハードディスク等の補助記憶装置23と、これらを接続するバス24と、各種インターフェースとを含んで構成されている。
図式プログラム作成手段31は、図式プログラムライブラリ記憶手段41に予め用意されて記憶されている各種の機能を有する図形要素(図式プログラムの構成要素であり、図3、図5〜図8の切替要素、開始要素、合流要素等が含まれる。)の情報を用いて、プログラマ(本実施形態では、プログラムの設計に携わる広義のプログラマ)による図形要素の選択入力およびそれに付随させる情報(設定値等)の入力を受け付けるとともに、図形要素間の接続情報の入力も受け付け、ディスプレイ装置60の画面上に、入力された図形要素を並べて表示するとともに、それらの接続関係も表示することにより(図3参照)、図形を用いたプログラムの作成を支援し、入力された図形要素の情報を、その図形要素を識別する要素IDと関連付け、また、入力された接続情報を、接続関係IDと関連付けて、図式プログラム記憶手段42に記憶させる処理を実行するものである。
ソースコード変換手段32は、ディスプレイ装置60の画面上に表示しながらプログラマにより作成されて図式プログラム記憶手段42に記憶されている作成済みの図式プログラムの情報(図式プログラムを構成する各図形要素の情報およびそれらの図形要素間の接続情報)を用いて、各図形要素の種別コードにより図式プログラムライブラリ記憶手段41から各図形要素の種別(機能)に応じた処理内容を示すソースコードを取得し、各図形要素について設定されている情報(パラメータへの設定値等)と組み合わせることにより、図式プログラム(図3参照)で示される処理内容を、テキスト形式の計算機言語(高級言語)で記述したソースコード(図4参照)に変換し、変換して得られたソースプログラム(本実施形態では、一例として、C言語プログラムとする。)を、生成プログラム記憶手段43に記憶させる処理を実行するものである。
切替要素検索手段33は、図式プログラム記憶手段42に記憶された図式プログラムを構成する図形要素の中から、各図形要素の種別コードが切替要素の種別コード(1種類または複数種類の種別コード)に一致するか否かの検索を行うことにより、切替要素を抽出し、抽出した切替要素を識別する要素ID(種別コードではなく、1つ1つの切替要素を識別するもの。)を、切替要素リスト記憶手段44に記憶させる処理を実行するものである。例えば、図3の図式プログラムでは、3つの切替要素70,71,72が検索により抽出される。
ここで、切替要素は、例えば、図3の図式プログラムおよびこれに対応する図4のソースコードに示すように、切替用制御情報である上側端子の値が0でない場合(ONの場合)に、左側上端子の値を右側端子に出力し、上側端子の値が0である場合(OFFの場合)に、左側下端子の値を右側端子に出力する、すなわち、複数の入力信号を切り替えて取り込み、取り込んだ信号をそのまま出力する図形要素である。より具体的には、開始要素aの出力信号が切替用制御情報となって切替要素70の上側端子70Aに与えられるので、開始要素aが0でない場合には、入力値u1が出力値xとなり、開始要素aが0である場合には、入力値u2が出力値xとなる。同様に、切替要素71については、開始要素bが0でない場合には、入力値v1が出力値yとなり、開始要素bが0である場合には、入力値v2が出力値yとなり、また、切替要素72については、開始要素cが0でない場合には、入力値w1が出力値zとなり、開始要素cが0である場合には、入力値w2が出力値zとなる。
また、切替要素検索手段33は、切替要素リスト記憶手段44に要素IDが記憶されている切替要素の全てについて、切替要素へ入力を与える複数の入力端子(左側入力端子であり、図3の切替要素70では、左側上端子70Bおよび左側下端子70Cとなる。)のそれぞれの前方を検索し、前方に別の切替要素が検出された場合には、この検出された切替要素と検索の開始位置の切替要素とにより切替要素の組を作成し、作成した組を構成する多段に接続された複数の切替要素の各要素IDを、組にした状態で切替要素リスト記憶手段44に記憶させる処理を実行する。なお、「組にした状態で」とは、互いが組になっていることを把握することができる状態であればよく、例えば、各要素IDを連続するように並べてもよく、各要素IDを結合させた新たなIDを作成してもよく、離れていても互いの関連性を認識可能な情報を付加してもよい。また、図形要素の前方は、図式プログラム記憶手段42に記憶されている接続情報により判断することができる。具体的には、例えば、図8に示すように、切替要素78の左側上端子78Bからの前方検索で別の切替要素79(但し、要素IDは違うが、種別コードは同じでもよい。)が検出された場合には、多段になっている切替要素78,79の組を作成する処理を実行する。
前方開始要素検索手段34は、切替要素リスト記憶手段44に要素IDが記憶されている切替要素の全てについて、各切替要素の上流側に接続されて切替用制御情報を生成している図形要素(各切替要素の上側端子に接続されている図形要素)を開始要素に到達するまで前方に検索する処理を実行するものである。この際、開始要素であるか否かは、それよりも前方に図形要素が無いことに基づき判断してもよく、あるいは各図形要素の種別コードが開始要素の種別コード(1種類または複数種類の種別コード)に一致するか否かの検索を行うことにより判断してもよい。なお、図形要素の前方は、図式プログラム記憶手段42に記憶されている接続情報により判断することができる。
より具体的には、前方開始要素検索手段34は、図3の場合には、切替要素70からは、開始要素である端子aにすぐに到達するので、ここで検索を終了する。同様に、切替要素71,72からは、開始要素である端子b、端子cが検索される。また、例えば、図5に示すように切替要素73の上側端子73Aが開始要素aに直接に繋がっていない場合でも、前方開始要素検索手段34は、切替要素73の上側端子73Aから順番に前方の図形要素を検索していき、開始要素aを抽出する。図5の例の場合において中間に現れるブロックには、例えば、論理反転(NOT)等の図形要素がある。
また、前方開始要素検索手段34は、切替要素リスト記憶手段44に、組を構成する多段に接続された複数の切替要素の各要素IDが組になった状態で記憶されている場合には、組を構成する複数の切替要素のそれぞれについて、それらの切替要素の上側端子に接続されている図形要素を開始要素に到達するまで前方に検索することにより、依存性のある複数の開始要素を抽出する処理を実行する。
開始要素列挙手段35は、前方開始要素検索手段34により検索して得られた開始要素を識別する要素ID(種別コードではなく、1つ1つの開始要素を識別するもの。)を、開始要素のとるON/OFFの条件またはその他の条件とともに、因子リスト記憶手段45に記憶させる処理を実行するものである。なお、開始要素のとる「その他の条件」としては、ON/OFFの条件のような2水準(2つの選択肢)の条件ではなく、3水準(3つの選択肢)以上の条件がある。
また、開始要素列挙手段35は、前方開始要素検索手段34による検索処理を実行して因子リスト記憶手段45に重複して記憶された同一の開始要素の要素IDについて、重複を排除する処理を実行する。例えば、図6に示すように、1つの開始要素aから分岐して複数の切替要素74,75に至ることにより、1つの開始要素aのとる条件が複数の切替要素74,75の上側端子74A,75Aでの切替用制御情報となっている場合(開始要素aのON/OFFの条件を切り替えると、複数の切替要素74,75で連動して切替動作が行われる場合)には、複数の切替要素74,75からの検索により、1つの開始要素aの要素IDが因子リスト記憶手段45に重複して記憶されることになるが、開始要素列挙手段35は、このような重複登録を排除する機能を有している。
さらに、開始要素列挙手段35は、図7に示すように、前方開始要素検索手段34により切替要素76の上側端子76Aからの検索処理を実行して切替要素76の前方に合流要素77が検出されたときに、合流要素77が論理和(OR)の性質を持ち、かつ、合流要素77への複数の入力の全てが開始要素a,a2により直接に与えられている場合(合流要素77の左側入力端子77A,77Bが開始要素a,a2に直接に接続されている場合)には、合流要素77への入力を与える複数の開始要素a,a2のうち、1つの開始要素のみについての要素IDを、ON/OFFの条件とともに因子リスト記憶手段45に記憶させ、残りの全ての開始要素についての要素IDは、固定条件としてのOFFの条件とともに固定条件リスト記憶手段46に記憶させる処理を実行するものである。
また、開始要素列挙手段35は、合流要素77が論理積(AND)の性質を持ち、かつ、合流要素77への複数の入力の全てが開始要素a,a2により直接に与えられている場合には、合流要素77への入力を与える複数の開始要素a,a2のうち、1つの開始要素のみについての要素IDを、ON/OFFの条件とともに因子リスト記憶手段45に記憶させ、残りの全ての開始要素についての要素IDは、固定条件としてのONの条件とともに固定条件リスト記憶手段46に記憶させる処理を実行する。
なお、開始要素列挙手段35は、前方開始要素検索手段34により合流要素77が検出されたときであっても、検出された合流要素77が論理和(OR)、論理積(AND)のいずれの性質も持たない場合、あるいは、検出された合流要素77への複数の入力の全てが開始要素a,a2により直接に与えられている状態ではない場合には、上述したような各開始要素のとる条件を因子リスト記憶手段45と固定条件リスト記憶手段46とに振り分けて記憶させる処理は行わない。これらの場合には、前方開始要素検索手段34により、検出された合流要素77の全ての入力端子について、前方の開始要素の検索処理が続行されるので、それぞれの検索処理で開始要素a,a2が抽出されたときに、開始要素列挙手段35は、それらの開始要素a,a2についての要素IDを、ON/OFFの条件とともに因子リスト記憶手段45に記憶させる処理を実行する(これは、合流要素が関与しない通常の開始要素の列挙処理と同様である)。
そして、開始要素列挙手段35は、前方開始要素検索手段34により依存性のある複数の開始要素が抽出された場合(図8に示すように、切替要素が多段になっている場合)には、依存性のある複数の開始要素を統合した新しい因子(擬似的な開始要素)を作成し、作成した新しい因子を、その因子のとる条件とともに、因子リスト記憶手段45に記憶させる処理を実行する。例えば、図8において、多段に接続されている切替要素78,79については、開始要素である端子bの条件がOFFの場合には、入力値v2が出力値xになるので、開始要素である端子aの条件は、出力に影響がなく、開始要素aは、開始要素bに従属する形になる。従って、後述する条件組合せ手段36により、条件の組合せを決定する際には、aとbとの間に禁則を設けたうえで組合せを決定する。つまり、図8の例では、aとbとを統合した新しい因子(擬似的な開始要素)abについては、ab=ON−ON(a,bともにON)、ab=OFF−ON(aがOFFで、bがON)、ab=ON−OFF(b=OFFであれば、aはON/OFFのどちらとしても出力に影響しないので、a=ONで代表した)という3つの条件をとることができる。従って、開始要素列挙手段35は、aとbとを統合した新しい因子(擬似的な開始要素)abを識別する要素ID(例えば、開始要素a,bの各要素IDを結合した状態等のように、aとbとを統合した擬似的な開始要素であることを識別できる状態であればよい。)を、これらの3つの条件とともに、因子リスト記憶手段45に記憶させる処理を実行する。
条件組合せ手段36は、因子リスト記憶手段45に要素IDが記憶されている開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、図式プログラムのテストデータとして生成し、生成したテストデータを、テストデータ記憶手段47に記憶させる処理を実行するものである。
より具体的には、条件組合せ手段36は、次のような処理を実行する。図3の例において、全ての選択肢(とり得る条件)の組合せを抽出すると、開始要素である端子aがONの場合とOFFの場合、端子bがONの場合とOFFの場合、端子cがONの場合とOFFの場合があるので、合計で2×2×2=8通りの組合せが抽出される。
しかし、現実のプログラムはもっと規模が大きく複雑であることが多いので、この組合せの数が莫大な数となり、全て試験を行うのは現実的ではない場合が多い。そこで、組合せテストの技法を適用する。この組合せテストの技法としては、直交表による技法や、オールペア法と呼ばれる技法が一般に知られている。図3の例の場合は、2つの選択肢(ONの場合とOFFの場合)を有する項目が3項目(3つの開始要素)あるので、例えば、直交表による技法を用いる場合には、3因子、2水準を扱える直交表L4を用いることができ、テストケースは、図9に示すように、テストケース番号1〜4の4ケースに絞ることができる。これらの4つのテストケースは、直交表の特徴により、全ての因子(開始要素)の中から、いずれの2つの因子(開始要素)の組を抽出しても、全てのON/OFFの組合せが現れるものとなっており、少ないテストケース数で、条件網羅率を向上させることができ、効率的に不具合の検出を行うことができるものである。例えば、図9の直交表において、開始要素である2つの端子a,bの列だけに着目すると、4通り全てのON/OFFの組合せが含まれていることがわかり、同様に、端子b,cの列だけに着目しても、また、端子c,aの列だけに着目しても、4通り全てのON/OFFの組合せが含まれていることがわかる。
従って、条件組合せ手段36は、因子リスト記憶手段45から、開始要素およびその開始要素のとる条件(ON/OFFの条件等)を取得し、開始要素の数により因子数を決定し、各開始要素のとり得る条件の数(選択肢の数)のうちの最大数により水準数を決定し、決定した因子数および水準数から、適用する直交表の種別を決定する処理を実行する。この際、因子数および水準数と、適用する直交表の種別との対応関係は、直交表種別決定用テーブルに予め定められ、直交表種別決定用テーブル記憶手段(不図示)に記憶されるか、または条件組合せ手段36を構成するプログラム内に記述されているので、条件組合せ手段36は、この直交表種別決定用テーブルに従って、適用する直交表の種別を決定する。なお、直交表種別決定用テーブルを使用せずに、因子数および水準数を用いて数値計算および条件判断処理を行って、適用する直交表の種別を決定してもよい。また、直交表の種別には、例えば、2水準系の直交表として、L4,L8,L12,L16等があり、3水準系の直交表として、L9,L18,L27,L36等があるが、条件組合せ手段36は、これらの各種別の直交表の雛形を直交表雛形記憶手段(不図示)から取得し、この雛形のデータを、因子リスト記憶手段45に記憶された開始要素およびその開始要素のとる条件に置き換えることにより、直交表の雛形を利用してテストデータを生成してもよく、あるいは雛形を用意しておくのではなく、条件組合せ手段36を構成するプログラムにより、ガロア体(例えば、2水準系であれば、ガロア体GF(2)、3水準系であれば、ガロア体GF(3)、5水準系であれば、ガロア体GF(5))における加法演算により、直交表を直接に生成してもよい。
また、条件組合せ手段36は、因子リスト記憶手段45に、複数の開始要素を統合した新しい因子(擬似的な開始要素)およびその新しい因子のとる条件が記憶されている場合(図8に示すように、切替要素が多段になっている場合)には、新しい因子(擬似的な開始要素)およびその新しい因子のとる条件を取得し、その新しい因子を含めた開始要素の数により因子数を決定し、その新しい因子を含めた各開始要素のとり得る条件の数(選択肢の数)のうちの最大数により水準数を決定し、決定した因子数および水準数から、適用する直交表の種別を決定する処理を実行する。例えば、図8の場合には、ab、c、d、eの4因子があるとみなし、abが3水準であることを考慮し、4因子、3水準を扱うことができる直交表L9を適用することができ、テストケースは、図10に示すように、テストケース番号1〜9の9ケースに絞ることができる。
この際、条件組合せ手段36は、c、d、eが、2水準であるので、3水準に拡張するために、ダミーの水準「(ON)」を設けて直交表を作成する処理を実行する。このダミーの水準「(ON)」は、プログラムを実際にテストする際には、ONと同じとするので、テストケース番号1と3は、条件の組合せが全く同じになるため、条件組合せ手段36は、これらの重複を排除する処理を実行する。これにより、さらにテストケースを1つ減らして8ケースとすることができる。そして、abが統合されたままでは、実際にテストすることはできないので、条件組合せ手段36は、abを分解する処理を実行する。図10に示されたabを分解すれば、8つのテストケースは、図11に示すようになる。この図11では、切替要素が5個あり、それらの前方の開始要素も5個あって、禁則を考慮しないで総当たりとする場合のテストケースの数である2=32ケースに比べ、テストケースの数を1/4に減らすことができている。
また、条件組合せ手段36は、組合せテストの技法を用いて生成された開始要素のとる条件の組合せに、固定条件リスト記憶手段46に要素IDが記憶されている開始要素の固定条件を追加することにより、図式プログラムのテストデータを生成し、生成したテストデータを、テストデータ記憶手段47に記憶させる処理を実行する。具体的には、図9〜図11に示すような直交表において、固定条件としてのONの条件を並べた列(縦方向の列)を付加したり、固定条件としてのOFFの条件を並べた列(縦方向の列)を付加する処理を実行する。
図式プログラムライブラリ記憶手段41は、予め用意された各種の機能を有する図形要素(作成する図式プログラムの構成要素となるものであり、図3、図5〜図8の切替要素、開始要素、合流要素等が含まれる。)の情報(図形要素の種別(機能)に応じた処理内容に対応するソースコード等)を、図形要素の種別コードに関連付けて記憶するものである。
図式プログラム記憶手段42は、図式プログラム作成手段31により入力された作成済みまたは作成途中の図式プログラムを記憶するものであり、より具体的には、作成済みまたは作成途中の図式プログラムを構成する各図形要素の情報(パラメータへの設定値や、図形要素の機能を識別するための種別コード等を含む。)を、要素IDと関連付け、また、各図形要素間の接続情報を、接続関係IDと関連付けて記憶するものである。
生成プログラム記憶手段43は、ソースコード変換手段32により生成された、ソースコードで記述されたテスト対象のプログラム(本実施形態では、C言語プログラム)を記憶するものである。
切替要素リスト記憶手段44は、図式プログラム記憶手段42に記憶された図式プログラムを構成する図形要素の中から、切替要素検索手段33により抽出された全ての切替要素を列挙して構成される切替要素リストを記憶するものである。この切替要素リストには、各切替要素の要素IDおよび種別コードが含まれている。また、多段に接続された複数の切替要素(図8参照)の組については、組を構成する各切替要素の要素IDおよび種別コードが、組になった状態で含まれている。なお、本実施形態では、図1に示すように、切替要素リスト記憶手段44は、補助記憶装置23により実現されているが、主記憶装置22により実現してもよい。
因子リスト記憶手段45は、開始要素列挙手段35により作成された、全ての開始要素(但し、固定条件をとる開始要素は除く。)を列挙して構成された因子リストを記憶するものである。この因子リストには、各開始要素の要素ID、およびその開始要素のとる条件(ON/OFFの条件)が含まれている。なお、本実施形態では、図1に示すように、因子リスト記憶手段45は、補助記憶装置23により実現されているが、主記憶装置22により実現してもよい。
固定条件リスト記憶手段46は、開始要素列挙手段35により作成された、固定条件をとる開始要素(例えば、ONの条件で固定されている、あるいはOFFの条件で固定されている開始要素等のように、選択肢が1つだけの開始要素)を列挙して構成された固定条件リストを記憶するものである。この固定条件リストには、各開始要素の要素ID、およびその開始要素のとる固定条件(ONの条件等)が含まれている。なお、本実施形態では、図1に示すように、固定条件リスト記憶手段46は、補助記憶装置23により実現されているが、主記憶装置22により実現してもよい。
テストデータ記憶手段47は、条件組合せ手段36により生成された図式プログラムのテストデータを記憶するものである。
そして、以上に述べた各種処理を実行する各手段31〜36は、装置本体20を構成するコンピュータ本体の内部に設けられた演算装置(CPU)21、その作業領域である主記憶装置22(図2参照)、および演算装置(CPU)21の動作手順を規定する1つまたは複数のプログラムにより実現される。
また、各記憶手段41〜47は、例えばハードディスク等の補助記憶装置23(図2参照)により好適に実現されるが、記憶容量やアクセス速度等に問題が生じない範囲であれば、ROM、EEPROM、フラッシュ・メモリ、RAM、MO、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、FD、磁気テープ、あるいはこれらの組合せ等を採用してもよい。
さらに、装置本体20は、1台のコンピュータあるいは1つのCPUにより実現されるものに限定されず、複数のコンピュータあるいは複数のCPUで分散処理を行うことにより実現されるものであってもよい。
このような本実施形態においては、以下のようにして図式プログラムのテストデータ生成装置10により、テストデータの生成処理が行われる。
先ず、図式プログラム作成手段31により、図式プログラムライブラリ記憶手段41に予め用意されて記憶されている各種の機能を有する図形要素(図式プログラムの構成要素であり、図3、図5〜図8の切替要素、開始要素、合流要素等が含まれる。)の情報を用いて、ディスプレイ装置60の画面上に図形を表示しながら図式プログラムを作成し、図式プログラム記憶手段42に記憶させる。
そして、ソースコード変換手段32により、図式プログラム記憶手段42に記憶されている作成済みの図式プログラムを、ソースプログラム(本実施形態では、一例として、C言語プログラムとする。)に変換し、生成プログラム記憶手段43に記憶させる。ここで生成したソースプログラムは、テスト対象のプログラムであるが、この変換作業は、テストデータの生成後に行ってもよい。
図12において、テストデータの生成処理の開始後には(ステップS1)、切替要素検索手段33により、図式プログラム記憶手段42に記憶された図式プログラムを構成する図形要素の中から、各図形要素の種別コードが切替要素の種別コード(1種類または複数種類の種別コード)に一致するか否かの検索を行うことにより、切替要素を全て抽出し、抽出した全ての切替要素の要素IDを、切替要素リスト記憶手段44に記憶させる(ステップS2)。
続いて、切替要素検索手段33により、切替要素リスト記憶手段44に要素IDが記憶されている全ての切替要素について、切替要素を1個ずつ抽出し(ステップS3)、さらに、その切替要素の全ての左側入力端子(例えば、図3の切替要素70の場合には、左側上端子70Bおよび左側下端子70Cとなる。)から、左側入力端子を1個ずつ抽出し(ステップS4)、抽出した左側入力端子の前方を検索する(ステップS5)。この前方検索は、切替要素を検出する検索であるから、切替要素が多段になっていることを把握するための処理である。
そして、ステップS6で、前方に別の切替要素が検出された場合には、切替要素検索手段33により、この検出された切替要素と、検索の開始位置の切替要素とが多段になっていることを示すために、切替要素リスト記憶手段44に記憶された切替要素リストまたは依存リスト記憶手段(不図示)に記憶された依存リストに、双方または一方の切替要素の要素IDに関連付けて依存性を示す情報を付加する(ステップS7)。例えば、図8の場合には、切替要素78の要素IDに関連付けて切替要素79の要素IDを付加するか、切替要素79の要素IDに関連付けて切替要素78の要素IDを付加するか、これらの両方の付加処理を行うか、あるいは切替要素78,79のそれぞれの要素IDに関連付けて紐付け用の共通番号等(いずれの要素IDとも異なる識別情報)を付加する等である。一方、ステップS6で、前方に別の切替要素が検出されなかった場合には、特に何もしない。
このようなステップS6,S7の処理を、全ての左側入力端子(ステップS8)、および全ての切替要素(ステップS9)について実行した後、切替要素検索手段33により、切替要素リスト記憶手段44に記憶された切替要素リストまたは依存リスト記憶手段(不図示)に記憶された依存リストに付加されている依存性を示す情報を用いて、多段に接続された複数の切替要素(例えば、図8の切替要素78,79)により切替要素の組を作成し、作成した組を構成する複数の切替要素の各要素IDを、組にした状態で切替要素リスト記憶手段44に記憶させる(ステップS10)。この際、組を構成する各切替要素について元々存在していた情報は、切替要素リスト記憶手段44に記憶された切替要素リストから削除する。従って、切替要素検索手段33により、組を構成する各切替要素について元々存在していた情報と、作成された切替要素の組についての情報とが、置き換えられることになる。
その後、前方開始要素検索手段34および開始要素列挙手段35により、切替要素リスト記憶手段44に記憶された切替要素リストに含まれている全ての切替要素(ステップS11)について、各切替要素の上側端子に接続されている図形要素を、開始要素に到達するまで前方に検索し、開始要素を抽出し、因子リスト記憶手段45に記憶された因子リストまたは固定条件リスト記憶手段46に記憶された固定条件リストに追加する(ステップS12)。
図13において、前方開始要素検索手段34により、前方にある開始要素の検索処理を開始し(ステップS1201)、先ず、1つ前の図形要素を参照し(ステップS1202)、種別コードを用いて開始要素であるか否かを判定し、あるいは更にその前方の図形要素の有無により開始要素であるか否かを判定し(ステップS1203)、これが開始要素であれば、その検出した開始要素を、開始要素列挙手段35により、因子リスト記憶手段45に記憶された因子リストに追加し(ステップS1204)、前方開始要素検索処理を終了する(ステップS1213)。
一方、ステップS1203で、開始要素でないと判定した場合には、前方開始要素検索手段34により、種別コードを用いて合流要素であるか否かを判定し(ステップS1205)、合流要素でなければ、ステップS1202の処理に戻る。
そして、ステップS1205で前方開始要素検索手段34により合流要素であると判定した場合には、論理和型(OR)であり、かつ、その合流要素への複数の入力の全てが開始要素により直接に与えられている場合(合流要素の左側入力端子が開始要素に直接に接続されている場合)には(ステップS1206)、開始要素列挙手段35により、合流要素への入力を与える複数の開始要素のうち、1つの開始要素のみについての要素IDを、ON/OFFの条件とともに因子リスト記憶手段45に記憶された因子リストに追加し、残りの全ての開始要素についての要素IDは、固定条件としてのOFFの条件とともに固定条件リスト記憶手段46に記憶された固定条件リストに追加する(ステップS1207)。
また、論理積型(AND)であり、かつ、その合流要素への複数の入力の全てが開始要素により直接に与えられている場合(合流要素の左側入力端子が開始要素に直接に接続されている場合)には(ステップS1208)、開始要素列挙手段35により、合流要素への入力を与える複数の開始要素のうち、1つの開始要素のみについての要素IDを、ON/OFFの条件とともに因子リスト記憶手段45に記憶させた因子リストに追加し、残りの全ての開始要素についての要素IDは、固定条件としてのONの条件とともに固定条件リスト記憶手段46に記憶された固定条件リストに追加する(ステップS1209)。
そして、ステップS1205で前方開始要素検索手段34により合流要素であると判定した後において、その合流要素が上記のいずれにも該当しない場合、すなわち、その合流要素が論理和型(OR)、論理積型(AND)のいずれでもない場合、あるいは、その合流要素への複数の入力の全てが開始要素により直接に与えられている状態(その合流要素の左側入力端子の全てが開始要素に直接に接続されている状態)ではない場合には、その合流要素の全ての入力端子について、入力端子を1個ずつ抽出し(ステップS1210)、前方開始要素検索手段34による前方開始要素検索処理(ステップS12:S1201〜S1213)を再帰的に呼び出し(ステップS1211)、合流要素の全ての入力端子(ステップS1212)について実行した後に、一連の前方開始要素検索処理を終了する(ステップS1213)。
なお、図13でのフローの図示は省略されているが、切替要素リスト記憶手段44に記憶された切替要素リストに、多段に接続された切替要素の組が含まれている場合(図8に示すように、切替要素が多段になっている場合)には、前方開始要素検索手段34により、依存性のある複数の開始要素(組を構成する各切替要素の上側端子の前方にある開始要素)を抽出し、開始要素列挙手段35により、これらの依存性のある複数の開始要素を統合した新しい因子(擬似的な開始要素)を作成し、作成した新しい因子を、その因子のとる条件とともに、因子リスト記憶手段45に記憶された因子リストに追加する。
図12において、切替要素リストの全ての切替要素(ステップS13)について、前方開始要素検索処理を終了した後、開始要素列挙手段35により、前方開始要素検索手段34による検索処理を実行して因子リスト記憶手段45に重複して記憶された同一の開始要素の要素IDについて、重複を排除する。
続いて、条件組合せ手段36により、因子リスト記憶手段45から、開始要素およびその開始要素のとる条件(ON/OFFの条件等)を取得し、開始要素の数により因子数を決定し、各開始要素のとり得る条件の数(選択肢の数)のうちの最大数により水準数を決定し、決定した因子数および水準数から、直交表種別決定用テーブル(因子数および水準数と、適用する直交表の種別との対応関係を予め定めたテーブル)を用いて、適用する直交表の種別を決定する(ステップS14)。
それから、条件組合せ手段36により、組合せテストの技法を用いて(ここでは、決定した種別の直交表を用いて)、因子リスト記憶手段45に記憶された因子リストに含まれている開始要素のとる条件の組合せを、図式プログラムのテストデータとして生成し、生成したテストデータを、テストデータ記憶手段47に記憶させる(ステップS14)。
続いて、条件組合せ手段36により、組合せテストの技法を用いて生成された開始要素のとる条件の組合せに、固定条件リスト記憶手段46に記憶された固定条件リストに含まれている開始要素の固定条件を追加することにより、図式プログラムのテストデータを完成させ、完成させたテストデータを、テストデータ記憶手段47に記憶させ(ステップS15)、一連のテストデータ生成処理を終了する(ステップS16)。
その後、例えば、テストデータ記憶手段47に記憶されたテストデータ、生成プログラム記憶手段43に記憶されたテスト対象のソースプログラム(本実施形態では、一例として、C言語プログラムとする。)、および生成したテストデータからなる各テストケースについてのテストを順次実行するためのループ処理を含むテスト実行用プログラムを用いて、コンパイル処理を行って実行形式のプログラムを生成し、テストを実行する。
このような本実施形態によれば、次のような効果がある。すなわち、図式プログラムのテストデータ生成装置10は、条件組合せ手段36を備えているので、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成することができる。このため、テストデータの組合せの数を低減しつつ、十分な網羅率を達成することができる。
例えば、組合せテストの技法のうち、直交表や、オールペア法(ペアワイズ手法ともいう。)を用いることで、任意の2つの因子(ここでは、切替用制御情報を生成している切替要素の前方の開始要素)の間の全水準(ON/OFFのような取りうる選択肢)の組合せを網羅することができるようにテストの条件を決定することができ、網羅率を向上させることができる。なお、直交表は、各因子間の組合せが同数回出現する点と、3つ以上の因子間の網羅率でも高くすることができるという点で優れている。また、オールペア法は、各因子間の組合せ数がアンバランスになることがあるが、組合せの数を減らすことができるという点で優れている。
また、条件組合せ手段36により、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成するので、テストデータを自動生成することができ、従来のように人手を介してテストデータを作成する必要性を無くすことができる。従って、プログラムのテストを行う者の手間を軽減することができるうえ、場合によっては人間の勘に頼ってテストデータを作成することもあったため、この場合に比べると、網羅率の高いテストを行うことができ、テストの信頼性を向上させ、プログラムの安全性を高めることができる。
さらに、図式プログラムのテストデータ生成装置10は、切替要素検索手段33、前方開始要素検索手段34、および開始要素列挙手段35を備えているので、図式プログラムを構成する図形要素の情報を利用して切替要素を検索し、そしてその前方の開始要素を検索し、列挙することができる。すなわち、図式プログラムでは切替要素が条件分岐の要因となっているので、この切替要素に着目し、直交表を用いる技法やオールペア法といった組合せテストの技法を利用する際のデータ収集・準備を行うことができる。このため、図式プログラムのテストデータ生成装置10は、前述した特許文献5のように単にプログラムのテストに直交表を利用する場合とは異なり、図式プログラムを構成する図形要素の情報の利用と、組合せテストの技法の利用とを結び付けた独特な処理を実現することができる。
そして、開始要素列挙手段35は、因子リスト記憶手段45に記憶された開始要素の要素IDの重複を排除することができるので、1つの開始要素から分岐して複数の切替要素に至ることにより1つの開始要素のとる条件が複数の切替要素の切替用制御情報となっているケース(図6参照)で、因子リストにおける因子の重複を排除することができる。
また、開始要素列挙手段35は、合流要素の性質に応じて開始要素のとる条件を因子リスト記憶手段45または固定条件リスト記憶手段46に振り分けて記憶させることができるので、切替要素の前方に合流要素があるときに(図7参照)、開始要素のとる条件の組合せの数を減らすことができる。
さらに、切替要素検索手段33は、切替要素が多段になっているときに(図8参照)、切替要素の組を作成することができるので、開始要素の依存性を利用して因子数を減らし、テストケースを減らすことができる。
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
例えば、前記実施形態では、切替要素は2つの入力を切り替えるものとして説明を行ったが、本発明は、3つ以上の入力の切替えを行う場合にも、同様に適用することができる。この場合は、切替要素の上側端子からの入力は、ON/OFFではなく、0、1、2のように、3値以上を取るデータ型となる。
また、入力値を、ある値で制限するリミッタのように、入力値により処理が切り替わる図形要素についても、本発明を適用することができる。リミッタの場合には、リミッタの入力値が、切替要素の上側端子の切替用制御情報、および切替要素の一方の左側入力端子に置き換わるとともに、リミッタの制限値が、切替要素の他方の左側入力端子に置き換わる。
例えば、図14に示す下限リミッタ90の場合には、下限値(制限値)として0が設定されているので、その入出力特性は、図16に示すように、入力値が0以上のときには、出力値は入力値に等しく、入力値が0よりも小さいときには、出力値は0となる。そこで、これを仮想的に、図15に示すような切替要素と考えると、切替要素の左側の入力値として、下限リミッタ90の元々の入力値と下限値(制限値)である0の2つを選択することができる。従って、下限リミッタ90の元々の入力値が0以上のときには、切替要素の左上側の入力値が選択され、下限リミッタ90の元々の入力値が0よりも小さいときには、切替要素の左下側の入力値が選択されるので、本発明では、リミッタは、切替要素として同様に扱うことができる。このため、切替要素検索手段33は、リミッタを示す種別コードを検索し、リミッタを検出したら、上記のような置換処理を行えばよい。
以上のように、本発明の図式プログラムのテストデータ生成装置およびその方法、並びにプログラムは、例えば、図形を用いてプログラムを記述し、これを自動的にC言語等のテキスト形式のプログラム言語に変換するシステムにおいて、プログラムのテスト用の入力データを自動的に生成する場合に用いるのに適している。
10 図式プログラムのテストデータ生成装置
33 切替要素検索手段
34 前方開始要素検索手段
35 開始要素列挙手段
36 条件組合せ手段
42 図式プログラム記憶手段
44 切替要素リスト記憶手段
45 因子リスト記憶手段
46 固定条件リスト記憶手段

Claims (6)

  1. 図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置であって、
    前記図式プログラムを記憶する図式プログラム記憶手段と、
    この図式プログラム記憶手段に記憶された前記図式プログラムを構成する図形要素の中から、切替用制御情報に従って複数の入力を切り替えて取得して出力を生成する切替要素を検索し、検索して得られた前記切替要素を識別する要素IDを切替要素リスト記憶手段に記憶させる処理を実行する切替要素検索手段と、
    前記切替要素リスト記憶手段に前記要素IDが記憶されている前記切替要素の全てについて、前記切替要素の上流側に接続されて前記切替用制御情報を生成している図形要素を開始要素に到達するまで前方に検索する処理を実行する前方開始要素検索手段と、
    この前方開始要素検索手段により検索して得られた前記開始要素を識別する要素IDを、前記開始要素のとるON/OFFの条件またはその他の条件とともに、因子リスト記憶手段に記憶させる処理を実行する開始要素列挙手段と、
    前記因子リスト記憶手段に前記要素IDが記憶されている前記開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、前記図式プログラムのテストデータとして生成する処理を実行する条件組合せ手段と
    を備えたことを特徴とする図式プログラムのテストデータ生成装置。
  2. 前記開始要素列挙手段は、
    1つの開始要素から分岐して複数の前記切替要素に至ることにより前記1つの開始要素のとる条件が複数の前記切替要素の切替用制御情報となっている場合に、前記前方開始要素検索手段による検索処理を実行して前記因子リスト記憶手段に重複して記憶された前記1つの開始要素の要素IDについて、重複を排除する処理を実行する構成とされている
    ことを特徴とする請求項1に記載の図式プログラムのテストデータ生成装置。
  3. 前記開始要素列挙手段は、
    前記前方開始要素検索手段による検索処理を実行して前記切替要素の前方に合流要素が検出されたときに、
    前記合流要素が論理和の性質を持ち、かつ、前記合流要素への複数の入力の全てが開始要素により直接に与えられている場合には、前記合流要素への入力を与える複数の開始要素のうち、1つの開始要素のみについての要素IDを、ON/OFFの条件とともに前記因子リスト記憶手段に記憶させ、残りの全ての開始要素についての要素IDは、固定条件としてのOFFの条件とともに固定条件リスト記憶手段に記憶させ、
    前記合流要素が論理積の性質を持ち、かつ、前記合流要素への複数の入力の全てが開始要素により直接に与えられている場合には、前記合流要素への入力を与える複数の開始要素のうち、1つの開始要素のみについての要素IDを、ON/OFFの条件とともに前記因子リスト記憶手段に記憶させ、残りの全ての開始要素についての要素IDは、固定条件としてのONの条件とともに前記固定条件リスト記憶手段に記憶させる処理を実行する構成とされ、
    前記条件組合せ手段は、
    前記組合せテストの技法を用いて生成された前記開始要素のとる条件の組合せに、前記固定条件リスト記憶手段に前記要素IDが記憶されている前記開始要素の前記固定条件を追加することにより、前記図式プログラムのテストデータを生成する処理を実行する構成とされている
    ことを特徴とする請求項1または2に記載の図式プログラムのテストデータ生成装置。
  4. 前記切替要素検索手段は、
    前記切替要素リスト記憶手段に前記要素IDが記憶されている前記切替要素の全てについて、前記切替要素へ入力を与える複数の入力端子のそれぞれの前方を検索し、前方に別の前記切替要素が検出された場合には、この検出された前記切替要素と検索の開始位置の前記切替要素とにより前記切替要素の組を作成し、作成した組を構成する多段に接続された前記切替要素の各要素IDを、組にした状態で前記切替要素リスト記憶手段に記憶させる処理を実行する構成とされている
    ことを特徴とする請求項1〜3のいずれかに記載の図式プログラムのテストデータ生成装置。
  5. 図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置で実行される図式プログラムのテストデータ生成方法であって、
    前記図式プログラムを図式プログラム記憶手段に記憶させ、
    切替要素検索手段が、前記図式プログラム記憶手段に記憶された前記図式プログラムを構成する図形要素の中から、切替用制御情報に従って複数の入力を切り替えて取得して出力を生成する切替要素を検索し、検索して得られた前記切替要素を識別する要素IDを切替要素リスト記憶手段に記憶させる処理を実行し、
    前方開始要素検索手段が、前記切替要素リスト記憶手段に前記要素IDが記憶されている前記切替要素の全てについて、前記切替要素の上流側に接続されて前記切替用制御情報を生成している図形要素を開始要素に到達するまで前方に検索する処理を実行し、
    開始要素列挙手段が、前記前方開始要素検索手段により検索して得られた前記開始要素を識別する要素IDを、前記開始要素のとるON/OFFの条件またはその他の条件とともに、因子リスト記憶手段に記憶させる処理を実行し、
    条件組合せ手段が、前記因子リスト記憶手段に前記要素IDが記憶されている前記開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、前記図式プログラムのテストデータとして生成する処理を実行する
    ことを特徴とする図式プログラムのテストデータ生成方法。
  6. 請求項1〜4のいずれかに記載の図式プログラムのテストデータ装置として、コンピュータを機能させるためのプログラム。
JP2012179094A 2012-08-10 2012-08-10 図式プログラムのテストデータ生成装置およびその方法、並びにプログラム Expired - Fee Related JP5910410B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012179094A JP5910410B2 (ja) 2012-08-10 2012-08-10 図式プログラムのテストデータ生成装置およびその方法、並びにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012179094A JP5910410B2 (ja) 2012-08-10 2012-08-10 図式プログラムのテストデータ生成装置およびその方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2014038397A true JP2014038397A (ja) 2014-02-27
JP5910410B2 JP5910410B2 (ja) 2016-04-27

Family

ID=50286509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012179094A Expired - Fee Related JP5910410B2 (ja) 2012-08-10 2012-08-10 図式プログラムのテストデータ生成装置およびその方法、並びにプログラム

Country Status (1)

Country Link
JP (1) JP5910410B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800176A (zh) * 2019-02-26 2019-05-24 盛科网络(苏州)有限公司 芯片代码覆盖率交付方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006024006A (ja) * 2004-07-08 2006-01-26 Denso Corp テストケース生成装置、テストケース生成プログラム、モデルベース開発プログラム、ソースコード生成妥当性診断装置、ソースコード生成妥当性診断プログラム、およびモデルベース開発方法。
JP2009169828A (ja) * 2008-01-18 2009-07-30 Denso Corp テストケース生成装置及びテストケース生成プログラム
JP2009294846A (ja) * 2008-06-04 2009-12-17 Denso Corp テストケース生成装置、テストケース生成プログラム、およびテストケース生成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006024006A (ja) * 2004-07-08 2006-01-26 Denso Corp テストケース生成装置、テストケース生成プログラム、モデルベース開発プログラム、ソースコード生成妥当性診断装置、ソースコード生成妥当性診断プログラム、およびモデルベース開発方法。
JP2009169828A (ja) * 2008-01-18 2009-07-30 Denso Corp テストケース生成装置及びテストケース生成プログラム
JP2009294846A (ja) * 2008-06-04 2009-12-17 Denso Corp テストケース生成装置、テストケース生成プログラム、およびテストケース生成方法

Also Published As

Publication number Publication date
JP5910410B2 (ja) 2016-04-27

Similar Documents

Publication Publication Date Title
US8627290B2 (en) Test case pattern matching
JP6542612B2 (ja) テストシナリオ生成支援装置およびテストシナリオ生成支援方法
JP2012059026A (ja) ソースコード変換方法およびソースコード変換プログラム
JP6486574B2 (ja) プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム
JP2015162090A (ja) 故障診断方法及び故障診断装置
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
JP5834991B2 (ja) 図式プログラムのテスト網羅性測定装置およびその方法、並びにプログラム
JP5910410B2 (ja) 図式プログラムのテストデータ生成装置およびその方法、並びにプログラム
JP6416588B2 (ja) ソースコード検証システム
JP2001273169A (ja) プログラムテスト仕様書生成装置
JP2014164385A (ja) 要件検出装置及び要件検出プログラム
JP2013077124A (ja) ソフトウェアテストケース生成装置
JP5799823B2 (ja) テストデータ生成装置、テストデータ生成プログラムおよびテストデータ生成方法
JP5163172B2 (ja) ソフトウェアテスト項目編集支援装置およびソフトウェアテスト項目編集支援方法
JP2009169573A (ja) 解析結果出力装置、及び解析結果出力方法
JP2006277282A (ja) モデル評価解析システムおよびモデル評価解析プログラム
JP5595304B2 (ja) プログラム試験装置、プログラム試験装置のプログラム試験方法およびプログラム試験プログラム
JP2018124901A (ja) プログラム分析装置、プログラム分析方法及びプログラム分析プログラム
KR101964454B1 (ko) 데이터에 내재된 문제점 제거를 통한 데이터 정제 장치 및 방법
US9665454B2 (en) Extracting test model from textual test suite
JP2016071774A (ja) 検証支援装置、検証支援方法およびコンピュータプログラム
JP2016122317A (ja) 共通化情報提供プログラム、共通化情報提供方法、および共通化情報提供装置
JP6511793B2 (ja) テストケース生成プログラム、テストケース生成方法及びテストケース生成装置
JP5736588B2 (ja) ソースコード変換方法及びソースコード変換プログラム
KR20130058348A (ko) 자산 기반의 요구사항 시뮬레이터 및 요구사항 관리 방법

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140619

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140620

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140623

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150514

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20151005

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20151005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160122

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: 20160301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160314

R150 Certificate of patent or registration of utility model

Ref document number: 5910410

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees