JP2009032133A - テストケース生成システム - Google Patents

テストケース生成システム Download PDF

Info

Publication number
JP2009032133A
JP2009032133A JP2007196880A JP2007196880A JP2009032133A JP 2009032133 A JP2009032133 A JP 2009032133A JP 2007196880 A JP2007196880 A JP 2007196880A JP 2007196880 A JP2007196880 A JP 2007196880A JP 2009032133 A JP2009032133 A JP 2009032133A
Authority
JP
Japan
Prior art keywords
value
input
test
output
module
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.)
Pending
Application number
JP2007196880A
Other languages
English (en)
Inventor
Satoshi Muramoto
聡 村本
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 JP2007196880A priority Critical patent/JP2009032133A/ja
Publication of JP2009032133A publication Critical patent/JP2009032133A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】ソフトウェアプログラムのモジュールに対する単体テスト用のテストケース生成は、入力値に対して、その型が取りえる最小値、最大値、0やソースコードを解析して利用している数値を抽出しこれらの値をランダムに組み合わせてテストケースを生成する方式がある。これは、モジュール内部の処理とは関係なく値をランダムに組み合わせるため、数値の異なる複数のテストケースを作成できるが、テスト条件が重複するものを無駄に作ってしまい、効率良くテストすることが出来ない。
【解決手段】モジュールの出力値が決定する部分を基点として、その出力値に関係する代入文や条件分岐文に利用の数値や変数を抽出し、入力値の取り得る範囲を求めることにより、効率の良い生成処理で、無駄のないテストケースとしての「入力値」と「期待値(出力値)」を生成し、効率の良いテスト実施を可能とする。
【選択図】図1

Description

