JP4869581B2 - カバレッジ計測システム及びそのプログラム - Google Patents
カバレッジ計測システム及びそのプログラム Download PDFInfo
- Publication number
- JP4869581B2 JP4869581B2 JP2004337412A JP2004337412A JP4869581B2 JP 4869581 B2 JP4869581 B2 JP 4869581B2 JP 2004337412 A JP2004337412 A JP 2004337412A JP 2004337412 A JP2004337412 A JP 2004337412A JP 4869581 B2 JP4869581 B2 JP 4869581B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction code
- function
- position information
- extracted
- call
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
この実行テストのカバレッジとは、ソフトウェアの全コードに対して、実行テストにより実行されたコードの割合である。
すなわち、実行テストを行った際に、ソフトウェアを構成するコードにおいて、どのコードが実行されたか、または実行されなかったかを判別することによって、実行されたコード割合としてカバレッジが計測される。
そして、カバレッジの計測は、図8に示す概念図の順のようにして行われる。
(1)カバレッジ測定用コード埋め込み
ソフトウェアのソースコード中において、分岐が発生する部分に対して、トレース用のコードを埋め込む。
このトレース用のコードは、実行された場合、ソースコードにおいてどの位置のコードが実行されたかを示す位置特定情報(例えばファイル名、行番号)を出力する。
トレース用のコードを埋め込んだコードをコンパイルしバイナリコードを生成する。
(3)テスト実行
上記バイナリコードに対して実行テストを実行し、トレース用のコードが出力するデータをログとして取得する。
(1)で埋め込んだトレース情報により、(3)の実行テストにおいてソースコード中のどの位置のコードが実行されたかを示す実行コードの位置情報を抽出する。
そして、このコードの位置情報の抽出結果をもとに、下記のファイルカバレッジと関数カバレッジとの算出を行う。
ファイルカバレッジは、実行テスト時に実行されたソフトウェアの行数を、ソフトウェアの総行数で除算することで求める。
これにより、ユーザは、ファイルカバレッジと関数カバレッジとを調べることにより、ソースコード中のどの部分が網羅的にテストされていないかを検出することができる。
(4)の結果に基づいて、網羅的にテストされていないコード部分がテストされるように、実行テストに追加のテストコードを追加し、新たな実行テストを作成し、上記(3)(4)の処理を繰り返す。
ファイルカバレッジと関数カバレッジと各々100%となるまで、もしくは、品質上において満足できる基準値を満たすまで繰り返す。
上述したように、従来のカバレッジの検出方式においては、ソースコードに対してトレースコードを埋め込み、ソフトウェアの全機能を対象としたカバレッジの計測を行っている(例えば、特許文献1参照)。
ソフトウェアのコンポーネントによる組み合わせ開発においては、従来の開発と比較して、以下に示す特徴を有している。
特徴1.他社製のコンポーネントを利用した場合、そのコンポーネントのソースコードを入手できない場合がある。
特徴2.コンポーネントの関数は、全て開発者に公開されている訳ではなく、また、開発者が全ての関数を開発に必要とする訳ではない。そのため、限定的な関数に対してのみのテストを実施することが可能である。
(1)ソースコード入手が困難な場合
従来のカバレッジ測定手法は、ソフトウェアのソースコードを利用して、各コードが実行されているか否かのカバレッジを計測している。
ここで言うソースコードは、オブジェクト指向言語を中心にDelphi(登録商標),Oberon-2(登録商標),Forth(登録商標),C(登録商標),C++(登録商標),JAVA(登録商標)等、アセンブリ言語や機械語に対する高級言語で記載されたソフトウェアのコードを示している。
従来のカバレッジ測定手法は、ファイル、関数毎の網羅的なテストを行い、ファイルカバレッジ、関数カバレッジ等を計測している。
しかしながら、コンポーネント開発においては、上記特徴2の理由から、プログラムの開発者はマニュアルに記載された関数のみしか知ることができず、一方、マニュアルに記載された関数全てを、開発するソフトウェアに利用する訳ではない。
そこで、開発するソフトウェアの特定の関数のみを実行したときのカバレッジを計測する必要がでてくる。
(a)ファイルカバレッジを利用した場合
従来のテストにおいては、入手したソースコードにおいて、限定した関数に対してのみ実行テストを行うこととなる。
しかしながら、公開された関数カバレッジを100%としても、公開されていない関数がテストにおいて実行されなければ、最終的なカバレッジの計測値が低い値となる。
したがって、従来の計測方法は、上記アプリケーションのように、複数ある関数のなかで関数Aしか用いていないため、どんなに網羅的に実行テストを行っても、残りの関数B,C,Dが実行されなければ、最終的な関数カバレッジは低い値となり、実際に開発したプログラムの品質の指標とならない問題がある。
従来のカバレッジ測定手法は、入手したソフトウェアのソースコードにおいて、全ての関数のカバレッジを計測することが可能である。
コンポーネント開発においては、開発者に公開される関数構成が限定されるため、呼び出し先の関数に対して実行テストを行うことができない。
すなわち、公開されたある関数自体の使用に対して、関数カバレッジが100%であっても、その関数に呼び出される関数がテスト対象ではないため、アプリケーションの有する機能が網羅的にテストされているとは言えない。
しかしながら、関数mainの呼び出し先の関数fooを参照すると、「a==b」以外の条件のコードのテストはされない。
すなわち、従来の関数カバレッジの計測方法においては、上記関数mainの有する全ての機能を、網羅的にテストしていることにはならないという欠点がある。
このとき、関数fooが利用者(開発者)に対して公開されているとは限らないため、関数foo単独で網羅的にテストすることができない。
また、本発明によれば、アプリケーションにおいて利用者が用いる関数を利用したときに実行される可能性がある関数のコードに限定し、これらの関数のみに対してカバレッジを計算することにより、限定的な関数のテストに対し高精度にカバレッジを計測できるという効果が得られる。
このサービスとは、利用者が外部から標準化された手順によって呼び出すアプリケーションソフトウェア(以下、アプリケーション)、すなわちコンポーネントの塊であり、各アプリケーション自体で利用者に利用可能な機能を持つものを言う。このため、全てのソフトウェアを開発するのではなく、提供されるコンポーネントを利用してソフトウェアの開発を行うこととなる。
<第1の実施形態>
図1は同実施形態によるカバレッジ計測システムの構成例を示すブロック図である。後に述べる仮想マシン部により実行されるソフトウェア(すなわちソフトウェアプログラム)の形態として、アセンブラコードまたはバイナリコードが可能であるが、以下の説明においては、バイナリコードを実行するとして説明する。
この図において、命令コード抽出部1,仮想マシン部3,位置情報抽出部5及びカバレッジ計算部6は、CPU(中央演算処理装置)がメモリ(ROM,RAMまたは磁気記録媒体)に記憶されているプログラム及びデータに従って動作するようにして実現するようにしてもよい。
また、命令コードデータベース2及び位置情報データベース4は、ROM,RAMや磁気記録媒体等により構成されている。
上記命令コードテーブルは、命令コードデータベース2に記憶されており、後に説明する仮想マシン部において動作する命令のバイナリコードとこの命令のデータ構成(命令コード、すなわちオペコード及びオペランドの対応)とが格納されている。
位置情報抽出部5は、位置情報データベース4へ記録されている、テストパターン毎に実行された実行履歴それぞれから、実行された実行命令コード及びその位置情報とを読出し、それらを図2に示すように、テストパターン1,2および3の実行履歴をマージ(併合)させて、重複するデータを除去して、実行命令コードとその位置情報とを対応させ、位置情報テーブルとして位置情報データベース4へ格納する。
命令コード抽出部1は、被計測対象のソフトウェアプログラムを入力し(ステップS1)、命令コードテーブルを参照して、このテーブルに記載された命令コードと同一の命令コードを、入力される被計測対象のソフトウェアプログラムにおいて検索し、検索された命令コードとこの命令コードの位置情報とを対応させ、命令コード抽出テーブルとして、命令コードデータベース2へ格納する(ステップS2)。
そして、位置情報抽出部5は、テストパターン毎に上記実行履歴を読出し、実行された実行コードとそのアドレスとを抽出し、テストパターンに対応させて、位置情報テーブルとして位置情報データベース4へ格納する(ステップS4)。
次に、カバレッジ計算部6は、上記検出結果テーブルから位置情報の検出数を計算し、この検出数を、命令コード抽出テーブルの位置情報の全数で除算して、除算結果をコードのカバレッジ情報として出力する(ステップS7)。
このとき、カバレッジ計算部6は、命令コード抽出テーブルにおいて、位置情報テーブルの位置情報及びこの位置情報の実行命令コードと対応しない、すなわちテストパターンによりテストされていない命令コード及びこの命令コードの位置情報を、上記カバレッジ情報に含ませて出力する。
次に、本発明の第2の実施形態として、図5に示すカバレッジ計測システムを説明する。図5はは第2の実施形態によるカバレッジ計測システムの構成例を示すブロック図である。
この図において、命令コード抽出部1,仮想マシン部3,位置情報抽出部5,カバレッジ計算部6,呼出関数抽出部7及び呼出関係抽出部8は、CPU(中央演算処理装置)がメモリ(ROM,RAMまたは磁気記録媒体)に記憶されているプログラム及びデータに従って動作させて実現するようにしてもよい。
また、命令コードデータベース2及び位置情報データベース4は、ROM,RAMや磁気記録媒体等により構成されている。
この図において、図1に示す第1の実施形態によるカバレッジ計測システムと同一の部分には同一の符号を付し、その説明を省略する。
この図5に示す第2の実施形態によるカバレッジ計測システムが、第1の実施形態によるカバレッジ計測システム装置と異なる点は、作成されるソフトウェアプログラムにおいて利用者が利用する関数を抽出する呼出関数抽出部7が追加されて設けられている点である。
この使用形態に対応させるため、第2の実施形態においては、アプリケーションにおいて使用している関数のみを抽出し、この関数がテストされているか否かのカバレッジを計測している。
一方、第1の実施形態においては、使用するしないに係わらず、全てのコードのカバレッジを求める。
また、呼出関係抽出部8は、上記抽出結果から、呼出元の関数と呼出先の関数との対応を示す呼出対応テーブルを生成し、呼出対応データベース9へ格納する。
また、命令コード抽出部1は、上記呼出対応テーブルに記載された関数に対応する命令コードを、ソフトウェアプログラムから抽出し、命令コード及びこの命令コードに対応する位置情報を抽出し、命令コード抽出テーブルとして、呼出対応データベース9へ格納する。
呼出関数抽出部7は、被計測対象のソフトウェアプログラムを入力し(ステップS10)、利用者が実際にこのプログラムにおいて使用している関数、及びこの関数に呼び出される関数を全て抽出する。
このステップS11を上記図7を参照して詳細に説明すると、
ステップS11aにおいて、呼出関数抽出部7は、被計測対象のソフトウェアプログラムから、利用者の使用する関数を初期ノードとして抽出し、この初期ノードが呼び出すノードを抽出する。
ステップS11cにおいて、呼出関数抽出部7は、初期ノードの選択したノードが呼び出すノードの抽出を行う。呼出関係抽出部8は、上記ノードとこのノードの呼出先のノードとの間に、関数の呼出関係を示すエッジを設定し、この対応関係を呼出対応テーブルに書き込む。
ステップS11dにおいて、呼出関係抽出部8は、選択済みのノード間にあらたにエッジを設定せず、上記呼出対応テーブルに記載された対応以外の参照関係(呼出関係)が抽出されなくなるまで、各関数の呼出先の関数の抽出を行う。
次に、カバレッジ計算部6は、−上記検出結果テーブルから位置情報の検出数を計算し、この検出数を、命令コード抽出テーブルの位置情報の全数で除算して、除算結果をコードのカバレッジ情報として出力する(ステップS17)。
このとき、カバレッジ計算部6は、命令コード抽出テーブルにおいて、位置情報テーブルの位置情報及びこの位置情報の実行命令コードと対応しない、すなわちテストパターンによりテストされていない、実際に使用する命令コード及びこの命令コードの位置情報を、上記カバレッジ情報に含ませて出力する。
2…命令コードデータベース
3…仮想マシン部
4…位置情報データベース
5…位置情報抽出部
6…カバレッジ計算部
7…呼出関数抽出部
8…呼出関係抽出部
9…呼出対応データベース
Claims (2)
- 中間言語であるアセンブラコードあるいは機械語であるバイナリコードで記載され、複数の外部コンポーネントを用いて構成されるソフトウェアプログラムを、テストパターンにより実行させて、前記ソフトウェアプログラムの前記テストパターンによるカバレッジを算出するカバレッジ計測システムであり、
前記ソフトウェアプログラムで使用される関数として、当該ソフトウェアプログラムに組み込まれた前記外部コンポーネントに含まれる関数を呼出元の関数とし、当該呼出元の関数に呼び出される前記ソフトウェアに組み込まれた前記外部コンポーネントに含まれる呼出先の関数の抽出処理を行い、抽出した呼出先の関数を新たな呼出元の関数として、さらに新たな呼出先の関数の前記抽出処理を、前記新たな呼出元の関数の呼び出し先が抽出されなくなるまで順次行う呼出関数抽出部と、
前記抽出処理により抽出された結果である抽出結果から、前記呼出元の関数と呼出先の関数とにおける呼び出しの対応関係を示す呼出対応テーブルを生成する呼出関係抽出部と、
前記呼出対応テーブルに記載された前記呼出元の関数及び前記呼出先の関数を構成する命令コードを、前記ソフトウェアプログラムから抽出し、抽出された命令コードである抽出命令コードと、当該抽出命令コードが前記ソフトウェアプログラムのいずれに記載されているかを示す抽出位置情報との対応を示す命令コード抽出テーブルを生成する命令コード抽出部と、
前記テストパターンを用いて、前記ソフトウェアプログラムを実行させて実行履歴を取得する仮想マシン部と、
前記実行履歴から、前記テストパターンにより実行された命令コードである実行命令コード及びその実行位置情報を抽出し、前記実行命令コードと前記実行位置情報との対応を示す位置情報テーブルを生成する位置情報抽出部と、
前記実行位置情報の数である実行位置情報数を、前記命令コード抽出テーブルに記載された抽出位置情報の数である抽出位置情報数により除算し、前記ソフトウェアプログラムの前記テストパターンによるカバレッジを求め、当該カバレッジを前記テストパターンによりテストされていない命令コードと当該命令コードの前記抽出位置情報とともに出力するカバレッジ計算部と
を有することを特徴とするカバレッジ計測システム。 - 中間言語であるアセンブラコードあるいは機械語であるバイナリコードで記載され、複数の外部コンポーネントを用いて構成されるソフトウェアプログラムを、テストパターンにより実行させて、前記ソフトウェアプログラムの前記テストパターンによるカバレッジを算出するカバレッジ計測システムの処理をコンピュータに実行させるプログラムであり、
呼出関数抽出部が、前記ソフトウェアプログラムで使用される関数として、当該ソフトウェアプログラムに組み込まれた前記外部コンポーネントに含まれる関数を呼出元の関数とし、当該呼出元の関数に呼び出される前記ソフトウェアに組み込まれた前記外部コンポーネントに含まれる呼出先の関数の抽出処理を行い、抽出した呼出先の関数を新たな呼出元の関数として、さらに新たな呼出先の関数の前記抽出処理を、前記新たな呼出元の関数の呼び出し先が抽出されなくなるまで順次行う処理と、
呼出関係抽出部が、前記抽出処理により抽出された結果である抽出結果から、前記呼出元の関数と呼出先の関数とにおける呼び出しの対応関係を示す呼出対応テーブルを生成する処理と、
命令コード抽出部が、前記呼出対応テーブルに記載された前記呼出元の関数及び前記呼出先の関数を構成する命令コードを、前記ソフトウェアプログラムから抽出し、抽出された命令コードである抽出命令コードと、当該抽出命令コードが前記ソフトウェアプログラムのいずれに記載されているかを示す抽出位置情報との対応を示す命令コード抽出テーブルを生成する処理と、
仮想マシン部が、前記テストパターンを用いて、前記ソフトウェアプログラムを実行させて実行履歴を取得する処理と、
位置情報抽出部が、前記実行履歴により、前記テストパターンにより実行された命令コードである実行命令コード及びその実行位置情報を前記命令コード抽出テーブルから抽出し、前記実行命令コードと前記実行位置情報との対応を示す位置情報テーブルを生成する処理と、
カバレッジ計算部が、前記実行位置情報の数である実行位置情報数を、前記命令コード抽出テーブルに記載された抽出位置情報の数である抽出位置情報数により除算し、前記ソフトウェアプログラムの前記テストパターンによるカバレッジを求め、当該カバレッジを前記テストパターンによりテストされていない命令コードと当該命令コードの前記抽出位置情報とともに出力する処理と
を有する処理をコンピュータに実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004337412A JP4869581B2 (ja) | 2004-11-22 | 2004-11-22 | カバレッジ計測システム及びそのプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004337412A JP4869581B2 (ja) | 2004-11-22 | 2004-11-22 | カバレッジ計測システム及びそのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006146669A JP2006146669A (ja) | 2006-06-08 |
JP4869581B2 true JP4869581B2 (ja) | 2012-02-08 |
Family
ID=36626264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004337412A Expired - Fee Related JP4869581B2 (ja) | 2004-11-22 | 2004-11-22 | カバレッジ計測システム及びそのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4869581B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008242811A (ja) * | 2007-03-27 | 2008-10-09 | Hitachi Software Eng Co Ltd | ソフトウェア部品ソースコード生成システム |
US8141158B2 (en) * | 2008-12-31 | 2012-03-20 | International Business Machines Corporation | Measuring coverage of application inputs for advanced web application security testing |
CN103246602B (zh) | 2012-02-14 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 代码覆盖率确定方法及系统、代码覆盖检测方法及系统 |
KR102042996B1 (ko) * | 2017-06-01 | 2019-12-02 | 슈어소프트테크주식회사 | 탐침을 이용하지 않는 코드 커버리지 측정 방법 및 장치, 그리고 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5856049A (ja) * | 1981-09-30 | 1983-04-02 | Fujitsu Ltd | プログラムデバツグ方式 |
JPS61107440A (ja) * | 1984-10-30 | 1986-05-26 | Yokogawa Hokushin Electric Corp | マイクロプロセツサ用デバツグ装置 |
JPH01271848A (ja) * | 1988-04-22 | 1989-10-30 | Nec Corp | プログラム開発評価システム |
-
2004
- 2004-11-22 JP JP2004337412A patent/JP4869581B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2006146669A (ja) | 2006-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6430741B1 (en) | System and method for data coverage analysis of a computer program | |
Chen et al. | An automated approach to estimating code coverage measures via execution logs | |
US8386851B2 (en) | Functional coverage using combinatorial test design | |
JP5403362B2 (ja) | パターン検査システム、パターン検査装置、方法およびパターン検査用プログラム | |
Mateos et al. | Detecting WSDL bad practices in code–first Web Services | |
JP5208635B2 (ja) | プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム | |
Chen et al. | Extracting and studying the Logging-Code-Issue-Introducing changes in Java-based large-scale open source software systems | |
Tramontana | Automatically characterising components with concerns and reducing tangling | |
US9189372B2 (en) | Trace coverage analysis | |
US7409677B1 (en) | Method and system for creation and use of embedded trace description | |
KR20180129623A (ko) | 연관된 다중 파일 정적 분석 장치 | |
JP4869581B2 (ja) | カバレッジ計測システム及びそのプログラム | |
JP2000347900A (ja) | 入力パラメータ生成装置、その方法及び記録媒体 | |
US8359579B2 (en) | Monitoring dynamic aspect oriented applications at execution time | |
JP2005338987A (ja) | 例外テスト支援プログラム及び例外テスト支援装置 | |
JP4763743B2 (ja) | プログラム動作比較装置及び方法及びプログラム | |
JP7380851B2 (ja) | テストスクリプト生成装置、テストスクリプト生成方法及びプログラム | |
JP7331681B2 (ja) | テスト実行プログラム、テスト実行方法、およびテスト実行装置 | |
KR20190020363A (ko) | 동적 분석과 정적 분석을 연계한 프로그램을 분석하기 위한 방법 및 장치 | |
Mahmud et al. | Acid: an api compatibility issue detector for android apps | |
US8458523B2 (en) | Meta attributes in functional coverage models | |
JP4536576B2 (ja) | ソフトウェアカバレッジ測定装置及び方法 | |
Andrzejak et al. | Confguru-A system for fully automated debugging of configuration errors | |
CN112099838B (zh) | 确定版本差异的方法、装置及存储介质 | |
RU2390821C1 (ru) | Способ динамической инструментации |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070320 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090409 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090414 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090612 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090915 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091116 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100302 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100601 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20100609 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20100827 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20111116 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4869581 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20141125 Year of fee payment: 3 |
|
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 |
|
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 |