============================================================= Powertest テストケース追加方法 ============================================================= テストケースの構成 ============================================================= .. code-block:: none test-+-apitestcases----+-PP ... corbaインターフェーステストケース(PP,VICE) | +-SL ... corbaインターフェーステストケース(PP,VICE) +-cgip------------+-CORE ... インタープリタ/コード生成テストケース(PP,SL,VICE) | +-IMPL | +-IMPLMOD ... インタープリタ/コード生成テストケース(SL) | +-PP ... インタープリタ/コード生成テストケース(PP,VICE) | +-SL ... インタープリタ/コード生成テストケース(SL) | +-TESTBYHAND | +-VICE ... インタープリタ/コード生成テストケース(VICE) +-cgtestenv +-iptestcases-----+-CORE ... インタープリタ/コード生成テストケース(PP,SL,VICE) | +-IMPL | +-IMPLMOD ... インタープリタ/コード生成テストケース(SL) | +-PP ... インタープリタ/コード生成テストケース(PP,VICE) | +-SL ... インタープリタ/コード生成テストケース(SL) +-iptestcasesJP ... 未使用 +-j2v-test ... 未使用 +-j2vtf-testcases ... 未使用 +-jss-test ... 未使用 +-metaivtestcases ... メタデータテストケース(C++) +-pog-------------+-expertest-+-CORE ... 証明課題生成テストケース(PP,SL,VICE) | | +-PP ... 証明課題生成テストケース(PP,VICE) | | +-SL ... 証明課題生成テストケース(SL) | +-fulltest--+-CORE ... 証明課題生成テストケース(PP,SL,VICE) | +-PP ... 証明課題生成テストケース(PP,VICE) | +-SL ... 証明課題生成テストケース(SLE) | +-VICE ... 証明課題生成テストケース(VICE) +-pogtestcases ... 未使用 +-powertest ... パワーテストプログラム +-tc--------------+-expertest-+-CORE ... 型チェックテストケース(PP,SL,VICE) | | +-PP ... 型チェックテストケース(PP,VICE) | | +-SL ... 型チェックテストケース(SL) | +-fulltest--+-CORE ... 型チェックテストケース(PP,SL,VICE) | +-PP ... 型チェックテストケース(PP,VICE) | +-SL ... 型チェックテストケース(SL) | +-VICE ... 型チェックテストケース(VICE) +-xformTestcases ... 未使用 ディレクトリの説明 ============================================================= テストケースは実行している言語やテストのレベルにより、ディレクトリ名でテスト対象かどうかを判断 * CORE * このディレクトリ以下に全言語共通のテストケースを配置する。 書式はVDM++形式で記述する。VDM-SLでテストを行う場合は、自動的にVDM-SL形式に変換される。 そのため、VDM-SLに変換できない命令は使用できない。 * PP * このディレクトリ以下にはVDM++のみを対象としたテストケースを配置する。VICEでも実行可能 * SL * このディレクトリ以下にはVDM-SLのみを対象としたテストケースを配置する。 * VICE * このディレクトリ以下にはVICEのみを対象としたテストケースを配置する。 * IMPLMOD * このディレクトリ以下にはVDM-SLのみを対象としたテストケースを配置する。 * IMPL * このディレクトリ以下には実装レベルのみを対象としたテストケースを配置する。 * SPEC * このディレクトリ以下には仕様レベルのみを対象としたテストケースを配置する。 テストケースの構成 ============================================================= テストケースはテストを行う1ファイルの仕様とテスト結果のファイルで構成される。 テストケースの拡張子は.vdmを使用し、結果の拡張子は.resを使用する .. code-block:: none test-01.vdm test-01.res インタープリタ/コード生成のテストケース ============================================================= テストケースの実行は、クラスAの引数を取らないTest操作がデフォルトとなっている。 コード生成の場合は、値を返すことを前提としており、値を返さない場合はエラーとなる。 例 --------------------------------------- test-01.vdmの内容 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: vdm class A operations public Test: () ==> nat Test() == return 5; end A test-01.resの内容 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: none 5 クラスAのTest操作以外のエントリポイントを指定する場合は、拡張子.arg のファイル を追加する。 test-02.vdmの内容 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: vdm class A operations public Test: () ==> nat Test() == return 5; end A class B public Test2: () ==> nat Test2() == return 6; end A test-02.resの内容 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: none 6 test-02.arg B`Test2() テストや実行オプションにより結果が変わる場合 ============================================================= 実行オプションにより結果が異なる場合は、結果ファイルを複数用意して対応する。 ただし、候補が2個以上にならないように注意する。 またオプションは複数指定することが可能。 実装レベルと仕様レベルで結果が異なる場合 ------------------------------------------------------------- ファイル名に ``-impl`` と ``-spec`` を付加した結果ファイルを作成する .. code-block:: none test-01.res-impl test-01.res-spec 言語によって結果が異なる場合 ------------------------------------------------------------- ファイル名に ``-sl`` と ``-pp`` を付加した結果ファイルを作成する。 .. code-block:: none test-01.res-sl test-01.res-pp インタープリタテストで動的型チェックのON/OFFで結果が異なる場合 -------------------------------------------------------------------- ファイル名に ``-dtcon`` と ``-dtcoff`` を付加した結果ファイルを作成する。 .. code-block:: none test-01.res-dtcon test-01.res-dtcoff インタープリタテストとコード生成テストで結果が異なる場合 ------------------------------------------------------------- ファイル名に ``-ip`` と ``-cpp`` と ``-java`` を付加した結果ファイルを作成する。 .. code-block:: none test-01.res-ip test-01.res-cpp test-01.res-java 型チェックテストにおいてpos型とdef型で結果が異なる場合 ------------------------------------------------------------- ファイル名に ``-pos`` と ``-def`` を付加した結果ファイルを作成する。 .. code-block:: none test-01.res-pos test-01.res-def テストを実行しないように指定する場合 ------------------------------------------------------------- ファイル名に ``-ignore`` か ``-ignore-silently`` を付加した結果ファイルを作成する。 通常他のオプションと併用する。 ``-ignore`` は実行しなかったことがreportファイルに記載れるのに対し、 ``-ignore-silently`` はreportファイルに記載されず完全に無視される。 例えば型チェックエラーがあるような仕様でも、インタープリタは実行可能となるが、 コード生成は失敗する。このような場合、コード生成テストは無意味となる。 このような場合の結果ファイルの構成は以下のようになる。 .. code-block:: none test-01.res-ip test-01.res-ignore-silently-cpp test-01.res-ignore-silently-java