JP2009205239A - ソフトウェア検証システム - Google Patents

ソフトウェア検証システム Download PDF

Info

Publication number
JP2009205239A
JP2009205239A JP2008044261A JP2008044261A JP2009205239A JP 2009205239 A JP2009205239 A JP 2009205239A JP 2008044261 A JP2008044261 A JP 2008044261A JP 2008044261 A JP2008044261 A JP 2008044261A JP 2009205239 A JP2009205239 A JP 2009205239A
Authority
JP
Japan
Prior art keywords
test
test case
change
input
coverage
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
JP2008044261A
Other languages
English (en)
Inventor
Katsumi Osono
克己 大薗
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 JP2008044261A priority Critical patent/JP2009205239A/ja
Publication of JP2009205239A publication Critical patent/JP2009205239A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】
モジュールの変更点を解析し、自動的にテストケースおよび期待値を変更したテストを実施することにより、品質の高い製品開発を短期間で実現する。
【解決手段】
テスト対象ソースコードを解析して、入出力インタフェースの変更を反映することができ、入力値(テストケース)と出力値(期待値)を含む入力関係情報又は変更後入出力関係情報を作成する。その作成された該入力関係情報又は変更後入出力関係情報を用いて、テストケース又は変更後テストケースを作成する。そしてそのテストケース又は変更後テストケース、及び期待値又は変更後期待値を用いてテストを実行する。
【選択図】図1

Description