本発明は、ソフトウェアプログラムのモジュールに対する単体テストを実施するときに、そのモジュールの構造を解析し、モジュールを検証するテストケースの生成に関するものである。
ソフトウェアプログラムのモジュールに対する単体テストは、仕様書に基づいて、入力値と出力値つまり期待値を組み合せたテストケースを複数用意し、また、テスト対象のモジュールを呼び出すテスト用ドライバとテスト対象のモジュールから呼び出されるモジュールの動作を模擬するテスト用スタブを用いて、それぞれのテストケースに対して期待通りに動作したかを確認する(非特許文献1参照)。
このテストケースの組み合わせは、入力の型の取り得る範囲を入力の個数分乗じたすべての組み合わせを実行するのが理想であるが、これは天文学的個数となり現実的ではなく、また、近年のソフトウェアプログラムは、数千、数万のモジュールの集合体であり、全モジュールに対して、全組み合わせのテストケースの期待値を確認するには膨大な時間が必要となる。
ソフトウェアのテスト技術 ―品質保証へのアプローチ 著者:Michael S.Deutsch 訳者:島崎恭一 出版社:企画センター
ソフトウェアプログラムモジュールへの入力値に対して、その型が取りえる最小値、最大値、0やソースコードを解析して利用している数値を抽出しこれらの値をランダムに組み合わせてテストケースを生成する方式がある。
これは、モジュール内部の処理とは関係なく値をランダムに組み合わせるため、数値の異なる複数のテストケースを作成できるが、テスト条件が重複するものを無駄に作ってしまい、効率良くテストすることが出来ない。
モジュールの出力値は、そのモジュールへの入力値を加工したものである。
このため、出力値が決定する部分を基点として、その出力値に関係する代入文や条件分岐文に利用の数値や変数を抽出し、入力値の取り得る範囲を求めることにより、効率の良い生成処理で、無駄のないテストケースとしての「入力値」と「期待値(出力値)」を生成し、効率の良いテスト実施を可能とする。
モジュールに対する効率のよいテストケースの生成により、プログラム開発者は、モジュールに対する仕様の確認に専念でき、より品質の高い製品開発を短期間で実現できる。
モジュールの出力値に関する入力値を求めることで、効率の良いテストケースを生成することを実現した。
図1は、本発明の実施形態の例を表すブロック図である。
本実施形態では、テスト対象ソースコード101を入力とし、出力と入力の関係抽出102により、入出力関係図103を作成する。
入出力関係解析104は、入出力関係図103から、入出力関係情報105および入出力関係テーブル107を作成する。
テストケース生成106は、入出力関係テーブル107から、テストケース108を作成する。
図2は、本発明を適用する一例を表すテスト対象プログラムモジュールのソースコード101のPADである。
図3は、図2のPADの出力(=戻り値)と入力(=引数)の関係を表す入出力関係図103の例であり、図2のPADから3つの関係図301、302、302を作成したものである。
図4は、入出力関係図103から抽出した入出力関係テーブル107の例であり、関係図301、302、302をそれぞれ、テーブルT1、T2、T3として作成したものである。
また、テストケース108の内容は入出力関係テーブル107の各テーブルをまとめてテストケースとして作成したものである。
図5は、入出力関係図103から抽出した入出力関係情報105の例であり、テーブルT1、T2、T3の各値の範囲をまとめてテーブルT4として作成したものである。
図6は、テスト対象プログラムモジュールをテストする場合に一般的に利用するテスト用ドライバとテスト用スタブとテストケースの関係を示したブロック図であり、図2のPADは、図6のテスト用スタブ603を利用しない例であるが、テスト用スタブ603を利用した場合については後述する。
本発明は、まず、出力と入力の関係抽出102の処理で、テスト対象プログラムモジュールのソースコード101から、出力つまり戻り値208を基点として、プログラムモジュールの入力値(=引数)との関係を以下の例で抽出する。
テスト対象プログラムモジュールのソースコード101の戻り値rc208は、代入文205、206および207で値が代入される。
代入文205から戻り値rc208は引数aと引数bに関連することが判り、また、代入文205は、条件判定文204の真判定304および条件判定文203の真判定305により処理されているため、入出力関係図103の一部として関係図301のように表される。
代入文206も同様に、戻り値rc208は引数aと引数bに関連することが判り、また、代入文206は、条件判定文204の偽判定306および条件判定文203の真判定307により処理されているため、入出力関係図103の一部として関係図302のように表される。
代入文207も同様に、戻り値rc208は引数aに関連することが判り、また、代入文207は、条件判定文203の偽判定308により処理されているため、入出力関係図103の一部として関係図303のように表される。
入出力関係解析104の処理は、入出力関係図103の関係図301の条件判定文203の真判定305、条件判定文204の真判定304と代入文205から、引数a、bに利用する値と戻り値rc208の期待値を抽出し、入出力関係テーブル107の一部としてテーブルT1の関係を作成する。
関係図302も同様に条件判定文203の真判定307、条件判定文204の偽判定306(=境界値を越えた値)と代入文206から、引数a、bに利用する値と戻り値rc208の期待値を抽出し、入出力関係テーブル107の一部としてテーブルT2の関係を作成する。
なお、引数bについて、値の取り得る範囲は50以下または100以上となり、最小値側および最大値側の関係を導き出すことができないため、最小値MINおよび最大値MAXを利用する。
これは、int型を32bit符号有り整数とする処理系では、最小値MIN=−2147483648、最大値MAX=2147483647となる。
また、これら最小値または最大値を利用した場合は、入出力関係テーブル107の補助情報403に適用したことを記録しておき、後でテスト実施者がテスト対象プログラムモジュールの仕様に従った最小値または最大値の変更を可能とする。
このとき、テーブルT2の戻り値rc208の取り得る値401や402は、MAXに対する加算であり、オーバーフローを引き起こす。
このMAXに対する加算のオーバーフローやMINに対する減算のアンダーフローのような不良は、入出力関係テーブル107の補助情報403に記録され、テスト実施者に警告として通知することにより、テスト対象プログラムが、仕様通りに作られているか?仕様に誤りがないか?の確認契機となり、より高い品質確保が可能となる。
関係図303も同様に条件判定文203の偽判定308、代入文207から、引数aに利用する値と戻り値rc208の期待値を抽出し、入出力関係テーブル107の一部としてテーブルT3の関係を作成する。
なお、引数aについても引数bと同様に最小値MINおよび最大値MAXを利用し、補助情報404を記録する。
また、関係図303のときの戻り値rc208は、引数aについてのみ関連があり、引数bとは関係がないため、引数bは任意の値(ランダム値)を利用し、また引数bとは関係がないことを補助情報404に記録する。
この任意の値(ランダム値)は、入出力関係テーブル107作成時に値を決定しても良く、また、任意の値(ランダム値)を利用することをテストケース108に記録しておき、テストケース108を利用する段階で値を決定しても良く、本発明ではこれを限定しない。
入出力関係解析104の処理は、入出力関係テーブル107の各テーブルT1、T2、T3の範囲を集計した入出力関係情報105としてテーブルT4を出力する。
ソフトウェアプログラム開発者は、この入出力関係情報105を元にテスト対象プログラムモジュールが仕様通りに作成できているか?の確認を行うことで、テスト開始前に不良の早期摘出が可能となる。
テストケース生成106の処理は、入出力関係テーブル107の各テーブルT1、T2、T3を元に、入力値a、b、出力値(期待値)rcをテストケース108として出力する。
この、テストケース108をテスト用ドライバ601に利用することで、テスト対象プログラムモジュールのテストを無駄なく効率よく行うことが可能となる。
この実施例は簡単なソフトウェアモジュールに対しての例であるが、本発明は、ロジックが複雑になっても適用することは可能である。
例として、テスト対象モジュールが子モジュールを呼び出す場合を以下に記述する。
テスト対象モジュール602が呼び出す子モジュールは単体テスト時に、子モジュールを模擬するテスト用スタブ603を用意し、テストを実施する。
テスト対象モジュール602の引数(入力)はテスト用ドライバ601の出力であり、
テスト対象モジュール602の戻り値(出力)はテスト用ドライバ601の入力である。
同様にテスト用スタブ603への引数(入力)は、テスト対象モジュール602の出力であり、また、テスト用スタブ603の戻り値(出力)はテスト対象モジュール602の入力である。
テスト用スタブ603の引数(入力)や戻り値(出力)は、テスト対象モジュール602から見れば、上記の図2のPADの引数(入力)a、b201、戻り値(出力)rc208と同じ扱いであり、これらと同様に、テストケース108や入出力関係情報105を作成することが可能である。
このテストケース108をテスト用ドライバ601およびテスト用スタブ603で利用することで、テスト対象モジュール602を駆動し効率よくテストすることが可能となる。
また、入出力関係情報105を参照することで、子モジュールの引数(入力)と戻り値(出力)を認識することができ、テスト用スタブ603の作成に利用することが可能となる。
この場合、テスト対象モジュールから子モジュールが仕様通りに利用されるか?の確認による品質向上や、集計された値を利用することによるテスト用スタブの作成時間の短縮が可能となる。
ソフトウェアプログラムは、数千、数万のモジュールの集合体であり、各モジュールの品質を高めるための検証テストを効率よく行うことを可能とする。
本発明の一実施形態を表すブロック図である。 本発明を適用する一例を表すテスト対象プログラムモジュールのソースコードのPADである。 入出力関係図の例である。 入出力関係テーブルの例である。 入出力関係情報の例である。 一般的なテスト対象プログラムモジュールとテスト用ドライバとテスト用スタブとテストケースの関係を示したブロック図である。
符号の説明
101…テスト対象ソースコード、102…出力と入力の関係抽出処理、103…入出力関係図、104…入出力関係解析処理、105…入出力関係情報、106…テストケース生成処理、107…入出力関係テーブル、108…テストケース。

