JP2014186407A - テストケース生成方法、テストケース生成装置およびプログラム - Google Patents

テストケース生成方法、テストケース生成装置およびプログラム Download PDF

Info

Publication number
JP2014186407A
JP2014186407A JP2013059281A JP2013059281A JP2014186407A JP 2014186407 A JP2014186407 A JP 2014186407A JP 2013059281 A JP2013059281 A JP 2013059281A JP 2013059281 A JP2013059281 A JP 2013059281A JP 2014186407 A JP2014186407 A JP 2014186407A
Authority
JP
Japan
Prior art keywords
test case
value
software
result
output
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
JP2013059281A
Other languages
English (en)
Other versions
JP5894954B2 (ja
Inventor
Kunihiko Miyazaki
邦彦 宮崎
Naoto Sato
直人 佐藤
Shinji Ito
信治 伊藤
Sadahiro Ishikawa
貞裕 石川
Kiyoshi Yamaguchi
潔 山口
Hiroki Mori
浩起 森
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 JP2013059281A priority Critical patent/JP5894954B2/ja
Priority to US14/171,163 priority patent/US20140289706A1/en
Priority to CN201410050393.7A priority patent/CN104063312B/zh
Publication of JP2014186407A publication Critical patent/JP2014186407A/ja
Application granted granted Critical
Publication of JP5894954B2 publication Critical patent/JP5894954B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ソフトウェア仕様から、当該ソフト仕様上出力しうる値を網羅したテストケースを生成する。
【解決手段】ソフトウェア仕様を受け付け、このソフトウェア仕様から、当該ソフトウェアに対するテスト入力値と、前記テスト入力値を入力として前記ソフトウェアを実行したときに出力値として得られることが期待される期待出力値と、を含むテストケースを生成し、前記ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれているかどうかを確認し、前記確認の結果、ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれていないと判断された場合に、前記ソウフトウェア仕様上出力しうる値と、それに対応するテスト入力値とから構成されるテストケースを生成し、前記生成したテストケースに追加する。
【選択図】 図1

Description

本発明は、ソフトウェア開発を支援する技術に関し、特に、仕様からテストケースを作成する技術に関する。
ソフトウェアの仕様を、ソフトウェア実行前の条件とその実行後の結果の対応関係で定義する場合がある。このような仕様を、ソフトウェアを外部から見たときの機能として定義されていることから、外部仕様、あるいは、機能仕様と呼ぶことがある。外部仕様の表現方法として、この条件と結果の対応関係を決定表(デシジョンテーブル)と呼ばれる表形式で表現できることが知られており、ソフトウェア開発工程において頻繁に使用される。
また、開発されたソフトウェアが外部仕様で規定された通りの振る舞いをするかどうかを確認する手法として、ソフトウェアテスト手法が知られている。ソフトウェアテストは、テストケースを単位として実施されることがある。ここでテストケースとは、当該ソフトウェアに対する入力値(入力データ)となるテスト入力値(テスト入力データ)と、当該テスト入力値を入力としてソフトウェアを実行したときに出力値として得られることが期待される期待出力値(期待出力データ)、とからなるデータである。実際にテスト入力値を与えてソフトウェアを実行したときに、期待出力値どおりの出力値が得られた場合、当該テストケースについてはテストを合格した、という。
仕様との対応をより厳密に確認するという観点からは、できるだけ多くのテストケースに対してテストを実施することが好ましい。たとえば、仕様上許される取りうる全ての入力に対するテストケースを実行し合格した場合、当該ソフトウェアは、仕様で規定されたとおりの振る舞いをしていることが、すべての値に対して確認できたことになる。
しかし、たとえば、入力が複数の因子の組み合わせとして表される場合、入力として取りうる値の範囲の大きさは、各因子がとりうる値(これを水準値と呼ぶ)の数の積となるため、非常に大きくなる。このような場合、すべてのテストケースに対してテストを実行することは、現実的な時間内に終了しないため、困難となる。
このような場合において、現実的に実施可能な個数のテストケースを抽出する方法として、非特許文献1では、Pairwise法(all−pair法とも呼ばれる)という方法が知られている。これは、入力が複数の因子の組み合わせとして表される場合に、不具合の多くがn個(nは比較的少ない数)の因子の組み合わせに起因していることに着目したn因子網羅という考え方により、テストケースを大幅削減する方法である。
A.Blass and Y.Gurevich,"Pairwise Testing",Bulletin of the European Association for Theoretical Computer Science Number 78,October 2002,100−132.
上記非特許文献1に開示された先行技術によれば、テスト対象となるソフトウェアにおいて仕様上取りうる全ての入力の範囲が非常に大きい場合であっても、現実的に実施可能な個数のテストケースを抽出可能となる。しかし、この抽出は、入力の因子に基づくものであり、出力については特段の考慮がなされていない。すなわち、テストケースを構成するテスト入力値については、その分布に一定の考慮がされているが、対応する期待出力値に対しては、なんら考慮されていない。
そのため、上記先行技術に基づいて抽出されたテストケースに含まれる期待出力値の分布は、テスト対象となるソフトウェアが仕様上出力しうる値の範囲の中で偏っている可能性が否定できない。たとえば、抽出されたテストケースに含まれる期待出力値が、すべて同じ値であった場合、テスト対象となるソフトウェアに、当該期待出力値とは異なる値を出力する処理に関わる不具合が含まれていたとしても、その不具合を検出できないことになる。この場合、ソフトウェア仕様からのテストケース生成において、仕様上出力しうる結果値の範囲の中のごく一部しかカバーしないようなテストケースを生成してしまう。
本発明は、ソフトウェア仕様から、当該ソフト仕様上出力しうる値を網羅したテストケースを生成するテストケース生成方法、これを実施するテストケース生成装置およびプログラムを提供することを課題とする。
上記課題を解決するための本発明の代表的な一例は、以下の通りである。すなわち、本発明は、ソフトウェア仕様からテストケースを生成するテストケース生成装置におけるテストケース生成方法である。前記テストケース生成装置は、前記ソフトウェア仕様を受け付け、記憶部に記憶する処理と、前記ソフトウェア仕様から、当該ソフトウェアに対するテスト入力値と、前記テスト入力値を入力として前記ソフトウェアを実行したときに出力値として得られることが期待される期待出力値と、を含むテストケースを生成し、前記記憶部に記憶する処理と、ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれているかどうかを確認する処理と、前記確認の結果、前記ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれていないと判断された場合に、当該ソウフトウェア仕様上出力しうる値と、それに対応するテスト入力値とから構成されるテストケースを生成し、前記記憶部に記憶されている前記テストケースに追加する処理とを実施する。
本発明によれば、ソフトウェア仕様から、当該ソフト仕様上出力しうる値を網羅したテストケースを生成することができる。
第1の実施形態に係る、テストケース生成装置101のハードウェアおよびソフトウェア構成の一例を示す図である。 第1の実施形態に係る、ソフトウェア仕様131の一例を示す図である。 第1の実施形態に係る、ソフトウェア仕様からテストケースを生成する処理の概要を示すフロー図である。 第1の実施形態に係る、Pairwise法によって選ばれた2因子網羅する値の組の一例を示す図である。 第1の実施形態に係る、期待出力確認処理(図3_ステップ304)およびテストケース追加処理(図3_ステップ305)の詳細を示すフロー図である。 第1の実施形態に係る、図3および図5に示す処理にしたがって生成されるテストケースの一例を示す図である。 第2の実施形態に係る、期待出力確認処理およびテストケース追加処理の詳細を示すフロー図である。
以降に、本発明の実施形態を、図面等を参照しつつ詳細に説明する。
(第1の実施形態)
図1は、第1の実施形態に係る、テストケース生成装置101のハードウェアおよびソフトウェア構成の一例を示す図である。
テストケース生成装置101は、CPU等の中央制御装置(制御部)102と、RAM等の中央制御装置102のワークエリアとして機能する主記憶装置(記憶部)103と、ハードディスク装置等の外部記憶装置(記憶部)104と、CD−ROMやFD等の可搬性を有する記憶媒体105からデータを読取る読み取り装置106と、キーボードやマウス等の入力装置107と、ディスプレイ等の表示装置108と、ネットワークを介して他の装置と通信を行うための通信装置109と、前記各装置間のデータ送受を司る外部インターフェイス110を備えた、一般的な電子計算機で構築することができる。なお、テストケース生成装置101の操作を、もっぱらネットワークを介して行う場合には、表示装置108や、入力装置107が接続されていなくてもよい。
テストケース生成装置101の外部記憶装置104には、仕様受付プログラム121、テストケース生成プログラム122、期待出力確認プログラム123、テストケース追加プログラム124、テストケース出力プログラム125が格納されている。これらのプログラムは、主記憶装置103上にロードされ、中央制御装置102により、仕様受付処理部141、テストケース生成処理部142、期待出力確認処理部143、テストケース追加処理部144、テストケース出力処理部145という機能として具現化される。各処理部を実現するプログラムは、予め外部記憶装置104に格納されていてもよいし、記憶媒体105に格納されており読み取り装置106を介して必要に応じて読み出されてもよいし、あるいは、電子計算機が利用可能な通信媒体であるネットワークまたはネットワーク上を伝搬する搬送波を利用する通信装置109と接続された他の装置から必要に応じてダウンロードされて外部記憶装置104に格納されるものであってもよい。
また、外部記憶装置104には、ソフトウェア仕様131、テストケース132が格納される。テストケースは、テスト入力値133と期待出力値134を含んで構成される。
図2は、第2の実施形態に係る、ソフトウェア仕様131の一例を示す図である。ここでは、ソフトウェア仕様131として、特開2012−190203号公報に開示された決定表(デシジョンテーブル)形式で記載された仕様を例に説明する。
ソフトウェア仕様131(決定表)は、ソフトウェア実行前の条件とその実行後の結果の対応関係を表形式で定義したもので、条件定義部201と結果定義部202を含む。条件定義部201は、ひとつまたは複数の条件因子211を含み、各条件因子はさらに二つ以上の条件値212を含む。同様に、結果定義部202は、ひとつまたは複数の結果因子221を含み、各結果因子はさらに二つ以上の結果値222を含む。
表の各列には、各条件/結果因子ごとに1箇所ずつ印付けされている。各列は、印付けられた位置によって、各条件因子がどのような条件値(入力値)をとる場合に、各結果因子がどのような結果値(出力値)となるか、という入出力関係を示している。たとえば図2の一番左の列は、「保険加入有無」が「加入済み」で、「保険納入額」が「0円」で、「収入」が「0円以上500万円未満」であれば、「補助金」は「交付あり」で、「納税義務」は「義務あり」である、ことをあらわす。
図3は、第1の実施形態に係る、ソフトウェア仕様からテストケースを生成する処理の概要を示すフロー図である。
ステップ301:はじめ。
ステップ302:仕様受付処理部141は、入力装置107を介して、あるいは記憶媒体105から読み取り装置106を介して、あるいは通信装置109を介して、ソフトウェア仕様131である決定表を受け付け、外部記憶装置104に記憶する。
ステップ303:テストケース生成処理部142は、Pairwise法に従い、外部記憶装置104に記憶されているソフトウェア仕様(決定表)131の中から、条件因子について2因子網羅を満たすような列の集合を抽出してテストケース(各列の条件定義部201がテスト入力値に相当し、結果定義部202が期待出力値に相当する)を生成し、生成したテストケースを外部記憶装置104に記憶する。ステップ303の処理により、ソフトウェア仕様131から、ソフトウェア仕様131を満たすテスト入力値と期待出力値とを含む、すくなくともひとつのテストケースが生成される。
ここでステップ303におけるPairwise法とは、複数因子のそれぞれがいくつかの値のうちのいずれかひとつをとる場合に、すべての2因子の組み合わせに対して網羅するような(これを2因子網羅と呼ぶ)値の組を選ぶ方法である。具体的な方法は、たとえば非特許文献1に開示されている。
たとえば図2に示したソフトウェア仕様(決定表)131の場合、条件因子は「保険加入有無」「保険納入額」「収入」の3因子が存在する。このなかの2因子の組として、たとえば「保険加入有無」と「保険納入額」を取り上げると、この2因子がとりうる値の組は、「加入済み、0円」「加入済み、0円以上から2万円未満」「加入済み、2万円以上」「未加入、0円」「未加入、0円以上から2万円未満」「未加入、2万円以上」の6通りがある。同様に、「保険納入額」と「収入」の2因子がとりうる値の組は6通り、「保険加入有無」と「収入」の2因子がとりうる値の組は4通りある。Pairwise法では、これらすべてを含むような全因子の値の組が選ばれる。
図4は、Pairwise法によって選ばれた2因子網羅する値の組の一例を示している。図4中の破線で囲んだ6つの列(401〜406)を選べば、実際に2因子網羅していることが確認できる。この場合、2つ以下の条件因子に起因するソフトウェアの不具合は、すべて検出できることになる。
以上に述べたステップ303における公知のPairwise法においては、テストケースの生成にあたって、条件因子だけを参照しており、結果因子については参照していないことに注意を要する。すなわちテストケースに含まれるテスト入力値については、2因子網羅などのなんらかの網羅性を保証するものが選ばれているのに対し、期待出力値については網羅性を保証し得ない。そこで、次のステップ304に示すように、期待出力確認プログラム123が、期待出力値を網羅しているか確認し、不足しているテストケースがあれば、ステップ305に示すように、テストケース追加プログラム124がテストケースを追加する処理を行うことにより、条件因子に関して2因子網羅を実現し、かつ、ソフトウェア仕様上出力しうる値をすべて網羅するテストケースを生成できる。
ステップ304:期待出力確認処理部143は、ステップ303で生成されたテストケースに含まれる期待出力値を確認し、ソフトウェア仕様(決定表)131の結果定義部202に現れる結果値の全ての組み合わせを網羅しているか確認する。網羅していなければステップ305へ進み、網羅していればステップ306へ進む。
ステップ305:テストケース追加処理部144は、ソフトウェア仕様(決定表)の結果定義部202に現れる結果値の全ての組み合わせのうち、ステップ303で生成されたテストケースに含まれなかった組み合わせを含む列(テストケース)を、外部記憶装置104に記憶されているテストケースに追加する。
ステップ306:テストケース出力処理部145は、得られたテストケースを表示装置108や図示していないプリンタ等の出力装置に出力する。
ステップ307:おわり。
図5は、期待出力確認処理(図3_ステップ304)およびテストケース追加処理(図3_ステップ305)の詳細を示すフロー図である。
ステップ501:はじめ。
ステップ502:期待出力確認処理部143は、結果値候補として、ソフトウェア仕様(決定表)131の結果値222の組(結果因子221の各因子に対して結果値222をひとつずつ選択したもの)のうち、まだ確認していないものをひとつ選ぶ。すべての結果値の組(結果値候補)に対して確認が終わっていれば、ステップ505へ進む。すなわち、結果出力確認プログラム123は、結果値222としてありうる組み合わせ(結果値候補)をすべて順に確認する。図2に示すソフトウェア仕様131の例では、1.「交付あり」「義務あり」、2.「交付あり」「義務なし」、3.「交付なし」「義務あり」、4.「交付なし」「義務なし」の4つの結果値候補を順に確認する。
ステップ503:期待出力確認処理部143は、ステップ303で生成されたテストケースの中に、期待出力値が、502で選択された結果値候補と一致するものがあるかどうかを確認する。あればステップ502に戻る。
ステップ504:テストケース追加処理部144は、ステップ302で受け付けたソフトウエア仕様(決定表)131の各列のなかに、結果定義部202が、502で選択された結果値候補と一致するものがあるかどうか、すなわち、ステップ502で選択された結果値候補がソフトウェア仕様131によって定義された処理結果として生じうるか、を確認する。テストケース追加処理部144は、ステップ302で受け付けたソフトウエア仕様(決定表)131の各列のなかに、結果定義部202が、ステップ502で選択された結果値候補と一致するものがある、すなわち、ステップ502で選択された結果値候補がソフトウェア仕様131によって定義された処理結果として生じうるものであることを確認した場合、当該列の情報を新たなテストケースとして、ステップ303で生成されたテストケースに追加し、ステップ502に戻る。なければ、そのままステップ502に戻る。
このように、ステップ502−ステップ504に示す処理では、結果値候補を順次変更しながら、当該結果値候補が、(1)すでに出力されたテストケースに含まれている、(2)テストケースには含まれておらずそもそもソフトウェア仕様上出力し得ない値である、(3)テストケースには含まれていないが、ソフトウェア仕様上は出力しうる値である、のいずれかであるかを判定し、(3)の場合には、追加すべきテストケースとして追加する、ことにより、得られたテストケースが期待出力値を網羅していることを保証する。
図6は、図3および図5に示す処理にしたがって生成されたテストケースの一例を示す図である。破線で囲んだ6つの列(601〜606)が、図3のステップ303に示す処理によって生成されたテストケースであり、実線で囲んだ1つの列(607)が、図3のステップ304−ステップ305に示す処理、より詳細には図5のステップ502−ステップ504に示す処理、にしたがって追加されたテストケースである。これら合計7つのテストケースによって、条件因子に関して2因子網羅を実現し、かつ、仕様上出力しうる値をすべて網羅するテストケースとなっている。
ステップ505:ステップ306と同様、得られたテストケースを表示装置108や図示していないプリンタ等の出力装置に出力する。
ステップ506:おわり。
以上説明したように、第1の実施形態によれば、期待出力値の網羅性を保証したテストケースを、ソフトウェア仕様(決定表)131から生成することが可能となる。
(第2の実施形態)
第1の実施形態で示した方法によれば、ソフトウェア仕様(決定表)131として与えられたソフトウェア仕様から、期待出力値の網羅性を保証したテストケースを生成することが可能となる。
ソフトウェア仕様(決定表)131は、条件因子や条件値の数が増えるにしたがってサイズが大きくなるため、処理をするために記憶容量の大きな主記憶装置103が必要となることがある。一方、特開2012−190203号公報では、命題形式の仕様(以下、命題仕様と呼ぶ)を与えて、決定表を作成する方法が開示されている。命題仕様とは、『「保険加入有無」が「加入済み」である かつ 「保険納入額」が「2万円以上」である場合、「補助金」は「交付あり」である かつ 「納税義務」は「義務あり」である』というような「(条件部)の場合(結果部)である」という形をしたルールを示すものである。特開2012−190203号公報に開示された方法によれば、このようなルールの集合により、決定表を生成することができる。すなわち、ソフトウェア仕様を表形式に展開したデータとしてではなく、ルールの集合を表現するデータとして保持することが可能となる。ひとつのルールで、ソフトウェア仕様上の複数列を定義できることがあるので、表形式に展開して保持する場合と比較し、より小さなサイズの主記憶装置103や外部記憶装置104で、決定表を管理可能となる。
第2の実施形態は、基本的に第1の実施形態と同様であるが、ソフトウェア仕様を、表形式に展開したデータとしてではなく、命題仕様として保持する。このような命題仕様として管理された決定表をソフトウェア仕様とした際に、期待出力値の網羅性を保証したテストケースを生成することが可能となる。この際、一旦表形式のデータとして展開することなく、期待出力値の網羅性を保証できるため、処理に必要な主記憶装置103の記憶容量を小さくできる点で好ましい。
命題仕様では、ルールを命題変数による命題論理式として記述する。各ルールの条件部は、以下のようにして命題論理式として記述できる。まず条件因子Aの取りうる値ごとにA1、A2、・・・Anと命題変数を割り当てる。「条件因子AがA1である」という記述に対してA1∧¬A2∧…∧¬An(“∧”は論理積、“¬”は否定)という命題論理式を対応させる。「条件因子AがA1であり、かつ、条件因子BがB2である」のように複数の条件が「かつ」で接続されている場合には、それぞれに対応する命題論理式を「∧」で結合した命題論理式を対応させればよい。結果部についても同様にして命題論式を対応させることができる。命題仕様は、条件部と結果部それぞれに対応する命題論理式の組として表現できる。
命題仕様の集合によって定義される決定表は、以下のようにして作成できる。決定表の各列に対して、条件定義部の印付けられた箇所に応じて、以下のような真理値割り当てを考える。条件因子Xについてk番目の値に印がついている場合、Xk=True、Xi=False(i≠k)と真理値を割り当てる。このとき、当該列の結果値は、次のように定義される。(1)上記真理値割り当てによって、条件部が充足される命題仕様をすべて集める。(2)集まった命題仕様の結果部に対応する命題論理式を「∧」で結合した命題論理式をつくる。さらに各結果因子に対して結果値に対応する命題変数がちょうどひとつだけTrueで、それ以外の結果値に対応する命題変数がFalseになるときに充足される節を「∧」で結合する。(3)(2)で作られた命題論理式を充足する真理値割り当てを探す。これはSATソルバを利用することで探索可能である。そのような真理値割り当てがちょうどひとつ見つかった場合、その真理値割り当てに相当する結果値の組み合わせが、当該列の結果値となる。なお、真理値割り当てが存在しないときは、命題仕様間に何らかの矛盾があることを意味する。また真理値割り当てが2以上存在する場合は、結果が一意に決まらない、すなわち仕様に曖昧さがあることを意味する。
第2の実施形態における、各処理フローは、基本的に第1の実施形態と同様であるが、図5に示した期待出力確認処理およびテストケース追加処理の一部が変更される。
図7は、第2の実施形態に係る、期待出力確認処理およびテストケース追加処理の詳細を示すフロー図である。
ステップ701:はじめ。
ステップ702:ステップ502と同様。期待出力確認処理部143は、結果値候補として、ソフトウェア仕様131(命題仕様)の結果値の組(結果因子の各因子に対して結果値をひとつずつ選択したもの)のうち、まだ確認していないものをひとつ選ぶ。すべての結果値の組に対して確認が終わっていれば、ステップ705へ進む。
ステップ703:ステップ503と同様。期待出力確認処理部143は、ステップ303で生成されたテストケースの中に、期待出力値が、ステップ702で選択された結果値候補と一致するものがあるかどうかを確認する。あればステップ702に戻る。
ステップ704:ステップ702で選択された結果値候補が、ステップ302で受け付けたソフトウェア仕様(命題仕様)によって出力されうるかどうかを、以下のようにして確認する。テストケース追加処理部144は、当該結果値候補に相当する真理値割り当てによって充足される命題仕様をすべて集める。以下、この集合を充足命題仕様集合と呼ぶ。充足命題仕様集合が空集合なら、当該結果値候補は出力されえないので、ステップ702に戻る。
ステップ705:テストケース追加処理部144は、充足命題仕様集合の部分集合であって、以下を満たすものを見つける。(1)当該部分集合に含まれるすべての命題仕様の結果部の命題論理式を「∧」で結合した命題論理式を生成したとき、この命題論理式を充足させる真理値割り当てが、上記の当該結果値候補に相当する真理値割り当て以外に存在しない。(2)当該部分集合に含まれるすべての命題仕様の条件部の命題論理式を「∧」で結合した命題論理式が充足可能である。このような部分集合が存在すれば、テストケース追加処理部144は、このとき(2)を充足させる真理値割り当てに相当する条件値をテスト入力値、ステップ702で選択された結果値候補を期待出力値とするテストケースを新たなテストケースとして、ステップ303で生成されたテストケースに追加し、ステップ702にも戻る。存在しなければ、そのままステップ702に戻る。
ステップ706:ステップ306と同様。テストケース出力処理部145は、得られたテストケースを表示装置108や図示していないプリンタ等の出力装置に出力する。
ステップ707:おわり。
図7に示した処理フローにおいても、図5に示した処理フロー同様、結果値候補を順次変更しながら、当該結果値候補が、(1)すでに出力されたテストケースに含まれている、(2)テストケースには含まれておらずそもそも仕様上出力し得ない値である、(3)テストケースには含まれていないが、仕様上は出力しうる値である、のいずれかであるかを判定し、(3)の場合には、追加すべきテストケースとして追加する、ことにより、得られたテストケースが期待出力値を網羅していることが保証する。
以上説明した第2の実施形態によれば、命題仕様として与えられたソフトウェア仕様から、表形式に展開することなく、期待出力値の網羅性を保証したテストケースを生成することが可能となる。
(他の実施形態)
第1の実施形態において、ソフトウェア仕様(決定表)131は、図2に示した記法とは異なる記法を用いて表現されることもある。第1の実施形態は、特定の表記方法に限定されるものではなく、他の表記方法で示されたソフトウェア仕様に対しても適用可能である。また、これらの表記方法に従った情報を外部記憶装置104に格納する際には、適当なエンコード方法にしたがってコード化したデータを格納すればよい。エンコード方法としては、たとえばXML形式や、CSV(カンマ区切り)方式などを用いればよい。
また、第1の実施形態では、図3のステップ303で、ソフトウェア仕様(決定表)131の中から、条件因子について2因子網羅を満たすような列の集合を抽出してテストケースを生成する場合を例に挙げて説明したが、より一般にはすべてのn因子の組み合わせに対して網羅するように(これをn因子網羅とよぶ。ただしnは2以上で全因子数以下)抽出してテストケースを生成してもよい。この場合、n個以下の条件因子に起因するソフトウェアの不具合がすべて検出できることになるので、nが大きくなるほどテストケースの品質という観点では優れる。一方、nが小さいほど、テストケース数は減るためテスト実行時間の観点からは優れる。また、2因子網羅を達成しつつ、3因子以上についても高い網羅率を実現する方法として、直交表法という方法も知られている。第1の実施形態は、2因子網羅するPairwise法に限らず、n因子網羅するPairwise法や直交表法など、他のテストケース抽出方法により生成されたテストケースに対しても適用可能である。
また、期待出力確認処理およびテストケース追加処理は、たとえば、はじめにソフトウェア仕様上出力しうる値の一覧を作成した後に、結果候補値を当該一覧の範囲内で順次変更しながら処理を行うなど、図5に示す処理フローとは異なる処理フローにより実現してもよい。この場合、上記(2)テストケースには含まれておらずそもそもソフトウェア仕様上出力し得ない値であるか、の判定を行う必要がなく、すでに出力されたテストケースに含まれているか否かだけを判定すればよいので、判定処理を軽減できる。
また、第1の実施形態では、ソフトウェア仕様上出力しうる値をすべて網羅するテストケースを生成する場合を例に挙げて説明したが、網羅条件を変更しても、同様に第1の実施形態を適用可能である。たとえば、結果因子に対してPairwise法を適用し、2因子網羅するような結果値候補を選択した上で、上記処理フローを適用するようにしてもよい。この場合、仕様上出力しうる値をすべて網羅するとは限らないが、得られたテストケースに含まれる期待出力値が極端に偏ることを避けつつ、仕様上出力しうる値をすべて網羅する場合と比較して少ない数のテストケースを得られるため、テスト実行時間の観点からは好ましい。
101・・・テストケース生成装置、102・・・中央制御装置(制御部)、103・・・主記憶装置(記憶部)、104・・・外部記憶装置(記憶部)、105・・・記憶媒体、106・・・読み取り装置、107・・・入力装置、108・・・表示装置、109・・・通信装置。

Claims (9)

  1. ソフトウェア仕様からテストケースを生成するテストケース生成装置におけるテストケース生成方法であって、
    前記ソフトウェア仕様を受け付け、記憶部に記憶する処理と、
    前記ソフトウェア仕様から、当該ソフトウェアに対するテスト入力値と、前記テスト入力値を入力として前記ソフトウェアを実行したときに出力値として得られることが期待される期待出力値と、を含むテストケースを生成し、前記記憶部に記憶する処理と、
    前記ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれているかどうかを確認する処理と、
    前記確認の結果、ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれていないと判断した場合に、前記ソウフトウェア仕様上出力しうる値と、それに対応するテスト入力値とから構成されるテストケースを生成し、前記記憶部に記憶されている前記テストケースに追加する処理とを実施する、
    ことを特徴とするテストケース生成方法。
  2. 前記ソフトウェア仕様は、ソフトウェア実行前の条件とその実行後の結果との対応関係を表形式で定義した決定表である、
    ことを特徴とする請求項1に記載のテストケース生成方法。
  3. 前記テストケース生成装置により、前記ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれているかどうかを確認する処理は、前記決定表の結果因子の組み合わせとして定義される結果値候補それぞれに対し、すでに生成されたテストケースに前記結果値候補が含まれているか、と、前記結果値候補が前記決定表によって定義された処理結果として生じうるか、とを確認する処理である、
    ことを特徴とする請求項2に記載のテストケース生成方法。
  4. 前記テストケース生成装置により、
    前記確認の結果、前記決定表の結果因子の組み合わせとして定義される結果値候補それぞれに対し、前記すでに生成されたテストケースに前記結果値候補が含まれておらず、かつ前記結果値候補が前記決定表によって定義された処理結果として生じうるものであった場合に、前記結果値候補を与える入力値をひとつ算出し、新たなテストケースとして、前記記憶部に記憶されている前記テストケースに追加する処理を実施する、
    ことを特徴とする請求項3に記載のテストケース生成方法。
  5. ソフトウェア仕様からテストケースを生成する装置であって、
    前記ソフトウェア仕様を受け付け、記憶部に記憶する仕様受付手段と、
    前記ソフトウェア仕様から、当該ソフトウェアに対するテスト入力値と、前記テスト入力値を入力として前記ソフトウェアを実行したときに出力値として得られることが期待される期待出力値と、を含むテストケースを生成し、前記記憶部に記憶するテストケース生成手段と、
    前記ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれているかどうかを確認する期待出力確認手段と、
    前記期待出力確認手段により、ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれていないと判断された場合に、前記ソウフトウェア仕様上出力しうる値と、それに対応するテスト入力値とから構成されるテストケースを生成し、前記記憶部に記憶されている前記テストケースに追加するテストケース追加手段と、を備える、
    ことを特徴とするテストケース生成装置。
  6. 前記ソフトウェア仕様は、ソフトウェア実行前の条件とその実行後の結果との対応関係を表形式で定義した決定表である、
    ことを特徴とする請求項5に記載のテストケース生成装置。
  7. 前記期待出力確認手段は、
    前記決定表の結果因子の組み合わせとして定義される結果値候補それぞれに対し、すでに生成されたテストケースに当該結果値候補が含まれているかどうかを確認する第1の確認手段と、前記結果値候補が前記決定表によって定義された処理結果として生じうるかどうかを確認する第2の確認手段を備える、
    ことを特徴とする請求項6に記載のテストケース生成装置。
  8. 前記テストケース追加手段は、
    前記第1の確認手段と前記第2の確認手段の結果、前記決定表の結果因子の組み合わせとして定義される結果値候補それぞれに対し、前記すでに生成されたテストケースに当該結果値候補が含まれておらず、かつ前記結果値候補が前記決定表によって定義された処理結果として生じうるものであった場合に、前記結果値候補を与える入力値をひとつ算出し、新たなテストケースとして、前記記憶部に記憶されている前記テストケースに追加する、
    ことを特徴とする請求項7に記載のテストケース生成装置。
  9. コンピュータを制御するためのプログラムであって、
    前記コンピュータを、
    ソフトウェア仕様を受け付け、記憶部に記憶する仕様受付手段、
    前記ソフトウェア仕様から、当該ソフトウェアに対するテスト入力値と、該テスト入力値を入力として前記ソフトウェアを実行したときに出力値として得られることが期待される期待出力値と、を含むテストケースを生成し、前記記憶部に記憶するテストケース生成手段、
    前記ソフトウェア仕様上出力しうる値が、前記期待出力値に含まれているかどうかを確認する期待出力確認手段、
    前記期待出力確認手段によって、前記ソフトウェア仕様上出力しうる値が、期待出力値に含まれていないと判断された場合に、当該ソウフトウェア仕様上出力しうる値と、それに対応するテスト入力値とから構成されるテストケースを生成し、前記記憶部に記憶されている前記テストケースに追加するテストケース追加手段、
    として機能させるためのプログラム。
JP2013059281A 2013-03-22 2013-03-22 テストケース生成方法、テストケース生成装置およびプログラム Active JP5894954B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013059281A JP5894954B2 (ja) 2013-03-22 2013-03-22 テストケース生成方法、テストケース生成装置およびプログラム
US14/171,163 US20140289706A1 (en) 2013-03-22 2014-02-03 Test case generation method, test case generation device, and storage medium
CN201410050393.7A CN104063312B (zh) 2013-03-22 2014-02-13 测试用例生成方法及测试用例生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013059281A JP5894954B2 (ja) 2013-03-22 2013-03-22 テストケース生成方法、テストケース生成装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2014186407A true JP2014186407A (ja) 2014-10-02
JP5894954B2 JP5894954B2 (ja) 2016-03-30

Family

ID=51551034

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013059281A Active JP5894954B2 (ja) 2013-03-22 2013-03-22 テストケース生成方法、テストケース生成装置およびプログラム

Country Status (3)

Country Link
US (1) US20140289706A1 (ja)
JP (1) JP5894954B2 (ja)
CN (1) CN104063312B (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016177490A (ja) * 2015-03-19 2016-10-06 株式会社エヌ・ティ・ティ・データ 質問表回答テストデータ生成システム、質問表回答テストデータ生成方法及びプログラム
JP2018092374A (ja) * 2016-12-02 2018-06-14 株式会社日立製作所 テストケース生成装置、及びテストケース生成方法
CN109669436A (zh) * 2018-12-06 2019-04-23 广州小鹏汽车科技有限公司 一种基于电动汽车的功能需求的测试用例生成方法和装置
JP2020095679A (ja) * 2018-12-07 2020-06-18 株式会社エフォートサイエンス 情報処理装置、プログラム、及びシステム
JP2020119005A (ja) * 2019-01-18 2020-08-06 ソフトバンク株式会社 テストケースの作成支援装置及びプログラム
WO2022249420A1 (ja) * 2021-05-27 2022-12-01 日本電信電話株式会社 テスト生成装置、テスト生成方法、及びプログラム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446874B (zh) * 2014-09-25 2019-03-15 北京畅游天下网络技术有限公司 一种资源配置文件的检测方法和装置
CN105808227B (zh) * 2014-12-31 2019-11-29 北京畅游天下网络技术有限公司 一种美术资源文件检测方法和装置
JP6289778B2 (ja) * 2016-02-24 2018-03-07 三菱電機株式会社 テストケース生成装置及びテストケース生成プログラム
US10204034B2 (en) 2017-04-06 2019-02-12 At&T Intellectual Property I, L.P. System and method for testing software applications in a software defined network
JP6937659B2 (ja) * 2017-10-19 2021-09-22 株式会社日立製作所 ソフトウェアテスト装置および方法
CN109062804A (zh) * 2018-08-17 2018-12-21 誉光评估工程咨询(青岛)有限公司 基于bim的软件测试用例的建立方法
CN109857646A (zh) * 2019-01-08 2019-06-07 广州云测信息技术有限公司 一种自动化测试方法和装置
CN109900494B (zh) * 2019-02-25 2021-04-13 上海机动车检测认证技术研究中心有限公司 一种测试用例的生成方法
CN111597118A (zh) * 2020-05-26 2020-08-28 上海复深蓝软件股份有限公司 测试用例生成方法、装置、计算机设备及存储介质
CN111679991B (zh) * 2020-06-23 2021-04-13 武汉光庭信息技术股份有限公司 一种利用大数据生成测试用例的方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10214205A (ja) * 1997-01-30 1998-08-11 Matsushita Electric Works Ltd モジュール検査装置
JP2011039786A (ja) * 2009-08-11 2011-02-24 Toshiba Corp ソフトウェアテスト支援装置、ソフトウェアテスト支援方法、及びプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815654A (en) * 1996-05-20 1998-09-29 Chrysler Corporation Method for determining software reliability
US6044219A (en) * 1997-04-01 2000-03-28 Platinum Technology, Inc. Date logic generator
EP1283422A1 (en) * 2001-08-07 2003-02-12 Lucent Technologies Inc. Testbench for the validation of a device under test
US7032212B2 (en) * 2002-05-06 2006-04-18 Microsoft Corporation Method and system for generating test matrices for software programs
US7533294B2 (en) * 2004-09-09 2009-05-12 The Regents Of The University Of California Functional coverage driven test generation for validation of pipelined processors
US7925929B2 (en) * 2008-10-01 2011-04-12 Wipro Limited System and method for generating an orthogonal array for software testing
US8161459B2 (en) * 2009-01-15 2012-04-17 Infosys Technologies Limited Method and system for generating functional test cases
CN102566988B (zh) * 2010-12-14 2015-04-22 苏州工业园区谱芯科技有限公司 基于用户使用流程有向图的测试用例自动生成方法及测试方法
CN102567190B (zh) * 2010-12-14 2014-12-10 苏州工业园区谱芯科技有限公司 基于用户使用流程加权有向图的测试用例自动生成方法及测试方法
CN102650966B (zh) * 2011-02-24 2016-01-27 王轶辰 一种面向复用的嵌入式软件测试方法及其测试系统
US8910123B2 (en) * 2012-03-06 2014-12-09 Sap Ag Automated validation of generated test cases following changes to the underlying test model

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10214205A (ja) * 1997-01-30 1998-08-11 Matsushita Electric Works Ltd モジュール検査装置
JP2011039786A (ja) * 2009-08-11 2011-02-24 Toshiba Corp ソフトウェアテスト支援装置、ソフトウェアテスト支援方法、及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6016003205; 松尾谷徹: '難しいテストを簡単に CFD法の極意 前編' ソフトウェア・テストPRESS 第8巻, 20090225, pp.98-106, (株)技術評論社 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016177490A (ja) * 2015-03-19 2016-10-06 株式会社エヌ・ティ・ティ・データ 質問表回答テストデータ生成システム、質問表回答テストデータ生成方法及びプログラム
JP2018092374A (ja) * 2016-12-02 2018-06-14 株式会社日立製作所 テストケース生成装置、及びテストケース生成方法
CN109669436A (zh) * 2018-12-06 2019-04-23 广州小鹏汽车科技有限公司 一种基于电动汽车的功能需求的测试用例生成方法和装置
CN109669436B (zh) * 2018-12-06 2021-04-13 广州小鹏汽车科技有限公司 一种基于电动汽车的功能需求的测试用例生成方法和装置
JP2020095679A (ja) * 2018-12-07 2020-06-18 株式会社エフォートサイエンス 情報処理装置、プログラム、及びシステム
JP2020119005A (ja) * 2019-01-18 2020-08-06 ソフトバンク株式会社 テストケースの作成支援装置及びプログラム
WO2022249420A1 (ja) * 2021-05-27 2022-12-01 日本電信電話株式会社 テスト生成装置、テスト生成方法、及びプログラム

Also Published As

Publication number Publication date
CN104063312B (zh) 2017-03-15
US20140289706A1 (en) 2014-09-25
JP5894954B2 (ja) 2016-03-30
CN104063312A (zh) 2014-09-24

Similar Documents

Publication Publication Date Title
JP5894954B2 (ja) テストケース生成方法、テストケース生成装置およびプログラム
US20170235661A1 (en) Integration of Software Systems via Incremental Verification
CN101251798A (zh) 一种基于关系的测试用例生成方法
US20100275186A1 (en) Segmentation for static analysis
JP6268029B2 (ja) テストケース生成装置及びテストケース生成方法
US11204860B2 (en) Methods and apparatuses for generating smart contract test case
JP2016115175A (ja) ソフトウェアテスト装置およびソフトウェアテストプログラム
CN104657274A (zh) 软件界面测试方法及装置
CN109871290A (zh) 应用于Java的调用堆栈追踪方法、装置和存储介质
KR20140121832A (ko) 중복 소비자 트랜잭션 규칙들의 필터링 기법
US10387124B2 (en) System and method for creating domain specific language
CN105446952A (zh) 用于处理语义片段的方法和系统
JP2016009344A (ja) テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置
US20160239407A1 (en) Small scale integration test generation
CN113360300A (zh) 接口调用链路生成方法、装置、设备及可读存储介质
CN102707938A (zh) 表形式软件规格制作支援方法及装置
US11106874B2 (en) Automated chatbot linguistic expression generation
US20120291019A1 (en) Program verification apparatus based on model verifying and storage medium
CN112256572B (zh) 随机测试用例生成方法与装置以及电子设备和存储介质
Srivastava et al. Cause effect graph to decision table generation
JP2012155517A (ja) モデル検査装置、モデル検査方法およびモデル検査プログラム
Vasilache Specification-based test case generation using dependency diagrams
Yumoto et al. Analysing test basis and deriving test cases based on data design documents
US8549464B2 (en) Reusing expression graphs in computer programming languages
CN114399390A (zh) 一种金融产品的测试方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150605

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160229

R151 Written notification of patent or utility model registration

Ref document number: 5894954

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151