本発明はソフトウェア検証システムに係り、特に組込みソフトウェアプログラムのモジュール変更に対応して自動的にテストケースおよび期待値を変更した単体テストを実施するソフトウェア検証システムに関する。
ソフトウェアプログラムのモジュールに対する単体テストは、仕様書に基づいて、入力値と出力値つまり期待値を組み合わせたテストケースを複数用意し、また、テスト対象のモジュールを呼び出すテスト用ドライバとテスト対象のモジュールから呼び出されるモジュールの動作を模擬するテスト用スタブを用いて、それぞれのテストケースに対して期待通りに動作したかを確認する(非特許文献1参照)。
しかしながら、近年のソフトウェアプログラムは、数千、数万のモジュールの集合体であり、モジュール変更時に手作業ですべてのテストケースを再実行するには膨大な時間を要する。
ソフトウェアのテスト技術 ―品質保証へのアプローチ 著者:Michael S. Deutsch 訳者:島崎恭一 出版社:企画センター
ソフトウェアプログラムのモジュール変更が発生すると、テスト用スタブ、ドライバ、テストケースおよび期待値の変更が必要となる。特にモジュールの入出力インタフェースが変更された場合は、ドライバ、テストケースおよび期待値の修正が生じるため、テスト効率が悪化する要因となる。
本発明の目的は、モジュールの変更を解析し、自動的にテストケースおよび期待値を変更してテストを実施することにより、品質の高い製品開発を短期間で実現することにある。
本発明によるソフトウェア検証システムは、好ましくは、コンピュータを用いて、ソフトウェアプログラムのモジュールの変更に伴う検証を行うソフトウェア検証システムにおいて、
テスト対象ソースコードを解析して、入出力インタフェースの変更を反映することができ、入力値(テストケース)と出力値(期待値)を含む入力関係情報又は変更後入出力関係情報を作成するインタフェース解析部と、該インタフェース解析部により作成された入力関係情報又は変更後入出力関係情報を記憶する第1のDBと、該第1のDBに記憶された該入力関係情報又は変更後入出力関係情報を用いて、テストケース又は変更後テストケースを作成するテストケース生成部と、該テストケース生成部により生成されたテストケース又は変更後テストケースを記憶する第2のDBと、該第2のDBに記憶されたテストケース又は変更後テストケース、及び期待値又は変更後期待値を用いてテストを実行するテスト実行部と、を有することを特徴とするソフトウェア検証システムとして構成される。
また、好ましい例では、上記ソフトウェア検証システムにおいて、更に、実行対象のソースコードの実行比率を示すカバレッジ情報又は変更後カバレッジ情報を算出するカバレッジ処理部と、該カバレッジ処理部により作成されたカバレッジ情報又は変更後カバレッジ情報を記憶する第3のDBと、ランダムにテストケースを生成するテストケースランダム生成部とを有し、
前記カバレッジ情報処理部は、前記変更前のカバレッジ率及び変更後のカバレッジ率と比較して、該比較の結果、変更後カバレッジ率が変更前に比べて低下した場合、該テストケースランダム生成部によってテストケースをランダムに生成し、該生成されたランダムテストケースを追加して該テスト実行部でテストを実行する。
更に好ましい例では、上記ソフトウェア検証システムにおいて、前記テストケース生成部は、該変更後入出力関係情報と、変更前の該入出力関係情報を比較し、その比較結果に応じて、次の(イ)又は(ロ)又は(ハ)のいずれかの処理を行うソフトウェア検証システムとして構成される。
(イ)インタフェース変更無しの場合は、テストケースを変更せずにテストを実行し、テスト結果を期待値に置き換える。
(ロ)インタフェースが増加した場合は、増加したインタフェース部分に対するテストケースを自動生成して、更に変更前のテストケースとの組み合わせによるテストケースを追加し、テスト結果を元に期待値の置き換える。
(ハ)ソフトウェアプログラムモジュールのインタフェースが減少した場合は、減少したインタフェースに関するテストケースを削除し、テストを実行する。期待値については、テスト結果を元に期待値の置き換える。
本発明によれば、モジュールの変更を解析し、自動的にテストケースおよび期待値を変更してテストを実施することにより、プログラム開発者は、モジュールに対する仕様の確認に時間を割くことができ、より品質の高い製品開発を短期間で実現できる。
本実施形態は、ソフトウェアプログラムのモジュール変更に対応したテストケースおよび期待値を自動生成し、効率良くテストが実施できるシステムを実現する。即ち、ソフトウェアプログラムの各モジュールの入出力インタフェースに着目して、モジュールの変更に対して、(1)インタフェース変更無し、(2)インタフェース追加あり、(3)インタフェース削減、の3ついずれかに分類し、それぞれの場合に応じてテストケースを追加、削除する等してテストを実施するものである。
図1は、本発明の一実施形態によるソフトウェア検証システムの例を示す。この検証システムは、ソフトウェアの検証を行うコンピュータ1と、検証のために必要な情報を記憶するデータベース(DB)を有して構成される。
コンピュータ1は、検証のためのプログラムを実行することでそれらの機能が実現されるインタフェース解析部105、テストケース生成部106、及びテスト実行部107を有する。ここで、インタフェース解析部105は、テスト対象ソースコード101´を解析して、入力関係情報102´及び変更後入出力関係情報109´を作成する。テストケース生成部106は、入力関係情報102´及び変更後入出力関係情報109´を用いてテストケース103´及び変更後テストケース110´を作成する。テスト実行部107は、テストケース生成部106で作成されたテストケース103´及び変更後テストケース110´、及び期待値104´及び変更後期待値111´を用いてテストを実行する。
DBに関しては、変更前のテスト環境に対して、テスト対象ソースコードDB101、入出力関係情報DB102、テストケースDB103、期待値DB104を有する。また、変更後の情報を保持するDBとして、変更後テスト対象ソースコードDB108、変更後入出力関係情報DB109、変更後テストケースDB110、変更後期待値DB111を有する。これらのDBは対応する情報をそれぞれ記憶する。
例えば、図2に示すように、入出力関係情報102´は、入力データとしてのテストケースとして、引数A,B、及びグローバル変数Xを含み、出力データとしての期待値として、引数C、グローバル変数Y、及び戻り値を含む。
一方、変更後入出力関係情報109´には、変更前の入出力関係情報102´に対して、引数Dが新たに追加されている。
斯かるシステムの構成において、入出力関係情報102´を新規に作成する場合、インタフェース解析部105はテスト対象ソースコード101´を解析する。
テスト対象ソースコード101´をテキストエディタ(図示せず)で変更して、変更後テスト対象ソースコード108´を作成する。インタフェース解析部105は、この変更後テスト対象ソースコード108´を解析して、変更後入出力関係情報109´を作成する。
テストケース生成部106は、変更後入出力関係情報109´と、変更前の入出力関係情報102´を比較し、その比較結果に従って、下記(1)〜(3)の処理を行う。
(1)入出力インタフェースに変更が無ければ、テストケース103´を変更しないで、テスト実行部107でテストを実行し、テスト結果を期待値に置き換える。
(2)入出力インタフェースが増加した場合、テストケース生成部106は、変更前テストケース103´にインタフェース追加分を組み合わせた変更後テストケース110´を作成して、テスト実行部107でテストを実行する。
ここで、図3に変更前テストケース103´を示し、図4に変更後テストケース109´を示す。
変更前テストケース103´(図3)は、入出力関係情報102´(図2)の集合であり、図4の変更後テストケース110´は、変更前テストケース103´とインタフェース追加分のテスト(図4の網掛け部)との組み合わせとなっている。
(3)入出力インタフェースが減少した場合、テストケース生成部106は、変更前テストケース103´より削減されたインタフェース分のテストケースおよび重複した分を削除して、図5に示すような変更後テストケース110´を作成する。即ち、変更前テストケース103´の斜線部分が削除された結果となる。
なお、図3〜図5に示したテストケースの例では、テストケースの値を「0」または「1」で表示している。しかし、テストケースの取り得る値は、それぞれの型の最小値から最大値まで膨大である。そこで、本検証システムでは、図6に示すように、テストケースで取り得る値を予め定義したおき、それらの値の組み合わせから適宜選択することが可能である。例えば、最小MIN、最大MAXとして、0〜99までの値と取るように規定しておいてもよい。
次に、図7を参照して、他の実施形態について説明する。
この例は、図1に示す例に比べて、コンピュータ1で実行される機能として、カバレッジ情報処理部713、テストケースランダム生成部714が追加され、更にデータベースとして、カバレッジ情報DB712、変更後カバレッジ情報DB715及びランダムテストケースDB716が追加されたものである。
カバレッジ情報とは、実行対象のソースコードの行数に対して実際に何行目まで実行されたかを示す情報であり、その比率をカバレッジ率(ラインカバー率ともいう)という。例えば、実行対象のソースコードが100行あって、実際に実行された行数が20行、実行されなかった行数が80行とすると、カバレッジ率は20%となる。
カバレッジ情報処理部713は、テスト対象ソースコード101´とテストケース103´の組み合わせでテストを実行した際のカバレッジ情報を収集して、それをカバレッジ情報DB712に記憶する。また、変更後テスト対象ソースコード108´と変更後テストケース110´の組み合わせでテストを実行した結果、変更前と変更後における各カバレッジ率(たとえばCOカバレッジ)を計算する。
カバレッジ情報処理部713は、更に、算出された変更前のカバレッジ率及び変更後のカバレッジ率と比較する。その結果、カバレッジ率が変更前に比べて低下した場合、テストケースランダム生成部714は、ランダムにテストケース716´を生成し、テスト実行部107はその生成されたランダムテストケースを追加してテストを実行する。テストケースランダム生成部714によるテストケースのランダムな生成は、あらかじめ指定された範囲のデータよりランダムにテストケースを作成することにより行われる。
テストケースランダム生成部714により生成されたテストケースを用いてテストが実行され、また上記と同様にして、変更後テスト対象ソースコード108´と変更後テストケース110´の組み合わせでテストを実行した結果、変更前と変更後における各カバレッジ率がカバレッジ情報処理部713により計算される。
カバレッジ処理部713は、変更前後の各カバレッジ率を比較し、その結果、ランダム生成されたテストケースの実行により、カバレッジ情報が改善された場合は、変更後テストケース110´にテストケースを追加する。カバレッジ率が変更前テストケース110´のカバレッジ率を上回るか、あらかじめ指定されたランダム生成数を満たした時点でテストケースランダム生成部714は新たなテストケースを生成しないものとする。
なお、図1に示す検証システムの例において、自動生成した変更後テストケース110´を、システムの管理者が認識できるようにシステム外部に公開し、テストケースの変更が必要な場合、例えば自動で追加されたテストケースだけでは、テストが不十分な場合は、手作業で編集可能となる。同様にして、図7のシステムでも、自動生成した変更後テストケース110´およびランダムテストケース716´をシステム外部に公開し、テストケースの変更が必要な場合、例えば自動で追加されたテストケースだけでは、テストが不十分な場合は、手作業で編集可能となる。
このようにモジュールの変更点に対し、自動的にテストケースおよび期待値を変更したテストを実施することにより、プログラム開発者は、モジュールに対する仕様の確認のために時間を割くことができ、より品質の高いソフトウェアを短期間で開発することができる。
一実施形態によるソフトウェア検証システムを示すブロック図。 入出力関係情報のフォーマットの一例を示す図。 変更前テストケースの一例を示す図。 変更後テストケースの一例を示す図。 変更後テストケースの一例を示す図。 テストケースとして取り得る値の一例を示す図。 一実施形態によるソフトウェア検証システムを示すブロック図。
符号の説明
101:テスト対象ソースコードDB 102:入出力関係情報DB 103:テストケースDB 104:期待値DB 105:インタフェース解析部 106:テストケース生成部 107:テスト実行部
108:変更後テスト対象ソースコードDB 109:変更後入出力関係情報DB 110:変更後テストケースDB 111:変更後期待値DB。