Claims (4)

  1. ソフトウェアプログラムのモジュールの自動的な単体テストを可能とするために、ソースコードの出力部分を基準に代入文および条件判定文に利用の変数や値から、そのモジュールをテストするためのテストケース入力値並びに出力値を求めることを特徴とするシステム。
  2. 請求項1の入力値に対して、入力値の取りえる値の正常範囲や異常範囲や最小値や最大値を入力とするテストケースを生成することを特徴とするシステム。
  3. 請求項2の入力値の範囲に最小値または最大値を入力値とする場合に対して、最小値または最大値を利用したことを記録しておき、後で人手による変更を可能とすることを特徴とするシステム。
  4. 請求項2の入力値の範囲に最小値または最大値を入力値とする場合に対して、出力値がアンダーフローまたはオーバーフローするときに警告を報告することを特徴とするシステム。
JP2007196880A 2007-07-30 2007-07-30 テストケース生成システム Pending JP2009032133A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007196880A JP2009032133A (ja) 2007-07-30 2007-07-30 テストケース生成システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007196880A JP2009032133A (ja) 2007-07-30 2007-07-30 テストケース生成システム

Publications (1)

Publication Number Publication Date
JP2009032133A true JP2009032133A (ja) 2009-02-12

Family

ID=40402550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007196880A Pending JP2009032133A (ja) 2007-07-30 2007-07-30 テストケース生成システム

