2004年07月04日
C0/C1カバレッジカバレッジテスト、時系列イベント入力テストを自動化する「カバレッジマスターwinAMS」
GAIO CLUB 特集
GAIO CLUB【2004/7月号】
C0/C1カバレッジテスト、時系列イベント入力テストを完全自動化するツール「カバレッジマスター winAMS」
~ ソフトウエア品質の向上を実現できる手軽なツールです ~
カバレッジテストを極めた新バージョンリリース!
GAIO CLUB4月号にて、すでに「winAMS Ver.1」によるカバレッジ自動テストの記事を取り上げましたが、今回は、7月末にリリースされる新バージョンの紹介を致します。製品名を「カバレッジマスター winAMS」と改め、組み込みソフトのカバレッジテストを自動化する統合環境として進化しました。
C0、C1カバレッジとは
「カバレッジ」と言う言葉は、ソフトウエアを評価する方法として広く用いられる言葉です。組み込みソフトの分野でのカバレッジテストは、特に自動車業界では盛んに行われており、ソフトウエアの品質を保証する1つの指標、テスト基準として用いられています。最も軽い基準である「C0カバレッジ」とは、ソフトの全てのコード(ソース行)を少なくとも1回は実行テストして、その結果が正しいことを保証する基準です。デバッグの工程で、実際に試していないコードが存在すると言うような、いわゆる「テスト漏れ」が無いことを保証するものです。
次の基準は、「C1カバレッジ」と呼ばれています。これは、if文、switch文などの条件分岐において、各条件の真偽の設定により、存在する全ての実行経路を少なくとも1回は実行テストして、その結果が正しいことを保証するものです。これら両者の違いを、1つの例を取って説明します。
C0、C1のテスト例と相違点
-
例えば、次のようなソースコードがある場合、コードの全てを1度は実行するC0のカバレッジを満たすためには、if文にTRUE/FALSEの両方を設定して、2つの実行経路(→A→と→B→)を実行することになります。これは同時に、C1に必要な要件を満たすことになり、この例であれば、C0とC1は本質的に同じテストになります。
-
-
では、このソースコードのelse部分が無い場合はどうでしょう。C0カバレッジの要件である「全てのコードの実行」を行うには、if文にTRUEを設定した場合(→A→B→)だけ試せば良いことになります。C0の基準では、このif文を実行せず、下に通過してしまう実行経路(→B→)はテストの対象から外れることになります。このように、コード全体を試した上で、考えられる全ての実行経路を試すものが、C1カバレッジに当たります。
-
「カバレッジマスター」によるカバレッジ自動テスト
「カバレッジマスター」は、組み込みソフトのC1カバレッジテストを自動化するツールです。1度テスト環境を構築してしまえば、工数をかけず、何度でもソフトウエア評価が自動で行えるため、常にソフトウエアの品質を保証しながら開発を進めることができます。
組み込みソフト品質保証に特化したテスト環境
「カバレッジマスター」は、組み込みソフトの品質評価に特化したテスト環境です。実際に組み込みを行うオブジェクトコードをそのままマイコンシミュレータ(ISS)で実行し、カバレッジテストを行います。高精度マイコンシミュレータにより、マイコンの演算精度、演算・数学ライブラリの性能など、実際に組み込んだ際の品質を完全に保証することができます。
組み込みマイコンを完全に再現してテストするこの環境は、他社のWindowsネイティブテストツール(組み込みコードをWindowsアプリとして実行)での評価テストとは、本質的に異なっています。
自動テスト環境の構成
下図は「カバレッジマスター」によるカバレッジ自動テストの概要図です。このツールは、マイコンシミュレータに、関数テスト用のデータ入出力装置となるモジュールを組み合わせて構成されています。
-
入力データはCSV形式のファイルで用意することができます。テスト対象となる関数名、入出力の変数名をCSVの所定のセルに記述し、各変数名の下に1回分のテストデータを1行にまとめて記述します。入力ファイルの出力変数名の下に期待値を記述しておくと、テスト出力との比較を行い、結果をOK/NGでレポートする機能を備えています。
-
C0、C1カバレッジの実行結果をレポート
テスト実行後、入出力データと、そのテータで通過したソースコード上の実行経路をわかりやすく表示する「カバレッジレポート」機能が装備されています。全体のソースに対するテスト実行ソースの割合を「網羅率」として示され、これが100%になるテストデータを作成して正しい実行結果が得られれば、C0カバレッジ(命令カバレッジ)が保証できます。
if文、switch文などによる全ての条件分岐については、TRUE/FALSEの条件が両方とも実行されたかをレポートすることができます。これにより、C1カバレッジ(分岐カバレッジ)を保証することができます。
入力データ作成支援ツール「波形エディタ」を搭載
-
テスト実行のための入力CSVファイルの作成を支援するツール「波形エディタ」を用意しています。これは、入力したい変数に対して、最大値、最小値などの情報から、リニアに変化するデータを作成したり、グラフ上に、データ変化の通過点をプロットするだけで、リニア補間、ニュートン補間、サンプルホールドなどの補間方法によってテストデータを作り出す機能も備わっています。
-
割り込み・i/oポートの時系列イベントに対するテストも可能
-
新バージョンでは、マイコンに対する割り込み入力やi/oポートの時系列変化を、シナリオデータとしてCSVファイルに作成し、これを使用したシステム動作テストを行う機能を追加しました。例えば、メカ制御モデルのセンサー等からの時系列応答について、正常系応答、異常時の応答、複合的な条件下での応答など、様々な応答パターンを網羅的に作成し、これらに対するソフトウエアの動作を自動テストすることが可能です。
-