Claims (3)

  1. コンピュータを用いて、ソフトウェアプログラムのモジュールの変更に伴う検証を行うソフトウェア検証システムにおいて、
    テスト対象ソースコードを解析して、入出力インタフェースの変更を反映することができ、入力値(テストケース)と出力値(期待値)を含む入力関係情報又は変更後入出力関係情報を作成するインタフェース解析部と、
    該インタフェース解析部により作成された入力関係情報又は変更後入出力関係情報を記憶する第1のDBと、
    該第1のDBに記憶された該入力関係情報又は変更後入出力関係情報を用いて、テストケース又は変更後テストケースを作成するテストケース生成部と、
    該テストケース生成部により生成されたテストケース又は変更後テストケースを記憶する第2のDBと、
    該第2のDBに記憶されたテストケース又は変更後テストケース、及び期待値又は変更後期待値を用いてテストを実行するテスト実行部と、を有することを特徴とするソフトウェア検証システム。
  2. 請求項1に記載のソフトウェア検証システムにおいて、更に、
    実行対象のソースコードの実行比率を示すカバレッジ情報又は変更後カバレッジ情報を算出するカバレッジ処理部と、
    該カバレッジ処理部により作成されたカバレッジ情報又は変更後カバレッジ情報を記憶する第3のDBと、
    ランダムにテストケースを生成するテストケースランダム生成部とを有し、
    前記カバレッジ情報処理部は、前記変更前のカバレッジ率及び変更後のカバレッジ率と比較して、該比較の結果、変更後カバレッジ率が変更前に比べて低下した場合、該テストケースランダム生成部によってテストケースをランダムに生成し、該生成されたランダムテストケースを追加して該テスト実行部でテストを実行することを特徴とするソフトウェア検証システム。
  3. 請求項1に記載のソフトウェア検証システムにおいて、前記テストケース生成部は、該変更後入出力関係情報と、変更前の該入出力関係情報を比較し、その比較結果に応じて、次の(イ)又は(ロ)又は(ハ)のいずれかの処理を行うソフトウェア検証システム。
    (イ)インタフェース変更無しの場合は、テストケースを変更せずにテストを実行し、テスト結果を期待値に置き換える。
    (ロ)インタフェースが増加した場合は、増加したインタフェース部分に対するテストケースを自動生成して、更に変更前のテストケースとの組み合わせによるテストケースを追加し、テスト結果を元に期待値の置き換える。
    (ハ)ソフトウェアプログラムモジュールのインタフェースが減少した場合は、減少したインタフェースに関するテストケースを削除し、テストを実行する。期待値については、テスト結果を元に期待値の置き換える。