Country Status (1)

Country Link
JP (1) JP2009032133A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070322A (ja) * 2007-09-18 2009-04-02 Nec Corp データ処理装置、システム、プログラム、及び、方法
JP2010191508A (ja) * 2009-02-16 2010-09-02 Fujitsu Ltd プログラムモデル検査におけるデータ生成プログラム、データ生成方法およびデータ生成装置
JP2011237874A (ja) * 2010-05-06 2011-11-24 Nippon Steel Corp プロセス制御用計算機のテスト支援装置、方法及びプログラム
WO2013161195A1 (ja) * 2012-04-26 2013-10-31 日本電気株式会社 プログラム単体テスト支援装置
US8875105B2 (en) 2010-11-09 2014-10-28 International Business Machines Corporation Efficiently developing software using test cases to check the conformity of the software to the requirements

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070322A (ja) * 2007-09-18 2009-04-02 Nec Corp データ処理装置、システム、プログラム、及び、方法
JP4501978B2 (ja) * 2007-09-18 2010-07-14 日本電気株式会社 データ処理装置、システム、プログラム、及び、方法
JP2010191508A (ja) * 2009-02-16 2010-09-02 Fujitsu Ltd プログラムモデル検査におけるデータ生成プログラム、データ生成方法およびデータ生成装置
JP2011237874A (ja) * 2010-05-06 2011-11-24 Nippon Steel Corp プロセス制御用計算機のテスト支援装置、方法及びプログラム
US8875105B2 (en) 2010-11-09 2014-10-28 International Business Machines Corporation Efficiently developing software using test cases to check the conformity of the software to the requirements
US8875104B2 (en) 2010-11-09 2014-10-28 International Business Machines Corporation Efficiently developing software using test cases to check the conformity of the software to the requirements
WO2013161195A1 (ja) * 2012-04-26 2013-10-31 日本電気株式会社 プログラム単体テスト支援装置

Similar Documents

Publication Publication Date Title
US20170228309A1 (en) System and method for equivalence class analysis-based automated requirements-based test case generation
JP2006024006A (ja) テストケース生成装置、テストケース生成プログラム、モデルベース開発プログラム、ソースコード生成妥当性診断装置、ソースコード生成妥当性診断プログラム、およびモデルベース開発方法。
JP2017033562A (ja) 安全重視ソフトウェア開発のためのモデルベース技術および過程のためのシステムおよび方法
JP2007012003A (ja) フィーチャ指向ソフトウェア製品ラインの開発環境を提供するシステム
US8868976B2 (en) System-level testcase generation
JP2009032133A (ja) テストケース生成システム
JP2017138978A (ja) カバレッジに基づく設計モデル用自動テストケース拡張のためのシステムおよび方法
RU2013147142A (ru) Система и способ верификации и аттестации программного обеспечения резервирования в системах plc (программируемого логического управления)
US8918747B2 (en) Formal verification of a logic design
CN104536885A (zh) 一种生成Soc随机验证平台的方法
US20200034280A1 (en) Equivalence verification device and computer readable medium
US8065641B2 (en) Automatically creating manufacturing test rules pertaining to an electronic component
ATE418108T1 (de) Verfahren zur bewertung der güte eines testprogramms
WO2018150505A1 (ja) 規模算出装置及び規模算出プログラム
JP2009205239A (ja) ソフトウェア検証システム
US20140149970A1 (en) Optimising a compilation parser for parsing computer program code in arbitrary applications
JP5755861B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
JP2017167899A (ja) シミュレーションシステム、シミュレーション方法、シミュレーションプログラム
KR101601741B1 (ko) 서로 다른 언어로 작성된 프로그램들의 동일성을 검증하는 검증장치
JP7059827B2 (ja) ソースコード生成装置
JP6547345B2 (ja) テストケース生成プログラム、テストケース生成方法およびテストケース生成装置
JP2013206310A (ja) モデル検査装置、モデル検査方法、およびプログラム
JP6658297B2 (ja) テストケース生成方法、テストケース生成プログラムおよびテストケース生成装置
Overton et al. Towards a problem oriented engineering theory of pattern-oriented analysis and design
JP2015200984A (ja) ソフトウェア試験支援システム