JP2008044261A 2008-02-26 2008-02-26 ソフトウェア検証システム Pending JP2009205239A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008044261A JP2009205239A (ja) 2008-02-26 2008-02-26 ソフトウェア検証システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008044261A JP2009205239A (ja) 2008-02-26 2008-02-26 ソフトウェア検証システム

Publications (1)

Publication Number Publication Date
JP2009205239A true JP2009205239A (ja) 2009-09-10

Family

ID=41147465

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008044261A Pending JP2009205239A (ja) 2008-02-26 2008-02-26 ソフトウェア検証システム

Country Status (1)

Country Link
JP (1) JP2009205239A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077413A (zh) * 2014-09-08 2017-08-18 起元科技有限公司 数据驱动的测试框架
WO2023058611A1 (ja) * 2021-10-07 2023-04-13 株式会社日立製作所 ソフトウェア不具合分析装置及びソフトウェア不具合分析方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077413A (zh) * 2014-09-08 2017-08-18 起元科技有限公司 数据驱动的测试框架
JP2017531855A (ja) * 2014-09-08 2017-10-26 アビニシオ テクノロジー エルエルシー データ駆動型検査用フレームワーク
CN107077413B (zh) * 2014-09-08 2021-01-15 起元科技有限公司 数据驱动的测试框架
WO2023058611A1 (ja) * 2021-10-07 2023-04-13 株式会社日立製作所 ソフトウェア不具合分析装置及びソフトウェア不具合分析方法

Similar Documents

Publication Publication Date Title
JP6621204B2 (ja) 安全重視ソフトウェア開発のためのモデルベース技術および過程のためのシステムおよび方法
CN109408373B (zh) 智能合约的测试方法、计算机可读存储介质及测试终端
US8997065B2 (en) Automatic modularization of source code
US20080276221A1 (en) Method and apparatus for relations planning and validation
US8910133B2 (en) Library conformity checker
JP2007012003A (ja) フィーチャ指向ソフトウェア製品ラインの開発環境を提供するシステム
CN112416318B (zh) 微服务开发方法、装置、存储介质及电子设备
US20110145799A1 (en) Path-sensitive dataflow analysis including path refinement
US9396095B2 (en) Software verification
CN107608873B (zh) 软件测试方法和系统及测试平台
CN115952758A (zh) 芯片验证方法、装置、电子设备及存储介质
US10592703B1 (en) Method and system for processing verification tests for testing a design under test
US20130111432A1 (en) Validation of a system model including an activity diagram
JP2009205239A (ja) ソフトウェア検証システム
JP2009032133A (ja) テストケース生成システム
JP2008165342A (ja) ソースコード生成方法及び装置並びにプログラム
JP2009230677A (ja) プロパティ生成システムおよびプロパティ検証システム
TW201327211A (zh) 代碼智慧生成系統及方法
JP2016128941A (ja) 出力判定装置、出力判定方法、出力判定プログラム、及び、静的解析装置
EP3608786B1 (en) Systems and methods of requirements chaining and applications thereof
JP2009211622A (ja) 契約定義関数検証装置、その方法及びそのプログラム
JP2017167899A (ja) シミュレーションシステム、シミュレーション方法、シミュレーションプログラム
JP2016126700A (ja) プログラム検証装置、プログラム検証方法及びプログラム検証プログラム
KR102046622B1 (ko) 워크플로우 기반 소프트웨어 서비스 시스템 및 이 시스템의 각 기능을 실행시키기 위해 매체에 저장된 컴퓨터 프로그램
US20230385056A1 (en) Removing inactive code to facilitate code generation